]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDEtaDPhi.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / AliFemtoUser / AliFemtoCorrFctnDEtaDPhi.cxx
CommitLineData
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__
18ClassImp(AliFemtoCorrFctnDEtaDPhi)
19#endif
20
21#define PIH 1.57079632679489656
22#define PIT 6.28318530717958623
76ce4b5b 23
24//____________________________
25AliFemtoCorrFctnDEtaDPhi::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//____________________________
149AliFemtoCorrFctnDEtaDPhi::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//____________________________
261AliFemtoCorrFctnDEtaDPhi::~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//_________________________
290AliFemtoCorrFctnDEtaDPhi& 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//_________________________
384void 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//____________________________
396AliFemtoString 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//____________________________
409void 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//____________________________
479void 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
545void 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
574TList* 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
611void 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 643void AliFemtoCorrFctnDEtaDPhi::SetDo4DCorrectionHist(CorrectionType doCorr)
d381642d 644{
41fa2a11 645 fIfCorrectionHist = doCorr;
d381642d 646}