1 #ifndef ALIHBTMONITORFUNCTION_H
2 #define ALIHBTMONITORFUNCTION_H
3 //__________________________________________________________________
4 ////////////////////////////////////////////////////////////////////
6 // class AliHBTMonitorFunction
8 // class AliHBTMonOneParticleFctn
9 // class AliHBTMonTwoParticleFctn
11 // class AliHBTMonOneParticleFctn1D
12 // class AliHBTMonOneParticleFctn2D
13 // class AliHBTMonOneParticleFctn3D
15 // class AliHBTMonTwoParticleFctn1D
16 // class AliHBTMonTwoParticleFctn2D
17 // class AliHBTMonTwoParticleFctn3D
19 // Base Classes for monitoring functions
20 // author: chajecki@if.pw.edu.pl
22 /******************************************************************/
24 Base classes for monitor functions
34 one particle two particle
39 Zbigniew.Chajecki@cern.ch
42 ///////////////////////////////////////////////////////////////////////
44 #include "AliAODParticleCut.h"
49 class AliVAODParticle;
51 class AliHBTMonitorFunction: public TNamed
52 //Abstract base class for HBT functions
55 AliHBTMonitorFunction();
56 AliHBTMonitorFunction(const char* name,const char* title);
57 AliHBTMonitorFunction(const AliHBTMonitorFunction& /*in*/);
58 virtual ~AliHBTMonitorFunction();
60 AliHBTMonitorFunction& operator=(const AliHBTMonitorFunction& /*in*/);
63 virtual TH1* GetResult() = 0;
65 Int_t Write(const char* /*x1*/ = "",Int_t /*x2*/ = 0, Int_t /*x3*/ = 0);
66 Int_t Write(const char* x1 = "",Int_t x2 = 0, Int_t x3 = 0) const {return TObject::Write(x1,x2,x3);}
68 virtual const char* Name(){return GetName();}
69 void Rename(const Char_t * name);
70 void Rename(const Char_t * name, const Char_t * title);
72 void SetParticleCut(AliAODParticleCut* cut);
74 virtual AliVAODParticle* CheckParticle(AliVAODParticle* particle) const;
77 AliAODParticleCut* fParticleCut;//Particle cut
80 ClassDef(AliHBTMonitorFunction,1)
82 /******************************************************************/
83 /******************************************************************/
84 inline AliVAODParticle* AliHBTMonitorFunction::CheckParticle(AliVAODParticle* particle) const
86 //check if particle meets the cut criteria
87 if(fParticleCut->Rejected(particle)) //if the particle is BAD
89 return 0x0;//it is BAD as well - so return
94 /******************************************************************/
95 /******************************************************************/
96 /******************************************************************/
98 class AliHBTMonOneParticleFctn: public AliHBTMonitorFunction
101 AliHBTMonOneParticleFctn(){}
102 AliHBTMonOneParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
103 AliHBTMonOneParticleFctn(const AliHBTMonOneParticleFctn& in):AliHBTMonitorFunction(in){MayNotUse("Cpy Ctor");}
104 virtual ~AliHBTMonOneParticleFctn(){}
106 AliHBTMonOneParticleFctn& operator=(const AliHBTMonOneParticleFctn& /*in*/){MayNotUse("operator=");return *this;}
108 virtual void Process(AliVAODParticle* particle) = 0;
112 ClassDef(AliHBTMonOneParticleFctn,1)
115 /******************************************************************/
116 class AliHBTMonOneParticleFctn1D: public AliHBTMonOneParticleFctn
119 AliHBTMonOneParticleFctn1D();
120 AliHBTMonOneParticleFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval);
121 AliHBTMonOneParticleFctn1D(const Char_t *name, const Char_t *title,
122 Int_t nbins = 100, Double_t maxXval = 1.4, Double_t minXval = 0.0);
123 AliHBTMonOneParticleFctn1D(const AliHBTMonOneParticleFctn1D& in):
124 AliHBTMonOneParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
126 virtual ~AliHBTMonOneParticleFctn1D();
128 AliHBTMonOneParticleFctn1D& operator=(const AliHBTMonOneParticleFctn1D& /*in*/){MayNotUse("operator=");return *this;}
129 TH1* GetResult(){return this->fResult;}
131 void Process(AliVAODParticle* particle);
134 virtual Double_t GetValue(AliVAODParticle* particle) const = 0;
135 TH1D* fResult;//histogram to be filled
137 ClassDef(AliHBTMonOneParticleFctn1D,2)
139 /******************************************************************/
141 class AliHBTMonOneParticleFctn2D: public AliHBTMonOneParticleFctn
144 AliHBTMonOneParticleFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
145 Int_t nYbins = 200, Double_t maxYval = 1.5, Double_t minYval =-0.1);
146 AliHBTMonOneParticleFctn2D(const AliHBTMonOneParticleFctn2D& in):
147 AliHBTMonOneParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
148 virtual ~AliHBTMonOneParticleFctn2D();
150 AliHBTMonOneParticleFctn2D& operator=(const AliHBTMonOneParticleFctn2D& /*in*/){MayNotUse("operator=");return *this;}
151 TH1* GetResult(){return this->fResult;}
153 void Process(AliVAODParticle* particle);
156 virtual void GetValues(AliVAODParticle* particle, Double_t&, Double_t&) const = 0;
158 TH2D* fResult;//histogram to be filled
161 ClassDef(AliHBTMonOneParticleFctn2D,1)
163 /******************************************************************/
164 /******************************************************************/
165 /******************************************************************/
167 class AliHBTMonOneParticleFctn3D: public AliHBTMonOneParticleFctn
170 AliHBTMonOneParticleFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
171 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15,
172 Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15);
173 AliHBTMonOneParticleFctn3D(const AliHBTMonOneParticleFctn3D& in):
174 AliHBTMonOneParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
176 virtual ~AliHBTMonOneParticleFctn3D();
178 AliHBTMonOneParticleFctn3D& operator=(const AliHBTMonOneParticleFctn3D& /*in*/){MayNotUse("operator=");return *this;}
179 TH1* GetResult(){return this->fResult;}
182 TH3D* fResult;//histogram to be filled
185 ClassDef(AliHBTMonOneParticleFctn3D,1)
187 /******************************************************************/
188 /******************************************************************/
189 class AliHBTMonTwoParticleFctn: public AliHBTMonitorFunction
192 AliHBTMonTwoParticleFctn(){};
193 AliHBTMonTwoParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
194 AliHBTMonTwoParticleFctn(const AliHBTMonTwoParticleFctn& in):AliHBTMonitorFunction(in){MayNotUse("Cpy Ctor");}
195 virtual ~AliHBTMonTwoParticleFctn(){};
196 AliHBTMonTwoParticleFctn& operator=(const AliHBTMonTwoParticleFctn& /*in*/){MayNotUse("operator=");return *this;}
199 Process(AliVAODParticle* trackparticle, AliVAODParticle* partparticle) = 0;
203 ClassDef(AliHBTMonTwoParticleFctn,1)
206 /******************************************************************/
208 class AliHBTMonTwoParticleFctn1D: public AliHBTMonTwoParticleFctn
211 AliHBTMonTwoParticleFctn1D(Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
212 AliHBTMonTwoParticleFctn1D(const char* name,const char* title,
213 Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
214 AliHBTMonTwoParticleFctn1D(const AliHBTMonTwoParticleFctn1D& in):
215 AliHBTMonTwoParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
216 virtual ~AliHBTMonTwoParticleFctn1D();
218 AliHBTMonTwoParticleFctn1D& operator=(const AliHBTMonTwoParticleFctn1D& /*in*/){MayNotUse("operator=");return *this;}
219 TH1* GetResult(){return this->fResult;}
221 void Process(AliVAODParticle* trackparticle, AliVAODParticle* partparticle);
224 virtual Double_t GetValue(AliVAODParticle* trackparticle, AliVAODParticle* partparticle) const = 0;
226 TH1D* fResult;//histogram to be filled
229 ClassDef(AliHBTMonTwoParticleFctn1D,1)
231 /******************************************************************/
232 class AliHBTMonTwoParticleFctn2D: public AliHBTMonTwoParticleFctn
235 AliHBTMonTwoParticleFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
236 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15);
237 AliHBTMonTwoParticleFctn2D(const AliHBTMonTwoParticleFctn2D& in):
238 AliHBTMonTwoParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
239 virtual ~AliHBTMonTwoParticleFctn2D();
241 AliHBTMonTwoParticleFctn2D& operator=(const AliHBTMonTwoParticleFctn2D& /*in*/){MayNotUse("operator=");return *this;}
242 TH1* GetResult(){return this->fResult;}
244 void Process(AliVAODParticle* trackparticle, AliVAODParticle* partparticle);
247 virtual void GetValues(AliVAODParticle*,AliVAODParticle*, Double_t&, Double_t&) const = 0;
249 TH2D* fResult;//histogram to be filled
252 ClassDef(AliHBTMonTwoParticleFctn2D,1)
256 /******************************************************************/
257 class AliHBTMonTwoParticleFctn3D: public AliHBTMonTwoParticleFctn
260 AliHBTMonTwoParticleFctn3D(Int_t /*nXbins = 200*/, Double_t /*maxXval = 1.5*/, Double_t /*minXval = 0.0*/,
261 Int_t /*nYbins = 200*/, Double_t /*maxYval = .15*/, Double_t /*minYval =-0.15*/,
262 Int_t /*nZbins = 200*/, Double_t /*maxZval = .15*/, Double_t /*minZval =-0.15*/){}
263 AliHBTMonTwoParticleFctn3D(const AliHBTMonTwoParticleFctn3D& in):
264 AliHBTMonTwoParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
265 virtual ~AliHBTMonTwoParticleFctn3D(){}
267 AliHBTMonTwoParticleFctn3D& operator=(const AliHBTMonTwoParticleFctn3D& /*in*/){MayNotUse("operator=");return *this;}
268 TH1* GetResult(){return this->fResult;}
270 void Process(AliVAODParticle* trackparticle, AliVAODParticle* partparticle);
273 virtual void GetValues(AliVAODParticle*,AliVAODParticle*, Double_t&, Double_t&,Double_t&) const = 0;
275 TH3D* fResult; //histogram to be filled
278 ClassDef(AliHBTMonTwoParticleFctn3D,1)
281 /******************************************************************/
282 /******************************************************************/
283 /******************************************************************/
284 /******************************************************************/