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