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 "AliHBTParticleCut.h"
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;
67 virtual const char* Name(){return GetName();}
68 void Rename(const Char_t * name);
69 void Rename(const Char_t * name, const Char_t * title);
71 void SetParticleCut(AliHBTParticleCut* cut);
73 virtual AliHBTParticle* CheckParticle(AliHBTParticle* particle) const;
76 AliHBTParticleCut* fParticleCut;//Particle cut
79 ClassDef(AliHBTMonitorFunction,1)
81 /******************************************************************/
82 /******************************************************************/
83 inline AliHBTParticle* AliHBTMonitorFunction::CheckParticle(AliHBTParticle* particle) const
85 //check if particle meets the cut criteria
86 if(fParticleCut->Pass(particle)) //if the particle is BAD
88 return 0x0;//it is BAD as well - so return
93 /******************************************************************/
94 /******************************************************************/
95 /******************************************************************/
97 class AliHBTMonOneParticleFctn: public AliHBTMonitorFunction
100 AliHBTMonOneParticleFctn(){}
101 AliHBTMonOneParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
102 AliHBTMonOneParticleFctn(const AliHBTMonOneParticleFctn& in):AliHBTMonitorFunction(in){MayNotUse("Cpy Ctor");}
103 virtual ~AliHBTMonOneParticleFctn(){}
105 AliHBTMonOneParticleFctn& operator=(const AliHBTMonOneParticleFctn& /*in*/){MayNotUse("operator=");return *this;}
107 virtual void Process(AliHBTParticle* particle) = 0;
111 ClassDef(AliHBTMonOneParticleFctn,1)
114 /******************************************************************/
115 class AliHBTMonOneParticleFctn1D: public AliHBTMonOneParticleFctn
118 AliHBTMonOneParticleFctn1D();
119 AliHBTMonOneParticleFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval);
120 AliHBTMonOneParticleFctn1D(const Char_t *name, const Char_t *title,
121 Int_t nbins = 100, Double_t maxXval = 1.4, Double_t minXval = 0.0);
122 AliHBTMonOneParticleFctn1D(const AliHBTMonOneParticleFctn1D& in):
123 AliHBTMonOneParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
125 virtual ~AliHBTMonOneParticleFctn1D();
127 AliHBTMonOneParticleFctn1D& operator=(const AliHBTMonOneParticleFctn1D& /*in*/){MayNotUse("operator=");return *this;}
128 TH1* GetResult(){return fResult;}
130 void Process(AliHBTParticle* particle);
133 virtual Double_t GetValue(AliHBTParticle* particle) = 0;
134 TH1D* fResult;//histogram to be filled
136 ClassDef(AliHBTMonOneParticleFctn1D,2)
138 /******************************************************************/
140 class AliHBTMonOneParticleFctn2D: public AliHBTMonOneParticleFctn
143 AliHBTMonOneParticleFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
144 Int_t nYbins = 200, Double_t maxYval = 1.5, Double_t minYval =-0.1);
145 AliHBTMonOneParticleFctn2D(const AliHBTMonOneParticleFctn2D& in):
146 AliHBTMonOneParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
147 virtual ~AliHBTMonOneParticleFctn2D();
149 AliHBTMonOneParticleFctn2D& operator=(const AliHBTMonOneParticleFctn2D& /*in*/){MayNotUse("operator=");return *this;}
150 TH1* GetResult(){return fResult;}
152 void Process(AliHBTParticle* particle);
155 virtual void GetValues(AliHBTParticle* particle, Double_t&, Double_t&) = 0;
157 TH2D* fResult;//histogram to be filled
160 ClassDef(AliHBTMonOneParticleFctn2D,1)
162 /******************************************************************/
163 /******************************************************************/
164 /******************************************************************/
166 class AliHBTMonOneParticleFctn3D: public AliHBTMonOneParticleFctn
169 AliHBTMonOneParticleFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
170 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15,
171 Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15);
172 AliHBTMonOneParticleFctn3D(const AliHBTMonOneParticleFctn3D& in):
173 AliHBTMonOneParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
175 virtual ~AliHBTMonOneParticleFctn3D();
177 AliHBTMonOneParticleFctn3D& operator=(const AliHBTMonOneParticleFctn3D& /*in*/){MayNotUse("operator=");return *this;}
178 TH1* GetResult(){return fResult;}
181 TH3D* fResult;//histogram to be filled
184 ClassDef(AliHBTMonOneParticleFctn3D,1)
186 /******************************************************************/
187 /******************************************************************/
188 class AliHBTMonTwoParticleFctn: public AliHBTMonitorFunction
191 AliHBTMonTwoParticleFctn(){};
192 AliHBTMonTwoParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
193 AliHBTMonTwoParticleFctn(const AliHBTMonTwoParticleFctn& in):AliHBTMonitorFunction(in){MayNotUse("Cpy Ctor");}
194 virtual ~AliHBTMonTwoParticleFctn(){};
195 AliHBTMonTwoParticleFctn& operator=(const AliHBTMonTwoParticleFctn& /*in*/){MayNotUse("operator=");return *this;}
198 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
202 ClassDef(AliHBTMonTwoParticleFctn,1)
205 /******************************************************************/
207 class AliHBTMonTwoParticleFctn1D: public AliHBTMonTwoParticleFctn
210 AliHBTMonTwoParticleFctn1D(Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
211 AliHBTMonTwoParticleFctn1D(const char* name,const char* title,
212 Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
213 AliHBTMonTwoParticleFctn1D(const AliHBTMonTwoParticleFctn1D& in):
214 AliHBTMonTwoParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
215 virtual ~AliHBTMonTwoParticleFctn1D();
217 AliHBTMonTwoParticleFctn1D& operator=(const AliHBTMonTwoParticleFctn1D& /*in*/){MayNotUse("operator=");return *this;}
218 TH1* GetResult(){return fResult;}
220 void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
223 virtual Double_t GetValue(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
225 TH1D* fResult;//histogram to be filled
228 ClassDef(AliHBTMonTwoParticleFctn1D,1)
230 /******************************************************************/
231 class AliHBTMonTwoParticleFctn2D: public AliHBTMonTwoParticleFctn
234 AliHBTMonTwoParticleFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
235 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15);
236 AliHBTMonTwoParticleFctn2D(const AliHBTMonTwoParticleFctn2D& in):
237 AliHBTMonTwoParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
238 virtual ~AliHBTMonTwoParticleFctn2D();
240 AliHBTMonTwoParticleFctn2D& operator=(const AliHBTMonTwoParticleFctn2D& /*in*/){MayNotUse("operator=");return *this;}
241 TH1* GetResult(){return fResult;}
243 void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
246 virtual void GetValues(AliHBTParticle*,AliHBTParticle*, Double_t&, Double_t&) = 0;
248 TH2D* fResult;//histogram to be filled
251 ClassDef(AliHBTMonTwoParticleFctn2D,1)
255 /******************************************************************/
256 class AliHBTMonTwoParticleFctn3D: public AliHBTMonTwoParticleFctn
259 AliHBTMonTwoParticleFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
260 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15,
261 Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15){}
262 AliHBTMonTwoParticleFctn3D(const AliHBTMonTwoParticleFctn3D& in):
263 AliHBTMonTwoParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
264 virtual ~AliHBTMonTwoParticleFctn3D(){}
266 AliHBTMonTwoParticleFctn3D& operator=(const AliHBTMonTwoParticleFctn3D& /*in*/){MayNotUse("operator=");return *this;}
267 TH1* GetResult(){return fResult;}
269 void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
272 virtual void GetValues(AliHBTParticle*,AliHBTParticle*, Double_t&, Double_t&,Double_t&) = 0;
274 TH3D* fResult; //histogram to be filled
277 ClassDef(AliHBTMonTwoParticleFctn3D,1)
280 /******************************************************************/
281 /******************************************************************/
282 /******************************************************************/
283 /******************************************************************/