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