Updated PaintContour() method
[u/mrichter/AliRoot.git] / HBTAN / AliHBTQResolutionFctns.cxx
1 #include "AliHBTQResolutionFctns.h"
2
3 //__________________________________________________________________
4 ////////////////////////////////////////////////////////////////////
5 //                                                                //
6 // General Remark:                                                //
7 // LCMS 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
22 /******************************************************************/
23 /******************************************************************/
24 /******************************************************************/
25 ClassImp( AliHBTKtResolVsQInvFctn )
26 AliHBTKtResolVsQInvFctn::
27 AliHBTKtResolVsQInvFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
28                         Int_t nYbins, Double_t maxYval, Double_t minYval):
29  AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
30 {
31 //ctor
32  Rename("KtResolVsQInv","K_{t} Resolution vs. Q_{Inv}");
33 }
34 /******************************************************************/
35
36 void AliHBTKtResolVsQInvFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
37 {
38 //returns values of the functiion  
39   y = partpair->GetKt() - trackpair->GetKt();
40   x = partpair->GetQInv();
41 }
42 /******************************************************************/
43 /******************************************************************/
44 /******************************************************************/
45 ClassImp( AliHBTQInvResolVsQInvFctn )
46 AliHBTQInvResolVsQInvFctn::
47 AliHBTQInvResolVsQInvFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
48                           Int_t nYbins, Double_t maxYval, Double_t minYval):
49                  AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
50 {
51 //ctor
52  Rename("QInvResolVsQInv","Q_{Inv} Resolution vs. Q_{Inv}");
53 }
54 /******************************************************************/
55 void AliHBTQInvResolVsQInvFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
56 {
57 //returns values of the functiion  
58  y = partpair->GetQInv() - trackpair->GetQInv();
59  x = partpair->GetQInv();
60 }
61 /******************************************************************/
62 /******************************************************************/
63 /******************************************************************/
64
65 ClassImp( AliHBTQOutResolVsQInvFctn )
66 AliHBTQOutResolVsQInvFctn::
67 AliHBTQOutResolVsQInvFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
68                           Int_t nYbins, Double_t maxYval, Double_t minYval):
69                  AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
70 {
71 //ctor
72  Rename("QOutResolVsQInv","Q_{Out} Resolution vs. Q_{Inv}");
73 }
74 /******************************************************************/
75
76 void AliHBTQOutResolVsQInvFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
77 {
78   //returns Qoutsim-Qoutrec for y
79   //returns Qinv for x
80   Double_t tqout = trackpair->GetQOutLCMS();
81   y = partpair->GetQOutLCMS() - tqout;
82   if (tqout < 0.0) y = -y;
83   x = partpair->GetQInv();
84 }
85
86 /******************************************************************/
87 /******************************************************************/
88 /******************************************************************/
89
90 ClassImp( AliHBTQSideResolVsQInvFctn )
91
92 AliHBTQSideResolVsQInvFctn::
93 AliHBTQSideResolVsQInvFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
94                           Int_t nYbins, Double_t maxYval, Double_t minYval):
95                  AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
96 {
97 //ctor
98  Rename("QSideResolVsQInv","Q_{Side} Resolution vs. Q_{Inv}");
99 }
100 /******************************************************************/
101
102 void AliHBTQSideResolVsQInvFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair,  Double_t& x, Double_t& y) const
103 {
104   //returns Qsidesim-Qsiderec for y
105   //returns Qinv for x
106   y = partpair->GetQSideLCMS() - trackpair->GetQSideLCMS();
107   if (trackpair->GetQSideLCMS() < 0.0) y = -y;
108   x = partpair->GetQInv();
109 }
110
111 /******************************************************************/
112 /******************************************************************/
113 /******************************************************************/
114
115 ClassImp( AliHBTQLongResolVsQInvFctn )
116
117 AliHBTQLongResolVsQInvFctn::
118 AliHBTQLongResolVsQInvFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
119                            Int_t nYbins, Double_t maxYval, Double_t minYval):
120                            AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
121 {
122 //ctor
123  Rename("QLongResolVsQInv","Q_{Long} Resolution vs. Q_{Inv}");
124 }
125 /******************************************************************/
126
127 void AliHBTQLongResolVsQInvFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
128 {
129   //returns Qlongsim-Qlongrec for y
130   //returns Qinv for x
131   y = partpair->GetQLongLCMS() - trackpair->GetQLongLCMS();
132   if (trackpair->GetQLongLCMS() < 0.0) y = -y;
133   x = partpair->GetQInv();
134 }
135
136 /******************************************************************/
137 /******************************************************************/
138 /******************************************************************/
139
140 ClassImp( AliHBTQInvResolVsKtFctn )
141
142 AliHBTQInvResolVsKtFctn::
143 AliHBTQInvResolVsKtFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
144                         Int_t nYbins, Double_t maxYval, Double_t minYval):
145                            AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
146 {
147 //ctor
148  Rename("QInvResolVsKt","Q_{Inv} Resolution vs. K_{t}");
149 }
150 /******************************************************************/
151
152 void AliHBTQInvResolVsKtFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
153 {
154  //returns values of the function
155  y = partpair->GetQInv() - trackpair->GetQInv();
156  x = partpair->GetKt();
157 }
158
159 /******************************************************************/
160 /******************************************************************/
161 /******************************************************************/
162 ClassImp( AliHBTQOutResolVsKtFctn )
163
164 AliHBTQOutResolVsKtFctn::
165 AliHBTQOutResolVsKtFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
166                            Int_t nYbins, Double_t maxYval, Double_t minYval):
167                            AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
168 {
169 //ctor
170  Rename("QOutResolVsKt","Q_{Out} Resolution vs. K_{t} ");
171 }
172 /******************************************************************/
173
174 void AliHBTQOutResolVsKtFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
175 {
176   //returns Qoutsim-Qoutrec for y
177   //returns Kt for x
178   y = partpair->GetQOutLCMS() - trackpair->GetQOutLCMS();
179   if (trackpair->GetQOutLCMS() < 0.0) y = -y;
180   x = partpair->GetKt();
181 }
182
183 /******************************************************************/
184 /******************************************************************/
185 /******************************************************************/
186 ClassImp( AliHBTQSideResolVsKtFctn )
187
188 AliHBTQSideResolVsKtFctn::
189 AliHBTQSideResolVsKtFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
190                            Int_t nYbins, Double_t maxYval, Double_t minYval):
191                            AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
192 {
193 //ctor
194  Rename("QSideResolVsKt","Q_{Side} Resolution vs. K_{t} ");
195 }
196 /******************************************************************/
197
198 void AliHBTQSideResolVsKtFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
199 {
200   //returns Qsidesim-Qsiderec for y
201   //returns Kt for x
202   y = partpair->GetQSideLCMS() - trackpair->GetQSideLCMS();
203   if (trackpair->GetQSideLCMS() < 0.0) y = -y;
204   x = partpair->GetKt();
205 }
206
207 /******************************************************************/
208 /******************************************************************/
209 /******************************************************************/
210 ClassImp( AliHBTQLongResolVsKtFctn )
211
212 AliHBTQLongResolVsKtFctn::
213 AliHBTQLongResolVsKtFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
214                            Int_t nYbins, Double_t maxYval, Double_t minYval):
215                              AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
216 {
217 //ctor
218  Rename("QLongResolVsKt","Q_{Long} Resolution vs. K_{t} ");
219 }
220 /******************************************************************/
221
222 void AliHBTQLongResolVsKtFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
223 {
224   //returns Qlongsim-Qlongrec for y
225   //returns Kt for x
226   y = partpair->GetQLongLCMS() - trackpair->GetQLongLCMS();
227   if (trackpair->GetQLongLCMS() < 0.0) y = -y;
228   x = partpair->GetKt();
229 }
230 /******************************************************************/
231 /******************************************************************/
232 /******************************************************************/
233
234 ClassImp( AliHBTQOutResolVsQOutFctn)
235
236 AliHBTQOutResolVsQOutFctn::
237 AliHBTQOutResolVsQOutFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
238                            Int_t nYbins, Double_t maxYval, Double_t minYval):
239                            AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
240 {
241 //ctor
242  Rename("QOutResolVsQOut","Q_{Out} Resolution vs. Q_{Out} ");
243 }
244 /******************************************************************/
245
246 void AliHBTQOutResolVsQOutFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
247 {
248 //returns values of the function
249   x = partpair->GetQOutLCMS();
250   y = x - trackpair->GetQOutLCMS();
251 }
252  
253 /******************************************************************/
254 /******************************************************************/
255 /******************************************************************/
256 ClassImp( AliHBTQSideResolVsQSideFctn )
257
258 AliHBTQSideResolVsQSideFctn::
259 AliHBTQSideResolVsQSideFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
260                            Int_t nYbins, Double_t maxYval, Double_t minYval):
261                            AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
262 {
263 //ctor
264  Rename("QSideResolVsQSide","Q_{Side} Resolution vs. Q_{Side} ");
265 }
266 /******************************************************************/
267
268 void AliHBTQSideResolVsQSideFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
269 {
270 //returns values of the function
271   x = partpair->GetQSideLCMS(); 
272   y = x - trackpair->GetQSideLCMS();
273 }
274
275 /******************************************************************/
276 /******************************************************************/
277 /******************************************************************/
278 ClassImp( AliHBTQLongResolVsQLongFctn )
279
280 AliHBTQLongResolVsQLongFctn::
281 AliHBTQLongResolVsQLongFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
282                            Int_t nYbins, Double_t maxYval, Double_t minYval):
283                            AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
284 {
285 //ctor
286  Rename("QLongResolVsQLong","Q_{Long} Resolution vs. Q_{Long} ");
287 }
288 /******************************************************************/
289
290 void AliHBTQLongResolVsQLongFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
291 {
292 //returns values of the function
293  x = partpair->GetQLongLCMS(); 
294  y = x - trackpair->GetQLongLCMS();
295 }
296
297 /******************************************************************/
298 /******************************************************************/
299 /******************************************************************/
300
301 ClassImp( AliHBTPairThetaResolVsQInvFctn )
302
303 AliHBTPairThetaResolVsQInvFctn::
304 AliHBTPairThetaResolVsQInvFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
305                            Int_t nYbins, Double_t maxYval, Double_t minYval):
306                            AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
307 {
308 //ctor
309  Rename("PairThetaResolVsQInv","Pair Theta Angle Resolution vs. Q_{Inv} ");
310 }
311 /******************************************************************/
312
313 void AliHBTPairThetaResolVsQInvFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
314  {
315   //returns Pair Theta sim - Pair Theta rec for y
316   //returns Qinv for x
317    Double_t partTheta = partpair->Particle1()->Theta() - partpair->Particle2()->Theta();
318    Double_t trackTheta = trackpair->Particle1()->Theta() - trackpair->Particle2()->Theta();
319    y = partTheta - trackTheta;
320    x = partpair->GetQInv();
321  }
322 /******************************************************************/
323 /******************************************************************/
324 /******************************************************************/
325
326 ClassImp( AliHBTPairThetaResolVsPairThetaFctn )
327
328 AliHBTPairThetaResolVsPairThetaFctn::
329 AliHBTPairThetaResolVsPairThetaFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
330                            Int_t nYbins, Double_t maxYval, Double_t minYval):
331                            AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
332 {
333 //ctor
334  Rename("PairThetaResolVsPairTheta","Pair Theta Angle Resolution vs. Pair Theta ");
335 }
336 /******************************************************************/
337 void AliHBTPairThetaResolVsPairThetaFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
338 {
339   //returns Pair Theta sim - Pair Theta rec for y
340   //returns Pair Theta sim for x
341   Double_t partTheta = partpair->Particle1()->Theta() - partpair->Particle2()->Theta();
342   Double_t trackTheta = trackpair->Particle1()->Theta() - trackpair->Particle2()->Theta();
343   y = partTheta - trackTheta;
344   if (trackTheta < 0.0) y = -y;
345   x = trackTheta;
346 }
347 /******************************************************************/
348 /******************************************************************/
349 /******************************************************************/
350
351 ClassImp( AliHBTPairPhiResolVsQInvFctn )
352
353 AliHBTPairPhiResolVsQInvFctn::
354 AliHBTPairPhiResolVsQInvFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
355                            Int_t nYbins, Double_t maxYval, Double_t minYval):
356                            AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
357 {
358 //ctor
359  Rename("PairPhiResolVsQInv","Pair Phi Angle Resolution vs. Q_{Inv} ");
360 }
361 /******************************************************************/
362
363 void AliHBTPairPhiResolVsQInvFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
364  {
365   //returns Pair Phi sim - Pair Phi rec for y
366   //returns QInv sim for x
367   Double_t partPhi = partpair->Particle1()->Phi() - partpair->Particle2()->Phi();
368   Double_t trackPhi = trackpair->Particle1()->Phi() - trackpair->Particle2()->Phi();
369   y = partPhi - trackPhi;
370   x = partpair->GetQInv();
371  }
372
373 /******************************************************************/
374 /******************************************************************/
375 /******************************************************************/
376
377
378 ClassImp( AliHBTPairThetaResolVsKtFctn )
379
380 AliHBTPairThetaResolVsKtFctn::
381 AliHBTPairThetaResolVsKtFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
382                            Int_t nYbins, Double_t maxYval, Double_t minYval):
383                            AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
384 {
385 //ctor
386  Rename("PairThetaResolVsKt","Pair Theta Angle Resolution vs. K_{t} ");
387 }
388 /******************************************************************/
389
390 void AliHBTPairThetaResolVsKtFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
391 {
392   //returns Pair Theta sim - Pair Theta rec for y
393   //returns Kt sim for x
394   Double_t partTheta = partpair->Particle1()->Theta() - partpair->Particle2()->Theta();
395   Double_t trackTheta = trackpair->Particle1()->Theta() - trackpair->Particle2()->Theta();
396   y = partTheta - trackTheta;
397   x = partpair->GetKt();
398 }
399 /******************************************************************/
400 /******************************************************************/
401 /******************************************************************/
402
403 ClassImp( AliHBTPairPhiResolVsKtFctn )
404
405 AliHBTPairPhiResolVsKtFctn::
406 AliHBTPairPhiResolVsKtFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
407                            Int_t nYbins, Double_t maxYval, Double_t minYval):
408                            AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
409 {
410 //ctor
411  Rename("PairPhiResolVsKt","Pair Phi Angle Resolution vs. K_{t} ");
412 }
413 /******************************************************************/
414
415 void AliHBTPairPhiResolVsKtFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
416 {
417   //returns Pair Phi sim - Pair Phi rec for y
418   //returns Kt sim for x
419   Double_t partPhi = partpair->Particle1()->Phi() - partpair->Particle2()->Phi();
420   Double_t trackPhi = trackpair->Particle1()->Phi() - trackpair->Particle2()->Phi();
421   y = partPhi - trackPhi;
422   x = partpair->GetKt();
423 }
424
425 /******************************************************************/
426 /******************************************************************/
427 /******************************************************************/
428
429
430 ClassImp( AliHBTPairPhiResolVsPairPhiFctn )
431
432 AliHBTPairPhiResolVsPairPhiFctn::
433 AliHBTPairPhiResolVsPairPhiFctn(Int_t nXbins, Double_t maxXval, Double_t minXval, 
434                            Int_t nYbins, Double_t maxYval, Double_t minYval):
435                            AliHBTTwoPairFctn2D(nXbins,maxXval,minXval,nYbins,maxYval,minYval)
436 {
437 //ctor
438  Rename("PairPhiResolVsPairPhi","Pair Phi Angle Resolution vs. Pair Phi ");
439 }
440 /******************************************************************/
441
442 void AliHBTPairPhiResolVsPairPhiFctn::GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const
443 {
444   //returns Pair Phi sim - Pair Phi rec for y
445   //returns Pair Phi sim for x
446   Double_t partPhi = partpair->Particle1()->Phi() - partpair->Particle2()->Phi();
447   Double_t trackPhi = trackpair->Particle1()->Phi() - trackpair->Particle2()->Phi();
448   y = partPhi - trackPhi;
449   x = trackPhi;
450 }
451
452 /******************************************************************/
453 /******************************************************************/
454 /******************************************************************/