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();
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 if(p->GetFirstMother() >= 0) continue;
136 if(IsAcceptedParticle(p)) //put particle in event
137 fEventParticles->AddParticle(p,i);
143 } while(fCurrentDir < GetNumberOfDirs());
144 //end of loop over directories specified in fDirs Obj Array
148 /**********************************************************/
150 Int_t AliJetParticlesReaderKine::OpenFile(Int_t n)
152 //opens file with kine tree
154 const TString& dirname = GetDirName(n);
157 Error("OpenNextFile","Can not get directory name with index %d",n);
161 TString filename = dirname +"/"+ fFileName;
162 fRunLoader = AliRunLoader::Open(filename.Data());
166 Error("OpenNextFile","Can't open session from file %s",filename.Data());
170 if (fRunLoader->GetNumberOfEvents() <= 0)
172 Error("OpenNextFile","There is no events in this directory.");
178 if (fRunLoader->LoadKinematics())
180 Error("OpenNextFile","Error occured while loading kinematics.");