1 //Piotr Skowronski@cern.ch
3 #ifndef ALIHBTFUNCTION_H
4 #define ALIHBTFUNCTION_H
6 #include "AliHBTParticleCut.h"
7 #include "AliHBTPairCut.h"
8 #include "AliHBTPair.h"
16 class AliHBTFunction: public TNamed
17 //Abstract base class for HBT functions
21 AliHBTFunction(const char* name,const char* title);
22 virtual ~AliHBTFunction();
24 virtual TH1* GetNumerator() =0;
25 virtual TH1* GetDenominator() =0;
26 virtual TH1* GetResult() = 0;
30 TH1* GetRatio(Double_t normfactor = 1.0);
31 void Rename(const Char_t * name); //renames the function and histograms ==title is the same that name
32 void Rename(const Char_t * name, const Char_t * title); //renames and retitle the function and histograms
34 void SetPairCut(AliHBTPairCut*);
36 virtual AliHBTPair* CheckPair(AliHBTPair* pair);
40 AliHBTPairCut* fPairCut;
43 ClassDef(AliHBTFunction,1)
45 /******************************************************************/
46 inline AliHBTPair* AliHBTFunction::CheckPair(AliHBTPair* pair)
48 //check if pair and both particles meets the cut criteria
49 if(fPairCut->Pass(pair)) //if the pair is BAD
51 pair = pair->GetSwapedPair();
52 if(fPairCut->Pass(pair)) //so try reverse combination
54 return 0x0;//it is BAD as well - so return
60 /******************************************************************/
61 /******************************************************************/
62 /******************************************************************/
63 class AliHBTOnePairFctn: public AliHBTFunction
67 AliHBTOnePairFctn(const Char_t *name, const Char_t *title):AliHBTFunction(name,title){}
68 virtual ~AliHBTOnePairFctn(){}
70 virtual void ProcessSameEventParticles(AliHBTPair* pair) = 0;
71 virtual void ProcessDiffEventParticles(AliHBTPair* pair) = 0;
77 ClassDef(AliHBTOnePairFctn,1)
80 /******************************************************************/
81 /******************************************************************/
82 /******************************************************************/
83 class AliHBTTwoPairFctn: public AliHBTFunction
86 AliHBTTwoPairFctn(){};
87 AliHBTTwoPairFctn(const Char_t *name, const Char_t *title):AliHBTFunction(name,title){}
88 virtual ~AliHBTTwoPairFctn(){};
91 ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair) = 0;
93 ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair) = 0;
98 ClassDef(AliHBTTwoPairFctn,1)
101 /******************************************************************/
102 /******************************************************************/
103 /******************************************************************/
106 class AliHBTOnePairFctn1D: public AliHBTOnePairFctn
109 AliHBTOnePairFctn1D();
110 AliHBTOnePairFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval);
111 AliHBTOnePairFctn1D(const Char_t *name, const Char_t *title,
112 Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
113 virtual ~AliHBTOnePairFctn1D();
116 TH1* GetNumerator(){return fNumerator;}
117 TH1* GetDenominator(){return fDenominator;}
119 void ProcessSameEventParticles(AliHBTPair* pair);
120 void ProcessDiffEventParticles(AliHBTPair* pair);
122 void SetNumberOfBinsToScale();
124 //retruns velue to be histogrammed
125 virtual Double_t GetValue(AliHBTPair* pair) = 0;
132 ClassDef(AliHBTOnePairFctn1D,2)
135 /******************************************************************/
136 /******************************************************************/
137 /******************************************************************/
139 class AliHBTOnePairFctn2D: public AliHBTOnePairFctn
142 AliHBTOnePairFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
143 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15);
144 ~AliHBTOnePairFctn2D();
146 TH1* GetNumerator(){return fNumerator;}
147 TH1* GetDenominator(){return fDenominator;}
149 void ProcessSameEventParticles(AliHBTPair* pair);
150 void ProcessDiffEventParticles(AliHBTPair* pair);
154 virtual void GetValues(AliHBTPair* pair, Double_t&, Double_t&) = 0;
160 ClassDef(AliHBTOnePairFctn2D,1)
162 /******************************************************************/
163 /******************************************************************/
164 /******************************************************************/
166 class AliHBTOnePairFctn3D: public AliHBTOnePairFctn
169 AliHBTOnePairFctn3D(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);
173 virtual ~AliHBTOnePairFctn3D();
175 TH1* GetNumerator(){return fNumerator;}
176 TH1* GetDenominator(){return fDenominator;}
182 ClassDef(AliHBTOnePairFctn3D,1)
184 /******************************************************************/
185 /******************************************************************/
186 /******************************************************************/
188 class AliHBTTwoPairFctn1D: public AliHBTTwoPairFctn
191 AliHBTTwoPairFctn1D(Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
192 AliHBTTwoPairFctn1D(const char*,const char*,
193 Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
194 ~AliHBTTwoPairFctn1D();
196 TH1* GetNumerator(){return fNumerator;}
197 TH1* GetDenominator(){return fDenominator;}
199 void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
200 void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
203 virtual Double_t GetValue(AliHBTPair* trackpair, AliHBTPair* partpair) = 0;
209 ClassDef(AliHBTTwoPairFctn1D,1)
213 /******************************************************************/
214 /******************************************************************/
215 /******************************************************************/
216 class AliHBTTwoPairFctn2D: public AliHBTTwoPairFctn
219 AliHBTTwoPairFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
220 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15);
221 virtual ~AliHBTTwoPairFctn2D();
223 TH1* GetNumerator(){return fNumerator;}
224 TH1* GetDenominator(){return fDenominator;}
226 void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
227 void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
231 virtual void GetValues(AliHBTPair*,AliHBTPair*, Double_t&, Double_t&) = 0;
237 ClassDef(AliHBTTwoPairFctn2D,1)
241 /******************************************************************/
242 /******************************************************************/
243 /******************************************************************/
244 class AliHBTTwoPairFctn3D: public AliHBTTwoPairFctn
247 AliHBTTwoPairFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
248 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15,
249 Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15){}
250 virtual ~AliHBTTwoPairFctn3D(){}
252 TH1* GetNumerator(){return fNumerator;}
253 TH1* GetDenominator(){return fDenominator;}
255 void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
256 void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
260 virtual void GetValues(AliHBTPair*,AliHBTPair*, Double_t&, Double_t&,Double_t&) = 0;
266 ClassDef(AliHBTTwoPairFctn3D,1)
269 /******************************************************************/
270 /******************************************************************/
271 /******************************************************************/