1 //__________________________________________________________________
2 ////////////////////////////////////////////////////////////////////
4 /******************************************************************/
6 Base classes for monitor functions
16 one particle two particle
21 Zbigniew.Chajecki@cern.ch
25 #ifndef ALIMONITORFUNCTION_H
26 #define ALIMONITORFUNCTION_H
28 #include "AliHBTParticleCut.h"
29 #include "AliHBTParticle.h"
35 class AliHBTMonitorFunction: public TNamed
36 //Abstract base class for HBT functions
39 AliHBTMonitorFunction();
40 AliHBTMonitorFunction(const char* name,const char* title);
41 AliHBTMonitorFunction(const AliHBTMonitorFunction& /*in*/);
42 virtual ~AliHBTMonitorFunction();
44 const AliHBTMonitorFunction& operator=(const AliHBTMonitorFunction& /*in*/);
47 virtual TH1* GetResult() = 0;
51 void Rename(const Char_t * name);
52 void Rename(const Char_t * name, const Char_t * title);
54 void SetParticleCut(AliHBTParticleCut* cut);
56 virtual AliHBTParticle* CheckParticle(AliHBTParticle* particle) const;
59 AliHBTParticleCut* fParticleCut;//Particle cut
62 ClassDef(AliHBTMonitorFunction,1)
64 /******************************************************************/
65 /******************************************************************/
66 inline AliHBTParticle* AliHBTMonitorFunction::CheckParticle(AliHBTParticle* particle) const
68 //check if particle meets the cut criteria
69 if(fParticleCut->Pass(particle)) //if the particle is BAD
71 return 0x0;//it is BAD as well - so return
76 /******************************************************************/
77 /******************************************************************/
78 /******************************************************************/
80 class AliHBTMonOneParticleFctn: public AliHBTMonitorFunction
83 AliHBTMonOneParticleFctn(){}
84 AliHBTMonOneParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
85 virtual ~AliHBTMonOneParticleFctn(){}
87 virtual void Process(AliHBTParticle* particle) = 0;
91 ClassDef(AliHBTMonOneParticleFctn,1)
94 /******************************************************************/
95 class AliHBTMonOneParticleFctn1D: public AliHBTMonOneParticleFctn
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();
104 TH1* GetResult(){return fResult;}
106 void Process(AliHBTParticle* particle);
109 virtual Double_t GetValue(AliHBTParticle* particle) = 0;
111 TH1D* fResult;//histogram to be filled
114 ClassDef(AliHBTMonOneParticleFctn1D,2)
116 /******************************************************************/
118 class AliHBTMonOneParticleFctn2D: public AliHBTMonOneParticleFctn
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();
125 TH1* GetResult(){return fResult;}
127 void Process(AliHBTParticle* particle);
130 virtual void GetValues(AliHBTParticle* particle, Double_t&, Double_t&) = 0;
132 TH2D* fResult;//histogram to be filled
135 ClassDef(AliHBTMonOneParticleFctn2D,1)
137 /******************************************************************/
138 /******************************************************************/
139 /******************************************************************/
141 class AliHBTMonOneParticleFctn3D: public AliHBTMonOneParticleFctn
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);
148 virtual ~AliHBTMonOneParticleFctn3D();
150 TH1* GetResult(){return fResult;}
153 TH3D* fResult;//histogram to be filled
156 ClassDef(AliHBTMonOneParticleFctn3D,1)
158 /******************************************************************/
159 /******************************************************************/
160 class AliHBTMonTwoParticleFctn: public AliHBTMonitorFunction
163 AliHBTMonTwoParticleFctn(){};
164 AliHBTMonTwoParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
165 virtual ~AliHBTMonTwoParticleFctn(){};
168 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
172 ClassDef(AliHBTMonTwoParticleFctn,1)
175 /******************************************************************/
177 class AliHBTMonTwoParticleFctn1D: public AliHBTMonTwoParticleFctn
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();
185 TH1* GetResult(){return fResult;}
187 void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
190 virtual Double_t GetValue(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
192 TH1D* fResult;//histogram to be filled
195 ClassDef(AliHBTMonTwoParticleFctn1D,1)
197 /******************************************************************/
198 class AliHBTMonTwoParticleFctn2D: public AliHBTMonTwoParticleFctn
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();
205 TH1* GetResult(){return fResult;}
207 void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
210 virtual void GetValues(AliHBTParticle*,AliHBTParticle*, Double_t&, Double_t&) = 0;
212 TH2D* fResult;//histogram to be filled
215 ClassDef(AliHBTMonTwoParticleFctn2D,1)
219 /******************************************************************/
220 class AliHBTMonTwoParticleFctn3D: public AliHBTMonTwoParticleFctn
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(){}
228 TH1* GetResult(){return fResult;}
230 void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
233 virtual void GetValues(AliHBTParticle*,AliHBTParticle*, Double_t&, Double_t&,Double_t&) = 0;
235 TH3D* fResult; //histogram to be filled
238 ClassDef(AliHBTMonTwoParticleFctn3D,1)
241 /******************************************************************/
242 /******************************************************************/
243 /******************************************************************/
244 /******************************************************************/