7 //Reader Base class (reads particles and tracks and
8 //puts it to the AliHBTRun objects
9 //Piotr.Skowronski@cern.ch
13 class AliHBTParticleCut;
17 class AliHBTReader: public TNamed
21 AliHBTReader(TObjArray*);
22 virtual ~AliHBTReader();
25 virtual void Rewind() = 0;
27 virtual Bool_t ReadsTracks() const = 0;
28 virtual Bool_t ReadsParticles() const = 0;
30 void AddParticleCut(AliHBTParticleCut* cut);
32 virtual Int_t Read(AliHBTRun* particles, AliHBTRun *tracks);
34 virtual AliHBTEvent* GetParticleEvent() {return fParticlesEvent;}//can not be const because position randomizer overloads it
35 virtual AliHBTEvent* GetTrackEvent() {return fTracksEvent;}//
37 virtual AliHBTEvent* GetParticleEvent(Int_t);
38 virtual AliHBTEvent* GetTrackEvent(Int_t);
40 virtual Int_t GetNumberOfPartEvents();
41 virtual Int_t GetNumberOfTrackEvents();
43 void SetDirs(TObjArray* dirs){fDirs = dirs;} //sets array directories names
44 void SetEventBuffering(Bool_t flag){fBufferEvents = flag;}
45 void SetBlend(Bool_t flag = kTRUE){fBlend=flag;}
46 virtual Int_t GetNumberOfDirs() const {return (fDirs)?fDirs->GetEntries():0;}
47 void ReadEventsFromTo(Int_t first,Int_t last){fFirst = first; fLast = last;}
50 TObjArray* fCuts;//array with particle cuts
51 TObjArray* fDirs;//arry with directories to read data from
53 Int_t fCurrentEvent;//! number of current event in current directory
54 Int_t fCurrentDir;//! number of current directory
56 Int_t fNEventsRead;//!total
58 AliHBTEvent* fTracksEvent; //! tracks read from current event
59 AliHBTEvent* fParticlesEvent; //! particles read from current event
61 AliHBTRun* fParticles; //!simulated particles
62 AliHBTRun* fTracks; //!reconstructed tracks (particles)
64 Bool_t fIsRead;//!flag indicating if the data are already read
65 Bool_t fBufferEvents;//flag indicating if the data should be bufferred
67 Bool_t fBlend;// flag indicating if randomly change positions of the particles after reading
69 Int_t fFirst;//first event to return (all are before are skipped)
72 virtual Int_t ReadNext() = 0; //this methods reads next event and put result in fTracksEvent and/or fParticlesEvent
73 Bool_t Pass(AliHBTParticle*);
74 Bool_t Pass(Int_t pid);
77 TString& GetDirName(Int_t);
82 ClassDef(AliHBTReader,3)//version 2 - TNamed as parental class
83 //version 3 - Blending added