]>
Commit | Line | Data |
---|---|---|
76ce4b5b | 1 | //////////////////////////////////////////////////////////////////////////////// |
2 | // // | |
3 | // AliFemtoCorrFctnDEtaDPhi - A correlation function that analyzes // | |
4 | // two particle correlations with respect to the azimuthal angle (phi) // | |
5 | // and pseudorapidity (eta) difference // | |
6 | // // | |
7 | // Authors: Adam Kisiel Adam.Kisiel@cern.ch // | |
8 | // // | |
9 | //////////////////////////////////////////////////////////////////////////////// | |
10 | ||
11 | #include "AliFemtoCorrFctnDEtaDPhi.h" | |
12 | #include "AliFemtoModelHiddenInfo.h" | |
13 | //#include "AliFemtoHisto.hh" | |
14 | #include <cstdio> | |
15 | #include <TMath.h> | |
16 | ||
17 | #ifdef __ROOT__ | |
18 | ClassImp(AliFemtoCorrFctnDEtaDPhi) | |
19 | #endif | |
20 | ||
21 | #define PIH 1.57079632679489656 | |
22 | #define PIT 6.28318530717958623 | |
76ce4b5b | 23 | |
24 | //____________________________ | |
25 | AliFemtoCorrFctnDEtaDPhi::AliFemtoCorrFctnDEtaDPhi(char* title, const int& aPhiBins=20, const int& aEtaBins=20): | |
26 | AliFemtoCorrFctn(), | |
27 | fDPhiDEtaNumerator(0), | |
28 | fDPhiDEtaDenominator(0), | |
29 | fDPhiNumerator(0), | |
30 | fDPhiDenominator(0), | |
31 | fDCosNumerator(0), | |
32 | fDCosDenominator(0), | |
33 | fDoPtAnalysis(0), | |
34 | fDPhiPtNumerator(0), | |
35 | fDPhiPtDenominator(0), | |
36 | fDCosPtNumerator(0), | |
973a91f8 | 37 | fDCosPtDenominator(0), |
38 | fPhi(0), | |
3b97e69c | 39 | fEta(0), |
c477a4c1 | 40 | fPtSumDist(0), |
3b97e69c | 41 | fYtYtNumerator(0), |
d381642d | 42 | fYtYtDenominator(0), |
41fa2a11 | 43 | fIfCorrectionHist(kNone), |
d381642d | 44 | fPtCorrectionsNum(0), |
45 | fPtCorrectionsDen(0), | |
46 | fEtaCorrectionsNum(0), | |
0cf72019 | 47 | fEtaCorrectionsDen(0), |
48 | fphiL(0), | |
49 | fphiT(0) | |
76ce4b5b | 50 | { |
4d019bab | 51 | |
52 | fphiL = (-(int)(aPhiBins/4)+0.5)*2.*TMath::Pi()/aPhiBins; | |
53 | fphiT = 2*TMath::Pi()+(-(int)(aPhiBins/4)+0.5)*2.*TMath::Pi()/aPhiBins; | |
54 | ||
76ce4b5b | 55 | // set up numerator |
56 | char tTitNumD[101] = "NumDPhiDEta"; | |
57 | strncat(tTitNumD,title, 100); | |
4d019bab | 58 | fDPhiDEtaNumerator = new TH2D(tTitNumD,title,aPhiBins,fphiL,fphiT,aEtaBins,-2.0,2.0); |
76ce4b5b | 59 | // set up denominator |
60 | char tTitDenD[101] = "DenDPhiDEta"; | |
61 | strncat(tTitDenD,title, 100); | |
4d019bab | 62 | fDPhiDEtaDenominator = new TH2D(tTitDenD,title,aPhiBins,fphiL,fphiT,aEtaBins,-2.0,2.0); |
76ce4b5b | 63 | |
c477a4c1 | 64 | char tTitNum[101] = "PtSumDist"; |
65 | strncat(tTitNum,title, 100); | |
66 | fPtSumDist = new TH1D(tTitNum,title,200,0,10); | |
67 | fPtSumDist->Sumw2(); | |
68 | ||
76ce4b5b | 69 | // set up numerator |
70 | char tTitNumDPhi[101] = "NumDPhi"; | |
71 | strncat(tTitNumDPhi,title, 100); | |
72 | fDPhiNumerator = new TH1D(tTitNumDPhi,title,aPhiBins*2,-0.5*TMath::Pi(),1.5*TMath::Pi()); | |
73 | // set up denominator | |
74 | char tTitDenDPhi[101] = "DenDPhi"; | |
75 | strncat(tTitDenDPhi,title, 100); | |
76 | fDPhiDenominator = new TH1D(tTitDenDPhi,title,aPhiBins*2,-0.5*TMath::Pi(),1.5*TMath::Pi()); | |
77 | ||
78 | // set up numerator | |
79 | char tTitNumDCos[101] = "NumDCos"; | |
80 | strncat(tTitNumDCos,title, 100); | |
81 | fDCosNumerator = new TH1D(tTitNumDCos,title,aPhiBins*2,-1.0,1.0); | |
82 | // set up denominator | |
83 | char tTitDenDCos[101] = "DenDCos"; | |
84 | strncat(tTitDenDCos,title, 100); | |
85 | fDCosDenominator = new TH1D(tTitDenDCos,title,aPhiBins*2,-1.0,1.0); | |
86 | ||
973a91f8 | 87 | char tTitPhi[101] = "Phi"; |
88 | strncat(tTitPhi,title, 100); | |
89 | fPhi = new TH1D(tTitPhi,title,90,-TMath::Pi(),TMath::Pi()); | |
90 | ||
91 | char tTitEta[101] = "Eta"; | |
92 | strncat(tTitEta,title, 100); | |
93 | fEta = new TH1D(tTitEta,title,90,-1.2,1.2); | |
94 | ||
3b97e69c | 95 | // set up numerator |
96 | char tTitYtNum[101] = "NumYtYt"; | |
97 | strncat(tTitYtNum,title, 100); | |
98 | fYtYtNumerator = new TH2D(tTitYtNum,title,aPhiBins,1,5,aEtaBins,1,5); | |
99 | // set up denominator | |
100 | char tTitYtYtDen[101] = "DenYtYt"; | |
101 | strncat(tTitYtYtDen,title, 100); | |
102 | fYtYtDenominator = new TH2D(tTitYtYtDen,title,aPhiBins,1,5,aEtaBins,1,5); | |
103 | ||
104 | ||
d381642d | 105 | char tTitPtCorrectionsNum[101] = "NumpT1pT2EtaPhi"; |
106 | strncat(tTitPtCorrectionsNum,title, 100); | |
107 | char tTitPtCorrectionsDen[101] = "DenpT1pT2EtaPhi"; | |
108 | strncat(tTitPtCorrectionsDen,title, 100); | |
109 | ||
110 | Int_t nbins[4] = {20,20,aPhiBins,aEtaBins}; | |
111 | Double_t xmin[4] = {0,0,-0.5*TMath::Pi(),-2.0}; | |
112 | Double_t xmax[4] = {4,4,1.5*TMath::Pi(),2.0}; | |
113 | ||
114 | ||
115 | fPtCorrectionsNum = new THnSparseF(tTitPtCorrectionsNum,title,4,nbins,xmin,xmax); | |
116 | fPtCorrectionsDen = new THnSparseF(tTitPtCorrectionsDen,title,4,nbins,xmin,xmax); | |
117 | ||
118 | char tTitEtaCorrectionsNum[101] = "NumEta1Eta2EtaPhi"; | |
119 | strncat(tTitEtaCorrectionsNum,title, 100); | |
120 | char tTitEtaCorrectionsDen[101] = "DenEta1Eta2EtaPhi"; | |
121 | strncat(tTitEtaCorrectionsDen,title, 100); | |
122 | ||
123 | Double_t xmineta[4] = {-1,1,-0.5*TMath::Pi(),-2.0}; | |
124 | Double_t xmaxeta[4] = {-1,1,1.5*TMath::Pi(),2.0}; | |
125 | ||
126 | fEtaCorrectionsNum = new THnSparseF(tTitEtaCorrectionsNum,title,4,nbins,xmineta,xmaxeta); | |
127 | fEtaCorrectionsDen = new THnSparseF(tTitEtaCorrectionsDen,title,4,nbins,xmineta,xmaxeta); | |
128 | ||
129 | // THnSparse(const char* name, const char* title, Int_t dim, | |
130 | // const Int_t* nbins, const Double_t* xmin, const Double_t* xmax, | |
131 | // Int_t chunksize); | |
973a91f8 | 132 | |
76ce4b5b | 133 | // to enable error bar calculation... |
134 | fDPhiDEtaNumerator->Sumw2(); | |
135 | fDPhiDEtaDenominator->Sumw2(); | |
136 | fDPhiNumerator->Sumw2(); | |
137 | fDPhiDenominator->Sumw2(); | |
138 | fDCosNumerator->Sumw2(); | |
139 | fDCosDenominator->Sumw2(); | |
973a91f8 | 140 | fPhi->Sumw2(); |
141 | fEta->Sumw2(); | |
3b97e69c | 142 | fYtYtNumerator->Sumw2(); |
143 | fYtYtDenominator->Sumw2(); | |
d381642d | 144 | fPtCorrectionsNum->Sumw2(); |
145 | fPtCorrectionsDen->Sumw2(); | |
76ce4b5b | 146 | } |
147 | ||
148 | //____________________________ | |
149 | AliFemtoCorrFctnDEtaDPhi::AliFemtoCorrFctnDEtaDPhi(const AliFemtoCorrFctnDEtaDPhi& aCorrFctn) : | |
150 | AliFemtoCorrFctn(), | |
151 | fDPhiDEtaNumerator(0), | |
152 | fDPhiDEtaDenominator(0), | |
153 | fDPhiNumerator(0), | |
154 | fDPhiDenominator(0), | |
155 | fDCosNumerator(0), | |
156 | fDCosDenominator(0), | |
157 | fDoPtAnalysis(0), | |
158 | fDPhiPtNumerator(0), | |
159 | fDPhiPtDenominator(0), | |
160 | fDCosPtNumerator(0), | |
973a91f8 | 161 | fDCosPtDenominator(0), |
162 | fPhi(0), | |
3b97e69c | 163 | fEta(0), |
c477a4c1 | 164 | fPtSumDist(0), |
3b97e69c | 165 | fYtYtNumerator(0), |
d381642d | 166 | fYtYtDenominator(0), |
41fa2a11 | 167 | fIfCorrectionHist(kNone), |
d381642d | 168 | fPtCorrectionsNum(0), |
169 | fPtCorrectionsDen(0), | |
170 | fEtaCorrectionsNum(0), | |
0cf72019 | 171 | fEtaCorrectionsDen(0), |
172 | fphiL(0), | |
173 | fphiT(0) | |
76ce4b5b | 174 | { |
175 | // copy constructor | |
176 | if (aCorrFctn.fDPhiDEtaNumerator) | |
177 | fDPhiDEtaNumerator = new TH2D(*aCorrFctn.fDPhiDEtaNumerator); | |
178 | else | |
179 | fDPhiDEtaNumerator = 0; | |
180 | if (aCorrFctn.fDPhiDEtaDenominator) | |
181 | fDPhiDEtaDenominator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator); | |
182 | else | |
183 | fDPhiDEtaDenominator = 0; | |
184 | ||
185 | if (aCorrFctn.fDPhiNumerator) | |
186 | fDPhiNumerator = new TH1D(*aCorrFctn.fDPhiNumerator); | |
187 | else | |
188 | fDPhiNumerator = 0; | |
189 | if (aCorrFctn.fDPhiDenominator) | |
190 | fDPhiDenominator = new TH1D(*aCorrFctn.fDPhiDenominator); | |
191 | else | |
192 | fDPhiDenominator = 0; | |
193 | ||
194 | if (aCorrFctn.fDCosNumerator) | |
195 | fDCosNumerator = new TH1D(*aCorrFctn.fDCosNumerator); | |
196 | else | |
197 | fDCosNumerator = 0; | |
198 | if (aCorrFctn.fDCosDenominator) | |
199 | fDCosDenominator = new TH1D(*aCorrFctn.fDCosDenominator); | |
200 | else | |
201 | fDCosDenominator = 0; | |
202 | ||
203 | if (aCorrFctn.fDPhiPtNumerator) | |
204 | fDPhiPtNumerator = new TH2D(*aCorrFctn.fDPhiPtNumerator); | |
205 | else | |
206 | fDPhiPtNumerator = 0; | |
207 | if (aCorrFctn.fDPhiPtDenominator) | |
208 | fDPhiPtDenominator = new TH2D(*aCorrFctn.fDPhiPtDenominator); | |
209 | else | |
210 | fDPhiPtDenominator = 0; | |
211 | ||
212 | if (aCorrFctn.fDCosPtNumerator) | |
213 | fDCosPtNumerator = new TH2D(*aCorrFctn.fDCosPtNumerator); | |
214 | else | |
215 | fDCosPtNumerator = 0; | |
216 | if (aCorrFctn.fDCosPtDenominator) | |
217 | fDCosPtDenominator = new TH2D(*aCorrFctn.fDCosPtDenominator); | |
218 | else | |
219 | fDCosPtDenominator = 0; | |
973a91f8 | 220 | if (aCorrFctn.fPhi) |
221 | fPhi = new TH1D(*aCorrFctn.fPhi); | |
222 | else | |
223 | fPhi = 0; | |
224 | if (aCorrFctn.fEta) | |
225 | fEta = new TH1D(*aCorrFctn.fEta); | |
226 | else | |
227 | fEta = 0; | |
76ce4b5b | 228 | |
c477a4c1 | 229 | if (aCorrFctn.fPtSumDist) |
230 | fPtSumDist = new TH1D(*aCorrFctn.fPtSumDist); | |
231 | else | |
232 | fPtSumDist = 0; | |
233 | ||
3b97e69c | 234 | if (aCorrFctn.fYtYtNumerator) |
235 | fYtYtNumerator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator); | |
236 | else | |
237 | fYtYtNumerator = 0; | |
238 | ||
239 | if (aCorrFctn.fYtYtDenominator) | |
240 | fYtYtDenominator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator); | |
241 | else | |
242 | fYtYtDenominator = 0; | |
d381642d | 243 | |
4d019bab | 244 | fphiL = aCorrFctn.fphiL; |
245 | fphiT = aCorrFctn.fphiT; | |
246 | ||
d381642d | 247 | // if (aCorrFctn.fPtCorrectionsNum) |
248 | // fPtCorrectionsNum = new THnSparseF(*aCorrFctn.fPtCorrectionsNum); | |
249 | // else | |
250 | // fPtCorrectionsNum = 0; | |
251 | ||
252 | // if (aCorrFctn.fPtCorrectionsDen) | |
253 | // fPtCorrectionsDen = new THnSparseF(*aCorrFctn.fPtCorrectionsDen); | |
254 | // else | |
255 | // fPtCorrectionsDen = 0; | |
256 | ||
257 | ||
258 | ||
76ce4b5b | 259 | } |
260 | //____________________________ | |
261 | AliFemtoCorrFctnDEtaDPhi::~AliFemtoCorrFctnDEtaDPhi(){ | |
262 | // destructor | |
263 | delete fDPhiDEtaNumerator; | |
264 | delete fDPhiDEtaDenominator; | |
c477a4c1 | 265 | delete fPtSumDist; |
266 | ||
267 | ||
76ce4b5b | 268 | delete fDPhiNumerator; |
269 | delete fDPhiDenominator; | |
270 | delete fDCosNumerator; | |
271 | delete fDCosDenominator; | |
272 | if (fDoPtAnalysis) { | |
273 | delete fDPhiPtNumerator; | |
274 | delete fDPhiPtDenominator; | |
275 | delete fDCosPtNumerator; | |
276 | delete fDCosPtDenominator; | |
277 | } | |
973a91f8 | 278 | delete fPhi; |
279 | delete fEta; | |
3b97e69c | 280 | |
281 | delete fYtYtNumerator; | |
282 | delete fYtYtDenominator; | |
d381642d | 283 | |
284 | delete fPtCorrectionsNum; | |
285 | delete fPtCorrectionsDen; | |
286 | delete fEtaCorrectionsNum; | |
287 | delete fEtaCorrectionsDen; | |
76ce4b5b | 288 | } |
289 | //_________________________ | |
290 | AliFemtoCorrFctnDEtaDPhi& AliFemtoCorrFctnDEtaDPhi::operator=(const AliFemtoCorrFctnDEtaDPhi& aCorrFctn) | |
291 | { | |
292 | // assignment operator | |
293 | if (this == &aCorrFctn) | |
294 | return *this; | |
295 | ||
296 | if (aCorrFctn.fDPhiDEtaNumerator) | |
297 | fDPhiDEtaNumerator = new TH2D(*aCorrFctn.fDPhiDEtaNumerator); | |
298 | else | |
299 | fDPhiDEtaNumerator = 0; | |
300 | if (aCorrFctn.fDPhiDEtaDenominator) | |
301 | fDPhiDEtaDenominator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator); | |
302 | else | |
303 | fDPhiDEtaDenominator = 0; | |
304 | ||
305 | if (aCorrFctn.fDPhiNumerator) | |
306 | fDPhiNumerator = new TH1D(*aCorrFctn.fDPhiNumerator); | |
307 | else | |
308 | fDPhiNumerator = 0; | |
309 | if (aCorrFctn.fDPhiDenominator) | |
310 | fDPhiDenominator = new TH1D(*aCorrFctn.fDPhiDenominator); | |
311 | else | |
312 | fDPhiDenominator = 0; | |
313 | ||
314 | if (aCorrFctn.fDCosNumerator) | |
315 | fDCosNumerator = new TH1D(*aCorrFctn.fDCosNumerator); | |
316 | else | |
317 | fDCosNumerator = 0; | |
318 | if (aCorrFctn.fDCosDenominator) | |
319 | fDCosDenominator = new TH1D(*aCorrFctn.fDCosDenominator); | |
320 | else | |
321 | fDCosDenominator = 0; | |
322 | ||
323 | if (aCorrFctn.fDPhiPtNumerator) | |
324 | fDPhiPtNumerator = new TH2D(*aCorrFctn.fDPhiPtNumerator); | |
325 | else | |
326 | fDPhiPtNumerator = 0; | |
327 | if (aCorrFctn.fDPhiPtDenominator) | |
328 | fDPhiPtDenominator = new TH2D(*aCorrFctn.fDPhiPtDenominator); | |
329 | else | |
330 | fDPhiPtDenominator = 0; | |
331 | ||
332 | if (aCorrFctn.fDCosPtNumerator) | |
333 | fDCosPtNumerator = new TH2D(*aCorrFctn.fDCosPtNumerator); | |
334 | else | |
335 | fDCosPtNumerator = 0; | |
336 | if (aCorrFctn.fDCosPtDenominator) | |
337 | fDCosPtDenominator = new TH2D(*aCorrFctn.fDCosPtDenominator); | |
338 | else | |
339 | fDCosPtDenominator = 0; | |
973a91f8 | 340 | if (aCorrFctn.fPhi) |
341 | fPhi = new TH1D(*aCorrFctn.fPhi); | |
342 | else | |
343 | fPhi = 0; | |
344 | if (aCorrFctn.fEta) | |
345 | fEta = new TH1D(*aCorrFctn.fEta); | |
346 | else | |
347 | fEta = 0; | |
76ce4b5b | 348 | |
c477a4c1 | 349 | if (aCorrFctn.fPtSumDist) |
350 | fPtSumDist = new TH1D(*aCorrFctn.fPtSumDist); | |
351 | else | |
352 | fPtSumDist = 0; | |
353 | ||
3b97e69c | 354 | if (aCorrFctn.fYtYtNumerator) |
355 | fYtYtNumerator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator); | |
356 | else | |
357 | fYtYtNumerator = 0; | |
358 | ||
359 | if (aCorrFctn.fYtYtDenominator) | |
360 | fYtYtDenominator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator); | |
361 | else | |
362 | fYtYtDenominator = 0; | |
363 | ||
41fa2a11 | 364 | fIfCorrectionHist = kNone; |
d381642d | 365 | |
4d019bab | 366 | fphiL = aCorrFctn.fphiL; |
367 | fphiT = aCorrFctn.fphiT; | |
368 | ||
d381642d | 369 | // if (aCorrFctn.fPtCorrectionsNum) |
370 | // fPtCorrectionsNum = new THnSparseF(*aCorrFctn.fPtCorrectionsNum); | |
371 | // else | |
372 | // fPtCorrectionsNum = 0; | |
373 | ||
374 | // if (aCorrFctn.fPtCorrectionsDen) | |
375 | // fPtCorrectionsDen = new THnSparseF(*aCorrFctn.fPtCorrectionsDen); | |
376 | // else | |
377 | // fPtCorrectionsDen = 0; | |
378 | ||
379 | ||
380 | ||
76ce4b5b | 381 | return *this; |
382 | } | |
383 | //_________________________ | |
384 | void AliFemtoCorrFctnDEtaDPhi::Finish(){ | |
385 | // here is where we should normalize, fit, etc... | |
386 | // we should NOT Draw() the histos (as I had done it below), | |
387 | // since we want to insulate ourselves from root at this level | |
388 | // of the code. Do it instead at root command line with browser. | |
389 | // mShareNumerator->Draw(); | |
390 | //mShareDenominator->Draw(); | |
391 | //mRatio->Draw(); | |
392 | ||
393 | } | |
394 | ||
395 | //____________________________ | |
396 | AliFemtoString AliFemtoCorrFctnDEtaDPhi::Report(){ | |
397 | // create report | |
398 | string stemp = "TPC Ncls Correlation Function Report:\n"; | |
399 | char ctemp[100]; | |
400 | snprintf(ctemp , 100, "Number of entries in numerator:\t%E\n",fDPhiDEtaNumerator->GetEntries()); | |
401 | stemp += ctemp; | |
402 | snprintf(ctemp , 100, "Number of entries in denominator:\t%E\n",fDPhiDEtaDenominator->GetEntries()); | |
403 | stemp += ctemp; | |
404 | // stemp += mCoulombWeight->Report(); | |
405 | AliFemtoString returnThis = stemp; | |
406 | return returnThis; | |
407 | } | |
408 | //____________________________ | |
409 | void AliFemtoCorrFctnDEtaDPhi::AddRealPair( AliFemtoPair* pair){ | |
410 | // add real (effect) pair | |
411 | if (fPairCut) | |
412 | if (!fPairCut->Pass(pair)) return; | |
413 | ||
973a91f8 | 414 | /*double phi1 = pair->Track1()->Track()->P().Phi(); |
76ce4b5b | 415 | double phi2 = pair->Track2()->Track()->P().Phi(); |
416 | double eta1 = pair->Track1()->Track()->P().PseudoRapidity(); | |
973a91f8 | 417 | double eta2 = pair->Track2()->Track()->P().PseudoRapidity();*/ |
418 | ||
419 | double phi1 = pair->Track1()->FourMomentum().Phi(); | |
420 | double phi2 = pair->Track2()->FourMomentum().Phi(); | |
421 | double eta1 = pair->Track1()->FourMomentum().PseudoRapidity(); | |
422 | double eta2 = pair->Track2()->FourMomentum().PseudoRapidity(); | |
76ce4b5b | 423 | |
424 | double dphi = phi1 - phi2; | |
4d019bab | 425 | while (dphi<fphiL) dphi+=PIT; |
426 | while (dphi>fphiT) dphi-=PIT; | |
76ce4b5b | 427 | |
428 | double deta = eta1 - eta2; | |
429 | ||
d381642d | 430 | double px1 = pair->Track1()->Track()->P().x(); |
431 | double py1 = pair->Track1()->Track()->P().y(); | |
432 | //double pz1 = pair->Track1()->Track()->P().z(); | |
76ce4b5b | 433 | |
d381642d | 434 | double px2 = pair->Track2()->Track()->P().x(); |
435 | double py2 = pair->Track2()->Track()->P().y(); | |
436 | //double pz2 = pair->Track2()->Track()->P().z(); | |
76ce4b5b | 437 | |
d381642d | 438 | double pt1 = TMath::Hypot(px1, py1); |
439 | double pt2 = TMath::Hypot(px2, py2); | |
76ce4b5b | 440 | // double ptmin = pt1>pt2 ? pt2 : pt1; |
c477a4c1 | 441 | fPtSumDist->Fill(pt1+pt2); |
76ce4b5b | 442 | |
443 | // double cosphi = (px1*px2 + py1*py2 + pz1*pz2)/ | |
444 | // sqrt((px1*px1 + py1*py1 + pz1*pz1)*(px2*px2 + py2*py2 + pz2*pz2)); | |
445 | ||
446 | fDPhiDEtaNumerator->Fill(dphi, deta); | |
447 | ||
448 | fDPhiNumerator->Fill(dphi); | |
449 | // fDCosNumerator->Fill(cosphi); | |
450 | ||
451 | if (fDoPtAnalysis) { | |
452 | // fDPhiPtNumerator->Fill(dphi, ptmin); | |
453 | // fDCosPtNumerator->Fill(cosphi, ptmin); | |
454 | } | |
455 | ||
973a91f8 | 456 | fPhi->Fill(phi1); |
457 | fEta->Fill(eta1); | |
458 | ||
3b97e69c | 459 | double PionMass = 0.13956995; |
d381642d | 460 | double yt1 = TMath::Log(sqrt(1+(pt1/PionMass)*(pt1/PionMass))+(pt1/PionMass)); |
461 | double yt2 = TMath::Log(sqrt(1+(pt2/PionMass)*(pt2/PionMass))+(pt2/PionMass)); | |
3b97e69c | 462 | fYtYtNumerator->Fill(yt1,yt2); |
463 | ||
41fa2a11 | 464 | if(fIfCorrectionHist) |
d381642d | 465 | { |
41fa2a11 | 466 | if(fIfCorrectionHist == kPt){ |
d381642d | 467 | Double_t val[] = {pt1,pt2,dphi,deta}; |
468 | fPtCorrectionsNum->Fill(val); | |
469 | } | |
41fa2a11 | 470 | if(fIfCorrectionHist == kEta){ |
d381642d | 471 | Double_t val[] = {eta1,eta2,dphi,deta}; |
472 | fEtaCorrectionsNum->Fill(val); | |
473 | } | |
474 | ||
475 | } | |
476 | ||
76ce4b5b | 477 | } |
478 | //____________________________ | |
479 | void AliFemtoCorrFctnDEtaDPhi::AddMixedPair( AliFemtoPair* pair){ | |
480 | // add mixed (background) pair | |
481 | if (fPairCut) | |
482 | if (!fPairCut->Pass(pair)) return; | |
483 | ||
973a91f8 | 484 | /*double phi1 = pair->Track1()->Track()->P().Phi(); |
76ce4b5b | 485 | double phi2 = pair->Track2()->Track()->P().Phi(); |
486 | double eta1 = pair->Track1()->Track()->P().PseudoRapidity(); | |
973a91f8 | 487 | double eta2 = pair->Track2()->Track()->P().PseudoRapidity();*/ |
488 | ||
489 | double phi1 = pair->Track1()->FourMomentum().Phi(); | |
490 | double phi2 = pair->Track2()->FourMomentum().Phi(); | |
491 | double eta1 = pair->Track1()->FourMomentum().PseudoRapidity(); | |
492 | double eta2 = pair->Track2()->FourMomentum().PseudoRapidity(); | |
76ce4b5b | 493 | |
494 | double dphi = phi1 - phi2; | |
4d019bab | 495 | while (dphi<fphiL) dphi+=PIT; |
496 | while (dphi>fphiT) dphi-=PIT; | |
76ce4b5b | 497 | |
498 | double deta = eta1 - eta2; | |
499 | ||
d381642d | 500 | double px1 = pair->Track1()->Track()->P().x(); |
501 | double py1 = pair->Track1()->Track()->P().y(); | |
502 | //double pz1 = pair->Track1()->Track()->P().z(); | |
76ce4b5b | 503 | |
d381642d | 504 | double px2 = pair->Track2()->Track()->P().x(); |
505 | double py2 = pair->Track2()->Track()->P().y(); | |
506 | //double pz2 = pair->Track2()->Track()->P().z(); | |
76ce4b5b | 507 | |
d381642d | 508 | double pt1 = TMath::Hypot(px1, py1); |
509 | double pt2 = TMath::Hypot(px2, py2); | |
76ce4b5b | 510 | // double ptmin = pt1>pt2 ? pt2 : pt1; |
511 | ||
512 | // double cosphi = (px1*px2 + py1*py2 + pz1*pz2)/ | |
513 | // sqrt((px1*px1 + py1*py1 + pz1*pz1)*(px2*px2 + py2*py2 + pz2*pz2)); | |
514 | ||
515 | fDPhiDEtaDenominator->Fill(dphi, deta); | |
516 | ||
517 | fDPhiDenominator->Fill(dphi); | |
518 | // fDCosDenominator->Fill(cosphi); | |
519 | ||
3b97e69c | 520 | //if (fDoPtAnalysis) { |
76ce4b5b | 521 | // fDPhiPtDenominator->Fill(dphi, ptmin); |
522 | // fDCosPtDenominator->Fill(cosphi, ptmin); | |
3b97e69c | 523 | //} |
524 | ||
525 | double PionMass = 0.13956995; | |
d381642d | 526 | double yt1 = TMath::Log(sqrt(1+(pt1/PionMass)*(pt1/PionMass))+(pt1/PionMass)); |
527 | double yt2 = TMath::Log(sqrt(1+(pt2/PionMass)*(pt2/PionMass))+(pt2/PionMass)); | |
528 | fYtYtDenominator->Fill(yt1,yt2); | |
529 | ||
41fa2a11 | 530 | if(fIfCorrectionHist) |
d381642d | 531 | { |
41fa2a11 | 532 | if(fIfCorrectionHist == kPt){ |
d381642d | 533 | Double_t val[] = {pt1,pt2,dphi,deta}; |
534 | fPtCorrectionsDen->Fill(val); | |
535 | } | |
41fa2a11 | 536 | if(fIfCorrectionHist == kEta){ |
d381642d | 537 | Double_t val[] = {eta1,eta2,dphi,deta}; |
538 | fEtaCorrectionsDen->Fill(val); | |
539 | } | |
540 | } | |
541 | ||
76ce4b5b | 542 | } |
543 | ||
544 | ||
545 | void AliFemtoCorrFctnDEtaDPhi::WriteHistos() | |
546 | { | |
547 | // Write out result histograms | |
548 | fDPhiDEtaNumerator->Write(); | |
549 | fDPhiDEtaDenominator->Write(); | |
c477a4c1 | 550 | fPtSumDist->Write(); |
973a91f8 | 551 | /*fDPhiNumerator->Write(); |
76ce4b5b | 552 | fDPhiDenominator->Write(); |
553 | fDCosNumerator->Write(); | |
41fa2a11 | 554 | fDCosDenominator->Write();*/ |
76ce4b5b | 555 | if (fDoPtAnalysis) { |
556 | fDPhiPtNumerator->Write(); | |
557 | fDPhiPtDenominator->Write(); | |
558 | fDCosPtNumerator->Write(); | |
559 | fDCosPtDenominator->Write(); | |
41fa2a11 | 560 | } |
973a91f8 | 561 | fPhi->Write(); |
562 | fEta->Write(); | |
3b97e69c | 563 | |
41fa2a11 | 564 | if(fIfCorrectionHist){ |
565 | if(fIfCorrectionHist==kPt){ | |
d381642d | 566 | fPtCorrectionsNum->Write(); |
567 | fPtCorrectionsDen->Write();} | |
41fa2a11 | 568 | if(fIfCorrectionHist==kEta){ |
d381642d | 569 | fEtaCorrectionsNum->Write(); |
570 | fEtaCorrectionsDen->Write();} | |
571 | } | |
76ce4b5b | 572 | } |
573 | ||
574 | TList* AliFemtoCorrFctnDEtaDPhi::GetOutputList() | |
575 | { | |
576 | // Prepare the list of objects to be written to the output | |
577 | TList *tOutputList = new TList(); | |
578 | ||
579 | tOutputList->Add(fDPhiDEtaNumerator); | |
580 | tOutputList->Add(fDPhiDEtaDenominator); | |
c477a4c1 | 581 | tOutputList->Add(fPtSumDist); |
973a91f8 | 582 | /*tOutputList->Add(fDPhiNumerator); |
76ce4b5b | 583 | tOutputList->Add(fDPhiDenominator); |
584 | tOutputList->Add(fDCosNumerator); | |
585 | tOutputList->Add(fDCosDenominator); | |
586 | if (fDoPtAnalysis) { | |
587 | tOutputList->Add(fDPhiPtNumerator); | |
588 | tOutputList->Add(fDPhiPtDenominator); | |
589 | tOutputList->Add(fDCosPtNumerator); | |
590 | tOutputList->Add(fDCosPtDenominator); | |
973a91f8 | 591 | }*/ |
592 | tOutputList->Add(fPhi); | |
593 | tOutputList->Add(fEta); | |
3b97e69c | 594 | tOutputList->Add(fYtYtNumerator); |
595 | tOutputList->Add(fYtYtDenominator); | |
d381642d | 596 | |
41fa2a11 | 597 | if(fIfCorrectionHist){ |
598 | if(fIfCorrectionHist==kPt){ | |
d381642d | 599 | tOutputList->Add(fPtCorrectionsNum); |
600 | tOutputList->Add(fPtCorrectionsDen); | |
601 | } | |
41fa2a11 | 602 | if(fIfCorrectionHist==kEta){ |
d381642d | 603 | tOutputList->Add(fEtaCorrectionsNum); |
604 | tOutputList->Add(fEtaCorrectionsDen); | |
605 | } | |
606 | } | |
76ce4b5b | 607 | return tOutputList; |
608 | ||
609 | } | |
610 | ||
611 | void AliFemtoCorrFctnDEtaDPhi::SetDoPtAnalysis(int do2d) | |
612 | { | |
613 | fDoPtAnalysis = do2d; | |
614 | ||
615 | int aPhiBins = fDPhiDEtaNumerator->GetNbinsX(); | |
616 | const char *title = fDPhiDEtaNumerator->GetTitle(); | |
617 | ||
618 | // set up numerator | |
619 | char tTitNumDPhiPt[101] = "NumDPhiPt"; | |
620 | strncat(tTitNumDPhiPt,title, 100); | |
4d019bab | 621 | fDPhiPtNumerator = new TH2D(tTitNumDPhiPt,title,aPhiBins*2,-0.5*TMath::Pi(),3./2.*TMath::Pi(), 30, 0.0, 3.0); |
76ce4b5b | 622 | // set up denominator |
623 | char tTitDenDPhiPt[101] = "DenDPhiPt"; | |
624 | strncat(tTitDenDPhiPt,title, 100); | |
4d019bab | 625 | fDPhiPtDenominator = new TH2D(tTitDenDPhiPt,title,aPhiBins*2,-0.5*TMath::Pi(),3./2.*TMath::Pi(), 30, 0.0, 3.0); |
76ce4b5b | 626 | |
627 | // set up numerator | |
628 | char tTitNumDCosPt[101] = "NumDCosPt"; | |
629 | strncat(tTitNumDCosPt,title, 100); | |
630 | fDCosPtNumerator = new TH2D(tTitNumDCosPt,title,aPhiBins*2,-1.0,1.0, 30, 0.0, 3.0); | |
631 | // set up denominator | |
632 | char tTitDenDCosPt[101] = "DenDCosPt"; | |
633 | strncat(tTitDenDCosPt,title, 100); | |
634 | fDCosPtDenominator = new TH2D(tTitDenDCosPt,title,aPhiBins*2,-1.0,1.0, 30, 0.0, 3.0); | |
635 | ||
636 | fDPhiPtNumerator->Sumw2(); | |
637 | fDPhiPtDenominator->Sumw2(); | |
638 | fDCosPtNumerator->Sumw2(); | |
639 | fDCosPtDenominator->Sumw2(); | |
640 | ||
641 | } | |
d381642d | 642 | |
41fa2a11 | 643 | void AliFemtoCorrFctnDEtaDPhi::SetDo4DCorrectionHist(CorrectionType doCorr) |
d381642d | 644 | { |
41fa2a11 | 645 | fIfCorrectionHist = doCorr; |
d381642d | 646 | } |