]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HBTAN/AliHBTMonitorFunction.h
Bug correction
[u/mrichter/AliRoot.git] / HBTAN / AliHBTMonitorFunction.h
1 //__________________________________________________________________
2 ////////////////////////////////////////////////////////////////////
3 //
4 /******************************************************************/
5 /*
6 Base classes for monitor functions
7
8           monitor function
9                /    \
10               /      \
11              /        \
12             /          \
13            /            \
14           /              \
15          /                \
16    one particle     two particle  
17      /  |  \            /  |  \
18     /   |   \          /   |   \
19    1D  2D   3D        1D  2D   3D
20
21 Zbigniew.Chajecki@cern.ch
22
23 */
24
25 #ifndef ALIMONITORFUNCTION_H
26 #define ALIMONITORFUNCTION_H
27
28 #include "AliHBTParticleCut.h"
29 #include "AliHBTParticle.h"  
30
31 #include <TH2.h>
32 #include <TH3.h>
33
34
35 class AliHBTMonitorFunction: public TNamed
36 //Abstract base class for HBT functions
37 {
38   public:
39     AliHBTMonitorFunction();
40     AliHBTMonitorFunction(const char* name,const char* title);
41     AliHBTMonitorFunction(const AliHBTMonitorFunction& /*in*/);
42     virtual ~AliHBTMonitorFunction();
43     
44     const AliHBTMonitorFunction& operator=(const AliHBTMonitorFunction& /*in*/);
45     
46     
47     virtual TH1* GetResult() = 0;
48
49     virtual void Write();
50     virtual void Init(){}
51     void Rename(const Char_t * name); 
52     void Rename(const Char_t * name, const Char_t * title); 
53     
54     void SetParticleCut(AliHBTParticleCut* cut);
55
56     virtual AliHBTParticle* CheckParticle(AliHBTParticle* particle) const;
57
58   protected:
59     AliHBTParticleCut*      fParticleCut;//Particle cut
60     
61   private:  
62    ClassDef(AliHBTMonitorFunction,1)
63 };
64 /******************************************************************/
65 /******************************************************************/
66 inline AliHBTParticle* AliHBTMonitorFunction::CheckParticle(AliHBTParticle* particle) const
67 {
68   //check if particle meets the cut criteria
69   if(fParticleCut->Pass(particle)) //if the particle is BAD
70    { 
71      return 0x0;//it is BAD as well - so return
72    }
73   return particle; 
74 }
75
76 /******************************************************************/
77 /******************************************************************/
78 /******************************************************************/
79
80 class AliHBTMonOneParticleFctn: public AliHBTMonitorFunction
81 {
82   public:
83     AliHBTMonOneParticleFctn(){}
84     AliHBTMonOneParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
85     virtual ~AliHBTMonOneParticleFctn(){}
86     
87     virtual void Process(AliHBTParticle* particle) = 0;
88     
89   protected:
90   private:  
91    ClassDef(AliHBTMonOneParticleFctn,1)
92   
93 };
94 /******************************************************************/
95 class AliHBTMonOneParticleFctn1D: public AliHBTMonOneParticleFctn
96 {
97  public:
98   AliHBTMonOneParticleFctn1D();
99   AliHBTMonOneParticleFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval);
100   AliHBTMonOneParticleFctn1D(const Char_t *name, const Char_t *title,
101                       Int_t nbins = 100, Double_t maxXval = 1.4, Double_t minXval = 0.0);
102   virtual ~AliHBTMonOneParticleFctn1D();
103   
104   TH1* GetResult(){return fResult;}
105
106   void Process(AliHBTParticle* particle);
107
108  protected:
109   virtual Double_t GetValue(AliHBTParticle* particle) = 0; 
110
111   TH1D* fResult;//histogram to be filled
112   
113  private:
114   ClassDef(AliHBTMonOneParticleFctn1D,2)
115 };
116 /******************************************************************/
117  
118 class AliHBTMonOneParticleFctn2D: public AliHBTMonOneParticleFctn
119 {
120  public:
121   AliHBTMonOneParticleFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
122                       Int_t nYbins = 200, Double_t maxYval = 1.5, Double_t minYval =-0.1);
123   virtual ~AliHBTMonOneParticleFctn2D();
124   
125   TH1* GetResult(){return fResult;}
126   
127   void Process(AliHBTParticle* particle);
128
129  protected:
130   virtual void GetValues(AliHBTParticle* particle, Double_t&, Double_t&) = 0;
131
132   TH2D* fResult;//histogram to be filled
133   
134  private:
135   ClassDef(AliHBTMonOneParticleFctn2D,1)
136 };
137 /******************************************************************/
138 /******************************************************************/
139 /******************************************************************/
140
141 class AliHBTMonOneParticleFctn3D: public AliHBTMonOneParticleFctn
142 {
143  public:
144   AliHBTMonOneParticleFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
145                       Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15, 
146                       Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15);
147             
148   virtual ~AliHBTMonOneParticleFctn3D();
149
150   TH1* GetResult(){return fResult;}
151
152  protected:
153   TH3D* fResult;//histogram to be filled
154
155  private:
156   ClassDef(AliHBTMonOneParticleFctn3D,1)
157 };
158 /******************************************************************/
159 /******************************************************************/
160 class AliHBTMonTwoParticleFctn: public AliHBTMonitorFunction
161 {
162   public:
163     AliHBTMonTwoParticleFctn(){};
164     AliHBTMonTwoParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
165     virtual ~AliHBTMonTwoParticleFctn(){};
166     
167     virtual void 
168     Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
169              
170   protected:
171   private:  
172    ClassDef(AliHBTMonTwoParticleFctn,1)
173   
174 };
175 /******************************************************************/
176
177 class AliHBTMonTwoParticleFctn1D: public AliHBTMonTwoParticleFctn
178 {
179  public:
180   AliHBTMonTwoParticleFctn1D(Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
181   AliHBTMonTwoParticleFctn1D(const char* name,const char* title,
182                       Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
183   virtual ~AliHBTMonTwoParticleFctn1D();
184   
185   TH1* GetResult(){return fResult;}
186   
187   void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
188   
189  protected:
190   virtual Double_t GetValue(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
191
192   TH1D* fResult;//histogram to be filled
193
194  private:
195   ClassDef(AliHBTMonTwoParticleFctn1D,1)
196 };
197 /******************************************************************/
198 class AliHBTMonTwoParticleFctn2D: public AliHBTMonTwoParticleFctn
199 {
200  public:
201   AliHBTMonTwoParticleFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
202                        Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15);
203   virtual ~AliHBTMonTwoParticleFctn2D();
204   
205   TH1* GetResult(){return fResult;}
206   
207   void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
208   
209  protected:
210   virtual void GetValues(AliHBTParticle*,AliHBTParticle*, Double_t&, Double_t&) = 0;
211
212   TH2D* fResult;//histogram to be filled
213   
214  private:
215   ClassDef(AliHBTMonTwoParticleFctn2D,1)
216 };
217
218
219 /******************************************************************/
220 class AliHBTMonTwoParticleFctn3D: public AliHBTMonTwoParticleFctn
221 {
222  public:
223   AliHBTMonTwoParticleFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
224                        Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15, 
225                        Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15){}
226   virtual ~AliHBTMonTwoParticleFctn3D(){}
227   
228   TH1* GetResult(){return fResult;}
229   
230   void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
231
232  protected:
233   virtual void GetValues(AliHBTParticle*,AliHBTParticle*, Double_t&, Double_t&,Double_t&) = 0;
234
235   TH3D* fResult; //histogram to be filled
236   
237  private:
238   ClassDef(AliHBTMonTwoParticleFctn3D,1)
239 };
240
241 /******************************************************************/
242 /******************************************************************/
243 /******************************************************************/
244 /******************************************************************/
245
246 #endif