1 #ifndef ALIHBTMONITORFUNCTION_H
2 #define ALIHBTMONITORFUNCTION_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 //__________________________________________________________________
9 ////////////////////////////////////////////////////////////////////
11 // class AliHBTMonitorFunction
13 // class AliHBTMonOneParticleFctn
14 // class AliHBTMonTwoParticleFctn
16 // class AliHBTMonOneParticleFctn1D
17 // class AliHBTMonOneParticleFctn2D
18 // class AliHBTMonOneParticleFctn3D
20 // class AliHBTMonTwoParticleFctn1D
21 // class AliHBTMonTwoParticleFctn2D
22 // class AliHBTMonTwoParticleFctn3D
24 // Base Classes for monitoring functions
25 // author: chajecki@if.pw.edu.pl
27 /******************************************************************/
29 Base classes for monitor functions
39 one particle two particle
44 Zbigniew.Chajecki@cern.ch
47 ///////////////////////////////////////////////////////////////////////
49 #include "AliAODParticleCut.h"
55 class AliVAODParticle;
57 class AliHBTMonitorFunction: public TNamed
58 //Abstract base class for HBT functions
61 AliHBTMonitorFunction();
62 AliHBTMonitorFunction(const char* name,const char* title);
63 AliHBTMonitorFunction(const AliHBTMonitorFunction& /*in*/);
64 virtual ~AliHBTMonitorFunction();
66 AliHBTMonitorFunction& operator=(const AliHBTMonitorFunction& /*in*/);
69 virtual TH1* GetResult() = 0;
71 Int_t Write(const char* /*x1*/ = "",Int_t /*x2*/ = 0, Int_t /*x3*/ = 0);
72 Int_t Write(const char* x1 = "",Int_t x2 = 0, Int_t x3 = 0) const {return TObject::Write(x1,x2,x3);}
74 virtual const char* Name(){return GetName();}
75 void Rename(const Char_t * name);
76 void Rename(const Char_t * name, const Char_t * title);
78 void SetParticleCut(AliAODParticleCut* cut);
80 virtual AliVAODParticle* CheckParticle(AliVAODParticle* particle) const;
83 AliAODParticleCut* fParticleCut;//Particle cut
86 ClassDef(AliHBTMonitorFunction,1)
88 /******************************************************************/
89 /******************************************************************/
90 inline AliVAODParticle* AliHBTMonitorFunction::CheckParticle(AliVAODParticle* particle) const
92 //check if particle meets the cut criteria
93 if(fParticleCut->Rejected(particle)) //if the particle is BAD
95 return 0x0;//it is BAD as well - so return
100 /******************************************************************/
101 /******************************************************************/
102 /******************************************************************/
104 class AliHBTMonOneParticleFctn: public AliHBTMonitorFunction
107 AliHBTMonOneParticleFctn(){}
108 AliHBTMonOneParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
109 AliHBTMonOneParticleFctn(const AliHBTMonOneParticleFctn& in):AliHBTMonitorFunction(in){MayNotUse("Cpy Ctor");}
110 virtual ~AliHBTMonOneParticleFctn(){}
112 AliHBTMonOneParticleFctn& operator=(const AliHBTMonOneParticleFctn& /*in*/){MayNotUse("operator=");return *this;}
114 virtual void Process(AliVAODParticle* particle) = 0;
118 ClassDef(AliHBTMonOneParticleFctn,1)
121 /******************************************************************/
122 class AliHBTMonOneParticleFctn1D: public AliHBTMonOneParticleFctn
125 AliHBTMonOneParticleFctn1D();
126 AliHBTMonOneParticleFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval);
127 AliHBTMonOneParticleFctn1D(const Char_t *name, const Char_t *title,
128 Int_t nbins = 100, Double_t maxXval = 1.4, Double_t minXval = 0.0);
129 AliHBTMonOneParticleFctn1D(const AliHBTMonOneParticleFctn1D& in):
130 AliHBTMonOneParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
132 virtual ~AliHBTMonOneParticleFctn1D();
134 AliHBTMonOneParticleFctn1D& operator=(const AliHBTMonOneParticleFctn1D& /*in*/){MayNotUse("operator=");return *this;}
135 TH1* GetResult(){return this->fResult;}
137 void Process(AliVAODParticle* particle);
140 virtual Double_t GetValue(AliVAODParticle* particle) const = 0;
141 TH1D* fResult;//histogram to be filled
143 ClassDef(AliHBTMonOneParticleFctn1D,2)
145 /******************************************************************/
147 class AliHBTMonOneParticleFctn2D: public AliHBTMonOneParticleFctn
150 AliHBTMonOneParticleFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
151 Int_t nYbins = 200, Double_t maxYval = 1.5, Double_t minYval =-0.1);
152 AliHBTMonOneParticleFctn2D(const AliHBTMonOneParticleFctn2D& in):
153 AliHBTMonOneParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
154 virtual ~AliHBTMonOneParticleFctn2D();
156 AliHBTMonOneParticleFctn2D& operator=(const AliHBTMonOneParticleFctn2D& /*in*/){MayNotUse("operator=");return *this;}
157 TH1* GetResult(){return this->fResult;}
159 void Process(AliVAODParticle* particle);
162 virtual void GetValues(AliVAODParticle* particle, Double_t&, Double_t&) const = 0;
164 TH2D* fResult;//histogram to be filled
167 ClassDef(AliHBTMonOneParticleFctn2D,1)
169 /******************************************************************/
170 /******************************************************************/
171 /******************************************************************/
173 class AliHBTMonOneParticleFctn3D: public AliHBTMonOneParticleFctn
176 AliHBTMonOneParticleFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
177 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15,
178 Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15);
179 AliHBTMonOneParticleFctn3D(const AliHBTMonOneParticleFctn3D& in):
180 AliHBTMonOneParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
182 virtual ~AliHBTMonOneParticleFctn3D();
184 AliHBTMonOneParticleFctn3D& operator=(const AliHBTMonOneParticleFctn3D& /*in*/){MayNotUse("operator=");return *this;}
185 TH1* GetResult(){return this->fResult;}
188 TH3D* fResult;//histogram to be filled
191 ClassDef(AliHBTMonOneParticleFctn3D,1)
193 /******************************************************************/
194 /******************************************************************/
195 class AliHBTMonTwoParticleFctn: public AliHBTMonitorFunction
198 AliHBTMonTwoParticleFctn(){};
199 AliHBTMonTwoParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
200 AliHBTMonTwoParticleFctn(const AliHBTMonTwoParticleFctn& in):AliHBTMonitorFunction(in){MayNotUse("Cpy Ctor");}
201 virtual ~AliHBTMonTwoParticleFctn(){};
202 AliHBTMonTwoParticleFctn& operator=(const AliHBTMonTwoParticleFctn& /*in*/){MayNotUse("operator=");return *this;}
205 Process(AliVAODParticle* trackparticle, AliVAODParticle* partparticle) = 0;
209 ClassDef(AliHBTMonTwoParticleFctn,1)
212 /******************************************************************/
214 class AliHBTMonTwoParticleFctn1D: public AliHBTMonTwoParticleFctn
217 AliHBTMonTwoParticleFctn1D(Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
218 AliHBTMonTwoParticleFctn1D(const char* name,const char* title,
219 Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
220 AliHBTMonTwoParticleFctn1D(const AliHBTMonTwoParticleFctn1D& in):
221 AliHBTMonTwoParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
222 virtual ~AliHBTMonTwoParticleFctn1D();
224 AliHBTMonTwoParticleFctn1D& operator=(const AliHBTMonTwoParticleFctn1D& /*in*/){MayNotUse("operator=");return *this;}
225 TH1* GetResult(){return this->fResult;}
227 void Process(AliVAODParticle* trackparticle, AliVAODParticle* partparticle);
230 virtual Double_t GetValue(AliVAODParticle* trackparticle, AliVAODParticle* partparticle) const = 0;
232 TH1D* fResult;//histogram to be filled
235 ClassDef(AliHBTMonTwoParticleFctn1D,1)
237 /******************************************************************/
238 class AliHBTMonTwoParticleFctn2D: public AliHBTMonTwoParticleFctn
241 AliHBTMonTwoParticleFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
242 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15);
243 AliHBTMonTwoParticleFctn2D(const AliHBTMonTwoParticleFctn2D& in):
244 AliHBTMonTwoParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
245 virtual ~AliHBTMonTwoParticleFctn2D();
247 AliHBTMonTwoParticleFctn2D& operator=(const AliHBTMonTwoParticleFctn2D& /*in*/){MayNotUse("operator=");return *this;}
248 TH1* GetResult(){return this->fResult;}
250 void Process(AliVAODParticle* trackparticle, AliVAODParticle* partparticle);
253 virtual void GetValues(AliVAODParticle*,AliVAODParticle*, Double_t&, Double_t&) const = 0;
255 TH2D* fResult;//histogram to be filled
258 ClassDef(AliHBTMonTwoParticleFctn2D,1)
262 /******************************************************************/
263 class AliHBTMonTwoParticleFctn3D: public AliHBTMonTwoParticleFctn
266 AliHBTMonTwoParticleFctn3D(Int_t /*nXbins = 200*/, Double_t /*maxXval = 1.5*/, Double_t /*minXval = 0.0*/,
267 Int_t /*nYbins = 200*/, Double_t /*maxYval = .15*/, Double_t /*minYval =-0.15*/,
268 Int_t /*nZbins = 200*/, Double_t /*maxZval = .15*/, Double_t /*minZval =-0.15*/){}
269 AliHBTMonTwoParticleFctn3D(const AliHBTMonTwoParticleFctn3D& in):
270 AliHBTMonTwoParticleFctn(in),fResult(0x0){MayNotUse("Cpy Ctor");}
271 virtual ~AliHBTMonTwoParticleFctn3D(){}
273 AliHBTMonTwoParticleFctn3D& operator=(const AliHBTMonTwoParticleFctn3D& /*in*/){MayNotUse("operator=");return *this;}
274 TH1* GetResult(){return this->fResult;}
276 void Process(AliVAODParticle* trackparticle, AliVAODParticle* partparticle);
279 virtual void GetValues(AliVAODParticle*,AliVAODParticle*, Double_t&, Double_t&,Double_t&) const = 0;
281 TH3D* fResult; //histogram to be filled
284 ClassDef(AliHBTMonTwoParticleFctn3D,1)
287 /******************************************************************/
288 /******************************************************************/
289 /******************************************************************/
290 /******************************************************************/