]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HBTAN/AliHBTReader.h
const X& X::operator=(const X&) --> X& X::operator=(const X&)
[u/mrichter/AliRoot.git] / HBTAN / AliHBTReader.h
index f2d5d7d39b2fb8c73d114f73e3d9f2a30084e7ec..850544f0684da65af96082950cd4c7aade6ce2c0 100644 (file)
@@ -2,6 +2,7 @@
 #define ALIHBTREADER_H
 
 #include <TNamed.h>
+#include <TObjArray.h>
 
 //Reader Base class (reads particles and tracks and
 //puts it to the AliHBTRun objects
@@ -10,9 +11,9 @@
 class AliHBTRun;
 class AliHBTEvent;
 class AliHBTParticleCut;
-class TObjArray;
 class AliHBTParticle;
 class TString;
+class TH1I;
  
 class AliHBTReader: public TNamed
 {
@@ -20,36 +21,71 @@ class AliHBTReader: public TNamed
     AliHBTReader();
     AliHBTReader(TObjArray*);
     virtual ~AliHBTReader();
-    //in the future this class is will read global tracking
-    virtual Int_t Read(AliHBTRun* particles, AliHBTRun *tracks) = 0;
     
-    virtual AliHBTEvent* GetParticleEvent(Int_t) = 0;
-    virtual AliHBTEvent* GetTrackEvent(Int_t) = 0;
-    virtual Int_t GetNumberOfPartEvents() = 0;
-    virtual Int_t GetNumberOfTrackEvents() = 0;
+    virtual Int_t        Next();
+    virtual void         Rewind() = 0;
     
-    void AddParticleCut(AliHBTParticleCut* cut);
+    virtual Bool_t       ReadsTracks() const = 0;
+    virtual Bool_t       ReadsParticles() const = 0;
     
-    void SetDirs(TObjArray* dirs){fDirs = dirs;} //sets array directories names
-
-    virtual AliHBTEvent* GetNextParticleEvent(){return 0x0;}
-    virtual AliHBTEvent* GetNextTrackEvent(){return 0x0;}
-
+    void                 AddParticleCut(AliHBTParticleCut* cut);
+    
+    virtual Int_t        Read(AliHBTRun* particles, AliHBTRun *tracks);
+    
+    virtual AliHBTEvent* GetParticleEvent() {return fParticlesEvent;}//can not be const because position randomizer overloads it
+    virtual AliHBTEvent* GetTrackEvent() {return fTracksEvent;}//
+    
+    virtual AliHBTEvent* GetParticleEvent(Int_t);
+    virtual AliHBTEvent* GetTrackEvent(Int_t);
+    
+    virtual Int_t        GetNumberOfPartEvents();
+    virtual Int_t        GetNumberOfTrackEvents();
+    
+    void                 SetDirs(TObjArray* dirs){fDirs = dirs;} //sets array directories names
+    void                 SetEventBuffering(Bool_t flag){fBufferEvents = flag;}
+    void          SetBlend(Bool_t flag = kTRUE){fBlend=flag;}
+    virtual Int_t GetNumberOfDirs() const {return (fDirs)?fDirs->GetEntries():0;}
+    void          ReadEventsFromTo(Int_t first,Int_t last){fFirst = first; fLast = last;}
+    virtual TH1I* GetTrackCounter() const {return fTrackCounter;}
+    virtual void  WriteTrackCounter() const;
   protected:
     
-    TObjArray *fCuts;//array with particle cuts
-    TObjArray *fDirs;//arry with directories to read data from
+    TObjArray*    fCuts;//array with particle cuts
+    TObjArray*    fDirs;//arry with directories to read data from
+    
+    Int_t         fCurrentEvent;//!  number of current event in current directory
+    Int_t         fCurrentDir;//! number of current directory
+    
+    Int_t         fNEventsRead;//!total 
+        
+    AliHBTEvent*  fTracksEvent;    //! tracks read from current event
+    AliHBTEvent*  fParticlesEvent; //! particles read from current event
+    
+    AliHBTRun*    fParticles; //!simulated particles
+    AliHBTRun*    fTracks; //!reconstructed tracks (particles)
+    
+    Bool_t        fIsRead;//!flag indicating if the data are already read
+    Bool_t        fBufferEvents;//flag indicating if the data should be bufferred
+    
+    Bool_t        fBlend;// flag indicating if randomly change positions of the particles after reading
+    
+    Int_t         fFirst;//first event to return (all are before are skipped)
+    Int_t         fLast;//last
 
+    TH1I*         fTrackCounter; //histogram with number of tracks read
+    
+    virtual Int_t ReadNext() = 0; //this methods reads next event and put result in fTracksEvent and/or fParticlesEvent
     Bool_t Pass(AliHBTParticle*);
     Bool_t Pass(Int_t pid);
-
+    void Blend();
+    
     TString& GetDirName(Int_t);
     
   private:
   
   public:
-    ClassDef(AliHBTReader,2)//version 2 - TNamed as parental class
-    
+    ClassDef(AliHBTReader,4)//version 2 - TNamed as parental class
+                            //version 3 - Blending added
 };
 
 #endif