8dbddb57f2c385d55176e8a20f9c70dc4d49f3ff
[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
20 class TList;
21
22 class AliHBTAnalysis: public TObject
23  {
24    public:
25      AliHBTAnalysis();
26
27      virtual ~AliHBTAnalysis();
28
29      virtual void Process(Option_t* option = "TracksAndParticles");
30      
31
32      void SetGlobalPairCut(AliHBTPairCut* cut);
33      
34      void AddTrackFunction(AliHBTOnePairFctn*);
35      void AddParticleFunction(AliHBTOnePairFctn*);
36      void AddParticleAndTrackFunction(AliHBTTwoPairFctn*);
37      
38      void AddResolutionFunction(AliHBTTwoPairFctn* f){AddParticleAndTrackFunction(f);}
39      
40      void SetReader(AliHBTReader* r){fReader = r;}
41      
42      void WriteFunctions();
43      
44      void SetBufferSize(Int_t buffsize){fBufferSize=buffsize;}
45      
46      Bool_t IsNonIdentAnalysis();
47    protected:
48      
49      Bool_t RunCoherencyCheck();
50      
51      void FilterOut(AliHBTEvent* outpart1, AliHBTEvent* outpart2, AliHBTEvent* inpart,
52                     AliHBTEvent* outtrack1, AliHBTEvent* outtrack2, AliHBTEvent* intrack);
53      void FilterOut(AliHBTEvent* out1, AliHBTEvent* out2, AliHBTEvent* in);
54      
55      AliHBTReader* fReader;//!
56      
57      virtual void ProcessTracks();
58      virtual void ProcessParticles();
59      virtual void ProcessTracksAndParticles();
60      
61      virtual void ProcessTracksAndParticlesNonIdentAnal();
62      virtual void ProcessParticlesNonIdentAnal();
63      virtual void ProcessTracksNonIdentAnal();
64      
65      AliHBTOnePairFctn**  fTrackFunctions; //!array of pointers to functions that analyze rekonstructed tracks
66      AliHBTOnePairFctn**  fParticleFunctions; //!array of pointers to functions that analyze generated particles
67      AliHBTTwoPairFctn**  fParticleAndTrackFunctions; //!array of pointers to functions that analyze both 
68                                         //reconstructed tracks and generated particles
69                 //i.e. - resolution analyzers
70      UInt_t fNTrackFunctions; //!
71      UInt_t fNParticleFunctions; //!
72      UInt_t fNParticleAndTrackFunctions; //!
73                 
74      /**********************************************/
75      /* Control parameters  */
76
77       AliHBTPairCut *fPairCut;//!
78       
79       Int_t fBufferSize; //defines the size of buffer for mixed events; -1==MIX All
80      /**********************************************/
81      
82      
83    private:
84      static const Int_t fgkHbtAnalyzeAll;//!
85      static const UInt_t fgkFctnArraySize;//!
86 /*********************************************/   
87    public:
88      ClassDef(AliHBTAnalysis,0)
89  };
90
91
92
93
94 #endif