]>
Commit | Line | Data |
---|---|---|
70c54bac | 1 | //////////////////////////////////////////////////////////////////////////////// |
2 | // // | |
3 | // AliFemtoCorrFctnDEtaDPhiCorrections - 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 "AliFemtoCorrFctnDEtaDPhiCorrections.h" | |
12 | #include "AliFemtoModelHiddenInfo.h" | |
13 | //#include "AliFemtoHisto.hh" | |
14 | #include <cstdio> | |
15 | #include <TMath.h> | |
eef80284 | 16 | #include "THn.h" |
70c54bac | 17 | |
18 | #ifdef __ROOT__ | |
19 | ClassImp(AliFemtoCorrFctnDEtaDPhiCorrections) | |
20 | #endif | |
21 | ||
22 | #define PIH 1.57079632679489656 | |
23 | #define PIT 6.28318530717958623 | |
24 | ||
2ddcfd01 | 25 | |
26 | ||
27 | ||
70c54bac | 28 | //____________________________ |
29 | AliFemtoCorrFctnDEtaDPhiCorrections::AliFemtoCorrFctnDEtaDPhiCorrections(char* title, const int& aPhiBins=20, const int& aEtaBins=20): | |
30 | AliFemtoCorrFctn(), | |
31 | fDPhiDEtaNumerator(0), | |
32 | fDPhiDEtaDenominator(0), | |
33 | fDPhiNumerator(0), | |
34 | fDPhiDenominator(0), | |
35 | fDCosNumerator(0), | |
36 | fDCosDenominator(0), | |
41fa2a11 | 37 | fDoFullAnalysis(kFALSE), |
70c54bac | 38 | fPhi(0), |
39 | fEta(0), | |
b569c586 | 40 | fPtSumDist(0), |
70c54bac | 41 | fYtYtNumerator(0), |
42 | fYtYtDenominator(0), | |
70c54bac | 43 | fIfCorrection(0), |
44 | fPtCorrectionsNum(0), | |
45 | fPtCorrectionsDen(0), | |
46 | fEtaCorrectionsNum(0), | |
47 | fEtaCorrectionsDen(0), | |
48 | fCorrFactorTab(0), | |
49 | fpTab(0), | |
50 | fPartType(kNoCorrection), | |
51 | fphiL(0), | |
eef80284 | 52 | fphiT(0), |
53 | ifileCorrTab(0), | |
54 | fdoPtCorr(0), | |
55 | fdoEtaCorr(0), | |
56 | fdoPhiCorr(0), | |
57 | fdoZVertCorr(0), | |
58 | fpartType1(0), | |
59 | fpartType2(0), | |
60 | fhntReco1(0), | |
61 | fhntReco2(0), | |
62 | fh1Reco1(0), | |
63 | fh1Reco2(0), | |
64 | fh2Reco1(0), | |
65 | fh2Reco2(0), | |
66 | fh3Reco1(0), | |
67 | fh3Reco2(0), | |
68 | fhCont1(0), | |
a0179664 | 69 | fhCont2(0), |
70 | fCorr1D(kFALSE) | |
70c54bac | 71 | { |
72 | ||
73 | fphiL = (-(int)(aPhiBins/4)+0.5)*2.*TMath::Pi()/aPhiBins; | |
74 | fphiT = 2*TMath::Pi()+(-(int)(aPhiBins/4)+0.5)*2.*TMath::Pi()/aPhiBins; | |
75 | ||
76 | // set up numerator | |
77 | char tTitNumD[101] = "NumDPhiDEta"; | |
78 | strncat(tTitNumD,title, 100); | |
79 | fDPhiDEtaNumerator = new TH2D(tTitNumD,title,aPhiBins,fphiL,fphiT,aEtaBins,-2.0,2.0); | |
80 | // set up denominator | |
81 | char tTitDenD[101] = "DenDPhiDEta"; | |
82 | strncat(tTitDenD,title, 100); | |
83 | fDPhiDEtaDenominator = new TH2D(tTitDenD,title,aPhiBins,fphiL,fphiT,aEtaBins,-2.0,2.0); | |
84 | ||
b569c586 | 85 | // set up numerator |
86 | char tTitNum[101] = "PtSumDist"; | |
87 | strncat(tTitNum,title, 100); | |
88 | fPtSumDist = new TH1D(tTitNum,title,200,0,10); | |
70c54bac | 89 | |
70c54bac | 90 | fDPhiDEtaNumerator->Sumw2(); |
91 | fDPhiDEtaDenominator->Sumw2(); | |
b569c586 | 92 | fPtSumDist->Sumw2(); |
41fa2a11 | 93 | |
94 | ||
95 | ||
96 | // to enable error bar calculation... | |
97 | ||
70c54bac | 98 | |
99 | ||
100 | ||
101 | } | |
102 | ||
103 | //____________________________ | |
104 | AliFemtoCorrFctnDEtaDPhiCorrections::AliFemtoCorrFctnDEtaDPhiCorrections(const AliFemtoCorrFctnDEtaDPhiCorrections& aCorrFctn) : | |
105 | AliFemtoCorrFctn(), | |
106 | fDPhiDEtaNumerator(0), | |
107 | fDPhiDEtaDenominator(0), | |
108 | fDPhiNumerator(0), | |
109 | fDPhiDenominator(0), | |
110 | fDCosNumerator(0), | |
111 | fDCosDenominator(0), | |
41fa2a11 | 112 | fDoFullAnalysis(kFALSE), |
70c54bac | 113 | fPhi(0), |
114 | fEta(0), | |
b569c586 | 115 | fPtSumDist(0), |
70c54bac | 116 | fYtYtNumerator(0), |
117 | fYtYtDenominator(0), | |
70c54bac | 118 | fIfCorrection(0), |
119 | fPtCorrectionsNum(0), | |
120 | fPtCorrectionsDen(0), | |
121 | fEtaCorrectionsNum(0), | |
122 | fEtaCorrectionsDen(0), | |
123 | fCorrFactorTab(0), | |
124 | fpTab(0), | |
125 | fPartType(kNoCorrection), | |
126 | fphiL(0), | |
eef80284 | 127 | fphiT(0), |
128 | ifileCorrTab(0), | |
129 | fdoPtCorr(0), | |
130 | fdoEtaCorr(0), | |
131 | fdoPhiCorr(0), | |
132 | fdoZVertCorr(0), | |
133 | fpartType1(0), | |
134 | fpartType2(0), | |
135 | fhntReco1(0), | |
136 | fhntReco2(0), | |
137 | fh1Reco1(0), | |
138 | fh1Reco2(0), | |
139 | fh2Reco1(0), | |
140 | fh2Reco2(0), | |
141 | fh3Reco1(0), | |
142 | fh3Reco2(0), | |
143 | fhCont1(0), | |
a0179664 | 144 | fhCont2(0), |
145 | fCorr1D(kFALSE) | |
70c54bac | 146 | { |
147 | // copy constructor | |
148 | if (aCorrFctn.fDPhiDEtaNumerator) | |
149 | fDPhiDEtaNumerator = new TH2D(*aCorrFctn.fDPhiDEtaNumerator); | |
150 | else | |
151 | fDPhiDEtaNumerator = 0; | |
152 | if (aCorrFctn.fDPhiDEtaDenominator) | |
153 | fDPhiDEtaDenominator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator); | |
154 | else | |
155 | fDPhiDEtaDenominator = 0; | |
156 | ||
157 | if (aCorrFctn.fDPhiNumerator) | |
158 | fDPhiNumerator = new TH1D(*aCorrFctn.fDPhiNumerator); | |
159 | else | |
160 | fDPhiNumerator = 0; | |
161 | if (aCorrFctn.fDPhiDenominator) | |
162 | fDPhiDenominator = new TH1D(*aCorrFctn.fDPhiDenominator); | |
163 | else | |
164 | fDPhiDenominator = 0; | |
165 | ||
166 | if (aCorrFctn.fDCosNumerator) | |
167 | fDCosNumerator = new TH1D(*aCorrFctn.fDCosNumerator); | |
168 | else | |
169 | fDCosNumerator = 0; | |
170 | if (aCorrFctn.fDCosDenominator) | |
171 | fDCosDenominator = new TH1D(*aCorrFctn.fDCosDenominator); | |
172 | else | |
173 | fDCosDenominator = 0; | |
174 | ||
70c54bac | 175 | if (aCorrFctn.fPhi) |
176 | fPhi = new TH1D(*aCorrFctn.fPhi); | |
177 | else | |
178 | fPhi = 0; | |
179 | if (aCorrFctn.fEta) | |
180 | fEta = new TH1D(*aCorrFctn.fEta); | |
181 | else | |
182 | fEta = 0; | |
183 | ||
b569c586 | 184 | if (aCorrFctn.fPtSumDist) |
185 | fPtSumDist = new TH1D(*aCorrFctn.fPtSumDist); | |
186 | else | |
187 | fPtSumDist = 0; | |
188 | ||
70c54bac | 189 | if (aCorrFctn.fYtYtNumerator) |
190 | fYtYtNumerator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator); | |
191 | else | |
192 | fYtYtNumerator = 0; | |
193 | ||
194 | if (aCorrFctn.fYtYtDenominator) | |
195 | fYtYtDenominator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator); | |
196 | else | |
197 | fYtYtDenominator = 0; | |
198 | ||
199 | fphiL = aCorrFctn.fphiL; | |
200 | fphiT = aCorrFctn.fphiT; | |
201 | ||
202 | fPartType = aCorrFctn.fPartType; | |
203 | ||
204 | // if (aCorrFctn.fPtCorrectionsNum) | |
205 | // fPtCorrectionsNum = new THnSparseF(*aCorrFctn.fPtCorrectionsNum); | |
206 | // else | |
207 | // fPtCorrectionsNum = 0; | |
208 | ||
209 | // if (aCorrFctn.fPtCorrectionsDen) | |
210 | // fPtCorrectionsDen = new THnSparseF(*aCorrFctn.fPtCorrectionsDen); | |
211 | // else | |
212 | // fPtCorrectionsDen = 0; | |
213 | ||
214 | ||
215 | ||
216 | } | |
217 | //____________________________ | |
218 | AliFemtoCorrFctnDEtaDPhiCorrections::~AliFemtoCorrFctnDEtaDPhiCorrections(){ | |
219 | // destructor | |
220 | delete fDPhiDEtaNumerator; | |
221 | delete fDPhiDEtaDenominator; | |
b569c586 | 222 | delete fPtSumDist; |
70c54bac | 223 | |
41fa2a11 | 224 | if (fDoFullAnalysis) { |
225 | delete fDPhiNumerator; | |
226 | delete fDPhiDenominator; | |
227 | delete fDCosNumerator; | |
228 | delete fDCosDenominator; | |
229 | ||
230 | delete fYtYtNumerator; | |
231 | delete fYtYtDenominator; | |
b569c586 | 232 | delete fPhi; |
233 | delete fEta; | |
41fa2a11 | 234 | delete fPtCorrectionsNum; |
235 | delete fPtCorrectionsDen; | |
236 | delete fEtaCorrectionsNum; | |
237 | delete fEtaCorrectionsDen; | |
238 | } | |
239 | ||
240 | //corrctions | |
241 | if(fhntReco1){ | |
242 | delete fhntReco1; | |
243 | delete fhntReco2; | |
244 | delete fhCont1; | |
245 | delete fhCont2; | |
246 | } | |
247 | if(fh1Reco1) delete fh1Reco1; | |
248 | if(fh1Reco2) delete fh1Reco2; | |
249 | if(fh2Reco1) delete fh2Reco1; | |
250 | if(fh2Reco2) delete fh2Reco2; | |
251 | if(fh3Reco1) delete fh3Reco1; | |
252 | if(fh3Reco2) delete fh3Reco2; | |
253 | ||
70c54bac | 254 | } |
255 | //_________________________ | |
256 | AliFemtoCorrFctnDEtaDPhiCorrections& AliFemtoCorrFctnDEtaDPhiCorrections::operator=(const AliFemtoCorrFctnDEtaDPhiCorrections& aCorrFctn) | |
257 | { | |
258 | // assignment operator | |
259 | if (this == &aCorrFctn) | |
260 | return *this; | |
261 | ||
262 | if (aCorrFctn.fDPhiDEtaNumerator) | |
263 | fDPhiDEtaNumerator = new TH2D(*aCorrFctn.fDPhiDEtaNumerator); | |
264 | else | |
265 | fDPhiDEtaNumerator = 0; | |
266 | if (aCorrFctn.fDPhiDEtaDenominator) | |
267 | fDPhiDEtaDenominator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator); | |
268 | else | |
269 | fDPhiDEtaDenominator = 0; | |
270 | ||
271 | if (aCorrFctn.fDPhiNumerator) | |
272 | fDPhiNumerator = new TH1D(*aCorrFctn.fDPhiNumerator); | |
273 | else | |
274 | fDPhiNumerator = 0; | |
275 | if (aCorrFctn.fDPhiDenominator) | |
276 | fDPhiDenominator = new TH1D(*aCorrFctn.fDPhiDenominator); | |
277 | else | |
278 | fDPhiDenominator = 0; | |
279 | ||
280 | if (aCorrFctn.fDCosNumerator) | |
281 | fDCosNumerator = new TH1D(*aCorrFctn.fDCosNumerator); | |
282 | else | |
283 | fDCosNumerator = 0; | |
284 | if (aCorrFctn.fDCosDenominator) | |
285 | fDCosDenominator = new TH1D(*aCorrFctn.fDCosDenominator); | |
286 | else | |
287 | fDCosDenominator = 0; | |
288 | ||
70c54bac | 289 | if (aCorrFctn.fPhi) |
290 | fPhi = new TH1D(*aCorrFctn.fPhi); | |
291 | else | |
292 | fPhi = 0; | |
293 | if (aCorrFctn.fEta) | |
294 | fEta = new TH1D(*aCorrFctn.fEta); | |
295 | else | |
296 | fEta = 0; | |
297 | ||
b569c586 | 298 | if (aCorrFctn.fPtSumDist) |
299 | fPtSumDist = new TH1D(*aCorrFctn.fPtSumDist); | |
300 | else | |
301 | fPtSumDist = 0; | |
302 | ||
70c54bac | 303 | if (aCorrFctn.fYtYtNumerator) |
304 | fYtYtNumerator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator); | |
305 | else | |
306 | fYtYtNumerator = 0; | |
307 | ||
308 | if (aCorrFctn.fYtYtDenominator) | |
309 | fYtYtDenominator = new TH2D(*aCorrFctn.fDPhiDEtaDenominator); | |
310 | else | |
311 | fYtYtDenominator = 0; | |
70c54bac | 312 | |
313 | fphiL = aCorrFctn.fphiL; | |
314 | fphiT = aCorrFctn.fphiT; | |
315 | ||
316 | fPartType = aCorrFctn.fPartType; | |
317 | ||
318 | // if (aCorrFctn.fPtCorrectionsNum) | |
319 | // fPtCorrectionsNum = new THnSparseF(*aCorrFctn.fPtCorrectionsNum); | |
320 | // else | |
321 | // fPtCorrectionsNum = 0; | |
322 | ||
323 | // if (aCorrFctn.fPtCorrectionsDen) | |
324 | // fPtCorrectionsDen = new THnSparseF(*aCorrFctn.fPtCorrectionsDen); | |
325 | // else | |
326 | // fPtCorrectionsDen = 0; | |
327 | ||
328 | ||
329 | ||
330 | return *this; | |
331 | } | |
332 | //_________________________ | |
333 | void AliFemtoCorrFctnDEtaDPhiCorrections::Finish(){ | |
334 | // here is where we should normalize, fit, etc... | |
335 | // we should NOT Draw() the histos (as I had done it below), | |
336 | // since we want to insulate ourselves from root at this level | |
337 | // of the code. Do it instead at root command line with browser. | |
338 | // mShareNumerator->Draw(); | |
339 | //mShareDenominator->Draw(); | |
340 | //mRatio->Draw(); | |
341 | ||
342 | } | |
343 | ||
344 | //____________________________ | |
345 | AliFemtoString AliFemtoCorrFctnDEtaDPhiCorrections::Report(){ | |
346 | // create report | |
347 | string stemp = "TPC Ncls Correlation Function Report:\n"; | |
348 | char ctemp[100]; | |
349 | snprintf(ctemp , 100, "Number of entries in numerator:\t%E\n",fDPhiDEtaNumerator->GetEntries()); | |
350 | stemp += ctemp; | |
351 | snprintf(ctemp , 100, "Number of entries in denominator:\t%E\n",fDPhiDEtaDenominator->GetEntries()); | |
352 | stemp += ctemp; | |
353 | // stemp += mCoulombWeight->Report(); | |
354 | AliFemtoString returnThis = stemp; | |
355 | return returnThis; | |
356 | } | |
357 | //____________________________ | |
358 | void AliFemtoCorrFctnDEtaDPhiCorrections::AddRealPair( AliFemtoPair* pair){ | |
359 | // add real (effect) pair | |
360 | if (fPairCut) | |
361 | if (!fPairCut->Pass(pair)) return; | |
362 | ||
363 | /*double phi1 = pair->Track1()->Track()->P().Phi(); | |
41fa2a11 | 364 | double phi2 = pair->Track2()->Track()->P().Phi(); |
365 | double eta1 = pair->Track1()->Track()->P().PseudoRapidity(); | |
366 | double eta2 = pair->Track2()->Track()->P().PseudoRapidity();*/ | |
70c54bac | 367 | |
368 | double phi1 = pair->Track1()->FourMomentum().Phi(); | |
369 | double phi2 = pair->Track2()->FourMomentum().Phi(); | |
370 | double eta1 = pair->Track1()->FourMomentum().PseudoRapidity(); | |
371 | double eta2 = pair->Track2()->FourMomentum().PseudoRapidity(); | |
372 | ||
373 | double dphi = phi1 - phi2; | |
374 | while (dphi<fphiL) dphi+=PIT; | |
375 | while (dphi>fphiT) dphi-=PIT; | |
376 | ||
377 | double deta = eta1 - eta2; | |
378 | ||
41fa2a11 | 379 | double px1 = pair->Track1()->Track()->P().x(); |
380 | double py1 = pair->Track1()->Track()->P().y(); | |
381 | //double pz1 = pair->Track1()->Track()->P().z(); | |
70c54bac | 382 | |
41fa2a11 | 383 | double px2 = pair->Track2()->Track()->P().x(); |
384 | double py2 = pair->Track2()->Track()->P().y(); | |
385 | //double pz2 = pair->Track2()->Track()->P().z(); | |
70c54bac | 386 | |
41fa2a11 | 387 | double pt1 = TMath::Hypot(px1, py1); |
388 | double pt2 = TMath::Hypot(px2, py2); | |
70c54bac | 389 | |
41fa2a11 | 390 | double vert1[3]; |
391 | pair->Track1()->Track()->GetPrimaryVertex(vert1); | |
392 | double vert2[3]; | |
393 | pair->Track2()->Track()->GetPrimaryVertex(vert2); | |
eef80284 | 394 | |
9a7fa795 | 395 | double corrweight=0; //double corrweightpT1=1; double corrweightpT2=1; |
41fa2a11 | 396 | //if (fIfCorrection) corrweight = CalculateCorrectionWeight(pt1, pt2); |
a0179664 | 397 | if (fIfCorrection) |
398 | { | |
399 | corrweight = CalculateCorrectionWeight(pt1, pt2, eta1, eta2, phi1, phi2, vert1[2], vert2[2]); | |
400 | } | |
401 | else if(fCorr1D) | |
402 | { | |
403 | corrweight = CalculateCorrectionWeight(pt1, pt2); | |
9a7fa795 | 404 | //corrweightpT1 = CalculateCorrectionWeight(pt1); |
405 | //corrweightpT2 = CalculateCorrectionWeight(pt2); | |
a0179664 | 406 | } |
0ca38d56 | 407 | |
9a7fa795 | 408 | fPtSumDist->Fill(pt1+pt2,corrweight); |
41fa2a11 | 409 | /* double ptmin = pt1>pt2 ? pt2 : pt1; |
70c54bac | 410 | |
41fa2a11 | 411 | double cosphi = (px1*px2 + py1*py2 + pz1*pz2)/ |
412 | sqrt((px1*px1 + py1*py1 + pz1*pz1)*(px2*px2 + py2*py2 + pz2*pz2)); | |
413 | */ | |
414 | if (fIfCorrection || fCorr1D) | |
0ca38d56 | 415 | { |
416 | fDPhiDEtaNumerator->Fill(dphi, deta, corrweight); | |
417 | } | |
418 | else{ | |
41fa2a11 | 419 | fDPhiDEtaNumerator->Fill(dphi, deta); |
0ca38d56 | 420 | } |
41fa2a11 | 421 | |
422 | ||
423 | if (fDoFullAnalysis) { | |
424 | //fDPhiPtNumerator->Fill(dphi, ptmin); | |
425 | //fDCosPtNumerator->Fill(cosphi, ptmin); | |
70c54bac | 426 | |
41fa2a11 | 427 | fDPhiNumerator->Fill(dphi); |
428 | //fDCosNumerator->Fill(cosphi); | |
429 | double PionMass = 0.13956995; | |
430 | double yt1 = TMath::Log(sqrt(1+(pt1/PionMass)*(pt1/PionMass))+(pt1/PionMass)); | |
431 | double yt2 = TMath::Log(sqrt(1+(pt2/PionMass)*(pt2/PionMass))+(pt2/PionMass)); | |
432 | fYtYtNumerator->Fill(yt1,yt2); | |
70c54bac | 433 | |
70c54bac | 434 | |
b569c586 | 435 | fPhi->Fill(phi1); |
436 | fEta->Fill(eta1); | |
437 | } | |
70c54bac | 438 | |
439 | } | |
440 | //____________________________ | |
441 | void AliFemtoCorrFctnDEtaDPhiCorrections::AddMixedPair( AliFemtoPair* pair){ | |
442 | // add mixed (background) pair | |
443 | if (fPairCut) | |
444 | if (!fPairCut->Pass(pair)) return; | |
445 | ||
446 | /*double phi1 = pair->Track1()->Track()->P().Phi(); | |
41fa2a11 | 447 | double phi2 = pair->Track2()->Track()->P().Phi(); |
448 | double eta1 = pair->Track1()->Track()->P().PseudoRapidity(); | |
449 | double eta2 = pair->Track2()->Track()->P().PseudoRapidity();*/ | |
70c54bac | 450 | |
451 | double phi1 = pair->Track1()->FourMomentum().Phi(); | |
452 | double phi2 = pair->Track2()->FourMomentum().Phi(); | |
453 | double eta1 = pair->Track1()->FourMomentum().PseudoRapidity(); | |
454 | double eta2 = pair->Track2()->FourMomentum().PseudoRapidity(); | |
455 | ||
456 | double dphi = phi1 - phi2; | |
457 | while (dphi<fphiL) dphi+=PIT; | |
458 | while (dphi>fphiT) dphi-=PIT; | |
459 | ||
460 | double deta = eta1 - eta2; | |
461 | ||
41fa2a11 | 462 | double px1 = pair->Track1()->Track()->P().x(); |
463 | double py1 = pair->Track1()->Track()->P().y(); | |
464 | //double pz1 = pair->Track1()->Track()->P().z(); | |
70c54bac | 465 | |
41fa2a11 | 466 | double px2 = pair->Track2()->Track()->P().x(); |
467 | double py2 = pair->Track2()->Track()->P().y(); | |
468 | //double pz2 = pair->Track2()->Track()->P().z(); | |
70c54bac | 469 | |
41fa2a11 | 470 | double pt1 = TMath::Hypot(px1, py1); |
471 | double pt2 = TMath::Hypot(px2, py2); | |
472 | // double ptmin = pt1>pt2 ? pt2 : pt1; | |
41fa2a11 | 473 | // double cosphi = (px1*px2 + py1*py2 + pz1*pz2)/ |
474 | // sqrt((px1*px1 + py1*py1 + pz1*pz1)*(px2*px2 + py2*py2 + pz2*pz2)); | |
70c54bac | 475 | |
476 | ||
eef80284 | 477 | double vert1[3]; |
41fa2a11 | 478 | pair->Track1()->Track()->GetPrimaryVertex(vert1); |
479 | double vert2[3]; | |
480 | pair->Track2()->Track()->GetPrimaryVertex(vert2); | |
eef80284 | 481 | |
41fa2a11 | 482 | double corrweight=-999; |
483 | //if (fIfCorrection) corrweight = CalculateCorrectionWeight(pt1, pt2); | |
a0179664 | 484 | if (fIfCorrection) |
485 | { | |
486 | corrweight = CalculateCorrectionWeight(pt1, pt2, eta1, eta2, phi1, phi2, vert1[2], vert2[2]); | |
487 | } | |
488 | else if(fCorr1D) | |
489 | { | |
490 | corrweight = CalculateCorrectionWeight(pt1, pt2); | |
491 | } | |
eef80284 | 492 | |
70c54bac | 493 | |
41fa2a11 | 494 | if(fIfCorrection || fCorr1D) |
495 | fDPhiDEtaDenominator->Fill(dphi, deta, corrweight); | |
496 | else | |
497 | fDPhiDEtaDenominator->Fill(dphi, deta); | |
70c54bac | 498 | |
41fa2a11 | 499 | if (fDoFullAnalysis) { |
500 | //fDPhiPtDenominator->Fill(dphi, ptmin); | |
501 | //fDCosPtDenominator->Fill(cosphi, ptmin); | |
502 | fDPhiDenominator->Fill(dphi); | |
70c54bac | 503 | |
41fa2a11 | 504 | double PionMass = 0.13956995; |
70c54bac | 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 | } |
70c54bac | 510 | } |
511 | ||
512 | ||
513 | void AliFemtoCorrFctnDEtaDPhiCorrections::WriteHistos() | |
514 | { | |
515 | // Write out result histograms | |
516 | fDPhiDEtaNumerator->Write(); | |
517 | fDPhiDEtaDenominator->Write(); | |
b569c586 | 518 | fPtSumDist->Write(); |
70c54bac | 519 | /*fDPhiNumerator->Write(); |
520 | fDPhiDenominator->Write(); | |
521 | fDCosNumerator->Write(); | |
522 | fDCosDenominator->Write(); | |
41fa2a11 | 523 | if (fDoFullAnalysis) { |
70c54bac | 524 | fDPhiPtNumerator->Write(); |
525 | fDPhiPtDenominator->Write(); | |
526 | fDCosPtNumerator->Write(); | |
527 | fDCosPtDenominator->Write(); | |
528 | }*/ | |
b569c586 | 529 | // fPhi->Write(); |
530 | // fEta->Write(); | |
70c54bac | 531 | |
70c54bac | 532 | } |
533 | ||
534 | TList* AliFemtoCorrFctnDEtaDPhiCorrections::GetOutputList() | |
535 | { | |
536 | // Prepare the list of objects to be written to the output | |
537 | TList *tOutputList = new TList(); | |
538 | ||
539 | tOutputList->Add(fDPhiDEtaNumerator); | |
540 | tOutputList->Add(fDPhiDEtaDenominator); | |
b569c586 | 541 | tOutputList->Add(fPtSumDist); |
41fa2a11 | 542 | |
543 | if (fDoFullAnalysis) { | |
544 | // tOutputList->Add(fDPhiPtNumerator); | |
545 | // tOutputList->Add(fDPhiPtDenominator); | |
546 | //tOutputList->Add(fDCosPtNumerator); | |
547 | //tOutputList->Add(fDCosPtDenominator); | |
548 | tOutputList->Add(fDPhiNumerator); | |
549 | tOutputList->Add(fDPhiDenominator); | |
550 | tOutputList->Add(fDCosNumerator); | |
551 | tOutputList->Add(fDCosDenominator); | |
552 | ||
553 | tOutputList->Add(fYtYtNumerator); | |
554 | tOutputList->Add(fYtYtDenominator); | |
b569c586 | 555 | tOutputList->Add(fPhi); |
556 | tOutputList->Add(fEta); | |
70c54bac | 557 | } |
70c54bac | 558 | |
70c54bac | 559 | |
70c54bac | 560 | |
70c54bac | 561 | |
41fa2a11 | 562 | return tOutputList; |
70c54bac | 563 | |
564 | } | |
565 | ||
41fa2a11 | 566 | void AliFemtoCorrFctnDEtaDPhiCorrections::SetDoFullAnalysis(Bool_t do2d) |
567 | { | |
568 | fDoFullAnalysis = do2d; | |
569 | ||
570 | if(fDoFullAnalysis) | |
571 | { | |
572 | ||
573 | int aPhiBins = fDPhiDEtaNumerator->GetNbinsX(); | |
574 | int aEtaBins = fDPhiDEtaNumerator->GetNbinsY(); | |
575 | const char *title = fDPhiDEtaNumerator->GetTitle(); | |
576 | ||
577 | // set up numerator | |
578 | char tTitNumDPhi[101] = "NumDPhi"; | |
579 | strncat(tTitNumDPhi,title, 100); | |
580 | fDPhiNumerator = new TH1D(tTitNumDPhi,title,aPhiBins*2,fphiL, fphiT); | |
581 | // set up denominator | |
582 | char tTitDenDPhi[101] = "DenDPhi"; | |
583 | strncat(tTitDenDPhi,title, 100); | |
584 | fDPhiDenominator = new TH1D(tTitDenDPhi,title,aPhiBins*2,fphiL, fphiT); | |
585 | ||
586 | // set up numerator | |
587 | char tTitNumDCos[101] = "NumDCos"; | |
588 | strncat(tTitNumDCos,title, 100); | |
589 | fDCosNumerator = new TH1D(tTitNumDCos,title,aPhiBins*2,-1.0,1.0); | |
590 | // set up denominator | |
591 | char tTitDenDCos[101] = "DenDCos"; | |
592 | strncat(tTitDenDCos,title, 100); | |
593 | fDCosDenominator = new TH1D(tTitDenDCos,title,aPhiBins*2,-1.0,1.0); | |
594 | ||
595 | // set up numerator | |
596 | char tTitYtNum[101] = "NumYtYt"; | |
597 | strncat(tTitYtNum,title, 100); | |
598 | fYtYtNumerator = new TH2D(tTitYtNum,title,aPhiBins,1,5,aEtaBins,1,5); | |
599 | // set up denominator | |
600 | char tTitYtYtDen[101] = "DenYtYt"; | |
601 | strncat(tTitYtYtDen,title, 100); | |
602 | fYtYtDenominator = new TH2D(tTitYtYtDen,title,aPhiBins,1,5,aEtaBins,1,5); | |
603 | ||
604 | ||
b569c586 | 605 | char tTitPhi[101] = "Phi"; |
606 | strncat(tTitPhi,title, 100); | |
607 | fPhi = new TH1D(tTitPhi,title,90,-TMath::Pi(),TMath::Pi()); | |
608 | ||
609 | char tTitEta[101] = "Eta"; | |
610 | strncat(tTitEta,title, 100); | |
611 | fEta = new TH1D(tTitEta,title,90,-1.2,1.2); | |
612 | ||
41fa2a11 | 613 | char tTitPtCorrectionsNum[101] = "NumpT1pT2EtaPhi"; |
614 | strncat(tTitPtCorrectionsNum,title, 100); | |
615 | char tTitPtCorrectionsDen[101] = "DenpT1pT2EtaPhi"; | |
616 | strncat(tTitPtCorrectionsDen,title, 100); | |
617 | ||
618 | Int_t nbins[4] = {20,20,aPhiBins,aEtaBins}; | |
619 | Double_t xmin[4] = {0,0,-0.5*TMath::Pi(),-2.0}; | |
620 | Double_t xmax[4] = {4,4,1.5*TMath::Pi(),2.0}; | |
621 | ||
622 | fPtCorrectionsNum = new THnSparseF(tTitPtCorrectionsNum,title,4,nbins,xmin,xmax); | |
623 | fPtCorrectionsDen = new THnSparseF(tTitPtCorrectionsDen,title,4,nbins,xmin,xmax); | |
624 | ||
625 | char tTitEtaCorrectionsNum[101] = "NumEta1Eta2EtaPhi"; | |
626 | strncat(tTitEtaCorrectionsNum,title, 100); | |
627 | char tTitEtaCorrectionsDen[101] = "DenEta1Eta2EtaPhi"; | |
628 | strncat(tTitEtaCorrectionsDen,title, 100); | |
629 | ||
630 | Double_t xmineta[4] = {-1,1,-0.5*TMath::Pi(),-2.0}; | |
631 | Double_t xmaxeta[4] = {-1,1,1.5*TMath::Pi(),2.0}; | |
632 | ||
633 | fEtaCorrectionsNum = new THnSparseF(tTitEtaCorrectionsNum,title,4,nbins,xmineta,xmaxeta); | |
634 | fEtaCorrectionsDen = new THnSparseF(tTitEtaCorrectionsDen,title,4,nbins,xmineta,xmaxeta); | |
635 | // THnSparse(const char* name, const char* title, Int_t dim, | |
636 | // const Int_t* nbins, const Double_t* xmin, const Double_t* xmax, | |
637 | // Int_t chunksize); | |
638 | ||
639 | // to enable error bar calculation... | |
640 | fDPhiNumerator->Sumw2(); | |
641 | fDPhiDenominator->Sumw2(); | |
642 | fDCosNumerator->Sumw2(); | |
643 | fDCosDenominator->Sumw2(); | |
644 | fYtYtNumerator->Sumw2(); | |
b569c586 | 645 | fPhi->Sumw2(); |
646 | fEta->Sumw2(); | |
41fa2a11 | 647 | fYtYtDenominator->Sumw2(); |
648 | fPtCorrectionsNum->Sumw2(); | |
649 | fPtCorrectionsDen->Sumw2(); | |
650 | } | |
a0179664 | 651 | |
70c54bac | 652 | |
70c54bac | 653 | } |
654 | ||
eef80284 | 655 | |
656 | ||
657 | void AliFemtoCorrFctnDEtaDPhiCorrections::LoadCorrectionTabFromROOTFile(const char *file, ParticleType partType1, ParticleType partType2, bool doPtCorr, bool doEtaCorr, bool doPhiCorr, bool doZVertCorr) | |
70c54bac | 658 | { |
a0179664 | 659 | fIfCorrection = kTRUE; |
660 | ||
eef80284 | 661 | ifileCorrTab = TFile::Open(file); |
662 | fdoPtCorr = doPtCorr; | |
663 | fdoEtaCorr = doEtaCorr; | |
664 | fdoPhiCorr = doPhiCorr; | |
665 | fdoZVertCorr = doZVertCorr; | |
666 | fpartType1 = partType1; | |
667 | fpartType2 = partType2; | |
668 | ||
0ca38d56 | 669 | char* type1 = new char[12]; |
670 | char* type2 = new char[12]; | |
eef80284 | 671 | |
672 | ||
673 | if(fpartType1==kPion) strcpy(type1,"Pion"); | |
674 | else if(fpartType1==kKaon) strcpy(type1,"Kaon"); | |
675 | else if (fpartType1==kProton)strcpy(type1,"Proton"); | |
676 | else if (fpartType1==kAll) strcpy(type1,"All"); | |
0ca38d56 | 677 | else if(fpartType1==kPionMinus) strcpy(type1,"PionMinus"); |
678 | else if(fpartType1==kKaonMinus) strcpy(type1,"KaonMinus"); | |
679 | else if (fpartType1==kProtonMinus)strcpy(type1,"ProtonMinus"); | |
eef80284 | 680 | else strcpy(type1,""); |
681 | ||
682 | if(fpartType2==kPion) strcpy(type2,"Pion"); | |
683 | else if(fpartType2==kKaon) strcpy(type2,"Kaon"); | |
684 | else if (fpartType2==kProton) strcpy(type2,"Proton"); | |
685 | else if (fpartType2==kAll) strcpy(type2,"All"); | |
0ca38d56 | 686 | else if(fpartType2==kPionMinus) strcpy(type1,"PionMinus"); |
687 | else if(fpartType2==kKaonMinus) strcpy(type1,"KaonMinus"); | |
688 | else if (fpartType2==kProtonMinus)strcpy(type1,"ProtonMinus"); | |
eef80284 | 689 | else strcpy(type1,""); |
690 | ||
691 | ||
692 | ||
693 | fhntReco1 = (THnT<float>*)(ifileCorrTab->Get(Form("fCorrectionMapData%s",type1)))->Clone(); | |
694 | fhntReco2 = (THnT<float>*)(ifileCorrTab->Get(Form("fCorrectionMapData%s",type2)))->Clone(); | |
695 | fhCont1 = (TH1D*)(ifileCorrTab->Get(Form("SecondariesContamination%s",type1)))->Clone(); | |
696 | fhCont2 = (TH1D*)(ifileCorrTab->Get(Form("SecondariesContamination%s",type2)))->Clone(); | |
70c54bac | 697 | |
b569c586 | 698 | delete type1; |
699 | delete type2; | |
700 | ||
eef80284 | 701 | double fhntReco1_nbins = fhntReco1->GetNbins(); |
702 | double fhntReco2_nbins = fhntReco2->GetNbins(); | |
703 | ||
704 | int boolSum = fdoPtCorr+fdoEtaCorr+fdoPhiCorr+fdoZVertCorr; | |
705 | /*if(boolSum == 0) | |
706 | { | |
707 | return 1; | |
708 | }*/ | |
709 | if(boolSum == 1) | |
70c54bac | 710 | { |
eef80284 | 711 | |
712 | if(fdoPtCorr == 1) | |
70c54bac | 713 | { |
eef80284 | 714 | fh1Reco1 = (TH1F*)(fhntReco1->Projection(0))->Clone(); |
715 | fh1Reco2 = (TH1F*)(fhntReco2->Projection(0))->Clone(); | |
716 | fh1Reco1->Scale(1./fhntReco1_nbins*fh1Reco1->GetNbinsX()); | |
717 | fh1Reco2->Scale(1./fhntReco2_nbins*fh1Reco2->GetNbinsX()); | |
718 | ||
70c54bac | 719 | } |
eef80284 | 720 | |
721 | else if(fdoEtaCorr == 1) | |
722 | { | |
723 | fh1Reco1 = (TH1F*)(fhntReco1->Projection(1))->Clone(); | |
724 | fh1Reco2 = (TH1F*)(fhntReco2->Projection(1))->Clone(); | |
725 | fh1Reco1->Scale(1./fhntReco1_nbins*fh1Reco1->GetNbinsX()); | |
726 | fh1Reco2->Scale(1./fhntReco2_nbins*fh1Reco2->GetNbinsX()); | |
727 | } | |
728 | ||
729 | else if(fdoPhiCorr == 1) | |
730 | { | |
731 | fh1Reco1 = (TH1F*)(fhntReco1->Projection(2))->Clone(); | |
732 | fh1Reco2 = (TH1F*)(fhntReco2->Projection(2))->Clone(); | |
733 | fh1Reco1->Scale(1./fhntReco1_nbins*fh1Reco1->GetNbinsX()); | |
734 | fh1Reco2->Scale(1./fhntReco2_nbins*fh1Reco2->GetNbinsX()); | |
735 | } | |
736 | ||
737 | else if(fdoZVertCorr == 1) | |
738 | { | |
739 | fh1Reco1 = (TH1F*)(fhntReco1->Projection(3))->Clone(); | |
740 | fh1Reco2 = (TH1F*)(fhntReco2->Projection(3))->Clone(); | |
741 | fh1Reco1->Scale(1./fhntReco1_nbins*fh1Reco1->GetNbinsX()); | |
742 | fh1Reco2->Scale(1./fhntReco2_nbins*fh1Reco2->GetNbinsX()); | |
743 | } | |
744 | ||
70c54bac | 745 | } |
eef80284 | 746 | |
747 | else if(boolSum == 2) | |
70c54bac | 748 | { |
eef80284 | 749 | if(fdoPtCorr == 1 && fdoEtaCorr == 1) |
750 | { | |
9ee51cbc | 751 | fh2Reco1 = (TH2F*)(fhntReco1->Projection(1,0))->Clone(); |
752 | fh2Reco2 = (TH2F*)(fhntReco2->Projection(1,0))->Clone(); | |
eef80284 | 753 | fh2Reco1->Scale(1./fhntReco1_nbins*fh2Reco1->GetNbinsX()*fh2Reco1->GetNbinsY()); |
754 | fh2Reco2->Scale(1./fhntReco2_nbins*fh2Reco2->GetNbinsX()*fh2Reco2->GetNbinsY()); | |
755 | } | |
756 | ||
9ee51cbc | 757 | else if(fdoPtCorr == 1 && fdoPhiCorr == 1) |
eef80284 | 758 | { |
9ee51cbc | 759 | fh2Reco1 = (TH2F*)(fhntReco1->Projection(2,0))->Clone(); |
760 | fh2Reco2 = (TH2F*)(fhntReco2->Projection(2,0))->Clone(); | |
eef80284 | 761 | fh2Reco1->Scale(1./fhntReco1_nbins*fh2Reco1->GetNbinsX()*fh2Reco1->GetNbinsY()); |
762 | fh2Reco2->Scale(1./fhntReco2_nbins*fh2Reco2->GetNbinsX()*fh2Reco2->GetNbinsY()); | |
763 | } | |
764 | ||
765 | else if(fdoPtCorr == 1 && fdoZVertCorr == 1) | |
766 | { | |
9ee51cbc | 767 | fh2Reco1 = (TH2F*)(fhntReco1->Projection(3,0))->Clone(); |
768 | fh2Reco2 = (TH2F*)(fhntReco2->Projection(3,0))->Clone(); | |
eef80284 | 769 | fh2Reco1->Scale(1./fhntReco1_nbins*fh2Reco1->GetNbinsX()*fh2Reco1->GetNbinsY()); |
770 | fh2Reco2->Scale(1./fhntReco2_nbins*fh2Reco2->GetNbinsX()*fh2Reco2->GetNbinsY()); | |
771 | } | |
772 | else if(fdoEtaCorr == 1 && fdoPhiCorr == 1) | |
773 | { | |
9ee51cbc | 774 | fh2Reco1 = (TH2F*)(fhntReco1->Projection(2,1))->Clone(); |
775 | fh2Reco2 = (TH2F*)(fhntReco2->Projection(2,1))->Clone(); | |
eef80284 | 776 | fh2Reco1->Scale(1./fhntReco1_nbins*fh2Reco1->GetNbinsX()*fh2Reco1->GetNbinsY()); |
777 | fh2Reco2->Scale(1./fhntReco2_nbins*fh2Reco2->GetNbinsX()*fh2Reco2->GetNbinsY()); | |
778 | } | |
779 | else if(fdoEtaCorr == 1 && fdoZVertCorr == 1) | |
780 | { | |
9ee51cbc | 781 | fh2Reco1 = (TH2F*)(fhntReco1->Projection(3,1))->Clone(); |
782 | fh2Reco2 = (TH2F*)(fhntReco2->Projection(3,1))->Clone(); | |
eef80284 | 783 | fh2Reco1->Scale(1./fhntReco1_nbins*fh2Reco1->GetNbinsX()*fh2Reco1->GetNbinsY()); |
784 | fh2Reco2->Scale(1./fhntReco2_nbins*fh2Reco2->GetNbinsX()*fh2Reco2->GetNbinsY()); | |
785 | } | |
786 | else if(fdoPhiCorr == 1 && fdoZVertCorr == 1) | |
787 | { | |
9ee51cbc | 788 | fh2Reco1 = (TH2F*)(fhntReco1->Projection(3,2))->Clone(); |
789 | fh2Reco2 = (TH2F*)(fhntReco2->Projection(3,2))->Clone(); | |
eef80284 | 790 | fh2Reco1->Scale(1./fhntReco1_nbins*fh2Reco1->GetNbinsX()*fh2Reco1->GetNbinsY()); |
791 | fh2Reco2->Scale(1./fhntReco2_nbins*fh2Reco2->GetNbinsX()*fh2Reco2->GetNbinsY()); | |
792 | } | |
70c54bac | 793 | } |
70c54bac | 794 | |
eef80284 | 795 | |
796 | else if(boolSum == 3) | |
70c54bac | 797 | { |
eef80284 | 798 | if(fdoPtCorr == 1 && fdoEtaCorr == 1 && fdoPhiCorr == 1) |
70c54bac | 799 | { |
eef80284 | 800 | fh3Reco1 = (TH3F*)(fhntReco1->Projection(0,1,2))->Clone(); |
801 | fh3Reco2 = (TH3F*)(fhntReco2->Projection(0,1,2))->Clone(); | |
802 | fh3Reco1->Scale(1./fhntReco1_nbins*fh3Reco1->GetNbinsX()*fh3Reco1->GetNbinsY()*fh3Reco1->GetNbinsZ()); | |
803 | fh3Reco2->Scale(1./fhntReco2_nbins*fh3Reco2->GetNbinsX()*fh3Reco2->GetNbinsY()*fh3Reco2->GetNbinsZ()); | |
9ee51cbc | 804 | |
eef80284 | 805 | } |
806 | ||
807 | else if(fdoPtCorr == 1 && fdoEtaCorr == 1 && fdoZVertCorr == 1) | |
808 | { | |
809 | fh3Reco1 = (TH3F*)(fhntReco1->Projection(0,1,3))->Clone(); | |
810 | fh3Reco2 = (TH3F*)(fhntReco2->Projection(0,1,3))->Clone(); | |
811 | fh3Reco1->Scale(1./fhntReco1_nbins*fh3Reco1->GetNbinsX()*fh3Reco1->GetNbinsY()*fh3Reco1->GetNbinsZ()); | |
812 | fh3Reco2->Scale(1./fhntReco2_nbins*fh3Reco2->GetNbinsX()*fh3Reco2->GetNbinsY()*fh3Reco2->GetNbinsZ()); | |
813 | } | |
814 | ||
815 | else if(fdoPtCorr == 1 && fdoPhiCorr == 1 && fdoZVertCorr == 1) | |
816 | { | |
817 | fh3Reco1 = (TH3F*)(fhntReco1->Projection(0,2,3))->Clone(); | |
818 | fh3Reco2 = (TH3F*)(fhntReco2->Projection(0,2,3))->Clone(); | |
819 | fh3Reco1->Scale(1./fhntReco1_nbins*fh3Reco1->GetNbinsX()*fh3Reco1->GetNbinsY()*fh3Reco1->GetNbinsZ()); | |
820 | fh3Reco2->Scale(1./fhntReco2_nbins*fh3Reco2->GetNbinsX()*fh3Reco2->GetNbinsY()*fh3Reco2->GetNbinsZ()); | |
821 | } | |
822 | ||
823 | else if(fdoEtaCorr == 1 && fdoPhiCorr == 1 && fdoZVertCorr == 1) | |
824 | { | |
825 | fh3Reco1 = (TH3F*)(fhntReco1->Projection(1,2,3))->Clone(); | |
826 | fh3Reco2 = (TH3F*)(fhntReco2->Projection(1,2,3))->Clone(); | |
827 | fh3Reco1->Scale(1./fhntReco1_nbins*fh3Reco1->GetNbinsX()*fh3Reco1->GetNbinsY()*fh3Reco1->GetNbinsZ()); | |
828 | fh3Reco2->Scale(1./fhntReco2_nbins*fh3Reco2->GetNbinsX()*fh3Reco2->GetNbinsY()*fh3Reco2->GetNbinsZ()); | |
70c54bac | 829 | } |
830 | } | |
eef80284 | 831 | |
832 | /*else if(boolSum == 4) | |
70c54bac | 833 | { |
eef80284 | 834 | }*/ |
835 | ||
836 | ifileCorrTab->Close(); | |
837 | ||
838 | } | |
839 | ||
840 | void AliFemtoCorrFctnDEtaDPhiCorrections::LoadCorrectionTabFromROOTFile1D(const char *file, ParticleType partType1, ParticleType partType2) | |
841 | { | |
a0179664 | 842 | fCorr1D = kTRUE; |
843 | ||
eef80284 | 844 | ifileCorrTab = TFile::Open(file); |
845 | ||
846 | fpartType1 = partType1; | |
847 | fpartType2 = partType2; | |
848 | ||
849 | ||
0ca38d56 | 850 | char type1[12]; |
851 | char type2[12]; | |
eef80284 | 852 | |
853 | ||
854 | if(fpartType1==kPion) strcpy(type1,"Pion"); | |
855 | else if(fpartType1==kKaon) strcpy(type1,"Kaon"); | |
856 | else if (fpartType1==kProton)strcpy(type1,"Proton"); | |
857 | else if (fpartType1==kAll) strcpy(type1,"All"); | |
0ca38d56 | 858 | else if(fpartType1==kPionMinus) strcpy(type1,"PionMinus"); |
859 | else if (fpartType1==kKaonMinus) strcpy(type1,"KaonMinus"); | |
860 | else if (fpartType1==kProtonMinus)strcpy(type1,"ProtonMinus"); | |
eef80284 | 861 | else strcpy(type1,""); |
862 | ||
863 | if(fpartType2==kPion) strcpy(type2,"Pion"); | |
864 | else if(fpartType2==kKaon) strcpy(type2,"Kaon"); | |
865 | else if (fpartType2==kProton) strcpy(type2,"Proton"); | |
866 | else if (fpartType2==kAll) strcpy(type2,"All"); | |
0ca38d56 | 867 | else if(fpartType2==kPionMinus) strcpy(type1,"PionMinus"); |
868 | else if(fpartType2==kKaonMinus) strcpy(type1,"KaonMinus"); | |
869 | else if (fpartType2==kProtonMinus)strcpy(type1,"ProtonMinus"); | |
eef80284 | 870 | else strcpy(type1,""); |
871 | ||
b569c586 | 872 | fhCont1 = (TH1D*)(ifileCorrTab->Get(Form("CorrectionFactorPtEffandCont%s",type1)));//->Clone(); |
873 | fhCont2 = (TH1D*)(ifileCorrTab->Get(Form("CorrectionFactorPtEffandCont%s",type2)));//->Clone(); | |
eef80284 | 874 | |
875 | ifileCorrTab->Close(); | |
876 | ||
70c54bac | 877 | } |
878 | ||
2ddcfd01 | 879 | void AliFemtoCorrFctnDEtaDPhiCorrections::SetCorrectionTab(ParticleType partType) |
880 | { | |
881 | ||
882 | double pttab[] = {0, 0.025, 0.05, 0.075, 0.1, 0.125, 0.15, 0.175, 0.2, 0.225, 0.25, 0.275, 0.3, 0.325, 0.35, 0.375, 0.4, 0.425, 0.45, 0.475, 0.5, 0.525, 0.55, 0.575, 0.6, 0.625, 0.65, 0.675, 0.7, 0.725, 0.75, 0.775, 0.8, 0.825, 0.85, 0.875, 0.9, 0.925, 0.95, 0.975, 1, 1.025, 1.05, 1.075, 1.1, 1.125, 1.15, 1.175, 1.2, 1.225, 1.25, 1.275, 1.3, 1.325, 1.35, 1.375, 1.4, 1.425, 1.45, 1.475, 1.5, 1.525, 1.55, 1.575, 1.6, 1.625, 1.65, 1.675, 1.7, 1.725, 1.75, 1.775, 1.8, 1.825, 1.85, 1.875, 1.9, 1.925, 1.95, 1.975, 2, 2.025, 2.05, 2.075, 2.1, 2.125, 2.15, 2.175, 2.2, 2.225, 2.25, 2.275, 2.3, 2.325, 2.35, 2.375, 2.4, 2.425, 2.45, 2.475, 2.5, 2.525, 2.55, 2.575, 2.6, 2.625, 2.65, 2.675, 2.7, 2.725, 2.75, 2.775, 2.8, 2.825, 2.85, 2.875, 2.9, 2.925, 2.95, 2.975, 3, 3.025, 3.05, 3.075, 3.1, 3.125, 3.15, 3.175, 3.2, 3.225, 3.25, 3.275, 3.3, 3.325, 3.35, 3.375, 3.4, 3.425, 3.45, 3.475, 3.5, 3.525, 3.55, 3.575, 3.6, 3.625, 3.65, 3.675, 3.7, 3.725, 3.75, 3.775, 3.8, 3.825, 3.85, 3.875, 3.9, 3.925, 3.95, 3.975, 4, 4.025, 4.05, 4.075, 4.1, 4.125, 4.15, 4.175, 4.2, 4.225, 4.25, 4.275, 4.3, 4.325, 4.35, 4.375, 4.4, 4.425, 4.45, 4.475, 4.5, 4.525, 4.55, 4.575, 4.6, 4.625, 4.65, 4.675, 4.7, 4.725, 4.75}; | |
883 | ||
884 | double pioncorrtab[] = {0, 0, 0, 0, 0, 0, 0, 1.40089, 1.40089, 1.29482, 1.29482, 1.25595, 1.22529, 1.22529, 1.23099, 1.32027, 1.32027, 1.44774, 1.44774, 1.74645, 1.8619, 1.8619, 1.82089, 1.78506, 1.78506, 1.75918, 1.75918, 1.74951, 1.74614, 1.74614, 1.74006, 1.73229, 1.73229, 1.72844, 1.72844, 1.72306, 1.71906, 1.71906, 1.71375, 1.71301, 1.71301, 1.70381, 1.70381, 1.69975, 1.69242, 1.69242, 1.69013, 1.67698, 1.67698, 1.6772, 1.6772, 1.67118, 1.66607, 1.66607, 1.66131, 1.67228, 1.67228, 1.66834, 1.66834, 1.66031, 1.6588, 1.6588, 1.6555, 1.64923, 1.64923, 1.6467, 1.6467, 1.63894, 1.63682, 1.63682, 1.6297, 1.62904, 1.62904, 1.63007, 1.63007, 1.62832, 1.62557, 1.62557, 1.62687, 1.62928, 1.62928, 1.62767, 1.62767, 1.62767, 1.62767, 1.62767, 1.62767, 1.63415, 1.63415, 1.63415, 1.63415, 1.63415, 1.63415, 1.63415, 1.64141, 1.64141, 1.64141, 1.64141, 1.64141, 1.64141, 1.65191, 1.65191, 1.65191, 1.65191, 1.65191, 1.65191, 1.65191, 1.66838, 1.66838, 1.66838, 1.66838, 1.66838, 1.66838, 1.6839, 1.6839, 1.6839, 1.6839, 1.6839, 1.6839, 1.69601, 1.69601, 1.69601, 1.69601, 1.69601, 1.69601, 1.69601, 1.70062, 1.70062, 1.70062, 1.70062, 1.70062, 1.70062, 1.68668, 1.68668, 1.68668, 1.68668, 1.68668, 1.68668, 1.68668, 1.68182, 1.68182, 1.68182, 1.68182, 1.68182, 1.68182, 1.681, 1.681, 1.681, 1.681, 1.681, 1.681, 1.67749, 1.67749, 1.67749, 1.67749, 1.67749, 1.67749, 1.67749, 1.66558, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.67223, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.66872, 1.64419}; | |
885 | ||
886 | double protoncorrtab[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 357.585, 357.585, 8.66944, 2.10995, 2.10995, 1.50443, 1.73168, 1.73168, 2.3605, 2.3605, 4.7726, 4.40359, 4.40359, 3.0307, 2.49649, 2.49649, 2.2231, 2.2231, 2.11247, 2.05862, 2.05862, 2.00703, 1.9623, 1.9623, 1.93393, 1.93393, 1.9101, 1.89334, 1.89334, 1.87734, 1.86342, 1.86342, 1.85075, 1.85075, 1.83985, 1.83684, 1.83684, 1.82915, 1.81832, 1.81832, 1.81215, 1.81215, 1.7998, 1.79524, 1.79524, 1.78568, 1.79989, 1.79989, 1.7973, 1.7973, 1.79591, 1.78468, 1.78468, 1.78037, 1.77394, 1.77394, 1.77198, 1.77198, 1.76736, 1.76875, 1.76875, 1.76221, 1.75729, 1.75729, 1.75397, 1.75397, 1.75229, 1.74918, 1.74918, 1.75064, 1.75643, 1.75643, 1.75765, 1.75765, 1.75765, 1.75765, 1.75765, 1.75765, 1.76345, 1.76345, 1.76345, 1.76345, 1.76345, 1.76345, 1.76345, 1.76901, 1.76901, 1.76901, 1.76901, 1.76901, 1.76901, 1.78291, 1.78291, 1.78291, 1.78291, 1.78291, 1.78291, 1.78291, 1.80009, 1.80009, 1.80009, 1.80009, 1.80009, 1.80009, 1.81064, 1.81064, 1.81064, 1.81064, 1.81064, 1.81064, 1.81765, 1.81765, 1.81765, 1.81765, 1.81765, 1.81765, 1.81765, 1.79549, 1.79549, 1.79549, 1.79549, 1.79549, 1.79549, 1.80455, 1.80455, 1.80455, 1.80455, 1.80455, 1.80455, 1.80455, 1.78912, 1.78912, 1.78912, 1.78912, 1.78912, 1.78912, 1.78501, 1.78501, 1.78501, 1.78501, 1.78501, 1.78501, 1.79512, 1.79512, 1.79512, 1.79512, 1.79512, 1.79512, 1.79512, 1.77138, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.784, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152, 1.75152}; | |
887 | ||
888 | double kaoncorrtab[] = {0, 0, 0, 0, 0, 0, 0, 8.43268, 8.43268, 3.30657, 3.30657, 2.5102, 2.16256, 2.16256, 2.03757, 2.27166, 2.27166, 2.70432, 2.70432, 4.06234, 4.69199, 4.69199, 4.13074, 3.75139, 3.75139, 3.48381, 3.48381, 3.29762, 3.15261, 3.15261, 3.03022, 2.91874, 2.91874, 2.82421, 2.82421, 2.7388, 2.65961, 2.65961, 2.58426, 2.5174, 2.5174, 2.45378, 2.45378, 2.39687, 2.34699, 2.34699, 2.30247, 2.25299, 2.25299, 2.22443, 2.22443, 2.18303, 2.16012, 2.16012, 2.13083, 2.12806, 2.12806, 2.11376, 2.11376, 2.09566, 2.07526, 2.07526, 2.05378, 2.03252, 2.03252, 2.02466, 2.02466, 2.00531, 1.98945, 1.98945, 1.97877, 1.97226, 1.97226, 1.95475, 1.95475, 1.94838, 1.9314, 1.9314, 1.92571, 1.96346, 1.96346, 1.92849, 1.92849, 1.92849, 1.92849, 1.92849, 1.92849, 1.90949, 1.90949, 1.90949, 1.90949, 1.90949, 1.90949, 1.90949, 1.88743, 1.88743, 1.88743, 1.88743, 1.88743, 1.88743, 1.87486, 1.87486, 1.87486, 1.87486, 1.87486, 1.87486, 1.87486, 1.87785, 1.87785, 1.87785, 1.87785, 1.87785, 1.87785, 1.8757, 1.8757, 1.8757, 1.8757, 1.8757, 1.8757, 1.87948, 1.87948, 1.87948, 1.87948, 1.87948, 1.87948, 1.87948, 1.86148, 1.86148, 1.86148, 1.86148, 1.86148, 1.86148, 1.84329, 1.84329, 1.84329, 1.84329, 1.84329, 1.84329, 1.84329, 1.83105, 1.83105, 1.83105, 1.83105, 1.83105, 1.83105, 1.81955, 1.81955, 1.81955, 1.81955, 1.81955, 1.81955, 1.79944, 1.79944, 1.79944, 1.79944, 1.79944, 1.79944, 1.79944, 1.79345, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.80077, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.78333, 1.74958}; | |
889 | ||
890 | double allcorrtab[] = {0, 0, 0, 0, 0, 0, 0, 1.46883, 1.46883, 1.3528, 1.3528, 1.30939, 1.26936, 1.26936, 1.23645, 1.21359, 1.21359, 1.19759, 1.19759, 1.18565, 1.17772, 1.17772, 1.17203, 1.16739, 1.16739, 1.16398, 1.16398, 1.16201, 1.16065, 1.16065, 1.16012, 1.16009, 1.16009, 1.16044, 1.16044, 1.16104, 1.16139, 1.16139, 1.16134, 1.16278, 1.16278, 1.1631, 1.1631, 1.16227, 1.16152, 1.16152, 1.16066, 1.15984, 1.15984, 1.15932, 1.15932, 1.15912, 1.15818, 1.15818, 1.15877, 1.16754, 1.16754, 1.17075, 1.17075, 1.17047, 1.16995, 1.16995, 1.16885, 1.16845, 1.16845, 1.16824, 1.16824, 1.16771, 1.16704, 1.16704, 1.16681, 1.16723, 1.16723, 1.16819, 1.16819, 1.16811, 1.16974, 1.16974, 1.17217, 1.16759, 1.16759, 1.17376, 1.17376, 1.17376, 1.17376, 1.17376, 1.17376, 1.18247, 1.18247, 1.18247, 1.18247, 1.18247, 1.18247, 1.18247, 1.18916, 1.18916, 1.18916, 1.18916, 1.18916, 1.18916, 1.19649, 1.19649, 1.19649, 1.19649, 1.19649, 1.19649, 1.19649, 1.20315, 1.20315, 1.20315, 1.20315, 1.20315, 1.20315, 1.20984, 1.20984, 1.20984, 1.20984, 1.20984, 1.20984, 1.21236, 1.21236, 1.21236, 1.21236, 1.21236, 1.21236, 1.21236, 1.21272, 1.21272, 1.21272, 1.21272, 1.21272, 1.21272, 1.21416, 1.21416, 1.21416, 1.21416, 1.21416, 1.21416, 1.21416, 1.21308, 1.21308, 1.21308, 1.21308, 1.21308, 1.21308, 1.21332, 1.21332, 1.21332, 1.21332, 1.21332, 1.21332, 1.21204, 1.21204, 1.21204, 1.21204, 1.21204, 1.21204, 1.21204, 1.21006, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.21141, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2092, 1.2066}; | |
891 | ||
892 | fpTab = new double[190]; | |
893 | for(int i=0;i<190;i++) | |
894 | fpTab[i]=pttab[i]; | |
895 | ||
0ca38d56 | 896 | if(partType==kPion || partType==kPionMinus) |
2ddcfd01 | 897 | { |
898 | fCorrFactorTab = new double[190]; | |
899 | for(int i=0;i<190;i++) | |
900 | fCorrFactorTab[i] = pioncorrtab[i]; | |
901 | } | |
0ca38d56 | 902 | else if(partType==kKaon || partType==kKaonMinus) |
2ddcfd01 | 903 | { |
904 | fCorrFactorTab = new double[190]; | |
905 | for(int i=0;i<190;i++) | |
906 | fCorrFactorTab[i] = kaoncorrtab[i]; | |
907 | } | |
0ca38d56 | 908 | else if(partType==kProton||partType==kProtonMinus) |
2ddcfd01 | 909 | { |
910 | fCorrFactorTab = new double[190]; | |
911 | for(int i=0;i<190;i++) | |
912 | fCorrFactorTab[i] = protoncorrtab[i]; | |
913 | } | |
914 | else if(partType==kAll) | |
915 | { | |
916 | fCorrFactorTab = new double[190]; | |
917 | for(int i=0;i<190;i++) | |
918 | fCorrFactorTab[i] = allcorrtab[i]; | |
919 | } | |
920 | } | |
70c54bac | 921 | |
922 | double AliFemtoCorrFctnDEtaDPhiCorrections::CalculateCorrectionWeight(double pT1, double pT2) | |
eef80284 | 923 | { |
924 | double w1=0., w2=0.; | |
925 | if(pT1 > fhCont1->GetXaxis()->GetXmin() && pT1 < fhCont1->GetXaxis()->GetXmax() && pT2 > fhCont2->GetXaxis()->GetXmin() && pT2 < fhCont2->GetXaxis()->GetXmax()) | |
926 | { | |
927 | w1 = fhCont1->GetBinContent(fhCont1->FindFixBin(pT1)); | |
928 | w2 = fhCont2->GetBinContent(fhCont2->FindFixBin(pT2)); | |
929 | ||
930 | return w1*w2; | |
931 | } | |
932 | else | |
933 | return 0; | |
934 | } | |
935 | ||
936 | ||
0ca38d56 | 937 | double AliFemtoCorrFctnDEtaDPhiCorrections::CalculateCorrectionWeight(double pT1) |
938 | { | |
939 | double w1=0.; | |
940 | if(pT1 > fhCont1->GetXaxis()->GetXmin() && pT1 < fhCont1->GetXaxis()->GetXmax()) | |
941 | { | |
942 | w1 = fhCont1->GetBinContent(fhCont1->FindFixBin(pT1)); | |
943 | return w1; | |
944 | } | |
945 | else | |
946 | return 0; | |
947 | } | |
948 | ||
eef80284 | 949 | double AliFemtoCorrFctnDEtaDPhiCorrections::CalculateCorrectionWeight(double pT1, double pT2, double eta1, double eta2, double phi1, double phi2, double zvert1, double zvert2) |
70c54bac | 950 | { |
951 | ||
952 | double w1=0., w2=0.; | |
eef80284 | 953 | double eps1=0., eps2=0; |
954 | double cont1=0., cont2=0; //w=(1-cont)/eps | |
3a50c5c6 | 955 | phi1 += TMath::Pi(); |
956 | phi2 += TMath::Pi(); | |
eef80284 | 957 | |
958 | if(pT1 > fhCont1->GetXaxis()->GetXmin() && pT1 < fhCont1->GetXaxis()->GetXmax() && pT2 > fhCont2->GetXaxis()->GetXmin() && pT2 < fhCont2->GetXaxis()->GetXmax()) | |
959 | { | |
960 | cont1 = fhCont1->GetBinContent(fhCont1->FindFixBin(pT1)); | |
961 | cont2 = fhCont1->GetBinContent(fhCont2->FindFixBin(pT2)); | |
962 | } | |
70c54bac | 963 | else |
eef80284 | 964 | return 0; |
965 | ||
966 | int boolSum = fdoPtCorr+fdoEtaCorr+fdoPhiCorr+fdoZVertCorr; | |
967 | if(boolSum == 0) | |
968 | { | |
969 | return 1; | |
970 | } | |
971 | else if(boolSum == 1) | |
972 | { | |
973 | ||
974 | if(fdoPtCorr == 1) | |
975 | { | |
976 | if(pT1 > fh1Reco1->GetXaxis()->GetXmin() && pT1 < fh1Reco1->GetXaxis()->GetXmax() && pT2 > fh1Reco2->GetXaxis()->GetXmin() && pT2 < fh1Reco2->GetXaxis()->GetXmax()) | |
977 | { | |
978 | eps1 = fh1Reco1->GetBinContent(fh1Reco1->FindFixBin(pT1)); | |
979 | eps2 = fh1Reco2->GetBinContent(fh1Reco2->FindFixBin(pT2)); | |
980 | ||
981 | w1 = (1-cont1)/eps1; | |
982 | w2 = (1-cont2)/eps2; | |
eef80284 | 983 | return w1*w2; |
984 | } | |
985 | else | |
986 | return 0; | |
987 | } | |
988 | ||
989 | else if(fdoEtaCorr == 1) | |
990 | { | |
991 | if(eta1 > fh1Reco1->GetXaxis()->GetXmin() && eta1 < fh1Reco1->GetXaxis()->GetXmax() && eta2 > fh1Reco2->GetXaxis()->GetXmin() && eta2 < fh1Reco2->GetXaxis()->GetXmax()) | |
992 | { | |
993 | eps1 = fh1Reco1->GetBinContent(fh1Reco1->FindFixBin(eta1)); | |
994 | eps2 = fh1Reco2->GetBinContent(fh1Reco2->FindFixBin(eta2)); | |
995 | ||
996 | w1 = (1-cont1)/eps1; | |
997 | w2 = (1-cont2)/eps2; | |
998 | ||
999 | return w1*w2; | |
1000 | } | |
1001 | else | |
1002 | return 0; | |
1003 | } | |
1004 | ||
1005 | else if(fdoPhiCorr == 1) | |
1006 | { | |
1007 | if(phi1 > fh1Reco1->GetXaxis()->GetXmin() && phi1 < fh1Reco1->GetXaxis()->GetXmax() && phi2 > fh1Reco2->GetXaxis()->GetXmin() && phi2 < fh1Reco2->GetXaxis()->GetXmax()) | |
1008 | { | |
1009 | eps1 = fh1Reco1->GetBinContent(fh1Reco1->FindFixBin(phi1)); | |
1010 | eps2 = fh1Reco2->GetBinContent(fh1Reco2->FindFixBin(phi2)); | |
1011 | ||
1012 | w1 = (1-cont1)/eps1; | |
1013 | w2 = (1-cont2)/eps2; | |
1014 | ||
1015 | return w1*w2; | |
1016 | } | |
1017 | else | |
1018 | return 0; | |
1019 | ||
1020 | } | |
1021 | ||
1022 | else if(fdoZVertCorr == 1) | |
1023 | { | |
1024 | if(zvert1 > fh1Reco1->GetXaxis()->GetXmin() && zvert1 < fh1Reco1->GetXaxis()->GetXmax() && zvert2 > fh1Reco2->GetXaxis()->GetXmin() && zvert2 < fh1Reco2->GetXaxis()->GetXmax()) | |
1025 | { | |
1026 | eps1 = fh1Reco1->GetBinContent(fh1Reco1->FindFixBin(zvert1)); | |
1027 | eps2 = fh1Reco2->GetBinContent(fh1Reco2->FindFixBin(zvert2)); | |
1028 | ||
1029 | w1 = (1-cont1)/eps1; | |
1030 | w2 = (1-cont2)/eps2; | |
1031 | ||
1032 | return w1*w2; | |
1033 | } | |
1034 | else | |
1035 | return 0; | |
1036 | } | |
1037 | ||
1038 | } | |
1039 | ||
1040 | else if(boolSum == 2) | |
1041 | { | |
1042 | if(fdoPtCorr == 1 && fdoEtaCorr == 1) | |
1043 | { | |
9ee51cbc | 1044 | if(pT1 > fh2Reco1->GetXaxis()->GetXmin() && pT1 < fh2Reco1->GetXaxis()->GetXmax() && pT2 > fh2Reco2->GetXaxis()->GetXmin() && pT2 < fh2Reco2->GetXaxis()->GetXmax() && eta1 > fh2Reco1->GetYaxis()->GetXmin() && eta1 < fh2Reco1->GetYaxis()->GetXmax() && eta2 > fh2Reco2->GetYaxis()->GetXmin() && eta2 < fh2Reco2->GetYaxis()->GetXmax()) |
eef80284 | 1045 | { |
1046 | eps1 = fh2Reco1->GetBinContent(fh2Reco1->GetXaxis()->FindFixBin(pT1),fh2Reco1->GetYaxis()->FindFixBin(eta1)); | |
1047 | eps2 = fh2Reco2->GetBinContent(fh2Reco2->GetXaxis()->FindFixBin(pT2),fh2Reco2->GetYaxis()->FindFixBin(eta2)); | |
1048 | ||
9ee51cbc | 1049 | w1 = (1-cont1)/eps1; |
eef80284 | 1050 | w2 = (1-cont2)/eps2; |
1051 | ||
1052 | return w1*w2; | |
1053 | } | |
1054 | else | |
1055 | return 0; | |
1056 | ||
1057 | } | |
1058 | ||
1059 | if(fdoPtCorr == 1 && fdoPhiCorr == 1) | |
1060 | { | |
1061 | ||
9ee51cbc | 1062 | if(pT1 > fh2Reco1->GetXaxis()->GetXmin() && pT1 < fh2Reco1->GetXaxis()->GetXmax() && pT2 > fh2Reco2->GetXaxis()->GetXmin() && pT2 < fh2Reco2->GetXaxis()->GetXmax() && phi1 > fh2Reco1->GetYaxis()->GetXmin() && phi1 < fh2Reco1->GetYaxis()->GetXmax() && phi2 > fh2Reco2->GetYaxis()->GetXmin() && phi2 < fh2Reco2->GetYaxis()->GetXmax()) |
eef80284 | 1063 | { |
1064 | eps1 = fh2Reco1->GetBinContent(fh2Reco1->GetXaxis()->FindFixBin(pT1),fh2Reco1->GetYaxis()->FindFixBin(phi1)); | |
1065 | eps2 = fh2Reco2->GetBinContent(fh2Reco2->GetXaxis()->FindFixBin(pT2),fh2Reco2->GetYaxis()->FindFixBin(phi2)); | |
1066 | ||
1067 | w1 = (1-cont1)/eps1; | |
1068 | w2 = (1-cont2)/eps2; | |
1069 | ||
1070 | return w1*w2; | |
1071 | } | |
1072 | else | |
1073 | return 0; | |
1074 | ||
1075 | } | |
1076 | ||
1077 | else if(fdoPtCorr == 1 && fdoZVertCorr == 1) | |
1078 | { | |
1079 | ||
9ee51cbc | 1080 | if(pT1 > fh2Reco1->GetXaxis()->GetXmin() && pT1 < fh2Reco1->GetXaxis()->GetXmax() && pT2 > fh2Reco2->GetXaxis()->GetXmin() && pT2 < fh2Reco2->GetXaxis()->GetXmax() && zvert1 > fh2Reco1->GetYaxis()->GetXmin() && zvert1 < fh2Reco1->GetYaxis()->GetXmax() && zvert2 > fh2Reco2->GetYaxis()->GetXmin() && zvert2 < fh2Reco2->GetYaxis()->GetXmax()) |
eef80284 | 1081 | { |
1082 | eps1 = fh2Reco1->GetBinContent(fh2Reco1->GetXaxis()->FindFixBin(pT1),fh2Reco1->GetYaxis()->FindFixBin(zvert1)); | |
1083 | eps2 = fh2Reco2->GetBinContent(fh2Reco2->GetXaxis()->FindFixBin(pT2),fh2Reco2->GetYaxis()->FindFixBin(zvert2)); | |
1084 | ||
1085 | w1 = (1-cont1)/eps1; | |
1086 | w2 = (1-cont2)/eps2; | |
1087 | ||
1088 | return w1*w2; | |
1089 | } | |
1090 | else | |
1091 | return 0; | |
1092 | } | |
1093 | else if(fdoEtaCorr == 1 && fdoPhiCorr == 1) | |
1094 | { | |
1095 | ||
9ee51cbc | 1096 | if(eta1 > fh2Reco1->GetXaxis()->GetXmin() && eta1 < fh2Reco1->GetXaxis()->GetXmax() && eta2 > fh2Reco2->GetXaxis()->GetXmin() && eta2 < fh2Reco2->GetXaxis()->GetXmax() && phi1 > fh2Reco1->GetYaxis()->GetXmin() && phi1 < fh2Reco1->GetYaxis()->GetXmax() && phi2 > fh2Reco2->GetYaxis()->GetXmin() && phi2 < fh2Reco2->GetYaxis()->GetXmax()) |
eef80284 | 1097 | { |
1098 | eps1 = fh2Reco1->GetBinContent(fh2Reco1->GetXaxis()->FindFixBin(eta1),fh2Reco1->GetYaxis()->FindFixBin(phi1)); | |
1099 | eps2 = fh2Reco2->GetBinContent(fh2Reco2->GetXaxis()->FindFixBin(eta2),fh2Reco2->GetYaxis()->FindFixBin(phi2)); | |
1100 | ||
1101 | w1 = (1-cont1)/eps1; | |
1102 | w2 = (1-cont2)/eps2; | |
1103 | ||
1104 | return w1*w2; | |
1105 | } | |
1106 | else | |
1107 | return 0; | |
1108 | ||
1109 | ||
1110 | } | |
1111 | else if(fdoEtaCorr == 1 && fdoZVertCorr == 1) | |
1112 | { | |
1113 | ||
1114 | if(eta1 > fh2Reco1->GetXaxis()->GetXmin() && eta1 < fh2Reco1->GetXaxis()->GetXmax() && eta2 > fh2Reco2->GetXaxis()->GetXmin() && eta2 < fh2Reco2->GetXaxis()->GetXmax() && zvert1 > fh2Reco1->GetYaxis()->GetXmin() && zvert1 < fh2Reco1->GetYaxis()->GetXmax() && zvert2 > fh2Reco2->GetXaxis()->GetXmin() && zvert2 < fh2Reco2->GetXaxis()->GetXmax()) | |
1115 | { | |
1116 | eps1 = fh2Reco1->GetBinContent(fh2Reco1->GetXaxis()->FindFixBin(eta1),fh2Reco1->GetYaxis()->FindFixBin(zvert1)); | |
1117 | eps1 = fh2Reco2->GetBinContent(fh2Reco2->GetXaxis()->FindFixBin(eta2),fh2Reco2->GetYaxis()->FindFixBin(zvert2)); | |
1118 | ||
1119 | ||
1120 | w1 = (1-cont1)/eps1; | |
1121 | w2 = (1-cont2)/eps2; | |
1122 | ||
1123 | return w1*w2; | |
1124 | } | |
1125 | else | |
1126 | return 0; | |
1127 | ||
1128 | } | |
1129 | else if(fdoPhiCorr == 1 && fdoZVertCorr == 1) | |
1130 | { | |
1131 | ||
1132 | if(phi1 > fh2Reco1->GetXaxis()->GetXmin() && phi1 < fh2Reco1->GetXaxis()->GetXmax() && phi2 > fh2Reco2->GetXaxis()->GetXmin() && phi2 < fh2Reco2->GetXaxis()->GetXmax() && zvert1 > fh2Reco1->GetYaxis()->GetXmin() && zvert1 < fh2Reco1->GetYaxis()->GetXmax() && zvert2 > fh2Reco2->GetYaxis()->GetXmin() && zvert2 < fh2Reco2->GetYaxis()->GetXmax()) | |
1133 | { | |
1134 | eps1 = fh2Reco1->GetBinContent(fh2Reco1->GetXaxis()->FindFixBin(phi1),fh2Reco1->GetYaxis()->FindFixBin(zvert1)); | |
1135 | eps2 = fh2Reco2->GetBinContent(fh2Reco2->GetXaxis()->FindFixBin(phi2),fh2Reco2->GetYaxis()->FindFixBin(zvert2)); | |
1136 | ||
1137 | w1 = (1-cont1)/eps1; | |
1138 | w2 = (1-cont2)/eps2; | |
1139 | ||
1140 | return w1*w2; | |
1141 | } | |
1142 | else | |
1143 | return 0; | |
1144 | ||
1145 | } | |
1146 | } | |
1147 | ||
1148 | ||
1149 | else if(boolSum == 3) | |
1150 | { | |
1151 | if(fdoPtCorr == 1 && fdoEtaCorr == 1 && fdoPhiCorr == 1) | |
1152 | { | |
1153 | if(pT1 >fh3Reco1->GetXaxis()->GetXmin() && pT1 <fh3Reco1->GetXaxis()->GetXmax() && | |
1154 | pT2 > fh3Reco2->GetXaxis()->GetXmin() && pT2 <fh3Reco2->GetXaxis()->GetXmax() && | |
1155 | eta1 > fh3Reco1->GetYaxis()->GetXmin() && eta1 <fh3Reco1->GetYaxis()->GetXmax() && | |
1156 | eta2 > fh3Reco2->GetYaxis()->GetXmin() && eta2 <fh3Reco2->GetYaxis()->GetXmax() && | |
1157 | phi1 > fh3Reco1->GetZaxis()->GetXmin() && phi1 < fh3Reco1->GetZaxis()->GetXmax() && | |
1158 | phi2 > fh3Reco2->GetZaxis()->GetXmin() && phi2 < fh3Reco2->GetZaxis()->GetXmax()) | |
1159 | { | |
1160 | eps1 = fh3Reco1->GetBinContent(fh3Reco1->GetXaxis()->FindFixBin(pT1),fh3Reco1->GetYaxis()->FindFixBin(eta1),fh3Reco1->GetZaxis()->FindFixBin(phi1)); | |
1161 | eps2 = fh3Reco2->GetBinContent(fh3Reco2->GetXaxis()->FindFixBin(pT2),fh3Reco2->GetYaxis()->FindFixBin(eta2),fh3Reco2->GetZaxis()->FindFixBin(phi2)); | |
1162 | ||
1163 | w1 = (1-cont1)/eps1; | |
1164 | w2 = (1-cont2)/eps2; | |
1165 | ||
1166 | return w1*w2; | |
1167 | } | |
1168 | else | |
1169 | return 0; | |
1170 | ||
1171 | ||
1172 | } | |
1173 | ||
1174 | else if(fdoPtCorr == 1 && fdoEtaCorr == 1 && fdoZVertCorr == 1) | |
1175 | { | |
1176 | ||
1177 | if(pT1 >fh3Reco1->GetXaxis()->GetXmin() && pT1 <fh3Reco1->GetXaxis()->GetXmax() && pT2 > fh3Reco2->GetXaxis()->GetXmin() && pT2 <fh3Reco2->GetXaxis()->GetXmax() && eta1 > fh3Reco1->GetYaxis()->GetXmin() && eta1 <fh3Reco1->GetYaxis()->GetXmax() && eta2 > fh3Reco2->GetYaxis()->GetXmin() && eta2 <fh3Reco2->GetYaxis()->GetXmax() && zvert1 > fh3Reco1->GetZaxis()->GetXmin() && zvert1 < fh3Reco1->GetZaxis()->GetXmax() && zvert2 > fh3Reco2->GetZaxis()->GetXmin() && zvert2 < fh3Reco2->GetZaxis()->GetXmax()) | |
1178 | { | |
1179 | eps1 = fh3Reco1->GetBinContent(fh3Reco1->GetXaxis()->FindFixBin(pT1),fh3Reco1->GetYaxis()->FindFixBin(eta1),fh3Reco1->GetZaxis()->FindFixBin(zvert1)); | |
1180 | eps2 = fh3Reco2->GetBinContent(fh3Reco2->GetXaxis()->FindFixBin(pT2),fh3Reco2->GetYaxis()->FindFixBin(eta2),fh3Reco2->GetZaxis()->FindFixBin(zvert2)); | |
1181 | ||
1182 | w1 = (1-cont1)/eps1; | |
1183 | w2 = (1-cont2)/eps2; | |
1184 | ||
1185 | return w1*w2; | |
1186 | } | |
1187 | else | |
1188 | return 0; | |
1189 | } | |
1190 | ||
1191 | else if(fdoPtCorr == 1 && fdoPhiCorr == 1 && fdoZVertCorr == 1) | |
1192 | { | |
1193 | ||
1194 | if(pT1 >fh3Reco1->GetXaxis()->GetXmin() && pT1 <fh3Reco1->GetXaxis()->GetXmax() && pT2 > fh3Reco2->GetXaxis()->GetXmin() && pT2 <fh3Reco2->GetXaxis()->GetXmax() && phi1 > fh3Reco1->GetYaxis()->GetXmin() && phi1 <fh3Reco1->GetYaxis()->GetXmax() && phi2 > fh3Reco2->GetYaxis()->GetXmin() && phi2 <fh3Reco2->GetYaxis()->GetXmax() && zvert1 > fh3Reco1->GetZaxis()->GetXmin() && zvert1 < fh3Reco1->GetZaxis()->GetXmax() && zvert2 > fh3Reco2->GetZaxis()->GetXmin() && zvert2 < fh3Reco2->GetZaxis()->GetXmax()) | |
1195 | { | |
1196 | eps1 = fh3Reco1->GetBinContent(fh3Reco1->GetXaxis()->FindFixBin(pT1),fh3Reco1->GetYaxis()->FindFixBin(phi1),fh3Reco1->GetZaxis()->FindFixBin(zvert1)); | |
1197 | eps2 = fh3Reco2->GetBinContent(fh3Reco2->GetXaxis()->FindFixBin(pT2),fh3Reco2->GetYaxis()->FindFixBin(phi2),fh3Reco2->GetZaxis()->FindFixBin(zvert2)); | |
1198 | ||
1199 | w1 = (1-cont1)/eps1; | |
1200 | w2 = (1-cont2)/eps2; | |
1201 | ||
1202 | return w1*w2; | |
1203 | } | |
1204 | else | |
1205 | return 0; | |
1206 | ||
1207 | } | |
1208 | ||
1209 | else if(fdoEtaCorr == 1 && fdoPhiCorr == 1 && fdoZVertCorr == 1) | |
1210 | { | |
1211 | ||
1212 | if(eta1 >fh3Reco1->GetXaxis()->GetXmin() && eta1 <fh3Reco1->GetXaxis()->GetXmax() && eta2 > fh3Reco2->GetXaxis()->GetXmin() && eta2 <fh3Reco2->GetXaxis()->GetXmax() && phi1 > fh3Reco1->GetYaxis()->GetXmin() && phi1 <fh3Reco1->GetYaxis()->GetXmax() && phi2 > fh3Reco2->GetYaxis()->GetXmin() && phi2 <fh3Reco2->GetYaxis()->GetXmax() && zvert1 > fh3Reco1->GetZaxis()->GetXmin() && zvert1 < fh3Reco1->GetZaxis()->GetXmax() && zvert2 > fh3Reco2->GetZaxis()->GetXmin() && zvert2 < fh3Reco2->GetZaxis()->GetXmax()) | |
1213 | { | |
1214 | eps1 = fh3Reco1->GetBinContent(fh3Reco1->GetXaxis()->FindFixBin(eta1),fh3Reco1->GetYaxis()->FindFixBin(phi1),fh3Reco1->GetZaxis()->FindFixBin(zvert1)); | |
1215 | eps2 = fh3Reco2->GetBinContent(fh3Reco2->GetXaxis()->FindFixBin(eta2),fh3Reco2->GetYaxis()->FindFixBin(phi2),fh3Reco2->GetZaxis()->FindFixBin(zvert2)); | |
1216 | ||
1217 | w1 = (1-cont1)/eps1; | |
1218 | w2 = (1-cont2)/eps2; | |
1219 | ||
1220 | return w1*w2; | |
1221 | } | |
1222 | else | |
1223 | return 0; | |
1224 | ||
1225 | } | |
1226 | } | |
1227 | ||
1228 | else if(boolSum == 4) | |
1229 | { | |
1230 | ||
1231 | if(pT1 > fhntReco1->GetAxis(0)->GetXmin() && pT1 < fhntReco1->GetAxis(0)->GetXmax() && pT2 > fhntReco2->GetAxis(0)->GetXmin() && pT2 < fhntReco2->GetAxis(0)->GetXmax() && eta1 > fhntReco1->GetAxis(1)->GetXmin() && eta1 <fhntReco1->GetAxis(1)->GetXmax() && eta2 > fhntReco2->GetAxis(1)->GetXmin() && eta2 < fhntReco2->GetAxis(1)->GetXmax() && phi1 > fhntReco1->GetAxis(2)->GetXmin() && phi2 < fhntReco2->GetAxis(2)->GetXmax() && phi2 > fhntReco2->GetAxis(2)->GetXmin() && phi2 < fhntReco2->GetAxis(2)->GetXmax() && zvert1 > fhntReco1->GetAxis(3)->GetXmin() && zvert1 < fhntReco1->GetAxis(3)->GetXmax() && zvert2 > fhntReco2->GetAxis(3)->GetXmin() && zvert2 < fhntReco2->GetAxis(3)->GetXmax()) | |
1232 | { | |
1233 | ||
1234 | int tab1[] = {fhntReco1->GetAxis(0)->FindFixBin(pT1),fhntReco1->GetAxis(1)->FindFixBin(eta1),fhntReco1->GetAxis(2)->FindFixBin(phi1),fhntReco1->GetAxis(3)->FindFixBin(zvert1)}; | |
1235 | int tab2[] = {fhntReco2->GetAxis(0)->FindFixBin(pT2),fhntReco2->GetAxis(1)->FindFixBin(eta2),fhntReco2->GetAxis(2)->FindFixBin(phi2),fhntReco2->GetAxis(3)->FindFixBin(zvert2)}; | |
1236 | ||
1237 | eps1 = fhntReco1->GetBinContent(tab1); | |
1238 | eps2 = fhntReco2->GetBinContent(tab2); | |
1239 | ||
1240 | w1 = (1-cont1)/eps1; | |
1241 | w2 = (1-cont2)/eps2; | |
eef80284 | 1242 | return w1*w2; |
1243 | ||
1244 | } | |
1245 | else | |
1246 | return 0; | |
1247 | ||
1248 | } | |
1249 | ||
1250 | return 0; | |
1251 | ||
70c54bac | 1252 | } |