Hi Maria,
I have made several changes to your program. See the new file in attachment.
Check carefully every line !
You should not create the TClonesArray of ParticleList. This array
is automatically created by the TPythia6 constructor.
Rene Brun
Maria Jesus MORA wrote:
>
> Hi ,
>
> I am using TPythia6 to control the decay of particles. For each
> event I make decay one particle and I retrieve the information with the
> function ImportParticles. This ImportParticle give me a list
> "TClonesArray" of particles "TMCParticle". Of course, at the end of the
> event I empty this list with the function Delete. But sometimes the
> particles are not remove and I find in a new event a old particle....
>
> as exemple...
> in event 20843 we find the decay eta (221)-> gamma (22) + gamma (22)+
> muon(13) !!!
> but in fact this muon comes fron the event 20842 when eta (221) ->
> muon(13) + antimuon (-13)+ gamma(22)
>
> event 20842
> (11, 221) <- 0, =>[ 2, 4]: p=( 4.443, 0.000, -2.227) ; E=
> 5.000 ; m= 0.547 ; V=(0,0,0); t=0, tau=0
> ( 1, 22) <- 1, =>[ 0, 0]: p=( 0.793, -0.098, -0.389) ; E=
> 0.889 ; m= 0.000 ; V=(0,0,0); t=0, tau=0
> ( 1, -13) <- 1, =>[ 0, 0]: p=( 3.053, 0.180, -1.446) ; E=
> 3.385 ; m= 0.106 ; V=(0,0,0); t=0, tau=0
> ( 1, 13) <- 1, =>[ 0, 0]: p=( 0.596, -0.082, -0.392) ; E=
> 0.726 ; m= 0.106 ; V=(0,0,0); t=0, tau=0
> ( 1, 22) <- 2, =>[ 0, 0]: p=( 0.962, -0.003, -0.605) ; E=
> 1.137 ; m= 0.000 ; V=(0.000730588,1.12372e-05,-0.000403107);
> t=0.000836193, tau=0
> 20843
> (11, 221) <- 0, =>[ 2, 3]: p=( 4.443, 0.000, -2.227) ; E=
> 5.000 ; m= 0.547 ; V=(0,0,0); t=0, tau=0
> ( 1, 22) <- 1, =>[ 0, 0]: p=( 3.982, -0.130, -2.103) ; E=
> 4.505 ; m= 0.000 ; V=(0,0,0); t=0, tau=0
> ( 1, 22) <- 1, =>[ 0, 0]: p=( 0.461, 0.130, -0.123) ; E=
> 0.495 ; m= 0.000 ; V=(0,0,0); t=0, tau=0
> ( 1, 13) <- 1, =>[ 0, 0]: p=( 0.596, -0.082, -0.392) ; E=
> 0.726 ; m= 0.106 ; V=(0,0,0); t=0, tau=0
>
> I think that it is a TPhythia6 problem beacause if I create a new
> TPythia6 object in each event, the problem with the old particles in new
> event is still there. May be i'm doing something wrong....Do I need to
> do some special thing to "reset" the pythia events?
> I send my main program. I run ROOT Version 2.23/12 in Linux
> Thank you in advance,
>
> Maria MORA
>
> //__________________________________________________________________________---
>
> //
> #ifndef __CINT__
> #include "TROOT.h"
> #include "TFile.h"
> #include "TDirectory.h"
> #include "TPythia6.h"
> #include "TClonesArray.h"
> #include "TMCParticle.h"
> #include "TParticle.h"
> #include "TMath.h"
> #include "TStopwatch.h"
> #include "TRandom.h"
> #include <iostream.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <math.h>
> #include <ctype.h>
>
> extern "C" void py1ent_(Int_t&, Int_t&, Double_t&, Double_t&,
> Double_t&);
> extern void InitGui(); // loads the device dependent graphics system
> VoidFuncPtr_t initfuncs[] = { InitGui, 0 };
>
> TRandom Random01;
> ///////////////////////////////////////////////////////////////////////////////////////////////
>
> void DecayParticle(TPythia6 *pythia, Int_t &idpart, Double_t &mom,
> Double_t &theta,Double_t &phi)
> {
> Int_t temp = 0;
> py1ent_(temp, idpart, mom, theta, phi);
> }
> ///////////////////////////////////////////////////////////////////////////////////////////
>
> int main(int argc, char *argv[])
> {
> TROOT root("pythia simul","PITHIA/SIMULATION", initfuncs);
> #else
> {
> #endif
> TPythia6 *pitia = new TPythia6() ;
> TClonesArray * ParticleList = new TClonesArray() ;
> TMCParticle *particle = new TMCParticle() ;
>
> // Meson definition : identify number and mass(GeV)
> Int_t IdEta = 221 ; Float_t MassEta = 0.5473;
>
> // counter definition
> Int_t i, cpar;
> Int_t Entries, IdParticle ;
>
> // Event Loop
> for( i = 0; i<=50000; i++)
> {
> DecayParticle(pitia, IdEta, 5., 90., 0.) ;
> ParticleList = (TClonesArray *)pitia->ImportParticles() ;
> Entries = ParticleList->GetEntries() ;
>
> // Loop in generated and decay particles
> for(cpar=1; cpar<Entries; cpar++)
> {
> particle = (TMCParticle *) ParticleList->At(cpar) ;
> IdParticle = particle->GetKF() ;
>
> if(IdParticle == 13) // muon
> {
> cout<<i <<endl;
> ParticleList->ls() ;
> }
> } // end of Loop in generated and decay particles
>
> ParticleList->Delete() ;
>
> }// End in Event Loop
>
> return 1;
> }
#include "TROOT.h"
#include "TFile.h"
#include "TDirectory.h"
#include "TPythia6.h"
#include "TClonesArray.h"
#include "TMCParticle.h"
#include "TParticle.h"
#include "TMath.h"
#include "TStopwatch.h"
#include "TRandom.h"
#include "TSystem.h"
#include "iostream.h"
extern "C" void py1ent_(Int_t&, Int_t&, Double_t&, Double_t&,Double_t&);
TRandom Random01;
///////////////////////////////////////////////////////////////////////////////////////////////
void DecayParticle(TPythia6 *pythia, Int_t idpart, Double_t mom,Double_t theta,Double_t phi)
{
Int_t temp = 0;
py1ent_(temp, idpart, mom, theta, phi);
}
///////////////////////////////////////////////////////////////////////////////////////////
int main(int argc, char *argv[])
{
TROOT root("pythia simul","PITHIA/SIMULATION");
TPythia6 *pitia = new TPythia6() ;
TClonesArray *ParticleList;
TMCParticle *particle = new TMCParticle() ;
// Meson definition : identify number and mass(GeV)
Int_t IdEta = 221 ;
Float_t MassEta = 0.5473; //unused variable
// counter definition
Int_t i, cpar;
Int_t Entries, IdParticle ;
// Event Loop
for( i = 0; i<=50000; i++)
{
DecayParticle(pitia, IdEta, 5., 90., 0.) ;
ParticleList = (TClonesArray *)pitia->ImportParticles() ;
Entries = ParticleList->GetEntries() ;
// Loop in generated and decay particles
for(cpar=0; cpar<Entries; cpar++)
{
particle = (TMCParticle *) ParticleList->At(cpar) ;
IdParticle = particle->GetKF() ;
if(IdParticle == 13) // muon
{
cout<<i <<endl;
ParticleList->ls() ;
}
} // end of Loop in generated and decay particles
ParticleList->Clear() ;
}// End in Event Loop
return 1;
}
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:29 MET