Bug correction
[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    ClassDef(AliHBTPairPhiResolVsQInvFctn,1)
275  };
276
277 /***********************************************************************/
278 /***********************************************************************/
279 class AliHBTPairThetaResolVsKtFctn: public AliHBTTwoPairFctn2D
280  {
281   public: 
282    AliHBTPairThetaResolVsKtFctn(Int_t nXbins = 200, Double_t maxXval = 0.2, Double_t minXval = 0.0, 
283                              Int_t nYbins = 500, Double_t maxYval = .15, Double_t minYval =-0.15);
284    
285    virtual ~AliHBTPairThetaResolVsKtFctn(){}
286    
287    TH1* GetResult(){return fNumerator;}  
288    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y);
289    ClassDef(AliHBTPairThetaResolVsKtFctn,1)
290  };
291
292 /***********************************************************************/
293 /***********************************************************************/
294 class AliHBTPairPhiResolVsKtFctn: public AliHBTTwoPairFctn2D
295  {
296   public: 
297    AliHBTPairPhiResolVsKtFctn(Int_t nXbins = 200, Double_t maxXval = 0.2, Double_t minXval = 0.0, 
298                              Int_t nYbins = 500, Double_t maxYval = .15, Double_t minYval =-0.15);
299    
300    virtual ~AliHBTPairPhiResolVsKtFctn(){}
301    
302    TH1* GetResult(){return fNumerator;}  
303    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y);
304    ClassDef(AliHBTPairPhiResolVsKtFctn,1)
305  };
306
307 /***********************************************************************/
308 /***********************************************************************/
309 class AliHBTPairPhiResolVsPairPhiFctn: public AliHBTTwoPairFctn2D
310  {
311   public: 
312    AliHBTPairPhiResolVsPairPhiFctn(Int_t nXbins = 200, Double_t maxXval = TMath::TwoPi(), Double_t minXval = 0.0, 
313                              Int_t nYbins = 500, Double_t maxYval = .15, Double_t minYval =-0.15);
314    
315    virtual ~AliHBTPairPhiResolVsPairPhiFctn(){}
316    
317    TH1* GetResult(){return fNumerator;}  
318    void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y);
319    ClassDef(AliHBTPairPhiResolVsPairPhiFctn,1)
320  };
321
322
323 #endif