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