QinvResVsQinv, Phi and Theta pair open angle resolutions functions added
[u/mrichter/AliRoot.git] / HBTAN / AliHBTQResolutionFctns.h
1 #ifndef ALIHBTQOUTVsQINVRESOLFCTN_H
2 #define ALIHBTQOUTVsQINVRESOLFCTN_H
3 //General Remark:
4 //CMSLC means
5 //Center of Mass System Longitudially Co-moving
6
7
8 //this class creates resolution function of Qout 
9 //(difference of simulated pair Qout and recontructed pair)
10 //in function of QInv
11 //it inherits from AliHBTTwoPairFctn2D
12 //  it needs two pairs to compare
13 //  and is two dimentional: numerator and denominator are TH2D
14
15 class AliHBTQOutResolVsQInvFctn;  //QOutCMSLC  Res   Vs   QInvCMSLC 
16 class AliHBTQSideResolVsQInvFctn; //QSideCMSLC Res   Vs   QInvCMSLC 
17 class AliHBTQLongResolVsQInvFctn; //QLongCMSLC Res   Vs   QInvCMSLC 
18 class AliHBTQInvResolVsQInvFctn;  //QInvCMSLC Res   Vs   QInvCMSLC 
19
20 class AliHBTPairThetaResolVsQInvFctn;//PairTheta Res   Vs   QInvCMSLC
21 class AliHBTPairPhiResolVsQInvFctn;  //PairPhi   Res   Vs   QInvCMSLC
22
23 class AliHBTQInvResolVsKtFctn;    //QInvCMSLC  Res   Vs   Kt
24 class AliHBTQOutResolVsKtFctn;    //QOutCMSLC  Res   Vs   Kt
25 class AliHBTQSideResolVsKtFctn;   //QSideCMSLC Res   Vs   Kt
26 class AliHBTQLongResolVsKtFctn;   //QLongCMSLC Res   Vs   Kt
27
28 class AliHBTPairThetaResolVsKtFctn;   //PairTheta Res   Vs   Kt
29 class AliHBTPairPhiResolVsKtFctn;   //PairPhi Res   Vs   Kt
30
31
32 class AliHBTQOutResolVsQOutFctn;  //QOutCMSLC  Res   Vs   QOut
33 class AliHBTQSideResolVsQSideFctn;//QSideCMSLC Res   Vs   QSide
34 class AliHBTQLongResolVsQLongFctn;//QLongCMSLC Res   Vs   QLong
35
36
37  
38 #include "AliHBTFunction.h"
39 /***********************************************************************/
40 /***********************************************************************/
41 class AliHBTQInvResolVsQInvFctn: public AliHBTTwoPairFctn2D
42  {
43   public: 
44    AliHBTQInvResolVsQInvFctn(Int_t nXbins = 200, Double_t maxXval = 0.2, Double_t minXval = 0.0, 
45                              Int_t nYbins = 500, Double_t maxYval = .15, Double_t minYval =-0.15);
46    
47    virtual ~AliHBTQInvResolVsQInvFctn(){}
48    
49    TH1* GetResult(){return fNumerator;}  
50    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y)
51     {
52      y = partpair->GetQInv() - trackpair->GetQInv();
53      x = partpair->GetQInv();
54     }
55   protected:
56   private: 
57   public:
58     ClassDef(AliHBTQInvResolVsQInvFctn,1)
59  };
60
61
62 /***********************************************************************/
63 /***********************************************************************/
64 class AliHBTQOutResolVsQInvFctn: public AliHBTTwoPairFctn2D
65  {
66   public: 
67    AliHBTQOutResolVsQInvFctn(Int_t nXbins = 200, Double_t maxXval = 0.2, Double_t minXval = 0.0, 
68                              Int_t nYbins = 500, Double_t maxYval = .15, Double_t minYval =-0.15);
69    
70    virtual ~AliHBTQOutResolVsQInvFctn(){}
71    
72    TH1* GetResult(){return fNumerator;}  
73    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y)
74     {
75      y = partpair->GetQOutCMSLC() - trackpair->GetQOutCMSLC();
76      x = partpair->GetQInv();
77     }
78   protected:
79   private: 
80   public:
81     ClassDef(AliHBTQOutResolVsQInvFctn,1)
82  };
83
84 /***********************************************************************/
85 /***********************************************************************/
86 class AliHBTQSideResolVsQInvFctn: public AliHBTTwoPairFctn2D
87  {
88   public: 
89    AliHBTQSideResolVsQInvFctn(Int_t nXbins = 200, Double_t maxXval = 0.2, Double_t minXval = 0.0, 
90                              Int_t nYbins = 500, Double_t maxYval = .05, Double_t minYval =-0.05);
91    virtual ~AliHBTQSideResolVsQInvFctn(){}
92
93    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair,  Double_t& x, Double_t& y)
94     {
95      y = partpair->GetQSideCMSLC() - trackpair->GetQSideCMSLC();
96      x = partpair->GetQInv();
97     }
98    TH1* GetResult(){return fNumerator;} 
99   protected:
100   private:
101   public:
102     ClassDef(AliHBTQSideResolVsQInvFctn,1)
103  };
104
105 /***********************************************************************/
106 /***********************************************************************/
107 class AliHBTQLongResolVsQInvFctn: public AliHBTTwoPairFctn2D
108  {
109   public: 
110    AliHBTQLongResolVsQInvFctn(Int_t nXbins = 200, Double_t maxXval = 0.2, Double_t minXval = 0.0, 
111                              Int_t nYbins = 500, Double_t maxYval = .05, Double_t minYval =-0.05);
112    virtual ~AliHBTQLongResolVsQInvFctn(){}
113
114    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y)
115     {
116      y = partpair->GetQLongCMSLC() - trackpair->GetQLongCMSLC();
117      x = partpair->GetQInv();
118     }
119    TH1* GetResult(){return fNumerator;} 
120   protected:
121   private:
122   public:
123     ClassDef(AliHBTQLongResolVsQInvFctn,1)
124  };
125
126 /***********************************************************************/
127 /***********************************************************************/
128 class AliHBTQInvResolVsKtFctn: public AliHBTTwoPairFctn2D
129  {
130   public: 
131    AliHBTQInvResolVsKtFctn(Int_t nXbins = 200, Double_t maxXval = 1., Double_t minXval = 0.0, 
132                              Int_t nYbins = 500, Double_t maxYval = .05, Double_t minYval =-0.05);
133    virtual ~AliHBTQInvResolVsKtFctn(){};
134
135    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y)
136     {
137      y = partpair->GetQInv() - trackpair->GetQInv();
138      x = partpair->GetKt();
139     }
140    TH1* GetResult(){return fNumerator;} 
141   protected:
142   private:
143   public:
144     ClassDef(AliHBTQInvResolVsKtFctn,1)
145  };
146 /***********************************************************************/
147 /***********************************************************************/
148 class AliHBTQOutResolVsKtFctn: public AliHBTTwoPairFctn2D
149  {
150   public: 
151    AliHBTQOutResolVsKtFctn(Int_t nXbins = 200, Double_t maxXval = 1., Double_t minXval = 0.0, 
152                              Int_t nYbins = 500, Double_t maxYval = .15, Double_t minYval =-0.15);
153    virtual ~AliHBTQOutResolVsKtFctn(){}
154    TH1* GetResult(){return GetNumerator();}
155    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y)
156     {
157      y = partpair->GetQOutCMSLC() - trackpair->GetQOutCMSLC();
158      x = partpair->GetKt();
159     }
160   protected:
161   private:
162   public:
163     ClassDef(AliHBTQOutResolVsKtFctn,1)
164  };
165 /***********************************************************************/
166 /***********************************************************************/
167 class AliHBTQSideResolVsKtFctn: public AliHBTTwoPairFctn2D
168  {
169   public: 
170    AliHBTQSideResolVsKtFctn(Int_t nXbins = 200, Double_t maxXval = 1., Double_t minXval = 0.0, 
171                             Int_t nYbins = 500, Double_t maxYval = .05, Double_t minYval =-0.05);
172    virtual ~AliHBTQSideResolVsKtFctn(){}
173    TH1* GetResult(){return GetNumerator();}
174    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y)
175     {
176      y = partpair->GetQSideCMSLC() - trackpair->GetQSideCMSLC();
177      x = partpair->GetKt();
178     }
179   protected:
180   private:
181   public:
182     ClassDef(AliHBTQSideResolVsKtFctn,1)
183  };
184 /***********************************************************************/
185 /***********************************************************************/
186 class AliHBTQLongResolVsKtFctn: public AliHBTTwoPairFctn2D
187  {
188   public: 
189    AliHBTQLongResolVsKtFctn(Int_t nXbins = 200, Double_t maxXval = 1., Double_t minXval = 0.0, 
190                              Int_t nYbins = 500, Double_t maxYval = .05, Double_t minYval =-0.05);
191    virtual ~AliHBTQLongResolVsKtFctn(){}
192
193    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y)
194     {
195      y = partpair->GetQLongCMSLC() - trackpair->GetQLongCMSLC();
196      x = partpair->GetKt();
197     }
198    TH1* GetResult(){return fNumerator;}
199   protected:
200   private:
201   public:
202     ClassDef(AliHBTQLongResolVsKtFctn,1)
203  };
204 /***********************************************************************/
205 /***********************************************************************/
206 class AliHBTQOutResolVsQOutFctn: public AliHBTTwoPairFctn2D
207  {
208   public: 
209    AliHBTQOutResolVsQOutFctn(Int_t nXbins = 200, Double_t maxXval = 0.2, Double_t minXval = -0.2, 
210                              Int_t nYbins = 500, Double_t maxYval = .15, Double_t minYval =-0.15);
211    virtual ~AliHBTQOutResolVsQOutFctn(){}
212
213    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y)
214     {
215      x = partpair->GetQOutCMSLC();
216      y = x - trackpair->GetQOutCMSLC();
217     }
218    TH1* GetResult(){return fNumerator;}  
219   protected:
220   private:
221   public:
222     ClassDef(AliHBTQOutResolVsQOutFctn,1)
223  };
224
225 /***********************************************************************/
226 /***********************************************************************/
227
228 class AliHBTQSideResolVsQSideFctn: public AliHBTTwoPairFctn2D
229  {
230   public: 
231    AliHBTQSideResolVsQSideFctn(Int_t nXbins = 200, Double_t maxXval = 0.2, Double_t minXval = -0.2, 
232                              Int_t nYbins = 500, Double_t maxYval = .15, Double_t minYval =-0.15);
233    virtual ~AliHBTQSideResolVsQSideFctn(){}
234
235    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y)
236     {
237      x = partpair->GetQSideCMSLC();
238      y = x - trackpair->GetQSideCMSLC();
239     }
240    TH1* GetResult(){return fNumerator;}  
241   protected:
242   private:
243   public:
244     ClassDef(AliHBTQSideResolVsQSideFctn,1)
245  };
246
247
248 /***********************************************************************/
249 /***********************************************************************/
250
251 class AliHBTQLongResolVsQLongFctn: public AliHBTTwoPairFctn2D
252  {
253   public: 
254    AliHBTQLongResolVsQLongFctn(Int_t nXbins = 200, Double_t maxXval = 0.2, Double_t minXval = -0.2,
255                              Int_t nYbins = 500, Double_t maxYval = .05, Double_t minYval =-0.05);
256    virtual ~AliHBTQLongResolVsQLongFctn(){}
257
258    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y)
259     {
260      x = partpair->GetQLongCMSLC();
261      y = x - trackpair->GetQLongCMSLC();
262     }
263    TH1* GetResult(){return fNumerator;}  
264   protected:
265   private:
266   public:
267     ClassDef(AliHBTQLongResolVsQLongFctn,1)
268  };
269
270
271 /***********************************************************************/
272 /***********************************************************************/
273 class AliHBTPairThetaResolVsQInvFctn: public AliHBTTwoPairFctn2D
274  {
275   public: 
276    AliHBTPairThetaResolVsQInvFctn(Int_t nXbins = 200, Double_t maxXval = 0.2, Double_t minXval = 0.0, 
277                              Int_t nYbins = 500, Double_t maxYval = .15, Double_t minYval =-0.15);
278    
279    virtual ~AliHBTPairThetaResolVsQInvFctn(){}
280    
281    TH1* GetResult(){return fNumerator;}  
282    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y)
283     {
284      Double_t partTheta = partpair->Particle1()->Theta() - partpair->Particle2()->Theta();
285      Double_t trackTheta = trackpair->Particle1()->Theta() - trackpair->Particle2()->Theta();
286      y = partTheta - trackTheta;
287      x = partpair->GetQInv();
288     }
289   protected:
290   private: 
291   public:
292     ClassDef(AliHBTPairThetaResolVsQInvFctn,1)
293  };
294
295 /***********************************************************************/
296 /***********************************************************************/
297 class AliHBTPairPhiResolVsQInvFctn: public AliHBTTwoPairFctn2D
298  {
299   public: 
300    AliHBTPairPhiResolVsQInvFctn(Int_t nXbins = 200, Double_t maxXval = 0.2, Double_t minXval = 0.0, 
301                              Int_t nYbins = 500, Double_t maxYval = .15, Double_t minYval =-0.15);
302    
303    virtual ~AliHBTPairPhiResolVsQInvFctn(){}
304    
305    TH1* GetResult(){return fNumerator;}  
306    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y)
307     {
308      Double_t partPhi = partpair->Particle1()->Phi() - partpair->Particle2()->Phi();
309      Double_t trackPhi = trackpair->Particle1()->Phi() - trackpair->Particle2()->Phi();
310      y = partPhi - trackPhi;
311      x = partpair->GetQInv();
312     }
313   protected:
314   private: 
315   public:
316     ClassDef(AliHBTPairPhiResolVsQInvFctn,1)
317  };
318
319 /***********************************************************************/
320 /***********************************************************************/
321 class AliHBTPairThetaResolVsKtFctn: public AliHBTTwoPairFctn2D
322  {
323   public: 
324    AliHBTPairThetaResolVsKtFctn(Int_t nXbins = 200, Double_t maxXval = 0.2, Double_t minXval = 0.0, 
325                              Int_t nYbins = 500, Double_t maxYval = .15, Double_t minYval =-0.15);
326    
327    virtual ~AliHBTPairThetaResolVsKtFctn(){}
328    
329    TH1* GetResult(){return fNumerator;}  
330    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y)
331     {
332      Double_t partTheta = partpair->Particle1()->Theta() - partpair->Particle2()->Theta();
333      Double_t trackTheta = trackpair->Particle1()->Theta() - trackpair->Particle2()->Theta();
334      y = partTheta - trackTheta;
335      x = partpair->GetKt();
336     }
337   protected:
338   private: 
339   public:
340     ClassDef(AliHBTPairThetaResolVsKtFctn,1)
341  };
342
343 /***********************************************************************/
344 /***********************************************************************/
345 class AliHBTPairPhiResolVsKtFctn: public AliHBTTwoPairFctn2D
346  {
347   public: 
348    AliHBTPairPhiResolVsKtFctn(Int_t nXbins = 200, Double_t maxXval = 0.2, Double_t minXval = 0.0, 
349                              Int_t nYbins = 500, Double_t maxYval = .15, Double_t minYval =-0.15);
350    
351    virtual ~AliHBTPairPhiResolVsKtFctn(){}
352    
353    TH1* GetResult(){return fNumerator;}  
354    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y)
355     {
356      Double_t partPhi = partpair->Particle1()->Phi() - partpair->Particle2()->Phi();
357      Double_t trackPhi = trackpair->Particle1()->Phi() - trackpair->Particle2()->Phi();
358      y = partPhi - trackPhi;
359      x = partpair->GetKt();
360     }
361   protected:
362   private: 
363   public:
364     ClassDef(AliHBTPairPhiResolVsKtFctn,1)
365  };
366
367 #endif