1 //Zbigniew.Chajecki@cern.ch
3 #ifndef ALIMONITORFUNCTION_H
4 #define ALIMONITORFUNCTION_H
6 #include "AliHBTParticleCut.h"
7 #include "AliHBTParticle.h"
12 //class AliHBTAnalysis;
14 class AliHBTMonitorFunction: public TNamed
15 //Abstract base class for HBT functions
18 AliHBTMonitorFunction();
19 AliHBTMonitorFunction(const char* name,const char* title);
20 virtual ~AliHBTMonitorFunction();
22 virtual TH1* GetResult() = 0;
26 void Rename(const Char_t * name);
27 void Rename(const Char_t * name, const Char_t * title);
29 void SetParticleCut(AliHBTParticleCut*);
31 virtual AliHBTParticle* CheckParticle(AliHBTParticle* particle);
34 AliHBTParticleCut* fParticleCut;
37 ClassDef(AliHBTMonitorFunction,1)
39 /******************************************************************/
40 /******************************************************************/
41 inline AliHBTParticle* AliHBTMonitorFunction::CheckParticle(AliHBTParticle* particle)
43 //check if particle meets the cut criteria
44 if(fParticleCut->Pass(particle)) //if the particle is BAD
46 return 0x0;//it is BAD as well - so return
51 /******************************************************************/
52 /******************************************************************/
53 /******************************************************************/
55 class AliHBTMonOneParticleFctn: public AliHBTMonitorFunction
58 AliHBTMonOneParticleFctn(){}
59 AliHBTMonOneParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
60 virtual ~AliHBTMonOneParticleFctn(){}
62 virtual void ProcessSameEventParticles(AliHBTParticle* particle) = 0;
66 ClassDef(AliHBTMonOneParticleFctn,1)
69 /******************************************************************/
70 class AliHBTMonOneParticleFctn1D: public AliHBTMonOneParticleFctn
73 AliHBTMonOneParticleFctn1D();
74 AliHBTMonOneParticleFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval);
75 AliHBTMonOneParticleFctn1D(const Char_t *name, const Char_t *title,
76 Int_t nbins = 100, Double_t maxXval = 1.4, Double_t minXval = 0.0);
77 virtual ~AliHBTMonOneParticleFctn1D();
79 TH1* GetResult(){return fResult;}
81 void ProcessSameEventParticles(AliHBTParticle* particle);
84 virtual Double_t GetValue(AliHBTParticle* particle) = 0;
89 ClassDef(AliHBTMonOneParticleFctn1D,2)
91 /******************************************************************/
93 class AliHBTMonOneParticleFctn2D: public AliHBTMonOneParticleFctn
96 AliHBTMonOneParticleFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
97 Int_t nYbins = 200, Double_t maxYval = 1.5, Double_t minYval =-0.1);
98 virtual ~AliHBTMonOneParticleFctn2D();
100 TH1* GetResult(){return fResult;}
102 void ProcessSameEventParticles(AliHBTParticle* particle);
105 virtual void GetValues(AliHBTParticle* particle, Double_t&, Double_t&) = 0;
110 ClassDef(AliHBTMonOneParticleFctn2D,1)
112 /******************************************************************/
113 /******************************************************************/
114 /******************************************************************/
116 class AliHBTMonOneParticleFctn3D: public AliHBTMonOneParticleFctn
119 AliHBTMonOneParticleFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
120 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15,
121 Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15);
123 virtual ~AliHBTMonOneParticleFctn3D();
125 TH1* GetResult(){return fResult;}
131 ClassDef(AliHBTMonOneParticleFctn3D,1)
133 /******************************************************************/
134 /******************************************************************/
135 class AliHBTMonTwoParticleFctn: public AliHBTMonitorFunction
138 AliHBTMonTwoParticleFctn(){};
139 AliHBTMonTwoParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
140 virtual ~AliHBTMonTwoParticleFctn(){};
143 ProcessSameEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
147 ClassDef(AliHBTMonTwoParticleFctn,1)
150 /******************************************************************/
152 class AliHBTMonTwoParticleFctn1D: public AliHBTMonTwoParticleFctn
155 AliHBTMonTwoParticleFctn1D(Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
156 AliHBTMonTwoParticleFctn1D(const char*,const char*,
157 Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
158 virtual ~AliHBTMonTwoParticleFctn1D();
160 TH1* GetResult(){return fResult;}
162 void ProcessSameEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
165 virtual Double_t GetValue(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
170 ClassDef(AliHBTMonTwoParticleFctn1D,1)
172 /******************************************************************/
173 class AliHBTMonTwoParticleFctn2D: public AliHBTMonTwoParticleFctn
176 AliHBTMonTwoParticleFctn2D(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 virtual ~AliHBTMonTwoParticleFctn2D();
180 TH1* GetResult(){return fResult;}
182 void ProcessSameEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
183 void ProcessDiffEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle){};
187 virtual void GetValues(AliHBTParticle*,AliHBTParticle*, Double_t&, Double_t&) = 0;
192 ClassDef(AliHBTMonTwoParticleFctn2D,1)
196 /******************************************************************/
197 class AliHBTMonTwoParticleFctn3D: public AliHBTMonTwoParticleFctn
200 AliHBTMonTwoParticleFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
201 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15,
202 Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15){}
203 virtual ~AliHBTMonTwoParticleFctn3D(){}
205 TH1* GetResult(){return fResult;}
207 void ProcessSameEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
208 void ProcessDiffEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle){};
212 virtual void GetValues(AliHBTParticle*,AliHBTParticle*, Double_t&, Double_t&,Double_t&) = 0;
217 ClassDef(AliHBTMonTwoParticleFctn3D,1)
220 /******************************************************************/
221 /******************************************************************/
222 /******************************************************************/
223 /******************************************************************/