]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HBTAN/AliHBTAnalysis.h
All cout's substituted with Info's. IsOwner implemeted. Control of mixing progress...
[u/mrichter/AliRoot.git] / HBTAN / AliHBTAnalysis.h
1 #ifndef ALIHBTANALYSIS_H
2 #define ALIHBTANALYSIS_H
3
4 #include <TObject.h>
5
6 class AliHBTParticleCut;
7 class AliHBTCut;
8 class AliHBTPairCut;
9 class AliHBTPair;
10
11 class AliHBTRun;
12 class AliHBTEvent;
13 class AliHBTReader;
14 class AliHBTOnePairFctn;      
15 class AliHBTTwoPairFctn;
16
17 class AliHBTMonOneParticleFctn;
18 class AliHBTMonTwoParticleFctn;
19
20 class TList;
21
22 class AliHBTAnalysis: public TObject
23  {
24    public:
25      AliHBTAnalysis();
26      AliHBTAnalysis(const AliHBTAnalysis& in);
27      const AliHBTAnalysis& operator=(const AliHBTAnalysis& right);
28      virtual ~AliHBTAnalysis();
29
30      virtual void Process(Option_t* option = "TracksAndParticles");
31      
32      void SetGlobalPairCut(AliHBTPairCut* cut);
33      
34      void AddTrackFunction(AliHBTOnePairFctn* f);
35      void AddParticleFunction(AliHBTOnePairFctn* f);
36      void AddParticleAndTrackFunction(AliHBTTwoPairFctn* f);
37      
38      void AddParticleMonitorFunction(AliHBTMonOneParticleFctn* f);    //z.ch.
39      void AddTrackMonitorFunction(AliHBTMonOneParticleFctn* f);    //z.ch.
40      void AddParticleAndTrackMonitorFunction(AliHBTMonTwoParticleFctn* f);//z.ch.
41
42      void AddResolutionFunction(AliHBTTwoPairFctn* f){AddParticleAndTrackFunction(f);}
43      
44      void SetReader(AliHBTReader* r){fReader = r;}
45      
46      void WriteFunctions();
47      
48      void SetBufferSize(Int_t buffsize){fBufferSize=buffsize;}
49      void SetOwner(Bool_t owner=kTRUE){fIsOwner=owner;}
50      Bool_t IsOwner() const {return fIsOwner;}
51      Bool_t IsNonIdentAnalysis();
52    protected:
53      
54      Bool_t RunCoherencyCheck();
55      
56      void FilterOut(AliHBTEvent* outpart1, AliHBTEvent* outpart2, AliHBTEvent* inpart,
57                     AliHBTEvent* outtrack1, AliHBTEvent* outtrack2, AliHBTEvent* intrack);
58      void FilterOut(AliHBTEvent* out1, AliHBTEvent* out2, AliHBTEvent* in);
59      void DeleteFunctions();
60      
61      virtual void ProcessTracks();
62      virtual void ProcessParticles();
63      virtual void ProcessTracksAndParticles();
64      
65      virtual void ProcessTracksAndParticlesNonIdentAnal();
66      virtual void ProcessParticlesNonIdentAnal();
67      virtual void ProcessTracksNonIdentAnal();
68
69      AliHBTReader* fReader;//! Pointer to reader
70      
71      UInt_t fNTrackFunctions; //! Number of Tracks functions 
72      UInt_t fNParticleFunctions; //! Number of particles functions
73      UInt_t fNParticleAndTrackFunctions; //! Number of resolution functions
74                 
75      UInt_t fNTrackMonitorFunctions; //! Number of Track Monitor functions 
76      UInt_t fNParticleMonitorFunctions; //! Number of Particles Monitor functions 
77      UInt_t fNParticleAndTrackMonitorFunctions; //! Number of Resolution Monitor functions 
78
79      AliHBTOnePairFctn**  fTrackFunctions; //!array of pointers to functions that analyze rekonstructed tracks
80      AliHBTOnePairFctn**  fParticleFunctions; //!array of pointers to functions that analyze generated particles
81      AliHBTTwoPairFctn**  fParticleAndTrackFunctions; //!array of pointers to functions that analyze both 
82                                         //reconstructed tracks and generated particles
83                 //i.e. - resolution analyzers
84      AliHBTMonOneParticleFctn**  fParticleMonitorFunctions; //! array of pointers to monitoring functions
85      AliHBTMonOneParticleFctn**  fTrackMonitorFunctions; //! which are used for single particle analysis,
86      AliHBTMonTwoParticleFctn**  fParticleAndTrackMonitorFunctions;  //! cut monitoring, etc.
87
88
89      /**********************************************/
90      /* Control parameters  */
91      /**********************************************/
92
93      AliHBTPairCut *fPairCut;//! Pair cut applied for all mixed particles
94       
95      Int_t  fBufferSize; //!defines the size of buffer for mixed events; -1==MIX All
96      Int_t  fDisplayMixingInfo;//!defines every which particle mixing info is displayed
97      Bool_t fIsOwner;//!defines of all functions are supposed to be deleted while by the way of analysis defaulr false
98
99    private:
100      static const UInt_t fgkFctnArraySize;//!
101      static const UInt_t fgkDefaultMixingInfo;//!
102      static const Int_t  fgkDefaultBufferSize;//!
103    public:
104      ClassDef(AliHBTAnalysis,0)
105  };
106
107
108
109
110 #endif