1 #ifndef ALIMONITORFUNCTION_H
2 #define ALIMONITORFUNCTION_H
6 //Zbigniew.Chajecki@cern.ch
8 #include "AliHBTParticleCut.h"
9 #include "AliHBTParticle.h"
16 //class AliHBTAnalysis;
18 class AliHBTMonitorFunction: public TNamed
19 //Abstract base class for HBT functions
22 AliHBTMonitorFunction();
23 AliHBTMonitorFunction(const char* name,const char* title);
24 virtual ~AliHBTMonitorFunction();
26 virtual TH1* GetResult() = 0;
30 void Rename(const Char_t * name);
31 void Rename(const Char_t * name, const Char_t * title);
33 void SetParticleCut(AliHBTParticleCut*);
35 virtual AliHBTParticle* CheckParticle(AliHBTParticle* particle);
38 AliHBTParticleCut* fParticleCut;
40 ClassDef(AliHBTMonitorFunction,1)
43 /******************************************************************/
44 inline AliHBTParticle* AliHBTMonitorFunction::CheckParticle(AliHBTParticle* particle)
46 //check if particle meets the cut criteria
47 if(fParticleCut->Pass(particle)) //if the particle is BAD
49 return 0x0;//it is BAD as well - so return
54 /******************************************************************/
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 Process(AliHBTParticle* particle) = 0;
64 ClassDef(AliHBTMonOneParticleFctn,1)
68 /******************************************************************/
69 class AliHBTMonOneParticleFctn1D: public AliHBTMonOneParticleFctn
72 AliHBTMonOneParticleFctn1D();
73 AliHBTMonOneParticleFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval);
74 AliHBTMonOneParticleFctn1D(const Char_t *name, const Char_t *title,
75 Int_t nbins = 100, Double_t maxXval = 1.4, Double_t minXval = 0.0);
76 virtual ~AliHBTMonOneParticleFctn1D();
78 TH1* GetResult(){return fResult;}
80 void Process(AliHBTParticle* particle);
83 virtual Double_t GetValue(AliHBTParticle* particle) = 0;
87 ClassDef(AliHBTMonOneParticleFctn1D,2)
90 /******************************************************************/
91 class AliHBTMonOneParticleFctn2D: public AliHBTMonOneParticleFctn
94 AliHBTMonOneParticleFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
95 Int_t nYbins = 200, Double_t maxYval = 1.5, Double_t minYval =-0.1);
96 virtual ~AliHBTMonOneParticleFctn2D();
98 TH1* GetResult(){return fResult;}
100 void Process(AliHBTParticle* particle);
103 virtual void GetValues(AliHBTParticle* particle, Double_t&, Double_t&) = 0;
107 ClassDef(AliHBTMonOneParticleFctn2D,1)
110 /******************************************************************/
111 class AliHBTMonOneParticleFctn3D: public AliHBTMonOneParticleFctn
114 AliHBTMonOneParticleFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
115 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15,
116 Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15);
118 virtual ~AliHBTMonOneParticleFctn3D();
120 TH1* GetResult(){return fResult;}
125 ClassDef(AliHBTMonOneParticleFctn3D,1)
128 /******************************************************************/
129 class AliHBTMonTwoParticleFctn: public AliHBTMonitorFunction
132 AliHBTMonTwoParticleFctn(){};
133 AliHBTMonTwoParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
134 virtual ~AliHBTMonTwoParticleFctn(){};
137 Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
139 ClassDef(AliHBTMonTwoParticleFctn,1)
143 /******************************************************************/
144 class AliHBTMonTwoParticleFctn1D: public AliHBTMonTwoParticleFctn
147 AliHBTMonTwoParticleFctn1D(Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
148 AliHBTMonTwoParticleFctn1D(const char*,const char*,
149 Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
150 virtual ~AliHBTMonTwoParticleFctn1D();
152 TH1* GetResult(){return fResult;}
154 void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
157 virtual Double_t GetValue(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
161 ClassDef(AliHBTMonTwoParticleFctn1D,1)
164 /******************************************************************/
165 class AliHBTMonTwoParticleFctn2D: public AliHBTMonTwoParticleFctn
168 AliHBTMonTwoParticleFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
169 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15);
170 virtual ~AliHBTMonTwoParticleFctn2D();
172 TH1* GetResult(){return fResult;}
174 void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
177 virtual void GetValues(AliHBTParticle*,AliHBTParticle*, Double_t&, Double_t&) = 0;
181 ClassDef(AliHBTMonTwoParticleFctn2D,1)
184 /******************************************************************/
185 class AliHBTMonTwoParticleFctn3D: public AliHBTMonTwoParticleFctn
188 AliHBTMonTwoParticleFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
189 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15,
190 Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15){}
191 virtual ~AliHBTMonTwoParticleFctn3D(){}
193 TH1* GetResult(){return fResult;}
195 void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
198 virtual void GetValues(AliHBTParticle*,AliHBTParticle*, Double_t&, Double_t&,Double_t&) = 0;
202 ClassDef(AliHBTMonTwoParticleFctn3D,1)