3 //_______________________________________________________________________
4 /////////////////////////////////////////////////////////////////////////
6 // class AliJetParticlesReaderKine
8 // Reader for Kinematics
10 // loizides@ikf.uni-frankfurt.de
12 /////////////////////////////////////////////////////////////////////////
14 #include <Riostream.h>
16 #include <TParticle.h>
17 #include <AliRunLoader.h>
20 #include "AliJetParticle.h"
21 #include "AliJetEventParticles.h"
22 #include "AliJetParticlesReaderKine.h"
24 ClassImp(AliJetParticlesReaderKine)
27 /**********************************************************/
29 AliJetParticlesReaderKine::AliJetParticlesReaderKine() :
30 AliJetParticlesReader(),
31 fFileName("galice.root"),
33 fNeutral(kTRUE),fCharged(kTRUE),fEM(kTRUE),
39 /**********************************************************/
42 AliJetParticlesReaderKine::AliJetParticlesReaderKine(TString& fname) :
43 AliJetParticlesReader(),
46 fNeutral(kTRUE),fCharged(kTRUE),fEM(kTRUE),
52 /**********************************************************/
54 AliJetParticlesReaderKine::AliJetParticlesReaderKine(TObjArray* dirs, const Char_t *filename):
55 AliJetParticlesReader(dirs),
58 fNeutral(kTRUE),fCharged(kTRUE),fEM(kTRUE),
64 /**********************************************************/
66 AliJetParticlesReaderKine::~AliJetParticlesReaderKine()
69 if(fRunLoader) delete fRunLoader;
72 /**********************************************************/
74 void AliJetParticlesReaderKine::Rewind()
76 //Rewinds to the beginning
77 if(fRunLoader) delete fRunLoader;
83 /**********************************************************/
85 Int_t AliJetParticlesReaderKine::ReadNext()
87 //Reads Kinematics Tree
89 if((!fOwner) || (fEventParticles == 0))
90 fEventParticles = new AliJetEventParticles();
92 while(fCurrentDir < GetNumberOfDirs())
94 if (!OpenFile(fCurrentDir))
100 if (fCurrentEvent == fRunLoader->GetNumberOfEvents())
102 //read next directory
103 delete fRunLoader; //close current session
104 fRunLoader = 0; //assure pointer is null
105 fCurrentDir++; //go to next dir
109 //Info("ReadNext","Reading Event %d",fCurrentEvent);
111 fRunLoader->GetEvent(fCurrentEvent);
112 AliStack* stack = fRunLoader->Stack();
115 Error("ReadNext","Can not get stack for event %d",fCurrentEvent);
120 const TParticle *kv = stack->Particle(0);
122 fEventParticles->SetVertex(kv->Vx(),kv->Vy(),kv->Vz());
125 Int_t npart = stack->GetNprimary();
127 npart = stack->GetNtrack();
129 fEventParticles->Reset(npart);
130 for (Int_t i = 0;i<npart; i++)
132 TParticle *p = stack->Particle(i);
134 Int_t child1 = p->GetFirstDaughter();
135 //Int_t child2 = p->GetLastDaughter();
136 //Int_t mother = p->GetFirstMother();
137 if((child1>=0) && (child1<npart)) continue;
138 //cout << child1 << " " << child2 << " " << mother << endl;
140 if(IsAcceptedParticle(p)) //put particle in event
141 fEventParticles->AddParticle(p,i);
148 //end of loop over directories specified in fDirs Obj Array
152 /**********************************************************/
154 Int_t AliJetParticlesReaderKine::OpenFile(Int_t n)
156 //opens file with kine tree
158 const TString& dirname = GetDirName(n);
161 Error("OpenNextFile","Can not get directory name with index %d",n);
165 TString filename = dirname +"/"+ fFileName;
166 if(fRunLoader) delete fRunLoader;
167 fRunLoader = AliRunLoader::Open(filename.Data());
171 Error("OpenNextFile","Can't open session from file %s",filename.Data());
175 if (fRunLoader->GetNumberOfEvents() <= 0)
177 Error("OpenNextFile","There is no events in this directory.");
183 if (fRunLoader->LoadKinematics())
185 Error("OpenNextFile","Error occured while loading kinematics.");