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();
53 if(fPairCut->Pass(pair)) //so try reverse combination
55 return 0x0;//it is BAD as well - so return
61 /******************************************************************/
62 /******************************************************************/
63 /******************************************************************/
64 class AliHBTOnePairFctn: public AliHBTFunction
68 AliHBTOnePairFctn(const Char_t *name, const Char_t *title):AliHBTFunction(name,title){}
69 virtual ~AliHBTOnePairFctn(){}
71 virtual void ProcessSameEventParticles(AliHBTPair* pair) = 0;
72 virtual void ProcessDiffEventParticles(AliHBTPair* pair) = 0;
78 ClassDef(AliHBTOnePairFctn,1)
81 /******************************************************************/
82 /******************************************************************/
83 /******************************************************************/
84 class AliHBTTwoPairFctn: public AliHBTFunction
87 AliHBTTwoPairFctn(){};
88 AliHBTTwoPairFctn(const Char_t *name, const Char_t *title):AliHBTFunction(name,title){}
89 virtual ~AliHBTTwoPairFctn(){};
92 ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair) = 0;
94 ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair) = 0;
99 ClassDef(AliHBTTwoPairFctn,1)
102 /******************************************************************/
103 /******************************************************************/
104 /******************************************************************/
107 class AliHBTOnePairFctn1D: public AliHBTOnePairFctn
110 AliHBTOnePairFctn1D();
111 AliHBTOnePairFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval);
112 AliHBTOnePairFctn1D(const Char_t *name, const Char_t *title,
113 Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
114 virtual ~AliHBTOnePairFctn1D();
117 TH1* GetNumerator(){return fNumerator;}
118 TH1* GetDenominator(){return fDenominator;}
120 void ProcessSameEventParticles(AliHBTPair* pair);
121 void ProcessDiffEventParticles(AliHBTPair* pair);
123 void SetNumberOfBinsToScale(Int_t n = 30){fNBinsToScale = n;}
125 //retruns velue to be histogrammed
126 virtual Double_t GetValue(AliHBTPair* pair) = 0;
133 ClassDef(AliHBTOnePairFctn1D,2)
136 /******************************************************************/
137 /******************************************************************/
138 /******************************************************************/
140 class AliHBTOnePairFctn2D: public AliHBTOnePairFctn
143 AliHBTOnePairFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
144 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15);
145 virtual ~AliHBTOnePairFctn2D();
147 TH1* GetNumerator(){return fNumerator;}
148 TH1* GetDenominator(){return fDenominator;}
150 void ProcessSameEventParticles(AliHBTPair* pair);
151 void ProcessDiffEventParticles(AliHBTPair* pair);
155 virtual void GetValues(AliHBTPair* pair, Double_t&, Double_t&) = 0;
161 ClassDef(AliHBTOnePairFctn2D,1)
163 /******************************************************************/
164 /******************************************************************/
165 /******************************************************************/
167 class AliHBTOnePairFctn3D: public AliHBTOnePairFctn
170 AliHBTOnePairFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
171 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15,
172 Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15);
174 virtual ~AliHBTOnePairFctn3D();
176 TH1* GetNumerator(){return fNumerator;}
177 TH1* GetDenominator(){return fDenominator;}
183 ClassDef(AliHBTOnePairFctn3D,1)
185 /******************************************************************/
186 /******************************************************************/
187 /******************************************************************/
189 class AliHBTTwoPairFctn1D: public AliHBTTwoPairFctn
192 AliHBTTwoPairFctn1D(Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
193 AliHBTTwoPairFctn1D(const char*,const char*,
194 Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
195 virtual ~AliHBTTwoPairFctn1D();
197 TH1* GetNumerator(){return fNumerator;}
198 TH1* GetDenominator(){return fDenominator;}
200 void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
201 void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
204 void SetNumberOfBinsToScale(Int_t n = 30){fNBinsToScale = n;}
207 virtual Double_t GetValue(AliHBTPair* trackpair, AliHBTPair* partpair) = 0;
215 ClassDef(AliHBTTwoPairFctn1D,1)
219 /******************************************************************/
220 /******************************************************************/
221 /******************************************************************/
222 class AliHBTTwoPairFctn2D: public AliHBTTwoPairFctn
225 AliHBTTwoPairFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
226 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15);
227 virtual ~AliHBTTwoPairFctn2D();
229 TH1* GetNumerator(){return fNumerator;}
230 TH1* GetDenominator(){return fDenominator;}
232 void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
233 void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
237 virtual void GetValues(AliHBTPair*,AliHBTPair*, Double_t&, Double_t&) = 0;
243 ClassDef(AliHBTTwoPairFctn2D,1)
247 /******************************************************************/
248 /******************************************************************/
249 /******************************************************************/
250 class AliHBTTwoPairFctn3D: public AliHBTTwoPairFctn
253 AliHBTTwoPairFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0,
254 Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15,
255 Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15){}
256 virtual ~AliHBTTwoPairFctn3D(){}
258 TH1* GetNumerator(){return fNumerator;}
259 TH1* GetDenominator(){return fDenominator;}
261 void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
262 void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
266 virtual void GetValues(AliHBTPair*,AliHBTPair*, Double_t&, Double_t&,Double_t&) = 0;
272 ClassDef(AliHBTTwoPairFctn3D,1)
275 /******************************************************************/
276 /******************************************************************/
277 /******************************************************************/