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 virtual ~AliHBTOnePairFctn(){}
69 virtual void ProcessSameEventParticles(AliHBTPair* pair) = 0;
70 virtual void ProcessDiffEventParticles(AliHBTPair* pair) = 0;
76 ClassDef(AliHBTOnePairFctn,1)
79 /******************************************************************/
80 /******************************************************************/
81 /******************************************************************/
82 class AliHBTTwoPairFctn: public AliHBTFunction
85 AliHBTTwoPairFctn(){};
86 virtual ~AliHBTTwoPairFctn(){};
89 ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair) = 0;
91 ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair) = 0;
96 ClassDef(AliHBTTwoPairFctn,1)
99 /******************************************************************/
100 /******************************************************************/
101 /******************************************************************/
104 class AliHBTOnePairFctn1D: public AliHBTOnePairFctn
107 AliHBTOnePairFctn1D(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
108 virtual ~AliHBTOnePairFctn1D();
111 TH1* GetNumerator(){return fNumerator;}
112 TH1* GetDenominator(){return fDenominator;}
114 void ProcessSameEventParticles(AliHBTPair* pair);
115 void ProcessDiffEventParticles(AliHBTPair* pair);
117 void SetNumberOfBinsToScale();
119 //retruns velue to be histogrammed
120 virtual Double_t GetValue(AliHBTPair* pair) = 0;
127 ClassDef(AliHBTOnePairFctn1D,2)
130 /******************************************************************/
131 /******************************************************************/
132 /******************************************************************/
134 class AliHBTOnePairFctn2D: public AliHBTOnePairFctn
137 AliHBTOnePairFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
138 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15);
139 ~AliHBTOnePairFctn2D();
141 TH1* GetNumerator(){return fNumerator;}
142 TH1* GetDenominator(){return fDenominator;}
144 void ProcessSameEventParticles(AliHBTPair* pair);
145 void ProcessDiffEventParticles(AliHBTPair* pair);
149 virtual void GetValues(AliHBTPair* pair, Double_t&, Double_t&) = 0;
155 ClassDef(AliHBTOnePairFctn2D,1)
157 /******************************************************************/
158 /******************************************************************/
159 /******************************************************************/
161 class AliHBTOnePairFctn3D: public AliHBTOnePairFctn
164 AliHBTOnePairFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
165 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15,
166 Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15);
168 virtual ~AliHBTOnePairFctn3D();
170 TH1* GetNumerator(){return fNumerator;}
171 TH1* GetDenominator(){return fDenominator;}
177 ClassDef(AliHBTOnePairFctn3D,1)
179 /******************************************************************/
180 /******************************************************************/
181 /******************************************************************/
183 class AliHBTTwoPairFctn1D: public AliHBTTwoPairFctn
186 AliHBTTwoPairFctn1D(Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
187 AliHBTTwoPairFctn1D(const char*,const char*,
188 Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
189 ~AliHBTTwoPairFctn1D();
191 TH1* GetNumerator(){return fNumerator;}
192 TH1* GetDenominator(){return fDenominator;}
194 void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
195 void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
198 virtual Double_t GetValue(AliHBTPair* trackpair, AliHBTPair* partpair) = 0;
204 ClassDef(AliHBTTwoPairFctn1D,1)
208 /******************************************************************/
209 /******************************************************************/
210 /******************************************************************/
211 class AliHBTTwoPairFctn2D: public AliHBTTwoPairFctn
214 AliHBTTwoPairFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
215 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15);
216 virtual ~AliHBTTwoPairFctn2D();
218 TH1* GetNumerator(){return fNumerator;}
219 TH1* GetDenominator(){return fDenominator;}
221 void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
222 void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
226 virtual void GetValues(AliHBTPair*,AliHBTPair*, Double_t&, Double_t&) = 0;
232 ClassDef(AliHBTTwoPairFctn2D,1)
236 /******************************************************************/
237 /******************************************************************/
238 /******************************************************************/
239 class AliHBTTwoPairFctn3D: public AliHBTTwoPairFctn
242 AliHBTTwoPairFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
243 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15,
244 Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15){}
245 virtual ~AliHBTTwoPairFctn3D(){}
247 TH1* GetNumerator(){return fNumerator;}
248 TH1* GetDenominator(){return fDenominator;}
250 void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair){}
251 void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair){}
255 virtual void GetValues(AliHBTPair*,AliHBTPair*, Double_t&, Double_t&,Double_t&) = 0;
261 ClassDef(AliHBTTwoPairFctn3D,1)
264 /******************************************************************/
265 /******************************************************************/
266 /******************************************************************/