]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FLOW/AliFlowCommon/AliFlowAnalysisWithQCumulants.cxx
fix ownerschip of TLists
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowCommon / AliFlowAnalysisWithQCumulants.cxx
CommitLineData
bc92c0cb 1/*************************************************************************
2* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
3* *
4* Author: The ALICE Off-line Project. *
5* Contributors are mentioned in the code where appropriate. *
6* *
7* Permission to use, copy, modify and distribute this software and its *
8* documentation strictly for non-commercial purposes is hereby granted *
9* without fee, provided that the above copyright notice appears in all *
10* copies and that both the copyright notice and this permission notice *
11* appear in the supporting documentation. The authors make no claims *
12* about the suitability of this software for any purpose. It is *
13* provided "as is" without express or implied warranty. *
14**************************************************************************/
15
16/**********************************
17 * flow analysis with Q-cumulants *
18 * *
19 * author: Ante Bilandzic *
20 * (anteb@nikhef.nl) *
21 *********************************/
22
23#define AliFlowAnalysisWithQCumulants_cxx
24
25#include "Riostream.h"
26#include "AliFlowCommonConstants.h"
27#include "AliFlowCommonHist.h"
28#include "AliFlowCommonHistResults.h"
29#include "TChain.h"
30#include "TFile.h"
1315fe58 31#include "TList.h"
e085f1a9 32#include "TGraph.h"
bc92c0cb 33#include "TParticle.h"
34#include "TRandom3.h"
1315fe58 35#include "TStyle.h"
bc92c0cb 36#include "TProfile.h"
37#include "TProfile2D.h"
38#include "TProfile3D.h"
1dfa3c16 39#include "TMath.h"
e085f1a9 40#include "TArrow.h"
41#include "TPaveLabel.h"
42#include "TCanvas.h"
bc92c0cb 43#include "AliFlowEventSimple.h"
44#include "AliFlowTrackSimple.h"
45#include "AliFlowAnalysisWithQCumulants.h"
3d824203 46#include "TArrayD.h"
bc92c0cb 47#include "TRandom.h"
2bdc5281 48#include "TF1.h"
bc92c0cb 49
50class TH1;
9c1a9547 51class TH2;
bc92c0cb 52class TGraph;
53class TPave;
54class TLatex;
55class TMarker;
56class TRandom3;
57class TObjArray;
58class TList;
59class TCanvas;
60class TSystem;
61class TROOT;
62class AliFlowVector;
63class TVector;
64
65//================================================================================================================
66
67ClassImp(AliFlowAnalysisWithQCumulants)
68
69AliFlowAnalysisWithQCumulants::AliFlowAnalysisWithQCumulants():
70 fTrack(NULL),
71 fHistList(NULL),
ae733b3b 72 fDiffFlowList(NULL),
03a02aca 73 fWeightsList(NULL),
9c1a9547 74 fResultsList(NULL),
1315fe58 75 fAvMultIntFlowQC(NULL),
bc92c0cb 76 fQvectorComponents(NULL),
1315fe58 77 fDiffFlowResults2ndOrderQC(NULL),
78 fDiffFlowResults4thOrderQC(NULL),
79 fCovariances(NULL),
e085f1a9 80 fQvectorForEachEventX(NULL),//to be removed
81 fQvectorForEachEventY(NULL),//to be removed
bc92c0cb 82 fQCorrelations(NULL),
9c1a9547 83 fQCorrelationsW(NULL),
c365fe76 84 fQCorrectionsCos(NULL),
85 fQCorrectionsSin(NULL),
8842fb2b 86 fQProduct(NULL),
bc92c0cb 87 fDirectCorrelations(NULL),
9c1a9547 88 fDirectCorrelationsW(NULL),
89 fDirectCorrelationsDiffFlow(NULL),
90 fDirectCorrelationsDiffFlowW(NULL),
c365fe76 91 fDirectCorrectionsCos(NULL),
92 fDirectCorrectionsSin(NULL),
2bdc5281 93 fDirectCorrectionsDiffFlowCos(NULL),
94 fDirectCorrectionsDiffFlowSin(NULL),
1dfa3c16 95 f2PerPtBin1n1nPOI(NULL),
1dfa3c16 96 f4PerPtBin1n1n1n1nPOI(NULL),
1dfa3c16 97 f2PerEtaBin1n1nPOI(NULL),
1dfa3c16 98 f4PerEtaBin1n1n1n1nPOI(NULL),
3d824203 99 f2WPerPtBin1n1nPOI(NULL),
3d824203 100 f4WPerPtBin1n1n1n1nPOI(NULL),
3d824203 101 f2WPerEtaBin1n1nPOI(NULL),
102 f4WPerEtaBin1n1n1n1nPOI(NULL),
77515452 103 f2PerPtBin1n1nRP(NULL),
104 f4PerPtBin1n1n1n1nRP(NULL),
105 f2PerEtaBin1n1nRP(NULL),
106 f4PerEtaBin1n1n1n1nRP(NULL),
3d824203 107 f2WPerPtBin1n1nRP(NULL),
108 f4WPerPtBin1n1n1n1nRP(NULL),
3d824203 109 f2WPerEtaBin1n1nRP(NULL),
110 f4WPerEtaBin1n1n1n1nRP(NULL),
cb308e83 111 fCommonHists2nd(NULL),
112 fCommonHists4th(NULL),
113 fCommonHists6th(NULL),
114 fCommonHists8th(NULL),
8842fb2b 115 fCommonHistsResults2nd(NULL),
116 fCommonHistsResults4th(NULL),
117 fCommonHistsResults6th(NULL),
118 fCommonHistsResults8th(NULL),
52021ae2 119 f2pDistribution(NULL),
120 f4pDistribution(NULL),
121 f6pDistribution(NULL),
5e838eeb 122 f8pDistribution(NULL),
8842fb2b 123 fnBinsPt(0),
124 fPtMin(0),
1dfa3c16 125 fPtMax(0),
126 fnBinsEta(0),
127 fEtaMin(0),
e085f1a9 128 fEtaMax(0),
129 fEventCounter(0),
130 fUsePhiWeights(kFALSE),
131 fUsePtWeights(kFALSE),
9c1a9547 132 fUseEtaWeights(kFALSE),
133 fUseWeights(kFALSE),
134 fUseWeightsBits(NULL),
2bdc5281 135
136 // ....................................................
137 // POI:
138 fCorrectionsCosP1nPsiPtEtaPOI(NULL),
139 fCorrectionsSinP1nPsiPtEtaPOI(NULL),
140
141 // RP:
142 fCorrectionsCosP1nPsiPtEtaRP(NULL),
143 fCorrectionsSinP1nPsiPtEtaRP(NULL),
144 // ....................................................
145
9c1a9547 146
147 // ...................................................................................................................
148 // Q_{n,k} and S^M_{n,k}:
149 fReQ(NULL),
150 fImQ(NULL),
151 fSMpk(NULL),
152
153 // q_n and m:
154 fReqnPtEta(NULL),
155 fImqnPtEta(NULL),
156 fmPtEta(NULL),
157
158 // non-weighted q''_{n} and q''_{2n}:
159 fReqPrimePrime1nPtEta(NULL),
160 fImqPrimePrime1nPtEta(NULL),
161 fReqPrimePrime2nPtEta(NULL),
162 fImqPrimePrime2nPtEta(NULL),
163
164 // weighted q''_{n,2k} and q''_{2n,k}:
165 fReqPrimePrime1n2kPtEta(NULL),
166 fImqPrimePrime1n2kPtEta(NULL),
167 fReqPrimePrime2n1kPtEta(NULL),
168 fImqPrimePrime2n1kPtEta(NULL),
169
170 // m''
171 fmPrimePrimePtEta(NULL),
172
173 // S^{m''}_{n,k}
174 fSmPrimePrime1p1kPtEta(NULL),
175 fSmPrimePrime1p2kPtEta(NULL),
176 fSmPrimePrime1p3kPtEta(NULL),
177
178 // non-weighted q_RP{n} and q_RP{2n}:
179 fReqRP1nPtEta(NULL),
180 fImqRP1nPtEta(NULL),
181 fReqRP2nPtEta(NULL),
182 fImqRP2nPtEta(NULL),
183
184 // weighted q_RP{n,2k} and q_RP{2n,k} (for each (pt,eta) bin for RPs)
185 fReqRP1n2kPtEta(NULL),
186 fImqRP1n2kPtEta(NULL),
187 fReqRP2n1kPtEta(NULL),
188 fImqRP2n1kPtEta(NULL),
189
190 // m_RP:
191 fmRPPtEta(NULL), // # of particles which are RPs for each (pt,eta) bin
192
193 // S^{m_RP}_{p,k} (for each (pt,eta) bin for RPs):
194 fSmRP1p1kPtEta(NULL),
195 fSmRP1p2kPtEta(NULL),
196 fSmRP1p3kPtEta(NULL),
197
198 // ----- RESULTS ----
199
c365fe76 200 fFinalCorrectionsForNUA(NULL), // NUA = non-uniform acceptance
201
9c1a9547 202 // non-weighted integrated flow:
203 fIntFlowResultsQC(NULL),
204 fIntFlowResultsPOIQC(NULL),
205 fIntFlowResultsRPQC(NULL),
206
207 // weighted integrated flow:
208 fIntFlowResultsQCW(NULL),
209 fIntFlowResultsPOIQCW(NULL),
210 fIntFlowResultsRPQCW(NULL),
211
212 // non-weighted correlations for each (pt,eta) bin for POIs:
213 f2pPtEtaPOI(NULL),
214 f4pPtEtaPOI(NULL),
215 f6pPtEtaPOI(NULL),
216 f8pPtEtaPOI(NULL),
217
2bdc5281 218 // corrections for non-uniform acceptance to non-weighted correlations for each (pt,eta) bin for POIs:
219 f2pFinalCorrectionsForNUAPtEtaPOI(NULL),
220 f4pFinalCorrectionsForNUAPtEtaPOI(NULL),
221 f6pFinalCorrectionsForNUAPtEtaPOI(NULL),
222 f8pFinalCorrectionsForNUAPtEtaPOI(NULL),
223
224 // corrections for non-uniform acceptance to non-weighted correlations for each (pt) bin for POIs:
225 f2pFinalCorrectionsForNUAPtPOI(NULL),
226 f4pFinalCorrectionsForNUAPtPOI(NULL),
227 f6pFinalCorrectionsForNUAPtPOI(NULL),
228 f8pFinalCorrectionsForNUAPtPOI(NULL),
229
230 // corrections for non-uniform acceptance to non-weighted correlations for each (eta) bin for POIs:
231 f2pFinalCorrectionsForNUAEtaPOI(NULL),
232 f4pFinalCorrectionsForNUAEtaPOI(NULL),
233 f6pFinalCorrectionsForNUAEtaPOI(NULL),
234 f8pFinalCorrectionsForNUAEtaPOI(NULL),
235
9c1a9547 236 // non-weighted final results for differential flow for POIs:
237 // 3D (pt,eta)
238 fvn2ndPtEtaPOI(NULL),
239 fvn4thPtEtaPOI(NULL),
240 fvn6thPtEtaPOI(NULL),
241 fvn8thPtEtaPOI(NULL),
242 // 2D (pt)
243 fvn2ndPtPOI(NULL),
244 fvn4thPtPOI(NULL),
245 fvn6thPtPOI(NULL),
246 fvn8thPtPOI(NULL),
247 // 2D (eta)
248 fvn2ndEtaPOI(NULL),
249 fvn4thEtaPOI(NULL),
250 fvn6thEtaPOI(NULL),
251 fvn8thEtaPOI(NULL),
252
253 // weighted correlations for each (pt,eta) bin for POIs:
254 f2pPtEtaPOIW(NULL),
255 f4pPtEtaPOIW(NULL),
256 f6pPtEtaPOIW(NULL),
257 f8pPtEtaPOIW(NULL),
258
259 // weighted final results for differential flow for POIs:
260 // 3D (pt,eta)
261 fvn2ndPtEtaPOIW(NULL),
262 fvn4thPtEtaPOIW(NULL),
263 fvn6thPtEtaPOIW(NULL),
264 fvn8thPtEtaPOIW(NULL),
265 // 2D (pt)
266 fvn2ndPtPOIW(NULL),
267 fvn4thPtPOIW(NULL),
268 fvn6thPtPOIW(NULL),
269 fvn8thPtPOIW(NULL),
270 // 2D (eta)
271 fvn2ndEtaPOIW(NULL),
272 fvn4thEtaPOIW(NULL),
273 fvn6thEtaPOIW(NULL),
274 fvn8thEtaPOIW(NULL),
275
276 // non-weighted correlations for each (pt,eta) bin for RPs:
277 f2pPtEtaRP(NULL),
278 f4pPtEtaRP(NULL),
279 f6pPtEtaRP(NULL),
280 f8pPtEtaRP(NULL),
281
2bdc5281 282 // corrections for non-uniform acceptance to non-weighted correlations for each (pt,eta) bin for RPs:
283 f2pFinalCorrectionsForNUAPtEtaRP(NULL),
284 f4pFinalCorrectionsForNUAPtEtaRP(NULL),
285 f6pFinalCorrectionsForNUAPtEtaRP(NULL),
286 f8pFinalCorrectionsForNUAPtEtaRP(NULL),
287
288 // corrections for non-uniform acceptance to non-weighted correlations for each (pt) bin for RPs:
289 f2pFinalCorrectionsForNUAPtRP(NULL),
290 f4pFinalCorrectionsForNUAPtRP(NULL),
291 f6pFinalCorrectionsForNUAPtRP(NULL),
292 f8pFinalCorrectionsForNUAPtRP(NULL),
293
294 // corrections for non-uniform acceptance to non-weighted correlations for each (eta) bin for RPs:
295 f2pFinalCorrectionsForNUAEtaRP(NULL),
296 f4pFinalCorrectionsForNUAEtaRP(NULL),
297 f6pFinalCorrectionsForNUAEtaRP(NULL),
298 f8pFinalCorrectionsForNUAEtaRP(NULL),
299
9c1a9547 300 // non-weighted final results for differential flow for RPs:
301 // 3D (pt,eta)
302 fvn2ndPtEtaRP(NULL),
303 fvn4thPtEtaRP(NULL),
304 fvn6thPtEtaRP(NULL),
305 fvn8thPtEtaRP(NULL),
306 // 2D (pt)
307 fvn2ndPtRP(NULL),
308 fvn4thPtRP(NULL),
309 fvn6thPtRP(NULL),
310 fvn8thPtRP(NULL),
311 // 2D (eta)
312 fvn2ndEtaRP(NULL),
313 fvn4thEtaRP(NULL),
314 fvn6thEtaRP(NULL),
315 fvn8thEtaRP(NULL),
316
317 // weighted correlations for each (pt,eta) bin for RPs:
318 f2pPtEtaRPW(NULL),
319 f4pPtEtaRPW(NULL),
320 f6pPtEtaRPW(NULL),
321 f8pPtEtaRPW(NULL),
322
323 // weighted final results for differential flow for RPs:
324 // 3D (pt,eta)
325 fvn2ndPtEtaRPW(NULL),
326 fvn4thPtEtaRPW(NULL),
327 fvn6thPtEtaRPW(NULL),
328 fvn8thPtEtaRPW(NULL),
329 // 2D (pt)
330 fvn2ndPtRPW(NULL),
331 fvn4thPtRPW(NULL),
332 fvn6thPtRPW(NULL),
333 fvn8thPtRPW(NULL),
334 // 2D (eta)
335 fvn2ndEtaRPW(NULL),
336 fvn4thEtaRPW(NULL),
337 fvn6thEtaRPW(NULL),
338 fvn8thEtaRPW(NULL)
339 // ...................................................................................................................
340
bc92c0cb 341{
9c1a9547 342 // constructor
ae733b3b 343 fHistList = new TList();
344 fDiffFlowList = new TList();
345 fDiffFlowList->SetName("DifferentialFlow");
9455e15e 346 fDiffFlowList->SetOwner(kTRUE);
03a02aca 347 fWeightsList = new TList();
ae733b3b 348 fWeightsList->SetName("Weights");
9455e15e 349 fWeightsList->SetOwner(kTRUE);
9c1a9547 350 fResultsList = new TList();
351 fResultsList->SetName("Results");
9455e15e 352 fResultsList->SetOwner(kTRUE);
03a02aca 353
8842fb2b 354 fnBinsPt = AliFlowCommonConstants::GetNbinsPt();
355 fPtMin = AliFlowCommonConstants::GetPtMin();
356 fPtMax = AliFlowCommonConstants::GetPtMax();
357
1dfa3c16 358 fnBinsEta = AliFlowCommonConstants::GetNbinsEta();
359 fEtaMin = AliFlowCommonConstants::GetEtaMin();
360 fEtaMax = AliFlowCommonConstants::GetEtaMax();
bc92c0cb 361}
362
363AliFlowAnalysisWithQCumulants::~AliFlowAnalysisWithQCumulants()
364{
03a02aca 365 //destructor
bc92c0cb 366 delete fHistList;
ae733b3b 367 delete fDiffFlowList;
368 delete fWeightsList;
9c1a9547 369 delete fResultsList;
bc92c0cb 370}
371
372//================================================================================================================
373
e085f1a9 374void AliFlowAnalysisWithQCumulants::Init()
bc92c0cb 375{
376 //various output histograms
bc92c0cb 377 //avarage multiplicity
1315fe58 378 fAvMultIntFlowQC = new TProfile("fAvMultIntFlowQC","Average Multiplicity",1,0,1,"s");
379 fAvMultIntFlowQC->SetXTitle("");
380 fAvMultIntFlowQC->SetYTitle("");
381 fAvMultIntFlowQC->SetLabelSize(0.06);
382 fAvMultIntFlowQC->SetMarkerStyle(25);
383 fAvMultIntFlowQC->SetLabelOffset(0.01);
384 (fAvMultIntFlowQC->GetXaxis())->SetBinLabel(1,"Average Multiplicity");
385 fHistList->Add(fAvMultIntFlowQC);
bc92c0cb 386
387 //Q-vector stuff
388 fQvectorComponents = new TProfile("fQvectorComponents","Avarage of Q-vector components",44,0.,44.,"s");
389 fQvectorComponents->SetXTitle("");
390 fQvectorComponents->SetYTitle("");
391 //fHistList->Add(fQvectorComponents);
392
bc92c0cb 393 //final results for differential flow from 2nd order Q-cumulant
8842fb2b 394 fDiffFlowResults2ndOrderQC = new TH1D("fDiffFlowResults2ndOrderQC","Differential Flow from 2nd Order Q-cumulant",fnBinsPt,fPtMin,fPtMax);
1315fe58 395 fDiffFlowResults2ndOrderQC->SetXTitle("p_{t} [GeV]");
396 //fDiffFlowResults2ndOrderQC->SetYTitle("Differential Flow");
397 fHistList->Add(fDiffFlowResults2ndOrderQC);
bc92c0cb 398
399 //final results for differential flow from 4th order Q-cumulant
8842fb2b 400 fDiffFlowResults4thOrderQC = new TH1D("fDiffFlowResults4thOrderQC","Differential Flow from 4th Order Q-cumulant",fnBinsPt,fPtMin,fPtMax);
1315fe58 401 fDiffFlowResults4thOrderQC->SetXTitle("p_{t} [GeV]");
402 //fDiffFlowResults4thOrderQC->SetYTitle("Differential Flow");
403 fHistList->Add(fDiffFlowResults4thOrderQC);
404
405 //final results for covariances (1st bin: <2*4>-<2>*<4>, 2nd bin: <2*6>-<2>*<6>, ...)
406 fCovariances = new TH1D("fCovariances","Covariances",6,0,6);
407 //fCovariances->SetXTitle("");
408 //fCovariances->SetYTitle("<covariance>");
409 fCovariances->SetLabelSize(0.04);
410 fCovariances->SetTickLength(1);
411 fCovariances->SetMarkerStyle(25);
412 (fCovariances->GetXaxis())->SetBinLabel(1,"Cov(2,4)");
413 (fCovariances->GetXaxis())->SetBinLabel(2,"Cov(2,6)");
414 (fCovariances->GetXaxis())->SetBinLabel(3,"Cov(2,8)");
415 (fCovariances->GetXaxis())->SetBinLabel(4,"Cov(4,6)");
416 (fCovariances->GetXaxis())->SetBinLabel(5,"Cov(4,8)");
417 (fCovariances->GetXaxis())->SetBinLabel(6,"Cov(6,8)");
418 fHistList->Add(fCovariances);
bc92c0cb 419
e085f1a9 420 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
421 // !!!! to be removed !!!!
422 //profile containing the x-components of Q-vectors from all events
423 fQvectorForEachEventX = new TProfile("fQvectorForEachEventX","x-components of Q-vectors",44000,1,44000,"s");
424 fHistList->Add(fQvectorForEachEventX);
425
426 //profile containing the y-components of Q-vectors from all events
427 fQvectorForEachEventY = new TProfile("fQvectorForEachEventY","y-components of Q-vectors",44000,1,44000,"s");
428 fHistList->Add(fQvectorForEachEventY);
429 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
430
9c1a9547 431 // multi-particle correlations calculated from Q-vectors
dee1e0e0 432 fQCorrelations = new TProfile("fQCorrelations","multi-particle correlations from Q-vectors",32,0,32,"s");
1315fe58 433 fQCorrelations->SetTickLength(-0.01,"Y");
434 fQCorrelations->SetMarkerStyle(25);
435 fQCorrelations->SetLabelSize(0.03);
436 fQCorrelations->SetLabelOffset(0.01,"Y");
9c1a9547 437 // 2-p:
1315fe58 438 (fQCorrelations->GetXaxis())->SetBinLabel(1,"<<2>>_{n|n}");
439 (fQCorrelations->GetXaxis())->SetBinLabel(2,"<<2>>_{2n|2n}");
440 (fQCorrelations->GetXaxis())->SetBinLabel(3,"<<2>>_{3n|3n}");
441 (fQCorrelations->GetXaxis())->SetBinLabel(4,"<<2>>_{4n|4n}");
9c1a9547 442 // 3-p:
1315fe58 443 (fQCorrelations->GetXaxis())->SetBinLabel(6,"<<3>>_{2n|n,n}");
444 (fQCorrelations->GetXaxis())->SetBinLabel(7,"<<3>>_{3n|2n,n}");
445 (fQCorrelations->GetXaxis())->SetBinLabel(8,"<<3>>_{4n|2n,2n}");
446 (fQCorrelations->GetXaxis())->SetBinLabel(9,"<<3>>_{4n|3n,n}");
9c1a9547 447 // 4-p:
1315fe58 448 (fQCorrelations->GetXaxis())->SetBinLabel(11,"<<4>>_{n,n|n,n}");
449 (fQCorrelations->GetXaxis())->SetBinLabel(12,"<<4>>_{2n,n|2n,n}");
dee1e0e0 450 (fQCorrelations->GetXaxis())->SetBinLabel(13,"<<4>>_{2n,2n|2n,2n}");
451 (fQCorrelations->GetXaxis())->SetBinLabel(14,"<<4>>_{3n|n,n,n}");
452 (fQCorrelations->GetXaxis())->SetBinLabel(15,"<<4>>_{3n,n|3n,n}");
453 (fQCorrelations->GetXaxis())->SetBinLabel(16,"<<4>>_{3n,n|2n,2n}");
454 (fQCorrelations->GetXaxis())->SetBinLabel(17,"<<4>>_{4n|2n,n,n}");
9c1a9547 455 // 5-p:
dee1e0e0 456 (fQCorrelations->GetXaxis())->SetBinLabel(19,"<<5>>_{2n|n,n,n,n}");
457 (fQCorrelations->GetXaxis())->SetBinLabel(20,"<<5>>_{2n,2n|2n,n,n}");
458 (fQCorrelations->GetXaxis())->SetBinLabel(21,"<<5>>_{3n,n|2n,n,n}");
459 (fQCorrelations->GetXaxis())->SetBinLabel(22,"<<5>>_{4n|n,n,n,n}");
9c1a9547 460 // 6-p:
dee1e0e0 461 (fQCorrelations->GetXaxis())->SetBinLabel(24,"<<6>>_{n,n,n|n,n,n}");
462 (fQCorrelations->GetXaxis())->SetBinLabel(25,"<<6>>_{2n,n,n|2n,n,n}");
463 (fQCorrelations->GetXaxis())->SetBinLabel(26,"<<6>>_{2n,2n|n,n,n,n}");
464 (fQCorrelations->GetXaxis())->SetBinLabel(27,"<<6>>_{3n,n|n,n,n,n}");
9c1a9547 465 // 7-p:
dee1e0e0 466 (fQCorrelations->GetXaxis())->SetBinLabel(29,"<<7>>_{2n,n,n|n,n,n,n}");
9c1a9547 467 // 8-p:
dee1e0e0 468 (fQCorrelations->GetXaxis())->SetBinLabel(31,"<<8>>_{n,n,n,n|n,n,n,n}");
9c1a9547 469 // add fQCorrelations to the main list:
bc92c0cb 470 fHistList->Add(fQCorrelations);
471
9c1a9547 472 //.........................................................................
3d824203 473 //weighted multi-particle correlations calculated from Q-vectors
9c1a9547 474 fQCorrelationsW = new TProfile("fQCorrelationsW","weighted multi-particle correlations from Q-vectors",200,0,200,"s");
475 fQCorrelationsW->SetTickLength(-0.01,"Y");
476 fQCorrelationsW->SetMarkerStyle(25);
477 fQCorrelationsW->SetLabelSize(0.03);
478 fQCorrelationsW->SetLabelOffset(0.01,"Y");
479 // 2-p:
480 (fQCorrelationsW->GetXaxis())->SetBinLabel(1,"<w_{1}w_{2}cos(n(#phi_{1}-#phi_{2}))>");
481 (fQCorrelationsW->GetXaxis())->SetBinLabel(2,"<w_{1}^{2}w_{2}^{2}cos(2n(#phi_{1}-#phi_{2}))>");
482 (fQCorrelationsW->GetXaxis())->SetBinLabel(3,"<w_{1}^{3}w_{2}^{3}cos(3n(#phi_{1}-#phi_{2}))>");
483 (fQCorrelationsW->GetXaxis())->SetBinLabel(4,"<w_{1}^{4}w_{2}^{4}cos(4n(#phi_{1}-#phi_{2}))>");
484 (fQCorrelationsW->GetXaxis())->SetBinLabel(5,"<w_{1}^{3}w_{2}cos(n(#phi_{1}-#phi_{2}))>");
485 (fQCorrelationsW->GetXaxis())->SetBinLabel(6,"<w_{1}^{2}w_{2}w_{3}cos(n(#phi_{1}-#phi_{2}))>");
486 // 3-p:
487 (fQCorrelationsW->GetXaxis())->SetBinLabel(21,"<w_{1}w_{2}w_{3}^{2}cos(n(2#phi_{1}-#phi_{2}-#phi_{3}))>");
488 // 4-p:
489 (fQCorrelationsW->GetXaxis())->SetBinLabel(41,"<w_{1}w_{2}w_{3}w_{4}cos(n(#phi_{1}+#phi_{2}-#phi_{3}-#phi_{4}))>");
490 // add fQCorrelationsW to the main list:
491 fHistList->Add(fQCorrelationsW);
492 //.........................................................................
3d824203 493
c365fe76 494 //.........................................................................
495 // corrections for non-uniform acceptance (cos terms) calculated from Q-vectors
496 fQCorrectionsCos = new TProfile("fQCorrectionsCos"," corrections for non-uniform acceptance (cos terms)",100,0,100,"s");
497 fQCorrectionsCos->SetTickLength(-0.01,"Y");
498 fQCorrectionsCos->SetMarkerStyle(25);
499 fQCorrectionsCos->SetLabelSize(0.03);
500 fQCorrectionsCos->SetLabelOffset(0.01,"Y");
501 // 1-p:
502 (fQCorrectionsCos->GetXaxis())->SetBinLabel(1,"cos(n(#phi_{1}))>");
503 // 2-p:
504 // 3-p:
3d824203 505
c365fe76 506 // add fQCorrectionsCos to the main list:
507 fHistList->Add(fQCorrectionsCos);
508 //.........................................................................
509
510 // corrections for non-uniform acceptance (cos terms) calculated with nested loops
511 fDirectCorrectionsCos = new TProfile("fDirectCorrectionsCos"," corrections for non-uniform acceptance (cos terms)",100,0,100,"s");
512 fDirectCorrectionsCos->SetTickLength(-0.01,"Y");
513 fDirectCorrectionsCos->SetMarkerStyle(25);
514 fDirectCorrectionsCos->SetLabelSize(0.03);
515 fDirectCorrectionsCos->SetLabelOffset(0.01,"Y");
516 // binned in the samw way as fQCorrectionsCos (see above)
517 // add fDirectCorrectionsCos to the main list:
518 fHistList->Add(fDirectCorrectionsCos);
519
520 //.........................................................................
521 // corrections for non-uniform acceptance (sin terms) calculated from Q-vectors
522 fQCorrectionsSin = new TProfile("fQCorrectionsSin"," corrections for non-uniform acceptance (sin terms)",100,0,100,"s");
523 fQCorrectionsSin->SetTickLength(-0.01,"Y");
524 fQCorrectionsSin->SetMarkerStyle(25);
525 fQCorrectionsSin->SetLabelSize(0.03);
526 fQCorrectionsSin->SetLabelOffset(0.01,"Y");
527 // 1-p:
528 (fQCorrectionsSin->GetXaxis())->SetBinLabel(1,"sin(n(#phi_{1}))>");
529 // 2-p:
530 // 3-p:
531
532 // add fQCorrectionsSin to the main list:
533 fHistList->Add(fQCorrectionsSin);
534 //.........................................................................
535
536 // corrections for non-uniform acceptance (sin terms) calculated with nested loops
537 fDirectCorrectionsSin = new TProfile("fDirectCorrectionsSin"," corrections for non-uniform acceptance (sin terms)",100,0,100,"s");
538 fDirectCorrectionsSin->SetTickLength(-0.01,"Y");
539 fDirectCorrectionsSin->SetMarkerStyle(25);
540 fDirectCorrectionsSin->SetLabelSize(0.03);
541 fDirectCorrectionsSin->SetLabelOffset(0.01,"Y");
542 // binned in the samw way as fQCorrectionsSin (see above)
543 // add fDirectCorrectionsSin to the main list:
2bdc5281 544 fHistList->Add(fDirectCorrectionsSin);
545
546 // corrections for non-uniform acceptance (cos terms) calculated with nested loops (needed for diff. flow)
547 fDirectCorrectionsDiffFlowCos = new TProfile("fDirectCorrectionsDiffFlowCos","corrections for non-uniform acceptance (cos terms) with nested loops",200,0,200,"s");
548 fDirectCorrectionsDiffFlowCos->SetXTitle("");
549 fDirectCorrectionsDiffFlowCos->SetYTitle("corrections");
550 fHistList->Add(fDirectCorrectionsDiffFlowCos);
551
552 // corrections for non-uniform acceptance (sin terms) calculated with nested loops (needed for diff. flow)
553 fDirectCorrectionsDiffFlowSin = new TProfile("fDirectCorrectionsDiffFlowSin","corrections for non-uniform acceptance (sin terms) with nested loops",200,0,200,"s");
554 fDirectCorrectionsDiffFlowSin->SetXTitle("");
555 fDirectCorrectionsDiffFlowSin->SetYTitle("corrections");
556 fHistList->Add(fDirectCorrectionsDiffFlowSin);
c365fe76 557
8842fb2b 558 //average products
559 fQProduct = new TProfile("fQProduct","average of products",6,0,6,"s");
560 fQProduct->SetTickLength(-0.01,"Y");
561 fQProduct->SetMarkerStyle(25);
562 fQProduct->SetLabelSize(0.03);
563 fQProduct->SetLabelOffset(0.01,"Y");
564 (fQProduct->GetXaxis())->SetBinLabel(1,"<<2*4>>");
565 (fQProduct->GetXaxis())->SetBinLabel(2,"<<2*6>>");
566 (fQProduct->GetXaxis())->SetBinLabel(3,"<<2*8>>");
567 (fQProduct->GetXaxis())->SetBinLabel(4,"<<4*6>>");
568 (fQProduct->GetXaxis())->SetBinLabel(5,"<<4*8>>");
569 (fQProduct->GetXaxis())->SetBinLabel(6,"<<6*8>>");
570 fQProduct->SetXTitle("");
571 fQProduct->SetYTitle("");
572 fHistList->Add(fQProduct);
bc92c0cb 573
9c1a9547 574 // multi-particle correlations calculated with nested loops (needed for int. flow)
575 fDirectCorrelations = new TProfile("fDirectCorrelations","multi-particle correlations with nested loops",100,0,100,"s");
bc92c0cb 576 fDirectCorrelations->SetXTitle("");
577 fDirectCorrelations->SetYTitle("correlations");
578 fHistList->Add(fDirectCorrelations);
579
9c1a9547 580 // multi-particle correlations calculated with nested loops (needed for weighted int. flow)
581 fDirectCorrelationsW = new TProfile("fDirectCorrelationsW","multi-particle correlations with nested loops",200,0,200,"s");
582 fDirectCorrelationsW->SetXTitle("");
583 fDirectCorrelationsW->SetYTitle("correlations");
584 fHistList->Add(fDirectCorrelationsW);
585
586 // multi-particle correlations calculated with nested loops (needed for diff. flow)
587 fDirectCorrelationsDiffFlow = new TProfile("fDirectCorrelationsDiffFlow","multi-particle correlations with nested loops",200,0,200,"s");
588 fDirectCorrelationsDiffFlow->SetXTitle("");
589 fDirectCorrelationsDiffFlow->SetYTitle("correlations");
590 fHistList->Add(fDirectCorrelationsDiffFlow);
591
592 // multi-particle correlations calculated with nested loops (needed for weighted diff. flow)
593 fDirectCorrelationsDiffFlowW = new TProfile("fDirectCorrelationsDiffFlowW","multi-particle correlations with nested loops",200,0,200,"s");
594 fDirectCorrelationsDiffFlowW->SetXTitle("");
595 fDirectCorrelationsDiffFlowW->SetYTitle("correlations");
596 fHistList->Add(fDirectCorrelationsDiffFlowW);
597
1dfa3c16 598 //f2PerPtBin1n1nRP
599 f2PerPtBin1n1nRP = new TProfile("f2PerPtBin1n1nRP","<2'>_{n|n}",fnBinsPt,fPtMin,fPtMax,"s");
600 f2PerPtBin1n1nRP->SetXTitle("p_{t} [GeV]");
ae733b3b 601 fDiffFlowList->Add(f2PerPtBin1n1nRP);
1dfa3c16 602
1dfa3c16 603 //f4PerPtBin1n1n1n1nRP
604 f4PerPtBin1n1n1n1nRP = new TProfile("f4PerPtBin1n1n1n1nRP","<4'>_{n,n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
605 f4PerPtBin1n1n1n1nRP->SetXTitle("p_{t} [GeV]");
ae733b3b 606 fDiffFlowList->Add(f4PerPtBin1n1n1n1nRP);
1dfa3c16 607
1dfa3c16 608 //f2PerEtaBin1n1nRP
609 f2PerEtaBin1n1nRP = new TProfile("f2PerEtaBin1n1nRP","<2'>_{n|n}",fnBinsEta,fEtaMin,fEtaMax,"s");
610 f2PerEtaBin1n1nRP->SetXTitle("#eta");
ae733b3b 611 fDiffFlowList->Add(f2PerEtaBin1n1nRP);
1dfa3c16 612
1dfa3c16 613 //f4PerEtaBin1n1n1n1nRP
614 f4PerEtaBin1n1n1n1nRP = new TProfile("f4PerEtaBin1n1n1n1nRP","<4'>_{n,n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
615 f4PerEtaBin1n1n1n1nRP->SetXTitle("#eta");
ae733b3b 616 fDiffFlowList->Add(f4PerEtaBin1n1n1n1nRP);
1dfa3c16 617
1dfa3c16 618 //f2PerPtBin1n1nPOI
619 f2PerPtBin1n1nPOI = new TProfile("f2PerPtBin1n1nPOI","<2'>_{n|n}",fnBinsPt,fPtMin,fPtMax,"s");
4057ba99 620 f2PerPtBin1n1nPOI->SetXTitle("#eta");
ae733b3b 621 fDiffFlowList->Add(f2PerPtBin1n1nPOI);
1dfa3c16 622
1dfa3c16 623 //f4PerPtBin1n1n1n1nPOI
624 f4PerPtBin1n1n1n1nPOI = new TProfile("f4PerPtBin1n1n1n1nPOI","<4'>_{n,n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
625 f4PerPtBin1n1n1n1nPOI->SetXTitle("p_{t} [GeV]");
ae733b3b 626 fDiffFlowList->Add(f4PerPtBin1n1n1n1nPOI);
1dfa3c16 627
1dfa3c16 628 //f2PerEtaBin1n1nPOI
629 f2PerEtaBin1n1nPOI = new TProfile("f2PerEtaBin1n1nPOI","<2'>_{n|n}",fnBinsEta,fEtaMin,fEtaMax,"s");
630 f2PerEtaBin1n1nPOI->SetXTitle("#eta");
ae733b3b 631 fDiffFlowList->Add(f2PerEtaBin1n1nPOI);
1dfa3c16 632
1dfa3c16 633 //f4PerEtaBin1n1n1n1nPOI
634 f4PerEtaBin1n1n1n1nPOI = new TProfile("f4PerEtaBin1n1n1n1nPOI","<4'>_{n,n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
635 f4PerEtaBin1n1n1n1nPOI->SetXTitle("#eta");
ae733b3b 636 fDiffFlowList->Add(f4PerEtaBin1n1n1n1nPOI);
bc92c0cb 637
3d824203 638 //f2WPerPtBin1n1nPOI
639 f2WPerPtBin1n1nPOI = new TProfile("f2WPerPtBin1n1nPOI","<2'>_{n|n}",fnBinsPt,fPtMin,fPtMax,"s");
640 f2WPerPtBin1n1nPOI->SetXTitle("#pt");
641 fDiffFlowList->Add(f2WPerPtBin1n1nPOI);
642
3d824203 643 //f4WPerPtBin1n1n1n1nPOI
644 f4WPerPtBin1n1n1n1nPOI = new TProfile("f4WPerPtBin1n1n1n1nPOI","<4'>_{n,n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
645 f4WPerPtBin1n1n1n1nPOI->SetXTitle("#Pt");
646 fDiffFlowList->Add(f4WPerPtBin1n1n1n1nPOI);
647
3d824203 648 //f2WPerEtaBin1n1nPOI
649 f2WPerEtaBin1n1nPOI = new TProfile("f2WPerEtaBin1n1nPOI","<2'>_{n|n}",fnBinsEta,fEtaMin,fEtaMax,"s");
650 f2WPerEtaBin1n1nPOI->SetXTitle("#eta");
651 fDiffFlowList->Add(f2WPerEtaBin1n1nPOI);
652
653 //f4WPerEtaBin1n1n1n1nPOI
654 f4WPerEtaBin1n1n1n1nPOI = new TProfile("f4WPerEtaBin1n1n1n1nPOI","<4'>_{n,n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
655 f4WPerEtaBin1n1n1n1nPOI->SetXTitle("#eta");
656 fDiffFlowList->Add(f4WPerEtaBin1n1n1n1nPOI);
657
3d824203 658 //f2WPerPtBin1n1nRP
659 f2WPerPtBin1n1nRP = new TProfile("f2WPerPtBin1n1nRP","<2'>_{n|n}",fnBinsPt,fPtMin,fPtMax,"s");
660 f2WPerPtBin1n1nRP->SetXTitle("#pt");
661 fDiffFlowList->Add(f2WPerPtBin1n1nRP);
662
663 //f4WPerPtBin1n1n1n1nRP
664 f4WPerPtBin1n1n1n1nRP = new TProfile("f4WPerPtBin1n1n1n1nRP","<4'>_{n,n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
665 f4WPerPtBin1n1n1n1nRP->SetXTitle("#Pt");
666 fDiffFlowList->Add(f4WPerPtBin1n1n1n1nRP);
667
3d824203 668 //f2WPerEtaBin1n1nRP
669 f2WPerEtaBin1n1nRP = new TProfile("f2WPerEtaBin1n1nRP","<2'>_{n|n}",fnBinsEta,fEtaMin,fEtaMax,"s");
670 f2WPerEtaBin1n1nRP->SetXTitle("#eta");
671 fDiffFlowList->Add(f2WPerEtaBin1n1nRP);
672
673 //f4WPerEtaBin1n1n1n1nRP
674 f4WPerEtaBin1n1n1n1nRP = new TProfile("f4WPerEtaBin1n1n1n1nRP","<4'>_{n,n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
675 f4WPerEtaBin1n1n1n1nRP->SetXTitle("#eta");
676 fDiffFlowList->Add(f4WPerEtaBin1n1n1n1nRP);
677
cb308e83 678 //common control histogram (2nd order)
679 fCommonHists2nd = new AliFlowCommonHist("AliFlowCommonHist2ndOrderQC");
680 fHistList->Add(fCommonHists2nd);
1315fe58 681
cb308e83 682 //common control histogram (4th order)
683 fCommonHists4th = new AliFlowCommonHist("AliFlowCommonHist4thOrderQC");
684 fHistList->Add(fCommonHists4th);
685
686 //common control histogram (6th order)
687 fCommonHists6th = new AliFlowCommonHist("AliFlowCommonHist6thOrderQC");
688 fHistList->Add(fCommonHists6th);
689
690 //common control histogram (8th order)
691 fCommonHists8th = new AliFlowCommonHist("AliFlowCommonHist8thOrderQC");
692 fHistList->Add(fCommonHists8th);
4057ba99 693
8842fb2b 694 //common histograms for final results (2nd order)
1315fe58 695 fCommonHistsResults2nd = new AliFlowCommonHistResults("AliFlowCommonHistResults2ndOrderQC");
696 fHistList->Add(fCommonHistsResults2nd);
697
8842fb2b 698 //common histograms for final results (4th order)
1315fe58 699 fCommonHistsResults4th = new AliFlowCommonHistResults("AliFlowCommonHistResults4thOrderQC");
700 fHistList->Add(fCommonHistsResults4th);
701
8842fb2b 702 //common histograms for final results (6th order)
1315fe58 703 fCommonHistsResults6th = new AliFlowCommonHistResults("AliFlowCommonHistResults6thOrderQC");
704 fHistList->Add(fCommonHistsResults6th);
705
8842fb2b 706 //common histograms for final results (8th order)
1315fe58 707 fCommonHistsResults8th = new AliFlowCommonHistResults("AliFlowCommonHistResults8thOrderQC");
708 fHistList->Add(fCommonHistsResults8th);
1315fe58 709
710 //weighted <2>_{n|n} distribution
52021ae2 711 f2pDistribution = new TH1D("f2pDistribution","<2>_{n|n} distribution",100000,-0.02,0.1);
712 f2pDistribution->SetXTitle("<2>_{n|n}");
713 f2pDistribution->SetYTitle("Counts");
714 fHistList->Add(f2pDistribution);
1315fe58 715
716 //weighted <4>_{n,n|n,n} distribution
52021ae2 717 f4pDistribution = new TH1D("f4pDistribution","<4>_{n,n|n,n} distribution",100000,-0.00025,0.002);
718 f4pDistribution->SetXTitle("<4>_{n,n|n,n}");
719 f4pDistribution->SetYTitle("Counts");
720 fHistList->Add(f4pDistribution);
1315fe58 721
722 //weighted <6>_{n,n,n|n,n,n} distribution
52021ae2 723 f6pDistribution = new TH1D("f6pDistribution","<6>_{n,n,n|n,n,n} distribution",100000,-0.000005,0.000025);
724 f6pDistribution->SetXTitle("<6>_{n,n,n|n,n,n}");
725 f6pDistribution->SetYTitle("Counts");
726 fHistList->Add(f6pDistribution);
bc92c0cb 727
5e838eeb 728 //weighted <8>_{n,n,n,n|n,n,n,n} distribution
729 f8pDistribution = new TH1D("f8pDistribution","<8>_{n,n,n,n|n,n,n,n} distribution",100000,-0.000000001,0.00000001);
730 f8pDistribution->SetXTitle("<8>_{n,n,n,n|n,n,n,n}");
731 f8pDistribution->SetYTitle("Counts");
732 fHistList->Add(f8pDistribution);
ae733b3b 733
2bdc5281 734 // .......................................................................................................................................
735 // POI:
736 // <<cos n(psi1>> for POIs:
737 fCorrectionsCosP1nPsiPtEtaPOI = new TProfile2D("fCorrectionsCosP1nPsiPtEtaPOI","<<cos n(#psi_{1})>> (p_{t},#eta) for POIs",
738 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
739 fCorrectionsCosP1nPsiPtEtaPOI->SetXTitle("p_{t}");
740 fCorrectionsCosP1nPsiPtEtaPOI->SetYTitle("#eta");
741 fDiffFlowList->Add(fCorrectionsCosP1nPsiPtEtaPOI);
ae733b3b 742
2bdc5281 743 // <<sin n(psi1>> for POIs:
744 fCorrectionsSinP1nPsiPtEtaPOI = new TProfile2D("fCorrectionsSinP1nPsiPtEtaPOI","<<Sin n(#psi_{1})>> (p_{t},#eta) for POIs",
745 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
746 fCorrectionsSinP1nPsiPtEtaPOI->SetXTitle("p_{t}");
747 fCorrectionsSinP1nPsiPtEtaPOI->SetYTitle("#eta");
748 fDiffFlowList->Add(fCorrectionsSinP1nPsiPtEtaPOI);
03a02aca 749
ae733b3b 750
bc92c0cb 751
ae733b3b 752
2bdc5281 753 // RP:
754 // <<cos n(psi1>> for RPs:
755 fCorrectionsCosP1nPsiPtEtaRP = new TProfile2D("fCorrectionsCosP1nPsiPtEtaRP","<<cos n(#psi_{1})>> (p_{t},#eta) for RPs",
756 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
757 fCorrectionsCosP1nPsiPtEtaRP->SetXTitle("p_{t}");
758 fCorrectionsCosP1nPsiPtEtaRP->SetYTitle("#eta");
759 fDiffFlowList->Add(fCorrectionsCosP1nPsiPtEtaRP);
ae733b3b 760
2bdc5281 761 // <<sin n(psi1>> for RPs:
762 fCorrectionsSinP1nPsiPtEtaRP = new TProfile2D("fCorrectionsSinP1nPsiPtEtaRP","<<Sin n(#psi_{1})>> (p_{t},#eta) for RPs",
763 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
764 fCorrectionsSinP1nPsiPtEtaRP->SetXTitle("p_{t}");
765 fCorrectionsSinP1nPsiPtEtaRP->SetYTitle("#eta");
766 fDiffFlowList->Add(fCorrectionsSinP1nPsiPtEtaRP);
767 // .......................................................................................................................................
ae733b3b 768
9c1a9547 769 // .......................................................................................................................................
770 // Q_{n,k} and S^M_{n,k}:
771 fReQ = new TMatrixD(4,9);
772 fImQ = new TMatrixD(4,9);
773 fSMpk = new TMatrixD(8,9);
ae733b3b 774
9c1a9547 775 // q'_{n}:
776 fReqnPtEta = new TH2D("fReqnPtEta","Re[q_{n}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
777 fImqnPtEta = new TH2D("fImqnPtEta","Im[q_{n}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
778 fmPtEta = new TH2D("fmPtEta","m(p_{t},#eta)",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
bc92c0cb 779
9c1a9547 780 // non-weighted q''_{n} and q''_{2n}:
781 fReqPrimePrime1nPtEta = new TH2D("fReqPrimePrime1nPtEta","Re[q''_{n}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
782 fImqPrimePrime1nPtEta = new TH2D("fImqPrimePrime1nPtEta","Im[q''_{n}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
783 fReqPrimePrime2nPtEta = new TH2D("fReqPrimePrime2nPtEta","Re[q''_{2n}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
784 fImqPrimePrime2nPtEta = new TH2D("fImqPrimePrime2nPtEta","Im[q''_{2n}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
785
786 // weighted q''_{n,2k} and q''_{2n,k}:
787 fReqPrimePrime1n2kPtEta = new TH2D("fReqPrimePrime1n2kPtEta","Re[q''_{n,2}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
788 fImqPrimePrime1n2kPtEta = new TH2D("fImqPrimePrime1n2kPtEta","Im[q''_{n,2}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
789 fReqPrimePrime2n1kPtEta = new TH2D("fReqPrimePrime2n1kPtEta","Re[q''_{2n,1(p_{t},#eta)}]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
790 fImqPrimePrime2n1kPtEta = new TH2D("fImqPrimePrime2n1kPtEta","Im[q''_{2n,1}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1dfa3c16 791
9c1a9547 792 // m'':
793 fmPrimePrimePtEta = new TH2D("fmPrimePrimePtEta","m''(p_{t},#eta)",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
bc92c0cb 794
9c1a9547 795 // S^{m''}_{p,k}:
796 fSmPrimePrime1p1kPtEta = new TH2D("fSmPrimePrime1p1kPtEta","S^{m''}_{1,1}(p_{t},#eta)",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
797 fSmPrimePrime1p2kPtEta = new TH2D("fSmPrimePrime1p2kPtEta","S^{m''}_{1,2}(p_{t},#eta)",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
798 fSmPrimePrime1p3kPtEta = new TH2D("fSmPrimePrime1p3kPtEta","S^{m''}_{1,3}(p_{t},#eta)",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
799
800 // non-weighted q_RP{n} and q_RP{2n}:
801 fReqRP1nPtEta = new TH2D("fReqRP1nPtEta","Re[q_{n}(p_{t},#eta)] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
802 fImqRP1nPtEta = new TH2D("fImqRP1nPtEta","Im[q_{n}(p_{t},#eta)] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
803 fReqRP2nPtEta = new TH2D("fReqRP2nPtEta","Re[q_{2n}(p_{t},#eta)] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
804 fImqRP2nPtEta = new TH2D("fImqRP2nPtEta","Im[q_{2n}(p_{t},#eta)] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
bc92c0cb 805
9c1a9547 806 // weighted q_RP{n,2k} and q_RP{2n,k}:
807 fReqRP1n2kPtEta = new TH2D("fReqRP1n2kPtEta","Re[q_{n,2}(p_{t},#eta)] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
808 fImqRP1n2kPtEta = new TH2D("fImqRP1n2kPtEta","Im[q_{n,2}(p_{t},#eta)] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
809 fReqRP2n1kPtEta = new TH2D("fReqRP2n1kPtEta","Re[q_{2n,1(p_{t},#eta)}] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
810 fImqRP2n1kPtEta = new TH2D("fImqRP2n1kPtEta","Im[q_{2n,1}(p_{t},#eta)] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
cb308e83 811
9c1a9547 812 // mRP:
813 fmRPPtEta = new TH2D("fmRPPtEta","m(p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
dee1e0e0 814
9c1a9547 815 // S^{mRP}_{p,k}:
816 fSmRP1p1kPtEta = new TH2D("fSmRP1p1kPtEta","S^{m}_{1,1}(p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
817 fSmRP1p2kPtEta = new TH2D("fSmRP1p2kPtEta","S^{m}_{1,2}(p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
818 fSmRP1p3kPtEta = new TH2D("fSmRP1p3kPtEta","S^{m}_{1,3}(p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
dee1e0e0 819
9c1a9547 820 // ----- RESULTS ----
dee1e0e0 821
c365fe76 822 // final corrections for non-uniform acceptance for QC{2}, QC{4}, QC{6} and QC{8}:
823 fFinalCorrectionsForNUA = new TH1D("fFinalCorrectionsForNUA","Corrections for non-uniform acceptance to Q-cumulants",4,0,4);
824 fFinalCorrectionsForNUA->SetLabelSize(0.06);
825 fFinalCorrectionsForNUA->SetMarkerStyle(25);
826 (fFinalCorrectionsForNUA->GetXaxis())->SetBinLabel(1,"QC{2}");
827 (fFinalCorrectionsForNUA->GetXaxis())->SetBinLabel(2,"QC{4}");
828 (fFinalCorrectionsForNUA->GetXaxis())->SetBinLabel(3,"QC{6}");
829 (fFinalCorrectionsForNUA->GetXaxis())->SetBinLabel(4,"QC{8}");
830 fResultsList->Add(fFinalCorrectionsForNUA);
831
9c1a9547 832 // final results for non-weighted no-name integrated flow:
833 fIntFlowResultsQC = new TH1D("fIntFlowResultsQC","Integrated Flow from Q-cumulants",4,0,4);
834 fIntFlowResultsQC->SetLabelSize(0.06);
835 fIntFlowResultsQC->SetMarkerStyle(25);
836 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
837 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
838 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
839 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
840 fResultsList->Add(fIntFlowResultsQC);
841
842 // final results for non-weighted POIs integrated flow:
843 fIntFlowResultsPOIQC = new TH1D("fIntFlowResultsPOIQC","Integrated Flow (POI) from Q-cumulants",4,0,4);
844 fIntFlowResultsPOIQC->SetLabelSize(0.06);
845 fIntFlowResultsPOIQC->SetMarkerStyle(25);
846 (fIntFlowResultsPOIQC->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
847 (fIntFlowResultsPOIQC->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
848 (fIntFlowResultsPOIQC->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
849 (fIntFlowResultsPOIQC->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
850 fResultsList->Add(fIntFlowResultsPOIQC);
851
852 // final results for non-weighted RPs integrated flow:
853 fIntFlowResultsRPQC = new TH1D("fIntFlowResultsRPQC","Integrated Flow (RP) from Q-cumulants",4,0,4);
854 fIntFlowResultsRPQC->SetLabelSize(0.06);
855 fIntFlowResultsRPQC->SetMarkerStyle(25);
856 (fIntFlowResultsRPQC->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
857 (fIntFlowResultsRPQC->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
858 (fIntFlowResultsRPQC->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
859 (fIntFlowResultsRPQC->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
860 fResultsList->Add(fIntFlowResultsRPQC);
861
862 // final results for weighted no-name integrated flow:
863 fIntFlowResultsQCW = new TH1D("fIntFlowResultsQCW","Integrated Flow from Q-cumulants with Weights",4,0,4);
864 fIntFlowResultsQCW->SetLabelSize(0.06);
865 fIntFlowResultsQCW->SetMarkerStyle(25);
866 (fIntFlowResultsQCW->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
867 (fIntFlowResultsQCW->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
868 (fIntFlowResultsQCW->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
869 (fIntFlowResultsQCW->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
870 fResultsList->Add(fIntFlowResultsQCW);
871
872 // final results for weighted POIs integrated flow:
873 fIntFlowResultsPOIQCW = new TH1D("fIntFlowResultsPOIQCW","Integrated Flow (POI) from Q-cumulants with Weights",4,0,4);
874 fIntFlowResultsPOIQCW->SetLabelSize(0.06);
875 fIntFlowResultsPOIQCW->SetMarkerStyle(25);
876 (fIntFlowResultsPOIQCW->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
877 (fIntFlowResultsPOIQCW->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
878 (fIntFlowResultsPOIQCW->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
879 (fIntFlowResultsPOIQCW->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
880 fResultsList->Add(fIntFlowResultsPOIQCW);
881
882 // final results for weighted RPs integrated flow:
883 fIntFlowResultsRPQCW = new TH1D("fIntFlowResultsRPQCW","Integrated Flow (RP) from Q-cumulants with Weights",4,0,4);
884 fIntFlowResultsRPQCW->SetLabelSize(0.06);
885 fIntFlowResultsRPQCW->SetMarkerStyle(25);
886 (fIntFlowResultsRPQCW->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
887 (fIntFlowResultsRPQCW->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
888 (fIntFlowResultsRPQCW->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
889 (fIntFlowResultsRPQCW->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
890 fResultsList->Add(fIntFlowResultsRPQCW);
891
2bdc5281 892 // <<cos n(psi1-phi2)>> for POIs:
893 f2pPtEtaPOI = new TProfile2D("f2pPtEtaPOI","<<cos n(#psi_{1}-#phi_{2})>> (p_{t},#eta) for POIs",
9c1a9547 894 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
895 f2pPtEtaPOI->SetXTitle("p_{t}");
896 f2pPtEtaPOI->SetYTitle("#eta");
897 fDiffFlowList->Add(f2pPtEtaPOI);
898
2bdc5281 899 // <<cos n(psi1+phi2-phi3-phi4)>> for POIs:
900 f4pPtEtaPOI = new TProfile2D("f4pPtEtaPOI","<<cos n(#psi_{1}+#phi_{2}-#phi_{3}-#phi_{4})>> (p_{t},#eta) for POIs",
9c1a9547 901 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
902 f4pPtEtaPOI->SetXTitle("p_{t}");
903 f4pPtEtaPOI->SetYTitle("#eta");
904 fDiffFlowList->Add(f4pPtEtaPOI);
905
2bdc5281 906 // <<cos n(psi1+phi2+phi3-phi4-phi5-phi6)>> for POIs:
907 f6pPtEtaPOI = new TProfile2D("f6pPtEtaPOI","<<cos n(#psi_{1}+#phi_{2}+#phi_{3}-#phi_{4}-#phi_{5}-#phi_{6})>> (p_{t},#eta) for POIs",
9c1a9547 908 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
909 f6pPtEtaPOI->SetXTitle("p_{t}");
910 f6pPtEtaPOI->SetYTitle("#eta");
911 fDiffFlowList->Add(f6pPtEtaPOI);
912
2bdc5281 913 // <<cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)>> for POIs:
914 f8pPtEtaPOI = new TProfile2D("f8pPtEtaPOI","<<cos n(#psi_{1}+#phi_{2}+#phi_{3}+#phi_{4}-#phi_{5}-#phi_{6}-#phi_{7}-#phi_{8})>> (p_{t},#eta) for POIs",
9c1a9547 915 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
916 f8pPtEtaPOI->SetXTitle("p_{t}");
917 f8pPtEtaPOI->SetYTitle("#eta");
918 fDiffFlowList->Add(f8pPtEtaPOI);
919
2bdc5281 920 // correction for non-uniform acceptance to <<cos n(psi1-phi2)>> for POIs:
921 f2pFinalCorrectionsForNUAPtEtaPOI = new TH2D("f2pFinalCorrectionsForNUAPtEtaPOI",
922 "correction for NUA to <<cos n(#psi_{1}-#phi_{2})>> (p_{t},#eta) for POIs",
923 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
924 f2pFinalCorrectionsForNUAPtEtaPOI->SetXTitle("p_{t}");
925 f2pFinalCorrectionsForNUAPtEtaPOI->SetYTitle("#eta");
926 fResultsList->Add(f2pFinalCorrectionsForNUAPtEtaPOI);
927
928 // correction for non-uniform acceptance to <<cos n(psi1+phi2-phi3-phi4)>> for POIs:
929 f4pFinalCorrectionsForNUAPtEtaPOI = new TH2D("f4pFinalCorrectionsForNUAPtEtaPOI",
930 "correction for NUA to <<cos n(psi1+phi2-phi3-phi4)>> (p_{t},#eta) for POIs",
931 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
932 f4pFinalCorrectionsForNUAPtEtaPOI->SetXTitle("p_{t}");
933 f4pFinalCorrectionsForNUAPtEtaPOI->SetYTitle("#eta");
934 fResultsList->Add(f4pFinalCorrectionsForNUAPtEtaPOI);
935
936 // correction for non-uniform acceptance to <<cos n(psi1+phi2+phi3-phi4-phi5-phi6)>> for POIs:
937 f6pFinalCorrectionsForNUAPtEtaPOI = new TH2D("f6pFinalCorrectionsForNUAPtEtaPOI",
938 "correction for NUA to <<cos n(psi1+phi2+phi3-phi4-phi5-phi6)>> (p_{t},#eta) for POIs",
939 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
940 f6pFinalCorrectionsForNUAPtEtaPOI->SetXTitle("p_{t}");
941 f6pFinalCorrectionsForNUAPtEtaPOI->SetYTitle("#eta");
942 fResultsList->Add(f6pFinalCorrectionsForNUAPtEtaPOI);
943
944 // correction for non-uniform acceptance to <<cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)>> for POIs:
945 f8pFinalCorrectionsForNUAPtEtaPOI = new TH2D("f8pFinalCorrectionsForNUAPtEtaPOI",
946 "correction for NUA to <<cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)>> (p_{t},#eta) for POIs",
947 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
948 f8pFinalCorrectionsForNUAPtEtaPOI->SetXTitle("p_{t}");
949 f8pFinalCorrectionsForNUAPtEtaPOI->SetYTitle("#eta");
950 fResultsList->Add(f8pFinalCorrectionsForNUAPtEtaPOI);
951
952 // correction for non-uniform acceptance to <<cos n(psi1-phi2)>> for POIs:
953 f2pFinalCorrectionsForNUAPtPOI = new TH1D("f2pFinalCorrectionsForNUAPtPOI",
954 "correction for NUA to <<cos n(#psi_{1}-#phi_{2})>> (p_{t}) for POIs",
955 fnBinsPt,fPtMin,fPtMax);
956 f2pFinalCorrectionsForNUAPtPOI->SetXTitle("p_{t}");
957 fResultsList->Add(f2pFinalCorrectionsForNUAPtPOI);
958
959 // correction for non-uniform acceptance to <<cos n(psi1+phi2-phi3-phi4)>> for POIs:
960 f4pFinalCorrectionsForNUAPtPOI = new TH1D("f4pFinalCorrectionsForNUAPtPOI",
961 "correction for NUA to <<cos n(psi1+phi2-phi3-phi4)>> (p_{t}) for POIs",
962 fnBinsPt,fPtMin,fPtMax);
963 f4pFinalCorrectionsForNUAPtPOI->SetXTitle("p_{t}");
964 fResultsList->Add(f4pFinalCorrectionsForNUAPtPOI);
965
966 // correction for non-uniform acceptance to <<cos n(psi1+phi2+phi3-phi4-phi5-phi6)>> for POIs:
967 f6pFinalCorrectionsForNUAPtPOI = new TH1D("f6pFinalCorrectionsForNUAPtPOI",
968 "correction for NUA to <<cos n(psi1+phi2+phi3-phi4-phi5-phi6)>> (p_{t}) for POIs",
969 fnBinsPt,fPtMin,fPtMax);
970 f6pFinalCorrectionsForNUAPtPOI->SetXTitle("p_{t}");
971 fResultsList->Add(f6pFinalCorrectionsForNUAPtPOI);
972
973 // correction for non-uniform acceptance to <<cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)>> for POIs:
974 f8pFinalCorrectionsForNUAPtPOI = new TH1D("f8pFinalCorrectionsForNUAPtPOI",
975 "correction for NUA to <<cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)>> (p_{t}) for POIs",
976 fnBinsPt,fPtMin,fPtMax);
977 f8pFinalCorrectionsForNUAPtPOI->SetXTitle("p_{t}");
978 fResultsList->Add(f8pFinalCorrectionsForNUAPtPOI);
979
980 // correction for non-uniform acceEtaance to <<cos n(psi1-phi2)>> for POIs:
981 f2pFinalCorrectionsForNUAEtaPOI = new TH1D("f2pFinalCorrectionsForNUAEtaPOI",
982 "correction for NUA to <<cos n(#psi_{1}-#phi_{2})>> (#eta) for POIs",
983 fnBinsEta,fEtaMin,fEtaMax);
984 f2pFinalCorrectionsForNUAEtaPOI->SetXTitle("#eta");
985 fResultsList->Add(f2pFinalCorrectionsForNUAEtaPOI);
986
987 // correction for non-uniform acceEtaance to <<cos n(psi1+phi2-phi3-phi4)>> for POIs:
988 f4pFinalCorrectionsForNUAEtaPOI = new TH1D("f4pFinalCorrectionsForNUAEtaPOI",
989 "correction for NUA to <<cos n(psi1+phi2-phi3-phi4)>> (#eta) for POIs",
990 fnBinsEta,fEtaMin,fEtaMax);
991 f4pFinalCorrectionsForNUAEtaPOI->SetXTitle("#eta");
992 fResultsList->Add(f4pFinalCorrectionsForNUAEtaPOI);
993
994 // correction for non-uniform acceEtaance to <<cos n(psi1+phi2+phi3-phi4-phi5-phi6)>> for POIs:
995 f6pFinalCorrectionsForNUAEtaPOI = new TH1D("f6pFinalCorrectionsForNUAEtaPOI",
996 "correction for NUA to <<cos n(psi1+phi2+phi3-phi4-phi5-phi6)>> (#eta) for POIs",
997 fnBinsEta,fEtaMin,fEtaMax);
998 f6pFinalCorrectionsForNUAEtaPOI->SetXTitle("#eta");
999 fResultsList->Add(f6pFinalCorrectionsForNUAEtaPOI);
1000
1001 // correction for non-uniform acceEtaance to <<cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)>> for POIs:
1002 f8pFinalCorrectionsForNUAEtaPOI = new TH1D("f8pFinalCorrectionsForNUAEtaPOI",
1003 "correction for NUA to <<cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)>> (#eta) for POIs",
1004 fnBinsEta,fEtaMin,fEtaMax);
1005 f8pFinalCorrectionsForNUAEtaPOI->SetXTitle("#eta");
1006 fResultsList->Add(f8pFinalCorrectionsForNUAEtaPOI);
1007
1008
9c1a9547 1009 // non-weighted v'_{n}{2,QC} (pt,eta) for POIs
1010 fvn2ndPtEtaPOI = new TH2D("fvn2ndPtEtaPOI","v'_{n}{2,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1011 fvn2ndPtEtaPOI->SetXTitle("p_{t}");
1012 fvn2ndPtEtaPOI->SetYTitle("#eta");
1013 fResultsList->Add(fvn2ndPtEtaPOI);
1014
1015 // non-weighted v'_{n}{4,QC} (pt,eta) for POIs
1016 fvn4thPtEtaPOI = new TH2D("fvn4thPtEtaPOI","v'_{n}{4,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1017 fvn4thPtEtaPOI->SetXTitle("p_{t}");
1018 fvn4thPtEtaPOI->SetYTitle("#eta");
1019 fResultsList->Add(fvn4thPtEtaPOI);
1020
1021 // non-weighted v'_{n}{6,QC} (pt,eta) for POIs
1022 fvn6thPtEtaPOI = new TH2D("fvn6thPtEtaPOI","v'_{n}{6,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1023 fvn6thPtEtaPOI->SetXTitle("p_{t}");
1024 fvn6thPtEtaPOI->SetYTitle("#eta");
1025 fResultsList->Add(fvn6thPtEtaPOI);
1026
1027 // non-weighted v'_{n}{8,QC} (pt,eta) for POIs
1028 fvn8thPtEtaPOI = new TH2D("fvn8thPtEtaPOI","v'_{n}{8,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1029 fvn8thPtEtaPOI->SetXTitle("p_{t}");
1030 fvn8thPtEtaPOI->SetYTitle("#eta");
1031 fResultsList->Add(fvn8thPtEtaPOI);
1032
1033 // non-weighted v'_{n}{2,QC} (pt) for POIs
1034 fvn2ndPtPOI = new TH1D("fvn2ndPtPOI","v'_{n}{2,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
1035 fvn2ndPtPOI->SetXTitle("p_{t}");
1036 fResultsList->Add(fvn2ndPtPOI);
1037
1038 // non-weighted v'_{n}{4,QC} (pt) for POIs
1039 fvn4thPtPOI = new TH1D("fvn4thPtPOI","v'_{n}{4,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
1040 fvn4thPtPOI->SetXTitle("p_{t}");
1041 fvn4thPtPOI->SetYTitle("#eta");
1042 fResultsList->Add(fvn4thPtPOI);
1043
1044 // non-weighted v'_{n}{6,QC} (pt) for POIs
1045 fvn6thPtPOI = new TH1D("fvn6thPtPOI","v'_{n}{6,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
1046 fvn6thPtPOI->SetXTitle("p_{t}");
1047 fResultsList->Add(fvn6thPtPOI);
1048
1049 // non-weighted v'_{n}{8,QC} (pt) for POIs
1050 fvn8thPtPOI = new TH1D("fvn8thPtPOI","v'_{n}{8,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
1051 fvn8thPtPOI->SetXTitle("p_{t}");
1052 fResultsList->Add(fvn8thPtPOI);
1053
1054 // non-weighted v'_{n}{2,QC} (eta) for POIs
1055 fvn2ndEtaPOI = new TH1D("fvn2ndEtaPOI","v'_{n}{2,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
1056 fvn2ndEtaPOI->SetXTitle("#eta");
1057 fResultsList->Add(fvn2ndEtaPOI);
1058
1059 // non-weighted v'_{n}{4,QC} (eta) for POIs
1060 fvn4thEtaPOI = new TH1D("fvn4thEtaPOI","v'_{n}{4,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
1061 fvn4thEtaPOI->SetXTitle("#eta");
1062 fResultsList->Add(fvn4thEtaPOI);
1063
1064 // non-weighted v'_{n}{6,QC} (eta) for POIs
1065 fvn6thEtaPOI = new TH1D("fvn6thEtaPOI","v'_{n}{6,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
1066 fvn6thEtaPOI->SetXTitle("#eta");
1067 fResultsList->Add(fvn6thEtaPOI);
1068
1069 // non-weighted v'_{n}{8,QC} (eta) for POIs
1070 fvn8thEtaPOI = new TH1D("fvn8thEtaPOI","v'_{n}{8,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
1071 fvn8thEtaPOI->SetXTitle("p_{t}");
1072 fResultsList->Add(fvn8thEtaPOI);
1073
1074 // <w2 cos n(psi1-phi2)> for POIs:
1075 f2pPtEtaPOIW = new TProfile2D("f2pPtEtaPOIW","<w_{2} cos n(#psi_{1}-#phi_{2})> (p_{t},#eta) for POIs",
1076 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1077 f2pPtEtaPOIW->SetXTitle("p_{t}");
1078 fDiffFlowList->Add(f2pPtEtaPOIW);
1079
1080 // <w2 w3 w4 cos n(psi1+phi2-phi3-phi4)> for POIs:
1081 f4pPtEtaPOIW = new TProfile2D("f4pPtEtaPOIW","<w_{2}w_{3}w_{4} cos n(#psi_{1}+#phi_{2}-#phi_{3}-#phi_{4})> (p_{t},#eta) for POIs",
1082 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1083 f4pPtEtaPOIW->SetXTitle("p_{t}");
1084 fDiffFlowList->Add(f4pPtEtaPOIW);
1085
1086 // <w2 w3 w4 w5 w6 cos n(psi1+phi2+phi3-phi4-phi5-phi6)> for POIs:
1087 f6pPtEtaPOIW = new TProfile2D("f6pPtEtaPOIW","<w_{2}w_{3}w_{4}w_{5}w_{6} cos n(#psi_{1}+#phi_{2}+#phi_{3}-#phi_{4}-#phi_{5}-#phi_{6})> (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1088 f6pPtEtaPOIW->SetXTitle("p_{t}");
1089 fDiffFlowList->Add(f6pPtEtaPOIW);
1090
1091 // <w2 w3 w4 w5 w6 w7 w8 cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)> for POIs:
1092 f8pPtEtaPOIW = new TProfile2D("f8pPtEtaPOIW","<w_{2}w_{3}w_{4}w_{5}w_{6}w_{7}w_{8} cos n(#psi_{1}+#phi_{2}+#phi_{3}+#phi_{4}-#phi_{5}-#phi_{6}-#phi_{7}-#phi_{8})> (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1093 f8pPtEtaPOIW->SetXTitle("p_{t}");
1094 f8pPtEtaPOIW->SetYTitle("#eta");
1095 fDiffFlowList->Add(f8pPtEtaPOIW);
1096
1097 // weighted v'_{n}{2,QC} (pt,eta) for POIs
1098 fvn2ndPtEtaPOIW = new TH2D("fvn2ndPtEtaPOIW","weighted v'_{n}{2,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1099 fvn2ndPtEtaPOIW->SetXTitle("p_{t}");
1100 fvn2ndPtEtaPOIW->SetYTitle("#eta");
1101 fResultsList->Add(fvn2ndPtEtaPOIW);
1102
1103 // weighted v'_{n}{4,QC} (pt,eta) for POIs
1104 fvn4thPtEtaPOIW = new TH2D("fvn4thPtEtaPOIW","weighted v'_{n}{4,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1105 fvn4thPtEtaPOIW->SetXTitle("p_{t}");
1106 fvn4thPtEtaPOIW->SetYTitle("#eta");
1107 fResultsList->Add(fvn4thPtEtaPOIW);
1108
1109 // weighted v'_{n}{6,QC} (pt,eta) for POIs
1110 fvn6thPtEtaPOIW = new TH2D("fvn6thPtEtaPOIW","weighted v'_{n}{6,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1111 fvn6thPtEtaPOIW->SetXTitle("p_{t}");
1112 fvn6thPtEtaPOIW->SetYTitle("#eta");
1113 fResultsList->Add(fvn6thPtEtaPOIW);
1114
1115 // weighted v'_{n}{8,QC} (pt,eta) for POIs
1116 fvn8thPtEtaPOIW = new TH2D("fvn8thPtEtaPOIW","weighted v'_{n}{8,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1117 fvn8thPtEtaPOIW->SetXTitle("p_{t}");
1118 fvn8thPtEtaPOIW->SetYTitle("#eta");
1119 fResultsList->Add(fvn8thPtEtaPOIW);
1120
1121 // weighted v'_{n}{2,QC} (pt) for POIs
1122 fvn2ndPtPOIW = new TH1D("fvn2ndPtPOIW","weighted v'_{n}{2,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
1123 fvn2ndPtPOIW->SetXTitle("p_{t}");
1124 fResultsList->Add(fvn2ndPtPOIW);
1125
1126 // weighted v'_{n}{4,QC} (pt) for POIs
1127 fvn4thPtPOIW = new TH1D("fvn4thPtPOIW","weighted v'_{n}{4,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
1128 fvn4thPtPOIW->SetXTitle("p_{t}");
1129 fResultsList->Add(fvn4thPtPOIW);
1130
1131 // weighted v'_{n}{6,QC} (pt) for POIs
1132 fvn6thPtPOIW = new TH1D("fvn6thPtPOIW","weighted v'_{n}{6,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
1133 fvn6thPtPOIW->SetXTitle("p_{t}");
1134 fResultsList->Add(fvn6thPtPOIW);
1135
1136 // weighted v'_{n}{8,QC} (pt) for POIs
1137 fvn8thPtPOIW = new TH1D("fvn8thPtPOIW","weighted v'_{n}{8,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
1138 fvn8thPtPOIW->SetXTitle("p_{t}");
1139 fResultsList->Add(fvn8thPtPOIW);
1140
1141 // weighted v'_{n}{2,QC} (eta) for POIs
1142 fvn2ndEtaPOIW = new TH1D("fvn2ndEtaPOIW","weighted v'_{n}{2,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
1143 fvn2ndEtaPOIW->SetXTitle("#eta");
1144 fResultsList->Add(fvn2ndEtaPOIW);
1145
1146 // weighted v'_{n}{4,QC} (eta) for POIs
1147 fvn4thEtaPOIW = new TH1D("fvn4thEtaPOIW","weighted v'_{n}{4,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
1148 fvn4thEtaPOIW->SetXTitle("#eta");
1149 fResultsList->Add(fvn4thEtaPOIW);
1150
1151 // weighted v'_{n}{6,QC} (eta) for POIs
1152 fvn6thEtaPOIW = new TH1D("fvn6thEtaPOIW","weighted v'_{n}{6,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
1153 fvn6thEtaPOIW->SetXTitle("#eta");
1154 fResultsList->Add(fvn6thEtaPOIW);
1155
1156 // weighted v'_{n}{8,QC} (eta) for POIs
1157 fvn8thEtaPOIW = new TH1D("fvn8thEtaPOIW","weighted v'_{n}{8,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
1158 fvn8thEtaPOIW->SetXTitle("#eta");
1159 fResultsList->Add(fvn8thEtaPOIW);
1160
2bdc5281 1161 // <<cos n(psi1-phi2)>> for RPs:
1162 f2pPtEtaRP = new TProfile2D("f2pPtEtaRP","<<cos n(#psi_{1}-#phi_{2})>> (p_{t},#eta) for RPs",
9c1a9547 1163 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1164 f2pPtEtaRP->SetXTitle("p_{t}");
1165 f2pPtEtaRP->SetYTitle("#eta");
1166 fDiffFlowList->Add(f2pPtEtaRP);
1167
2bdc5281 1168 // <<cos n(psi1+phi2-phi3-phi4)>> for RPs:
1169 f4pPtEtaRP = new TProfile2D("f4pPtEtaRP","<<cos n(#psi_{1}+#phi_{2}-#phi_{3}-#phi_{4})>> (p_{t},#eta) for RPs",
9c1a9547 1170 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1171 f4pPtEtaRP->SetXTitle("p_{t}");
1172 f4pPtEtaRP->SetYTitle("#eta");
1173 fDiffFlowList->Add(f4pPtEtaRP);
1174
2bdc5281 1175 // <<cos n(psi1+phi2+phi3-phi4-phi5-phi6)>> for RPs:
1176 f6pPtEtaRP = new TProfile2D("f6pPtEtaRP","<<cos n(#psi_{1}+#phi_{2}+#phi_{3}-#phi_{4}-#phi_{5}-#phi_{6})>> (p_{t},#eta) for RPs",
9c1a9547 1177 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1178 f6pPtEtaRP->SetXTitle("p_{t}");
1179 f6pPtEtaRP->SetYTitle("#eta");
1180 fDiffFlowList->Add(f6pPtEtaRP);
1181
2bdc5281 1182 // <<cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)>> for RPs:
1183 f8pPtEtaRP = new TProfile2D("f8pPtEtaRP","<<cos n(#psi_{1}+#phi_{2}+#phi_{3}+#phi_{4}-#phi_{5}-#phi_{6}-#phi_{7}-#phi_{8})>> (p_{t},#eta) for RPs",
9c1a9547 1184 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1185 f8pPtEtaRP->SetXTitle("p_{t}");
1186 f8pPtEtaRP->SetYTitle("#eta");
1187 fDiffFlowList->Add(f8pPtEtaRP);
2bdc5281 1188
1189 // correction for non-uniform acceptance to <<cos n(psi1-phi2)>> for RPs:
1190 f2pFinalCorrectionsForNUAPtEtaRP = new TH2D("f2pFinalCorrectionsForNUAPtEtaRP",
1191 "correction for NUA to <<cos n(#psi_{1}-#phi_{2})>> (p_{t},#eta) for RPs",
1192 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1193 f2pFinalCorrectionsForNUAPtEtaRP->SetXTitle("p_{t}");
1194 f2pFinalCorrectionsForNUAPtEtaRP->SetYTitle("#eta");
1195 fResultsList->Add(f2pFinalCorrectionsForNUAPtEtaRP);
1196
1197 // correction for non-uniform acceptance to <<cos n(psi1+phi2-phi3-phi4)>> for RPs:
1198 f4pFinalCorrectionsForNUAPtEtaRP = new TH2D("f4pFinalCorrectionsForNUAPtEtaRP",
1199 "correction for NUA to <<cos n(psi1+phi2-phi3-phi4)>> (p_{t},#eta) for RPs",
1200 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1201 f4pFinalCorrectionsForNUAPtEtaRP->SetXTitle("p_{t}");
1202 f4pFinalCorrectionsForNUAPtEtaRP->SetYTitle("#eta");
1203 fResultsList->Add(f4pFinalCorrectionsForNUAPtEtaRP);
1204
1205 // correction for non-uniform acceptance to <<cos n(psi1+phi2+phi3-phi4-phi5-phi6)>> for RPs:
1206 f6pFinalCorrectionsForNUAPtEtaRP = new TH2D("f6pFinalCorrectionsForNUAPtEtaRP",
1207 "correction for NUA to <<cos n(psi1+phi2+phi3-phi4-phi5-phi6)>> (p_{t},#eta) for RPs",
1208 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1209 f6pFinalCorrectionsForNUAPtEtaRP->SetXTitle("p_{t}");
1210 f6pFinalCorrectionsForNUAPtEtaRP->SetYTitle("#eta");
1211 fResultsList->Add(f6pFinalCorrectionsForNUAPtEtaRP);
1212
1213 // correction for non-uniform acceptance to <<cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)>> for RPs:
1214 f8pFinalCorrectionsForNUAPtEtaRP = new TH2D("f8pFinalCorrectionsForNUAPtEtaRP",
1215 "correction for NUA to <<cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)>> (p_{t},#eta) for RPs",
1216 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1217 f8pFinalCorrectionsForNUAPtEtaRP->SetXTitle("p_{t}");
1218 f8pFinalCorrectionsForNUAPtEtaRP->SetYTitle("#eta");
1219 fResultsList->Add(f8pFinalCorrectionsForNUAPtEtaRP);
1220
1221 // correction for non-uniform acceptance to <<cos n(psi1-phi2)>> for RPs:
1222 f2pFinalCorrectionsForNUAPtRP = new TH1D("f2pFinalCorrectionsForNUAPtRP",
1223 "correction for NUA to <<cos n(#psi_{1}-#phi_{2})>> (p_{t}) for RPs",
1224 fnBinsPt,fPtMin,fPtMax);
1225 f2pFinalCorrectionsForNUAPtRP->SetXTitle("p_{t}");
1226 fResultsList->Add(f2pFinalCorrectionsForNUAPtRP);
1227
1228 // correction for non-uniform acceptance to <<cos n(psi1+phi2-phi3-phi4)>> for RPs:
1229 f4pFinalCorrectionsForNUAPtRP = new TH1D("f4pFinalCorrectionsForNUAPtRP",
1230 "correction for NUA to <<cos n(psi1+phi2-phi3-phi4)>> (p_{t}) for RPs",
1231 fnBinsPt,fPtMin,fPtMax);
1232 f4pFinalCorrectionsForNUAPtRP->SetXTitle("p_{t}");
1233 fResultsList->Add(f4pFinalCorrectionsForNUAPtRP);
1234
1235 // correction for non-uniform acceptance to <<cos n(psi1+phi2+phi3-phi4-phi5-phi6)>> for RPs:
1236 f6pFinalCorrectionsForNUAPtRP = new TH1D("f6pFinalCorrectionsForNUAPtRP",
1237 "correction for NUA to <<cos n(psi1+phi2+phi3-phi4-phi5-phi6)>> (p_{t}) for RPs",
1238 fnBinsPt,fPtMin,fPtMax);
1239 f6pFinalCorrectionsForNUAPtRP->SetXTitle("p_{t}");
1240 fResultsList->Add(f6pFinalCorrectionsForNUAPtRP);
1241
1242 // correction for non-uniform acceptance to <<cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)>> for RPs:
1243 f8pFinalCorrectionsForNUAPtRP = new TH1D("f8pFinalCorrectionsForNUAPtRP",
1244 "correction for NUA to <<cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)>> (p_{t}) for RPs",
1245 fnBinsPt,fPtMin,fPtMax);
1246 f8pFinalCorrectionsForNUAPtRP->SetXTitle("p_{t}");
1247 fResultsList->Add(f8pFinalCorrectionsForNUAPtRP);
1248
1249 // correction for non-uniform acceEtaance to <<cos n(psi1-phi2)>> for RPs:
1250 f2pFinalCorrectionsForNUAEtaRP = new TH1D("f2pFinalCorrectionsForNUAEtaRP",
1251 "correction for NUA to <<cos n(#psi_{1}-#phi_{2})>> (#eta) for RPs",
1252 fnBinsEta,fEtaMin,fEtaMax);
1253 f2pFinalCorrectionsForNUAEtaRP->SetXTitle("#eta");
1254 fResultsList->Add(f2pFinalCorrectionsForNUAEtaRP);
1255
1256 // correction for non-uniform acceEtaance to <<cos n(psi1+phi2-phi3-phi4)>> for RPs:
1257 f4pFinalCorrectionsForNUAEtaRP = new TH1D("f4pFinalCorrectionsForNUAEtaRP",
1258 "correction for NUA to <<cos n(psi1+phi2-phi3-phi4)>> (#eta) for RPs",
1259 fnBinsEta,fEtaMin,fEtaMax);
1260 f4pFinalCorrectionsForNUAEtaRP->SetXTitle("#eta");
1261 fResultsList->Add(f4pFinalCorrectionsForNUAEtaRP);
1262
1263 // correction for non-uniform acceEtaance to <<cos n(psi1+phi2+phi3-phi4-phi5-phi6)>> for RPs:
1264 f6pFinalCorrectionsForNUAEtaRP = new TH1D("f6pFinalCorrectionsForNUAEtaRP",
1265 "correction for NUA to <<cos n(psi1+phi2+phi3-phi4-phi5-phi6)>> (#eta) for RPs",
1266 fnBinsEta,fEtaMin,fEtaMax);
1267 f6pFinalCorrectionsForNUAEtaRP->SetXTitle("#eta");
1268 fResultsList->Add(f6pFinalCorrectionsForNUAEtaRP);
1269
1270 // correction for non-uniform acceEtaance to <<cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)>> for RPs:
1271 f8pFinalCorrectionsForNUAEtaRP = new TH1D("f8pFinalCorrectionsForNUAEtaRP",
1272 "correction for NUA to <<cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)>> (#eta) for RPs",
1273 fnBinsEta,fEtaMin,fEtaMax);
1274 f8pFinalCorrectionsForNUAEtaRP->SetXTitle("#eta");
1275 fResultsList->Add(f8pFinalCorrectionsForNUAEtaRP);
9c1a9547 1276
1277 // non-weighted v'_{n}{2,QC} (pt,eta) for RPs
1278 fvn2ndPtEtaRP = new TH2D("fvn2ndPtEtaRP","v'_{n}{2,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1279 fvn2ndPtEtaRP->SetXTitle("p_{t}");
1280 fvn2ndPtEtaRP->SetYTitle("#eta");
1281 fResultsList->Add(fvn2ndPtEtaRP);
1282
1283 // non-weighted v'_{n}{4,QC} (pt,eta) for RPs
1284 fvn4thPtEtaRP = new TH2D("fvn4thPtEtaRP","v'_{n}{4,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1285 fvn4thPtEtaRP->SetXTitle("p_{t}");
1286 fvn4thPtEtaRP->SetYTitle("#eta");
1287 fResultsList->Add(fvn4thPtEtaRP);
1288
1289 // non-weighted v'_{n}{6,QC} (pt,eta) for RPs
1290 fvn6thPtEtaRP = new TH2D("fvn6thPtEtaRP","v'_{n}{6,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1291 fvn6thPtEtaRP->SetXTitle("p_{t}");
1292 fvn6thPtEtaRP->SetYTitle("#eta");
1293 fResultsList->Add(fvn6thPtEtaRP);
1294
1295 // non-weighted v'_{n}{8,QC} (pt,eta) for RPs
1296 fvn8thPtEtaRP = new TH2D("fvn8thPtEtaRP","v'_{n}{8,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1297 fvn8thPtEtaRP->SetXTitle("p_{t}");
1298 fvn8thPtEtaRP->SetYTitle("#eta");
1299 fResultsList->Add(fvn8thPtEtaRP);
1300
1301 // non-weighted v'_{n}{2,QC} (pt) for RPs
1302 fvn2ndPtRP = new TH1D("fvn2ndPtRP","v'_{n}{2,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1303 fvn2ndPtRP->SetXTitle("p_{t}");
1304 fResultsList->Add(fvn2ndPtRP);
1305
1306 // non-weighted v'_{n}{4,QC} (pt) for RPs
1307 fvn4thPtRP = new TH1D("fvn4thPtRP","v'_{n}{4,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1308 fvn4thPtRP->SetXTitle("p_{t}");
1309 fResultsList->Add(fvn4thPtRP);
1310
1311 // non-weighted v'_{n}{6,QC} (pt) for RPs
1312 fvn6thPtRP = new TH1D("fvn6thPtRP","v'_{n}{6,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1313 fvn6thPtRP->SetXTitle("p_{t}");
1314 fResultsList->Add(fvn6thPtRP);
1315
1316 // non-weighted v'_{n}{8,QC} (pt) for RPs
1317 fvn8thPtRP = new TH1D("fvn8thPtRP","v'_{n}{8,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1318 fvn8thPtRP->SetXTitle("p_{t}");
1319 fResultsList->Add(fvn8thPtRP);
1320
1321 // non-weighted v'_{n}{2,QC} (eta) for RPs
1322 fvn2ndEtaRP = new TH1D("fvn2ndEtaRP","v'_{n}{2,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1323 fvn2ndEtaRP->SetXTitle("#eta");
1324 fResultsList->Add(fvn2ndEtaRP);
1325
1326 // non-weighted v'_{n}{4,QC} (eta) for RPs
1327 fvn4thEtaRP = new TH1D("fvn4thEtaRP","v'_{n}{4,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1328 fvn4thEtaRP->SetXTitle("#eta");
1329 fResultsList->Add(fvn4thEtaRP);
1330
1331 // non-weighted v'_{n}{6,QC} (eta) for RPs
1332 fvn6thEtaRP = new TH1D("fvn6thEtaRP","v'_{n}{6,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1333 fvn6thEtaRP->SetXTitle("#eta");
1334 fResultsList->Add(fvn6thEtaRP);
1335
1336 // non-weighted v'_{n}{8,QC} (eta) for RPs
1337 fvn8thEtaRP = new TH1D("fvn8thEtaRP","v'_{n}{8,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1338 fvn8thEtaRP->SetXTitle("#eta");
1339 fResultsList->Add(fvn8thEtaRP);
1340
1341 // <w2 cos n(psi1-phi2)> for RPs:
1342 f2pPtEtaRPW = new TProfile2D("f2pPtEtaRPW","<w_{2} cos n(#psi_{1}-#phi_{2})> (p_{t},#eta) for RPs",
1343 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1344 f2pPtEtaRPW->SetXTitle("p_{t}");
1345 f2pPtEtaRPW->SetYTitle("#eta");
1346 fDiffFlowList->Add(f2pPtEtaRPW);
1347
1348 // <w2 w3 w4 cos n(psi1+phi2-phi3-phi4)> for RPs:
1349 f4pPtEtaRPW = new TProfile2D("f4pPtEtaRPW","<w_{2}w_{3}w_{4} cos n(#psi_{1}+#phi_{2}-#phi_{3}-#phi_{4})> (p_{t},#eta) for RPs",
1350 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1351 f4pPtEtaRPW->SetXTitle("p_{t}");
1352 f4pPtEtaRPW->SetYTitle("#eta");
1353 fDiffFlowList->Add(f4pPtEtaRPW);
1354
1355 // <w2 w3 w4 w5 w6 cos n(psi1+phi2+phi3-phi4-phi5-phi6)> for RPs:
1356 f6pPtEtaRPW = new TProfile2D("f6pPtEtaRPW","<w_{2}w_{3}w_{4}w_{5}w_{6} cos n(#psi_{1}+#phi_{2}+#phi_{3}-#phi_{4}-#phi_{5}-#phi_{6})> (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1357 f6pPtEtaRPW->SetXTitle("p_{t}");
1358 f6pPtEtaRPW->SetYTitle("#eta");
1359 fDiffFlowList->Add(f6pPtEtaRPW);
1360
1361 // <w2 w3 w4 w5 w6 w7 w8 cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)> for RPs:
1362 f8pPtEtaRPW = new TProfile2D("f8pPtEtaRPW","<w_{2}w_{3}w_{4}w_{5}w_{6}w_{7}w_{8} cos n(#psi_{1}+#phi_{2}+#phi_{3}+#phi_{4}-#phi_{5}-#phi_{6}-#phi_{7}-#phi_{8})> (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1363 f8pPtEtaRPW->SetXTitle("p_{t}");
1364 f8pPtEtaRPW->SetYTitle("#eta");
1365 fDiffFlowList->Add(f8pPtEtaRPW);
1366
1367 // weighted v'_{n}{2,QC} (pt,eta) for RPs
1368 fvn2ndPtEtaRPW = new TH2D("fvn2ndPtEtaRPW","weighted v'_{n}{2,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1369 fvn2ndPtEtaRPW->SetXTitle("p_{t}");
1370 fvn2ndPtEtaRPW->SetYTitle("#eta");
1371 fResultsList->Add(fvn2ndPtEtaRPW);
1372
1373 // weighted v'_{n}{4,QC} (pt,eta) for RPs
1374 fvn4thPtEtaRPW = new TH2D("fvn4thPtEtaRPW","weighted v'_{n}{4,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1375 fvn4thPtEtaRPW->SetXTitle("p_{t}");
1376 fvn4thPtEtaRPW->SetYTitle("#eta");
1377 fResultsList->Add(fvn4thPtEtaRPW);
1378
1379 // weighted v'_{n}{6,QC} (pt,eta) for RPs
1380 fvn6thPtEtaRPW = new TH2D("fvn6thPtEtaRPW","weighted v'_{n}{6,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1381 fvn6thPtEtaRPW->SetXTitle("p_{t}");
1382 fvn6thPtEtaRPW->SetYTitle("#eta");
1383 fResultsList->Add(fvn6thPtEtaRPW);
1384
1385 // weighted v'_{n}{8,QC} (pt,eta) for RPs
1386 fvn8thPtEtaRPW = new TH2D("fvn8thPtEtaRPW","weighted v'_{n}{8,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1387 fvn8thPtEtaRPW->SetXTitle("p_{t}");
1388 fvn8thPtEtaRPW->SetYTitle("#eta");
1389 fResultsList->Add(fvn8thPtEtaRPW);
1390
1391 // weighted v'_{n}{2,QC} (pt) for RPs
1392 fvn2ndPtRPW = new TH1D("fvn2ndPtRPW","weighted v'_{n}{2,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1393 fvn2ndPtRPW->SetXTitle("p_{t}");
1394 fResultsList->Add(fvn2ndPtRPW);
1395
1396 // weighted v'_{n}{4,QC} (pt) for RPs
1397 fvn4thPtRPW = new TH1D("fvn4thPtRPW","weighted v'_{n}{4,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1398 fvn4thPtRPW->SetXTitle("p_{t}");
1399 fResultsList->Add(fvn4thPtRPW);
1400
1401 // weighted v'_{n}{6,QC} (pt) for RPs
1402 fvn6thPtRPW = new TH1D("fvn6thPtRPW","weighted v'_{n}{6,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1403 fvn6thPtRPW->SetXTitle("p_{t}");
1404 fResultsList->Add(fvn6thPtRPW);
1405
1406 // weighted v'_{n}{8,QC} (pt) for RPs
1407 fvn8thPtRPW = new TH1D("fvn8thPtRPW","weighted v'_{n}{8,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1408 fvn8thPtRPW->SetXTitle("p_{t}");
1409 fResultsList->Add(fvn8thPtRPW);
1410
1411 // weighted v'_{n}{2,QC} (eta) for RPs
1412 fvn2ndEtaRPW = new TH1D("fvn2ndEtaRPW","weighted v'_{n}{2,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1413 fvn2ndEtaRPW->SetXTitle("#eta");
1414 fResultsList->Add(fvn2ndEtaRPW);
1415
1416 // weighted v'_{n}{4,QC} (eta) for RPs
1417 fvn4thEtaRPW = new TH1D("fvn4thEtaRPW","weighted v'_{n}{4,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1418 fvn4thEtaRPW->SetXTitle("#eta");
1419 fResultsList->Add(fvn4thEtaRPW);
1420
1421 // weighted v'_{n}{6,QC} (eta) for RPs
1422 fvn6thEtaRPW = new TH1D("fvn6thEtaRPW","weighted v'_{n}{6,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1423 fvn6thEtaRPW->SetXTitle("#eta");
1424 fResultsList->Add(fvn6thEtaRPW);
1425
1426 // weighted v'_{n}{8,QC} (eta) for RPs
1427 fvn8thEtaRP = new TH1D("fvn8thEtaEtaRP","weighted v'_{n}{8,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1428 fvn8thEtaRP->SetXTitle("#eta");
1429 fResultsList->Add(fvn8thEtaRP);
1430 // .....................................................................................................................................
1431
1432
1433
1434
1435 // add fUseWeightsBits to the main list (to be improved)
1436 fUseWeightsBits = new TBits(1);
1437 fHistList->Add(fUseWeightsBits);
1438
1439 // add list fWeightsList with weights to the main list
1440 fHistList->Add(fWeightsList);
dee1e0e0 1441
9c1a9547 1442 // add list fDiffFlowList with histograms and profiles needed for differential flow to the main list
1443 fHistList->Add(fDiffFlowList);
5e838eeb 1444
9c1a9547 1445 // add list fResultsList with final results to the main list
1446 fHistList->Add(fResultsList);
3c16adde 1447
9c1a9547 1448
1449}//end of Init()
3d824203 1450
9c1a9547 1451
1452//================================================================================================================
1453
1454
1455void AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
1456{
1457 // running over data only in this method
1458
1459
1460
1461
1462 // *********************************************
1463 // **** ACCESS THE OUTPUT FILE WITH WEIGHTS ****
1464 // *********************************************
1465
1466 fUseWeights = fUsePhiWeights||fUsePtWeights||fUseEtaWeights;
1467 fUseWeightsBits->SetBitNumber(1,fUseWeights); // to be improved (how to pass boolean to Finish()?)
1468
3d824203 1469 TH1F *phiWeights = NULL; // histogram with phi weights
1470 TH1D *ptWeights = NULL; // histogram with pt weights
1471 TH1D *etaWeights = NULL; // histogram with eta weights
1472
9c1a9547 1473 if(fUseWeights)
3d824203 1474 {
1475 if(!fWeightsList)
1315fe58 1476 {
9c1a9547 1477 cout<<" WARNING: fWeightsList is NULL pointer in AFAWQC::Make(). "<<endl;
3d824203 1478 exit(0);
1479 }
1480 if(fUsePhiWeights)
1481 {
1482 phiWeights = dynamic_cast<TH1F *>(fWeightsList->FindObject("phi_weights"));
1483 if(!phiWeights)
ae733b3b 1484 {
9c1a9547 1485 cout<<" WARNING: couldn't access the histogram with phi weights in AFAWQC::Make(). "<<endl;
3d824203 1486 exit(0);
ae733b3b 1487 }
3d824203 1488 }
1489 if(fUsePtWeights)
1490 {
1491 ptWeights = dynamic_cast<TH1D *>(fWeightsList->FindObject("pt_weights"));
1492 if(!ptWeights)
1493 {
9c1a9547 1494 cout<<" WARNING: couldn't access the histogram with pt weights in AFAWQC::Make(). "<<endl;
3d824203 1495 exit(0);
1496 }
1497 }
1498 if(fUseEtaWeights)
1499 {
1500 etaWeights = dynamic_cast<TH1D *>(fWeightsList->FindObject("eta_weights"));
1501 if(!etaWeights)
1502 {
9c1a9547 1503 cout<<" WARNING: couldn't access the histogram with eta weights in AFAWQC::Make(). "<<endl;
3d824203 1504 exit(0);
1505 }
1506 }
1507 }
1508
77515452 1509 Int_t nBinsPhi = 0;
9c1a9547 1510 Double_t dBinWidthPt = 0.;
1511 Double_t dBinWidthEta = 0.;
1512
77515452 1513 if(fnBinsPt)
1514 {
1515 dBinWidthPt=(fPtMax-fPtMin)/fnBinsPt;
1516 }
9c1a9547 1517
77515452 1518 if(fnBinsEta)
1519 {
1520 dBinWidthEta=(fEtaMax-fEtaMin)/fnBinsEta;
1521 }
3d824203 1522
1523 if(fWeightsList)
9c1a9547 1524 {
1525 if(fUsePhiWeights)
3d824203 1526 {
9c1a9547 1527 if(phiWeights) nBinsPhi = phiWeights->GetNbinsX();
1528 }
1529 if(fUsePtWeights)
1530 {
1531 if(ptWeights)
3d824203 1532 {
9c1a9547 1533 Double_t dBinWidthPtW = ptWeights->GetBinWidth(1); // assuming that all bins have the same width
1534 if(dBinWidthPtW != dBinWidthPt)
3d824203 1535 {
9c1a9547 1536 cout<<" WARNING: dBinWidthPtW != dBinWidthPt in AFAWQC::Make()."<<endl;
1537 exit(0);
1538 }
1539 Double_t dPtMinW = (ptWeights->GetXaxis())->GetXmin();
1540 if(dPtMinW != fPtMin)
1541 {
1542 cout<<" WARNING: dPtMinW != fPtMin in AFAWQC::Make()."<<endl;
1543 exit(0);
1544 }
1545 }
1546 }
1547 if(fUseEtaWeights)
1548 {
1549 if(etaWeights)
3d824203 1550 {
9c1a9547 1551 Double_t dBinWidthEtaW = etaWeights->GetBinWidth(1); // assuming that all bins have the same width
1552 if(dBinWidthEtaW != dBinWidthEta)
3d824203 1553 {
9c1a9547 1554 cout<<" WARNING: dBinWidthEtaW != dBinWidthEta in AFAWQC::Make()."<<endl;
1555 exit(0);
1556 }
1557 Double_t dEtaMinW = (etaWeights->GetXaxis())->GetXmin();
1558 if(dEtaMinW != fEtaMin)
1559 {
1560 cout<<" WARNING: dEtaMinW != fEtaMin in AFAWQC::Make()."<<endl;
1561 exit(0);
1562 }
1563 }
1564 }
1565 } // end of if(weightsList)
3d824203 1566
9c1a9547 1567 Double_t dPhi = 0.; // azumithal angle in the laboratory frame
1568 Double_t dPt = 0.; // transverse momentum
1569 Double_t dEta = 0.; // pseudorapidity
1570
3d824203 1571 Double_t wPhi = 1.; // phi weight
1572 Double_t wPt = 1.; // pt weight
1573 Double_t wEta = 1.; // eta weight
1574
9c1a9547 1575
1576
1577
1578 // ********************************************
1579 // **** FILL THE COMMON CONTROL HISTOGRAMS ****
1580 // ********************************************
1581
1582 Int_t nRP = anEvent->GetEventNSelTracksRP();
1583 if(nRP>1)
1584 {
1585 fCommonHists2nd->FillControlHistograms(anEvent);
1586 if(nRP>3)
1587 {
1588 fCommonHists4th->FillControlHistograms(anEvent);
1589 if(nRP>5)
3d824203 1590 {
9c1a9547 1591 fCommonHists6th->FillControlHistograms(anEvent);
1592 if(nRP>7)
3d824203 1593 {
9c1a9547 1594 fCommonHists8th->FillControlHistograms(anEvent);
1595 } // end of if(nRP>7)
1596 } // end of if(nRP>5)
1597 } // end of if(nRP>3)
1598 } // end of if(nRP>1)
3d824203 1599
3d824203 1600
3d824203 1601
9c1a9547 1602
1603 // ***************************
1604 // **** LOOPING OVER DATA ****
1605 // ***************************
3d824203 1606
9c1a9547 1607 Int_t nPrim = anEvent->NumberOfTracks();
3d824203 1608
9c1a9547 1609 // nPrim = total number of primary tracks, i.e. nPrim = nRP + nPOI + rest, where:
1610 // nRP = # of particles used to determine the reaction plane;
1611 // nPOI = # of particles of interest for a detailed flow analysis;
1612 // rest = # of particles which are niether RPs not POIs.
3d824203 1613
9c1a9547 1614 for(Int_t i=0;i<nPrim;i++)
3d824203 1615 {
9c1a9547 1616 fTrack=anEvent->GetTrack(i);
77515452 1617 if(fTrack)
1618 {
9c1a9547 1619 if(!(fTrack->InRPSelection() || fTrack->InPOISelection())) continue;
1620
1621 // checking the RP condition:
1622 if(fTrack->InRPSelection())
1623 {
1624 dPhi = fTrack->Phi();
1625 dPt = fTrack->Pt();
1626 dEta = fTrack->Eta();
1627
1628 // determine phi weight for this particle:
1629 if(phiWeights && nBinsPhi)
3d824203 1630 {
9c1a9547 1631 wPhi = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*nBinsPhi/TMath::TwoPi())));
1632 }
1633 // determine pt weight for this particle:
1634 if(ptWeights && dBinWidthPt)
1635 {
1636 wPt = ptWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-fPtMin)/dBinWidthPt)));
1637 }
1638 // determine eta weight for this particle:
1639 if(etaWeights && dBinWidthEta)
1640 {
1641 wEta = etaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-fEtaMin)/dBinWidthEta)));
1642 }
1643
1644 // fill Re[Q_{n,k}] and Im[Q_{n,k}]:
1645 for(Int_t n=0;n<4;n++)
1646 {
1647 for(Int_t k=0;k<9;k++)
77515452 1648 {
9c1a9547 1649 (*fReQ)(n,k)+=pow(wPhi*wPt*wEta,k)*TMath::Cos(2*(n+1)*dPhi);
1650 (*fImQ)(n,k)+=pow(wPhi*wPt*wEta,k)*TMath::Sin(2*(n+1)*dPhi);
77515452 1651 }
9c1a9547 1652 }
1653
1654 // fill S^{M}_{p,k}:
1655 for(Int_t p=0;p<8;p++)
1656 {
1657 for(Int_t k=0;k<9;k++)
1658 {
1659 (*fSMpk)(p,k)+=pow(wPhi*wPt*wEta,k);
77515452 1660 }
9c1a9547 1661 }
77515452 1662
9c1a9547 1663 Int_t n = 2; // to be improved (add setter for harmonic)
77515452 1664
9c1a9547 1665 // fill non-weighted q_RPs
1666 fReqRP1nPtEta->Fill(dPt,dEta,TMath::Cos(1.*n*dPhi));
1667 fImqRP1nPtEta->Fill(dPt,dEta,TMath::Sin(1.*n*dPhi));
1668 fReqRP2nPtEta->Fill(dPt,dEta,TMath::Cos(2.*n*dPhi));
1669 fImqRP2nPtEta->Fill(dPt,dEta,TMath::Sin(2.*n*dPhi));
77515452 1670
9c1a9547 1671 // mRP:
1672 fmRPPtEta->Fill(dPt,dEta,1);
1673
1674 // fill weighted q_RPs
1675 if(fUseWeights)
3d824203 1676 {
9c1a9547 1677 n = 2; // to be improved (add setter for harmonic)
77515452 1678
9c1a9547 1679 // qRP_{n,k} (weighted qRP):
1680 fReqRP1n2kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,2.)*TMath::Cos(1.*n*dPhi));
1681 fImqRP1n2kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,2.)*TMath::Sin(1.*n*dPhi));
1682 fReqRP2n1kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,1.)*TMath::Cos(2.*n*dPhi));
1683 fImqRP2n1kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,1.)*TMath::Sin(2.*n*dPhi));
3d824203 1684
9c1a9547 1685 // S^{mRP}_{p,k}:
1686 fSmRP1p1kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,1.));
1687 fSmRP1p2kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,2.));
1688 fSmRP1p3kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,3.));
1689 }
1690
1691 // checking if RP particle is also POI particle:
1692 if(fTrack->InPOISelection())
1693 {
1694 n = 2; // to be improved (add setter for harmonic)
1695
1696 // q''_{n} (non-weighted q''):
1697 fReqPrimePrime1nPtEta->Fill(dPt,dEta,TMath::Cos(1.*n*dPhi));
1698 fImqPrimePrime1nPtEta->Fill(dPt,dEta,TMath::Sin(1.*n*dPhi));
1699 fReqPrimePrime2nPtEta->Fill(dPt,dEta,TMath::Cos(2.*n*dPhi));
1700 fImqPrimePrime2nPtEta->Fill(dPt,dEta,TMath::Sin(2.*n*dPhi));
1701
1702 // m'':
1703 fmPrimePrimePtEta->Fill(dPt,dEta,1);
3d824203 1704
9c1a9547 1705 if(fUseWeights)
1706 {
1707 // q''_{n,k} (weighted q''):
1708 fReqPrimePrime1n2kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,2.)*TMath::Cos(1.*n*dPhi));
1709 fImqPrimePrime1n2kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,2.)*TMath::Sin(1.*n*dPhi));
1710 fReqPrimePrime2n1kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,1.)*TMath::Cos(2.*n*dPhi));
1711 fImqPrimePrime2n1kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,1.)*TMath::Sin(2.*n*dPhi));
b7cb54d5 1712
9c1a9547 1713 // S^{m''}_{p,k}:
1714 fSmPrimePrime1p1kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,1.));
1715 fSmPrimePrime1p2kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,2.));
1716 fSmPrimePrime1p3kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,3.));
1717 }
1718 } // end of if(fTrack->InPOISelection())
1719 } // end of if(pTrack->InRPSelection())
b7cb54d5 1720
9c1a9547 1721 // checking the POI condition:
1722 if(fTrack->InPOISelection())
1723 {
1724 Int_t n = 2; // to be improved (add setter for harmonic)
1725
1726 dPhi = fTrack->Phi();
1727 dPt = fTrack->Pt();
1728 dEta = fTrack->Eta();
b7cb54d5 1729
9c1a9547 1730 // q_n:
1731 fReqnPtEta->Fill(dPt,dEta,TMath::Cos(1.*n*dPhi));
1732 fImqnPtEta->Fill(dPt,dEta,TMath::Sin(1.*n*dPhi));
1733
1734 // m:
1735 fmPtEta->Fill(dPt,dEta,1);
3d824203 1736
9c1a9547 1737 } // end of if(pTrack->InPOISelection() )
1738 } // end of if(fTrack)
1739 else{
1740 cout<<endl;
1741 cout<<" WARNING: no particle! (i.e. fTrack is a NULL pointer in AFAWQC::Make().)"<<endl;
1742 cout<<endl;
1743 }
1744 } // end of for(Int_t i=0;i<nPrim;i++)
3d824203 1745
9c1a9547 1746 // calculate the final expressions for S^{M}_{p,k} = (sum_{i=1}^{M} w_{i}^{k})^{p}:
1747 for(Int_t p=0;p<8;p++)
1748 {
1749 for(Int_t k=0;k<9;k++)
77515452 1750 {
9c1a9547 1751 (*fSMpk)(p,k)=pow((*fSMpk)(p,k),p+1);
1752 }
1753 }
77515452 1754
2bdc5281 1755
77515452 1756
77515452 1757
9c1a9547 1758 // *****************************
1759 // **** CALLING THE METHODS ****
1760 // *****************************
77515452 1761
9c1a9547 1762 // nested loops (needed for cross-checking the results):
1763 Bool_t evaluateNestedLoopsForIntegratedFlow = kFALSE; // to be improved / removed
1764 Bool_t evaluateNestedLoopsForDifferentialFlow = kFALSE; // to be improved / removed
2bdc5281 1765 // Remark: setBefore in AliFlowCommonConstants:
1766 // Double_t AliFlowCommonConstants::fgEtaMin = -1.;
1767 // Double_t AliFlowCommonConstants::fgEtaMax = 1.;
77515452 1768
9c1a9547 1769 if(evaluateNestedLoopsForIntegratedFlow && nPrim>0 && nPrim<14) // to be improved / removed (eventually I would not need this if())
1770 {
1771 // calculate all correlations needed for 'no-name' integrated flow WITHOUT weights
1772 // (the results are stored in 1D profile fQCorrelations)
c365fe76 1773 if(!(fUseWeights))
1774 {
1775 this->CalculateCorrelationsForIntegratedFlow();
2bdc5281 1776 this->CalculateCorrectionsForNonUniformAcceptanceForNoNameIntegratedFlowCosTerms();
1777 this->CalculateCorrectionsForNonUniformAcceptanceForNoNameIntegratedFlowSinTerms();
c365fe76 1778 }
9c1a9547 1779 // calculate all correlations needed for 'no-name' integrated flow WITH weights
1780 // (the results are stored in 1D profile fQCorrelationsW)
1781 if(fUseWeights) this->CalculateWeightedCorrelationsForIntegratedFlow();
1782 }
1783 else if (!evaluateNestedLoopsForIntegratedFlow)
1784 {
1785 this->CalculateCorrelationsForIntegratedFlow();
2bdc5281 1786 this->CalculateCorrectionsForNonUniformAcceptanceForNoNameIntegratedFlowCosTerms();
1787 this->CalculateCorrectionsForNonUniformAcceptanceForNoNameIntegratedFlowSinTerms();
9c1a9547 1788 if(fUseWeights) this->CalculateWeightedCorrelationsForIntegratedFlow();
1789 }
77515452 1790
9c1a9547 1791 if(evaluateNestedLoopsForDifferentialFlow && nPrim>0 && nPrim<14 ) // to be improved / removed (eventually I would not need this if())
1792 {
1793 // calculate all correlations needed for differential flow WITHOUT weights
1794 // and store the results in 2D profiles (pt,eta):
1795 // a) POIs: f2pPtEtaPOI, f4pPtEtaPOI, f6pPtEtaPOI and f8pPtEtaPOI;
1796 // b) RPs: f2pPtEtaRP, f4pPtEtaRP, f6pPtEtaRP and f8pPtEtaRP.
1797 if(!(fUseWeights))
77515452 1798 {
9c1a9547 1799 this->CalculateCorrelationsForDifferentialFlow("POI");
1800 this->CalculateCorrelationsForDifferentialFlow("RP");
2bdc5281 1801 this->CalculateCorrectionsForNonUniformAcceptanceForDifferentialFlowCosTerms("POI");
1802 this->CalculateCorrectionsForNonUniformAcceptanceForDifferentialFlowSinTerms("POI");
1803 this->CalculateCorrectionsForNonUniformAcceptanceForDifferentialFlowCosTerms("RP");
1804 this->CalculateCorrectionsForNonUniformAcceptanceForDifferentialFlowSinTerms("RP");
77515452 1805 }
9c1a9547 1806 // calculate all correlations needed for differential flow WITH weights
1807 // and store the results in 2D profiles (pt,eta):
1808 // a) POIs: f2pPtEtaPOIW, f4pPtEtaPOIW, f6pPtEtaPOIW and f8pPtEtaPOIW;
1809 // b) RPs: f2pPtEtaRPW, f4pPtEtaRPW, f6pPtEtaRPW and f8pPtEtaRPW.
1810 if(fUseWeights)
1811 {
1812 this->CalculateWeightedCorrelationsForDifferentialFlow("POI");
1813 this->CalculateWeightedCorrelationsForDifferentialFlow("RP");
1814 }
1815 }
1816 else if (!evaluateNestedLoopsForDifferentialFlow)
1817 {
1818 this->CalculateCorrelationsForDifferentialFlow("POI");
1819 this->CalculateCorrelationsForDifferentialFlow("RP");
2bdc5281 1820 this->CalculateCorrectionsForNonUniformAcceptanceForDifferentialFlowCosTerms("POI");
1821 this->CalculateCorrectionsForNonUniformAcceptanceForDifferentialFlowSinTerms("POI");
1822 this->CalculateCorrectionsForNonUniformAcceptanceForDifferentialFlowCosTerms("RP");
1823 this->CalculateCorrectionsForNonUniformAcceptanceForDifferentialFlowSinTerms("RP");
3d824203 1824
9c1a9547 1825 if(fUseWeights)
77515452 1826 {
9c1a9547 1827 this->CalculateWeightedCorrelationsForDifferentialFlow("POI");
1828 this->CalculateWeightedCorrelationsForDifferentialFlow("RP");
77515452 1829 }
3d824203 1830
9c1a9547 1831 }
77515452 1832
9c1a9547 1833 if(evaluateNestedLoopsForIntegratedFlow && nPrim>0 && nPrim<14) // to be improved / removed (eventually I would not need this if())
1834 {
1835 this->EvaluateNestedLoopsForIntegratedFlow(anEvent);
1836 }
3d824203 1837
9c1a9547 1838 if(evaluateNestedLoopsForDifferentialFlow && nPrim>0 && nPrim<14) // to be improved / removed (eventually I would not need this if())
1839 {
1840 this->EvaluateNestedLoopsForDifferentialFlow(anEvent);
1841 }
3d824203 1842
3d824203 1843
9c1a9547 1844
1845
1846 // ********************************
1847 // **** RESET E-B-E QUANTITIES ****
1848 // ********************************
3d824203 1849
9c1a9547 1850 fReQ->Zero();
1851 fImQ->Zero();
1852 fSMpk->Zero();
1853 fReqnPtEta->Reset();
1854 fImqnPtEta->Reset();
1855 fmPtEta->Reset();
1856 fReqPrimePrime1nPtEta->Reset();
1857 fImqPrimePrime1nPtEta->Reset();
1858 fReqPrimePrime2nPtEta->Reset();
1859 fImqPrimePrime2nPtEta->Reset();
1860 fmPrimePrimePtEta->Reset();
1861 fReqPrimePrime1n2kPtEta->Reset();
1862 fImqPrimePrime1n2kPtEta->Reset();
1863 fReqPrimePrime2n1kPtEta->Reset();
1864 fImqPrimePrime2n1kPtEta->Reset();
1865 fSmPrimePrime1p1kPtEta->Reset();
1866 fSmPrimePrime1p2kPtEta->Reset();
1867 fSmPrimePrime1p3kPtEta->Reset();
1868 // qRPs (to be improved - notation)
1869 fReqRP1nPtEta->Reset();
1870 fImqRP1nPtEta->Reset();
1871 fReqRP2nPtEta->Reset();
1872 fImqRP2nPtEta->Reset();
1873 fmRPPtEta->Reset();
1874 fReqRP1n2kPtEta->Reset();
1875 fImqRP1n2kPtEta->Reset();
1876 fReqRP2n1kPtEta->Reset();
1877 fImqRP2n1kPtEta->Reset();
1878 fSmRP1p1kPtEta->Reset();
1879 fSmRP1p2kPtEta->Reset();
1880 fSmRP1p3kPtEta->Reset();
1881
1882} // end of AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
1883
1884
1885//================================================================================================================================
1886
1887
1888void AliFlowAnalysisWithQCumulants::CalculateCorrelationsForIntegratedFlow()
1889{
1890 // calculate all correlations needed for 'no-name' integrated flow // to be improved (name)
1891
1892 // multiplicity:
1893 Double_t dMult = (*fSMpk)(0,0);
1894
1895 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
1896 Double_t dReQ1n = (*fReQ)(0,0);
1897 Double_t dReQ2n = (*fReQ)(1,0);
1898 Double_t dReQ3n = (*fReQ)(2,0);
1899 Double_t dReQ4n = (*fReQ)(3,0);
1900 Double_t dImQ1n = (*fImQ)(0,0);
1901 Double_t dImQ2n = (*fImQ)(1,0);
1902 Double_t dImQ3n = (*fImQ)(2,0);
1903 Double_t dImQ4n = (*fImQ)(3,0);
3d824203 1904
9c1a9547 1905 // real and imaginary parts of some expressions involving various combinations of Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
1906 // (these expression appear in the Eqs. for the multi-particle correlations bellow)
77515452 1907
9c1a9547 1908 // Re[Q_{2n} Q_{n}^* Q_{n}^*]
1909 Double_t reQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dReQ2n + 2.*dReQ1n*dImQ1n*dImQ2n - pow(dImQ1n,2.)*dReQ2n;
77515452 1910
9c1a9547 1911 // Im[Q_{2n} Q_{n}^* Q_{n}^*]
1912 //Double_t imQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dImQ2n-2.*dReQ1n*dImQ1n*dReQ2n-pow(dImQ1n,2.)*dImQ2n;
77515452 1913
9c1a9547 1914 // Re[Q_{n} Q_{n} Q_{2n}^*] = Re[Q_{2n} Q_{n}^* Q_{n}^*]
1915 Double_t reQ1nQ1nQ2nstar = reQ2nQ1nstarQ1nstar;
77515452 1916
9c1a9547 1917 // Re[Q_{3n} Q_{n} Q_{2n}^* Q_{2n}^*]
1918 Double_t reQ3nQ1nQ2nstarQ2nstar = (pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
1919 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
77515452 1920
9c1a9547 1921 // Im[Q_{3n} Q_{n} Q_{2n}^* Q_{2n}^*]
1922 //Double_t imQ3nQ1nQ2nstarQ2nstar = calculate and implement this (deleteMe)
1923
1924 // Re[Q_{2n} Q_{2n} Q_{3n}^* Q_{1n}^*] = Re[Q_{3n} Q_{n} Q_{2n}^* Q_{2n}^*]
1925 Double_t reQ2nQ2nQ3nstarQ1nstar = reQ3nQ1nQ2nstarQ2nstar;
1926
1927 // Re[Q_{4n} Q_{2n}^* Q_{2n}^*]
1928 Double_t reQ4nQ2nstarQ2nstar = pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n;
77515452 1929
9c1a9547 1930 // Im[Q_{4n} Q_{2n}^* Q_{2n}^*]
1931 //Double_t imQ4nQ2nstarQ2nstar = calculate and implement this (deleteMe)
77515452 1932
9c1a9547 1933 // Re[Q_{2n} Q_{2n} Q_{4n}^*] = Re[Q_{4n} Q_{2n}^* Q_{2n}^*]
1934 Double_t reQ2nQ2nQ4nstar = reQ4nQ2nstarQ2nstar;
77515452 1935
9c1a9547 1936 // Re[Q_{4n} Q_{3n}^* Q_{n}^*]
1937 Double_t reQ4nQ3nstarQ1nstar = dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
77515452 1938
9c1a9547 1939 // Re[Q_{3n} Q_{n} Q_{4n}^*] = Re[Q_{4n} Q_{3n}^* Q_{n}^*]
1940 Double_t reQ3nQ1nQ4nstar = reQ4nQ3nstarQ1nstar;
77515452 1941
9c1a9547 1942 // Im[Q_{4n} Q_{3n}^* Q_{n}^*]
1943 //Double_t imQ4nQ3nstarQ1nstar = calculate and implement this (deleteMe)
6f366058 1944
9c1a9547 1945 // Re[Q_{3n} Q_{2n}^* Q_{n}^*]
1946 Double_t reQ3nQ2nstarQ1nstar = dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
1947 + dImQ3n*dImQ2n*dReQ1n;
1948
1949 // Re[Q_{2n} Q_{n} Q_{3n}^*] = Re[Q_{3n} Q_{2n}^* Q_{n}^*]
1950 Double_t reQ2nQ1nQ3nstar = reQ3nQ2nstarQ1nstar;
3d824203 1951
9c1a9547 1952 // Im[Q_{3n} Q_{2n}^* Q_{n}^*]
1953 //Double_t imQ3nQ2nstarQ1nstar; //calculate and implement this (deleteMe)
3d824203 1954
9c1a9547 1955 // Re[Q_{3n} Q_{n}^* Q_{n}^* Q_{n}^*]
1956 Double_t reQ3nQ1nstarQ1nstarQ1nstar = dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
1957 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3);
1958
1959 // Im[Q_{3n} Q_{n}^* Q_{n}^* Q_{n}^*]
1960 //Double_t imQ3nQ1nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
3d824203 1961
9c1a9547 1962 // |Q_{2n}|^2 |Q_{n}|^2
1963 Double_t dQ2nQ1nQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
3d824203 1964
9c1a9547 1965 // Re[Q_{4n} Q_{2n}^* Q_{n}^* Q_{n}^*]
1966 Double_t reQ4nQ2nstarQ1nstarQ1nstar = (dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
1967 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n);
3d824203 1968
9c1a9547 1969 // Im[Q_{4n} Q_{2n}^* Q_{n}^* Q_{n}^*]
1970 //Double_t imQ4nQ2nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
3d824203 1971
9c1a9547 1972 // Re[Q_{2n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^*]
1973 Double_t reQ2nQ1nQ1nstarQ1nstarQ1nstar = (dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
1974 + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3));
1975
1976 // Im[Q_{2n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^*]
1977 //Double_t imQ2nQ1nQ1nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
1dfa3c16 1978
9c1a9547 1979 // Re[Q_{2n} Q_{2n} Q_{2n}^* Q_{n}^* Q_{n}^*]
1980 Double_t reQ2nQ2nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
1981 * (dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) + 2.*dImQ2n*dReQ1n*dImQ1n);
1982
1983 // Im[Q_{2n} Q_{2n} Q_{2n}^* Q_{n}^* Q_{n}^*]
1984 //Double_t imQ2nQ2nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
1985 // * (dImQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) - 2.*dReQ2n*dReQ1n*dImQ1n);
1986
1987 // Re[Q_{4n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
1988 Double_t reQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
1989 + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n
1990 - 4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n;
1991
1992 // Im[Q_{4n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
1993 //Double_t imQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,4.)*dImQ4n-6.*pow(dReQ1n,2.)*dImQ4n*pow(dImQ1n,2.)
1994 // + pow(dImQ1n,4.)*dImQ4n+4.*pow(dImQ1n,3.)*dReQ1n*dReQ4n
1995 // - 4.*pow(dReQ1n,3.)*dImQ1n*dReQ4n;
1996
1997 // Re[Q_{3n} Q_{n} Q_{2n}^* Q_{n}^* Q_{n}^*]
1998 Double_t reQ3nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
1999 * (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n+dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n);
2000
2001 // Im[Q_{3n} Q_{n} Q_{2n}^* Q_{n}^* Q_{n}^*]
2002 //Double_t imQ3nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
2003 // * (-dReQ2n*dReQ3n*dImQ1n-dReQ1n*dReQ3n*dImQ2n+dReQ1n*dReQ2n*dImQ3n-dImQ1n*dImQ2n*dImQ3n);
2004
2005
2006 // Re[Q_{2n} Q_{2n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
2007 Double_t reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)*dReQ2n-2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
2008 + dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dImQ2n)
2009 * (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
2010 - dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n+pow(dImQ1n,2.)*dImQ2n);
2011
2012 // Im[Q_{2n} Q_{2n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
2013 //Double_t imQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = 2.*(pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.)
2014 // + 2.*dReQ1n*dImQ1n*dImQ2n)*(pow(dReQ1n,2.)*dImQ2n
2015 // - 2.*dReQ1n*dImQ1n*dReQ2n-pow(dImQ1n,2.)*dImQ2n);
2016
2017 // Re[Q_{3n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
2018 Double_t reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
2019 * (pow(dReQ1n,3.)*dReQ3n-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
2020 + 3.*pow(dReQ1n,2.)*dImQ1n*dImQ3n-pow(dImQ1n,3.)*dImQ3n);
2021
2022 // Im[Q_{3n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
2023 //Double_t imQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
2024 // * (pow(dImQ1n,3.)*dReQ3n-3.*dImQ1n*dReQ3n*pow(dReQ1n,2.)
2025 // - 3.*pow(dImQ1n,2.)*dReQ1n*dImQ3n+pow(dReQ1n,3.)*dImQ3n);
2026
2027 // |Q_{2n}|^2 |Q_{n}|^4
2028 Double_t dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.);
2029
2030 // Re[Q_{2n} Q_{n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
2031 Double_t reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
2032 * (pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.)
2033 + 2.*dReQ1n*dImQ1n*dImQ2n);
2034
2035 // Im[Q_{2n} Q_{n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
2036 //Double_t imQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
2037 // * (pow(dReQ1n,2.)*dImQ2n-dImQ2n*pow(dImQ1n,2.)
2038 // - 2.*dReQ1n*dReQ2n*dImQ1n);
ae733b3b 2039
9c1a9547 2040
1dfa3c16 2041
9c1a9547 2042
2043 // **************************************
2044 // **** multi-particle correlations: ****
2045 // **************************************
2046 //
2047 // Remark 1: multi-particle correlations calculated with non-weighted Q-vectors are stored in 1D profile fQCorrelations.
2048 // Remark 2: binning of fQCorrelations is organized as follows:
2049 // --------------------------------------------------------------------------------------------------------------------
2050 // 1st bin: <2>_{1n|1n} = two1n1n = cos(n*(phi1-phi2))>
2051 // 2nd bin: <2>_{2n|2n} = two2n2n = cos(2n*(phi1-phi2))>
2052 // 3rd bin: <2>_{3n|3n} = two3n3n = cos(3n*(phi1-phi2))>
2053 // 4th bin: <2>_{4n|4n} = two4n4n = cos(4n*(phi1-phi2))>
2054 // 5th bin: ---- EMPTY ----
2055 // 6th bin: <3>_{2n|1n,1n} = three2n1n1n = <cos(n*(2.*phi1-phi2-phi3))>
2056 // 7th bin: <3>_{3n|2n,1n} = three3n2n1n = <cos(n*(3.*phi1-2.*phi2-phi3))>
2057 // 8th bin: <3>_{4n|2n,2n} = three4n2n2n = <cos(n*(4.*phi1-2.*phi2-2.*phi3))>
2058 // 9th bin: <3>_{4n|3n,1n} = three4n3n1n = <cos(n*(4.*phi1-3.*phi2-phi3))>
2059 // 10th bin: ---- EMPTY ----
2060 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1n = <cos(n*(phi1+phi2-phi3-phi4))>
2061 // 12th bin: <4>_{2n,1n|2n,1n} = four2n1n2n1n = <cos(2.*n*(phi1+phi2-phi3-phi4))>
2062 // 13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n = <cos(n*(2.*phi1+phi2-2.*phi3-phi4))>
2063 // 14th bin: <4>_{3n|1n,1n,1n} = four3n1n1n1n = <cos(n*(3.*phi1-phi2-phi3-phi4))>
2064 // 15th bin: <4>_{3n,1n|3n,1n} = four3n1n3n1n = <cos(n*(4.*phi1-2.*phi2-phi3-phi4))>
2065 // 16th bin: <4>_{3n,1n|2n,2n} = four3n1n2n2n = <cos(n*(3.*phi1+phi2-2.*phi3-2.*phi4))>
2066 // 17th bin: <4>_{4n|2n,1n,1n} = four4n2n1n1n = <cos(n*(3.*phi1+phi2-3.*phi3-phi4))>
2067 // 18th bin: ---- EMPTY ----
2068 // 19th bin: <5>_{2n|1n,1n,1n,1n} = five2n1n1n1n1n = <cos(n*(2.*phi1+phi2-phi3-phi4-phi5))>
2069 // 20th bin: <5>_{2n,2n|2n,1n,1n} = five2n2n2n1n1n = <cos(n*(2.*phi1+2.*phi2-2.*phi3-phi4-phi5))>
2070 // 21st bin: <5>_{3n,1n|2n,1n,1n} = five3n1n2n1n1n = <cos(n*(3.*phi1+phi2-2.*phi3-phi4-phi5))>
2071 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = five4n1n1n1n1n = <cos(n*(4.*phi1-phi2-phi3-phi4-phi5))>
2072 // 23rd bin: ---- EMPTY ----
2073 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = six1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3-phi4-phi5-phi6))>
2074 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = six2n1n1n2n1n1n = <cos(n*(2.*phi1+2.*phi2-phi3-phi4-phi5-phi6))>
2075 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = six2n2n1n1n1n1n = <cos(n*(3.*phi1+phi2-phi3-phi4-phi5-phi6))>
2076 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = six3n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-2.*phi4-phi5-phi6))>
2077 // 28th bin: ---- EMPTY ----
2078 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = seven2n1n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
2079 // 30th bin: ---- EMPTY ----
2080 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = eight1n1n1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
2081 // --------------------------------------------------------------------------------------------------------------------
2082
2083 // 2-particle:
2084 Double_t two1n1n = 0.; // <cos(n*(phi1-phi2))>
2085 Double_t two2n2n = 0.; // <cos(2n*(phi1-phi2))>
2086 Double_t two3n3n = 0.; // <cos(3n*(phi1-phi2))>
2087 Double_t two4n4n = 0.; // <cos(4n*(phi1-phi2))>
1dfa3c16 2088
9c1a9547 2089 if(dMult>1)
2090 {
2091 two1n1n = (pow(dReQ1n,2.)+pow(dImQ1n,2.)-dMult)/(dMult*(dMult-1.));
2092 two2n2n = (pow(dReQ2n,2.)+pow(dImQ2n,2.)-dMult)/(dMult*(dMult-1.));
2093 two3n3n = (pow(dReQ3n,2.)+pow(dImQ3n,2.)-dMult)/(dMult*(dMult-1.));
2094 two4n4n = (pow(dReQ4n,2.)+pow(dImQ4n,2.)-dMult)/(dMult*(dMult-1.));
2095
2096 fQCorrelations->Fill(0.,two1n1n,dMult*(dMult-1.));
2097 fQCorrelations->Fill(1.,two2n2n,dMult*(dMult-1.));
2098 fQCorrelations->Fill(2.,two3n3n,dMult*(dMult-1.));
2099 fQCorrelations->Fill(3.,two4n4n,dMult*(dMult-1.));
2100
2101 // distribution of <cos(n*(phi1-phi2))>:
2102 f2pDistribution->Fill(two1n1n,dMult*(dMult-1.));
2103 } // end of if(dMult>1)
ae733b3b 2104
9c1a9547 2105 // 3-particle:
2106 Double_t three2n1n1n = 0.; // <cos(n*(2.*phi1-phi2-phi3))>
2107 Double_t three3n2n1n = 0.; // <cos(n*(3.*phi1-2.*phi2-phi3))>
2108 Double_t three4n2n2n = 0.; // <cos(n*(4.*phi1-2.*phi2-2.*phi3))>
2109 Double_t three4n3n1n = 0.; // <cos(n*(4.*phi1-3.*phi2-phi3))>
ae733b3b 2110
9c1a9547 2111 if(dMult>2)
2112 {
2113 three2n1n1n = (reQ2nQ1nstarQ1nstar-2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
2114 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
2115 / (dMult*(dMult-1.)*(dMult-2.));
2116 three3n2n1n = (reQ3nQ2nstarQ1nstar-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
2117 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))
2118 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
2119 / (dMult*(dMult-1.)*(dMult-2.));
2120 three4n2n2n = (reQ4nQ2nstarQ2nstar-2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
2121 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*dMult)
2122 / (dMult*(dMult-1.)*(dMult-2.));
2123 three4n3n1n = (reQ4nQ3nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))
2124 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
2125 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
2126 / (dMult*(dMult-1.)*(dMult-2.));
2127
2128 fQCorrelations->Fill(5.,three2n1n1n,dMult*(dMult-1.)*(dMult-2.));
2129 fQCorrelations->Fill(6.,three3n2n1n,dMult*(dMult-1.)*(dMult-2.));
2130 fQCorrelations->Fill(7.,three4n2n2n,dMult*(dMult-1.)*(dMult-2.));
2131 fQCorrelations->Fill(8.,three4n3n1n,dMult*(dMult-1.)*(dMult-2.));
2132 } // end of if(dMult>2)
ae733b3b 2133
9c1a9547 2134 // 4-particle:
2135 Double_t four1n1n1n1n = 0.; // <cos(n*(phi1+phi2-phi3-phi4))>
2136 Double_t four2n2n2n2n = 0.; // <cos(2.*n*(phi1+phi2-phi3-phi4))>
2137 Double_t four2n1n2n1n = 0.; // <cos(n*(2.*phi1+phi2-2.*phi3-phi4))>
2138 Double_t four3n1n1n1n = 0.; // <cos(n*(3.*phi1-phi2-phi3-phi4))>
2139 Double_t four4n2n1n1n = 0.; // <cos(n*(4.*phi1-2.*phi2-phi3-phi4))>
2140 Double_t four3n1n2n2n = 0.; // <cos(n*(3.*phi1+phi2-2.*phi3-2.*phi4))>
2141 Double_t four3n1n3n1n = 0.; // <cos(n*(3.*phi1+phi2-3.*phi3-phi4))>
1dfa3c16 2142
9c1a9547 2143 if(dMult>3)
2144 {
2145 four1n1n1n1n = (2.*dMult*(dMult-3.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ1n,2.)
2146 + pow(dImQ1n,2.))-2.*reQ2nQ1nstarQ1nstar+(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
2147 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
2148 four2n2n2n2n = (2.*dMult*(dMult-3.)+pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ2n,2.)
2149 + pow(dImQ2n,2.))-2.*reQ4nQ2nstarQ2nstar+(pow(dReQ4n,2.)+pow(dImQ4n,2.)))
2150 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
2151 four2n1n2n1n = (dQ2nQ1nQ2nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar-2.*reQ2nQ1nstarQ1nstar)
2152 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
2153 - ((dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
2154 + (dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.)))
2155 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
2156 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
2157 four3n1n1n1n = (reQ3nQ1nstarQ1nstarQ1nstar-3.*reQ3nQ2nstarQ1nstar-3.*reQ2nQ1nstarQ1nstar)
2158 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
2159 + (2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
2160 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
2161 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
2162 four4n2n1n1n = (reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ4nQ3nstarQ1nstar-reQ4nQ2nstarQ2nstar-2.*reQ3nQ2nstarQ1nstar)
2163 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
2164 - (reQ2nQ1nstarQ1nstar-2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
2165 - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
2166 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
2167 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
2168 four3n1n2n2n = (reQ3nQ1nQ2nstarQ2nstar-reQ4nQ2nstarQ2nstar-reQ3nQ1nQ4nstar-2.*reQ3nQ2nstarQ1nstar)
2169 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
2170 - (2.*reQ1nQ1nQ2nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
2171 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
2172 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
2173 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
2174 four3n1n3n1n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
2175 - 2.*reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar)
2176 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
2177 + ((pow(dReQ4n,2.)+pow(dImQ4n,2.))-(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
2178 + (pow(dReQ2n,2.)+pow(dImQ2n,2.))-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
2179 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
2180 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
2181
2182 fQCorrelations->Fill(10.,four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
2183 fQCorrelations->Fill(11.,four2n1n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
2184 fQCorrelations->Fill(12.,four2n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
2185 fQCorrelations->Fill(13.,four3n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
2186 fQCorrelations->Fill(14.,four3n1n3n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
2187 fQCorrelations->Fill(15.,four3n1n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
2188 fQCorrelations->Fill(16.,four4n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
2189
2190 // distribution of <cos(n*(phi1+phi2-phi3-phi4))>
2191 f4pDistribution->Fill(four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
2192
2193 // fQProduct->Fill(0.,two1n1n*four1n1n1n1n,dMult*(dMult-1.)*dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
2194 } // end of if(dMult>3)
2195
2196 // 5-particle:
2197 Double_t five2n1n1n1n1n = 0.; // <cos(n*(2.*phi1+phi2-phi3-phi4-phi5))>
2198 Double_t five2n2n2n1n1n = 0.; // <cos(n*(2.*phi1+2.*phi2-2.*phi3-phi4-phi5))>
2199 Double_t five3n1n2n1n1n = 0.; // <cos(n*(3.*phi1+phi2-2.*phi3-phi4-phi5))>
2200 Double_t five4n1n1n1n1n = 0.; // <cos(n*(4.*phi1-phi2-phi3-phi4-phi5))>
4057ba99 2201
9c1a9547 2202 if(dMult>4)
2203 {
2204 five2n1n1n1n1n = (reQ2nQ1nQ1nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar+6.*reQ3nQ2nstarQ1nstar)
2205 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
2206 - (reQ2nQ1nQ3nstar+3.*(dMult-6.)*reQ2nQ1nstarQ1nstar+3.*reQ1nQ1nQ2nstar)
2207 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
2208 - (2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
2209 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
2210 - 3.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
2211 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
2212 - 3.*(pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
2213 - 2.*(2*dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult*(dMult-4.))
2214 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
2215
2216 five2n2n2n1n1n = (reQ2nQ2nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ2nQ2nQ3nstarQ1nstar)
2217 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
2218 + 2.*(reQ4nQ2nstarQ2nstar+4.*reQ3nQ2nstarQ1nstar+reQ3nQ1nQ4nstar)
2219 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
2220 + (reQ2nQ2nQ4nstar-2.*(dMult-5.)*reQ2nQ1nstarQ1nstar+2.*reQ1nQ1nQ2nstar)
2221 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
2222 - (2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
2223 + 1.*pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
2224 - 2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
2225 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
2226 - (4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
2227 - 4.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+4.*dMult*(dMult-6.))
2228 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
2229
2230 five4n1n1n1n1n = (reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ4nQ2nstarQ1nstarQ1nstar-4.*reQ3nQ1nstarQ1nstarQ1nstar)
2231 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
2232 + (8.*reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar+12.*reQ3nQ2nstarQ1nstar+12.*reQ2nQ1nstarQ1nstar)
2233 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
2234 - (6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+8.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
2235 + 12.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-24.*dMult)
2236 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
2237
2238 five3n1n2n1n1n = (reQ3nQ1nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar)
2239 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
2240 - (reQ3nQ1nQ2nstarQ2nstar-3.*reQ4nQ3nstarQ1nstar-reQ4nQ2nstarQ2nstar)
2241 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
2242 - ((2.*dMult-13.)*reQ3nQ2nstarQ1nstar-reQ3nQ1nQ4nstar-9.*reQ2nQ1nstarQ1nstar)
2243 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
2244 - (2.*reQ1nQ1nQ2nstar+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
2245 - 2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+2.*(pow(dReQ3n,2.)
2246 + pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
2247 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
2248 + (2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
2249 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
2250 - pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
2251 + 2.*(3.*dMult-11.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
2252 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
2253 - 4.*(dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
2254
2255 fQCorrelations->Fill(18.,five2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
2256 fQCorrelations->Fill(19.,five2n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
2257 fQCorrelations->Fill(20.,five3n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
2258 fQCorrelations->Fill(21.,five4n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
2259 } // end of if(dMult>4)
2260
2261 // 6-particle:
2262 Double_t six1n1n1n1n1n1n = 0.; // <cos(n*(phi1+phi2+phi3-phi4-phi5-phi6))>
2263 Double_t six2n2n1n1n1n1n = 0.; // <cos(n*(2.*phi1+2.*phi2-phi3-phi4-phi5-phi6))>
2264 Double_t six3n1n1n1n1n1n = 0.; // <cos(n*(3.*phi1+phi2-phi3-phi4-phi5-phi6))>
2265 Double_t six2n1n1n2n1n1n = 0.; // <cos(n*(2.*phi1+phi2+phi3-2.*phi4-phi5-phi6))>
ae733b3b 2266
9c1a9547 2267 if(dMult>5)
2268 {
2269 six1n1n1n1n1n1n = (pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)+9.*dQ2nQ1nQ2nstarQ1nstar-6.*reQ2nQ1nQ1nstarQ1nstarQ1nstar)
2270 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.))
2271 + 4.*(reQ3nQ1nstarQ1nstarQ1nstar-3.*reQ3nQ2nstarQ1nstar)
2272 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.))
2273 + 2.*(9.*(dMult-4.)*reQ2nQ1nstarQ1nstar+2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)))
2274 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.))
2275 - 9.*(pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)+(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
2276 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-5.))
2277 + (18.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
2278 / (dMult*(dMult-1)*(dMult-3)*(dMult-4))
2279 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
2280
2281 six2n1n1n2n1n1n = (dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)
2282 * (2.*five2n2n2n1n1n+4.*five2n1n1n1n1n+4.*five3n1n2n1n1n+4.*four2n1n2n1n+1.*four1n1n1n1n)
2283 - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(4.*four1n1n1n1n+4.*two1n1n
2284 + 2.*three2n1n1n+2.*three2n1n1n+4.*four3n1n1n1n+8.*three2n1n1n+2.*four4n2n1n1n
2285 + 4.*four2n1n2n1n+2.*two2n2n+8.*four2n1n2n1n+4.*four3n1n3n1n+8.*three3n2n1n
2286 + 4.*four3n1n2n2n+4.*four1n1n1n1n+4.*four2n1n2n1n+1.*four2n2n2n2n)
2287 - dMult*(dMult-1.)*(dMult-2.)*(2.*three2n1n1n+8.*two1n1n+4.*two1n1n+2.
2288 + 4.*two1n1n+4.*three2n1n1n+2.*two2n2n+4.*three2n1n1n+8.*three3n2n1n
2289 + 8.*two2n2n+4.*three4n3n1n+4.*two3n3n+4.*three3n2n1n+4.*two1n1n
2290 + 8.*three2n1n1n+4.*two1n1n+4.*three3n2n1n+4.*three2n1n1n+2.*two2n2n
2291 + 4.*three3n2n1n+2.*three4n2n2n)-dMult*(dMult-1.)
2292 * (4.*two1n1n+4.+4.*two1n1n+2.*two2n2n+1.+4.*two1n1n+4.*two2n2n+4.*two3n3n
2293 + 1.+2.*two2n2n+1.*two4n4n)-dMult)
2294 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)); // to be improved (direct formula needed)
2295
2296 six2n2n1n1n1n1n = (reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)
2297 * (five4n1n1n1n1n+8.*five2n1n1n1n1n+6.*five2n2n2n1n1n)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
2298 * (4.*four3n1n1n1n+6.*four4n2n1n1n+12.*three2n1n1n+12.*four1n1n1n1n+24.*four2n1n2n1n
2299 + 4.*four3n1n2n2n+3.*four2n2n2n2n)-dMult*(dMult-1.)*(dMult-2.)*(6.*three2n1n1n+12.*three3n2n1n
2300 + 4.*three4n3n1n+3.*three4n2n2n+8.*three2n1n1n+24.*two1n1n+12.*two2n2n+12.*three2n1n1n+8.*three3n2n1n
2301 + 1.*three4n2n2n)-dMult*(dMult-1.)*(4.*two1n1n+6.*two2n2n+4.*two3n3n+1.*two4n4n+2.*two2n2n+8.*two1n1n+6.)-dMult)
2302 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)); // to be improved (direct formula needed)
2303
2304 six3n1n1n1n1n1n = (reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)
2305 * (five4n1n1n1n1n+4.*five2n1n1n1n1n+6.*five3n1n2n1n1n+4.*four3n1n1n1n)
2306 - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(4.*four3n1n1n1n+6.*four4n2n1n1n+6.*four1n1n1n1n
2307 + 12.*three2n1n1n+12.*four2n1n2n1n+6.*four3n1n1n1n+12.*three3n2n1n+4.*four3n1n3n1n+3.*four3n1n2n2n)
2308 - dMult*(dMult-1.)*(dMult-2.)*(6.*three2n1n1n+12.*three3n2n1n+4.*three4n3n1n+3.*three4n2n2n+4.*two1n1n
2309 + 12.*two1n1n+6.*three2n1n1n+12.*three2n1n1n+4.*three3n2n1n+12.*two2n2n+4.*three3n2n1n+4.*two3n3n+1.*three4n3n1n
2310 + 6.*three3n2n1n)-dMult*(dMult-1.)*(4.*two1n1n+6.*two2n2n+4.*two3n3n+1.*two4n4n+1.*two1n1n+4.+6.*two1n1n+4.*two2n2n
2311 + 1.*two3n3n)-dMult)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)); // to be improved (direct formula needed)
2312
2313 fQCorrelations->Fill(23.,six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
2314 fQCorrelations->Fill(24.,six2n1n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
2315 fQCorrelations->Fill(25.,six2n2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
2316 fQCorrelations->Fill(26.,six3n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
2317
2318 // distribution of <cos(n*(phi1+phi2+phi3-phi4-phi5-phi6))>
2319 f6pDistribution->Fill(six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
2320
2321 //fQProduct->Fill(1.,two1n1n*six1n1n1n1n1n1n,dMult*(dMult-1.)*dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
2322 //fQProduct->Fill(3.,four1n1n1n1n*six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
2323 } // end of if(dMult>5)
4057ba99 2324
9c1a9547 2325 // 7-particle:
2326 Double_t seven2n1n1n1n1n1n1n = 0.; // <cos(n*(2.*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
1dfa3c16 2327
9c1a9547 2328 if(dMult>6)
2329 {
2330 seven2n1n1n1n1n1n1n = (reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)
2331 * (2.*six3n1n1n1n1n1n+4.*six1n1n1n1n1n1n+1.*six2n2n1n1n1n1n+6.*six2n1n1n2n1n1n+8.*five2n1n1n1n1n)
2332 - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(1.*five4n1n1n1n1n +8.*five2n1n1n1n1n+8.*four3n1n1n1n
2333 + 12.*five3n1n2n1n1n+4.*five2n1n1n1n1n+3.*five2n2n2n1n1n+6.*five2n2n2n1n1n+6.*four1n1n1n1n+24.*four1n1n1n1n
2334 + 12.*five2n1n1n1n1n+12.*five2n1n1n1n1n+12.*three2n1n1n+24.*four2n1n2n1n+4.*five3n1n2n1n1n+4.*five2n1n1n1n1n)
2335 - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(4.*four3n1n1n1n+6.*four4n2n1n1n+12.*four1n1n1n1n+24.*three2n1n1n
2336 + 24.*four2n1n2n1n+12.*four3n1n1n1n+24.*three3n2n1n+8.*four3n1n3n1n+6.*four3n1n2n2n+6.*three2n1n1n+12.*four1n1n1n1n
2337 + 12.*four2n1n2n1n+6.*three2n1n1n+12.*four2n1n2n1n+4.*four3n1n2n2n+3.*four2n2n2n2n+4.*four1n1n1n1n+6.*three2n1n1n
2338 + 24.*two1n1n+24.*four1n1n1n1n+4.*four3n1n1n1n+24.*two1n1n+24.*three2n1n1n+12.*two2n2n+24.*three2n1n1n+12.*four2n1n2n1n
2339 + 8.*three3n2n1n+8.*four2n1n2n1n+1.*four4n2n1n1n)-dMult*(dMult-1.)*(dMult-2.)*(6.*three2n1n1n+1.*three2n1n1n+8.*two1n1n
2340 + 12.*three3n2n1n+24.*two1n1n+12.*three2n1n1n+4.*three2n1n1n+8.*two1n1n+4.*three4n3n1n+24.*three2n1n1n+8.*three3n2n1n
2341 + 12.*two1n1n+12.*two1n1n+3.*three4n2n2n+24.*two2n2n+6.*two2n2n+12.+12.*three3n2n1n+8.*two3n3n+12.*three2n1n1n+24.*two1n1n
2342 + 4.*three3n2n1n+8.*three3n2n1n+2.*three4n3n1n+12.*two1n1n+8.*three2n1n1n+4.*three2n1n1n+2.*three3n2n1n+6.*two2n2n+8.*two2n2n
2343 + 1.*three4n2n2n+4.*three3n2n1n+6.*three2n1n1n)-dMult*(dMult-1.)*(4.*two1n1n+2.*two1n1n+6.*two2n2n+8.+1.*two2n2n+4.*two3n3n
2344 + 12.*two1n1n+4.*two1n1n+1.*two4n4n+8.*two2n2n+6.+2.*two3n3n+4.*two1n1n+1.*two2n2n)-dMult)
2345 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)); // to be improved (direct formula needed)
2346
2347 fQCorrelations->Fill(28.,seven2n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.));
2348 } // end of if(dMult>6)
ae733b3b 2349
9c1a9547 2350 // 8-particle:
2351 Double_t eight1n1n1n1n1n1n1n1n = 0.; // <cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
2352 if(dMult>7)
2353 {
2354 eight1n1n1n1n1n1n1n1n = (pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),4.)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)
2355 * (12.*seven2n1n1n1n1n1n1n+16.*six1n1n1n1n1n1n)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)
2356 * (8.*six3n1n1n1n1n1n+48.*six1n1n1n1n1n1n+6.*six2n2n1n1n1n1n+96.*five2n1n1n1n1n+72.*four1n1n1n1n+36.*six2n1n1n2n1n1n)
2357 - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(2.*five4n1n1n1n1n+32.*five2n1n1n1n1n+36.*four1n1n1n1n
2358 + 32.*four3n1n1n1n+48.*five2n1n1n1n1n+48.*five3n1n2n1n1n+144.*five2n1n1n1n1n+288.*four1n1n1n1n+36.*five2n2n2n1n1n
2359 + 144.*three2n1n1n+96.*two1n1n+144.*four2n1n2n1n)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
2360 * (8.*four3n1n1n1n+48.*four1n1n1n1n+12.*four4n2n1n1n+96.*four2n1n2n1n+96.*three2n1n1n+72.*three2n1n1n+144.*two1n1n
2361 + 16.*four3n1n3n1n+48.*four3n1n1n1n+144.*four1n1n1n1n+72.*four1n1n1n1n+96.*three3n2n1n+24.*four3n1n2n2n+144.*four2n1n2n1n
2362 + 288.*two1n1n+288.*three2n1n1n+9.*four2n2n2n2n+72.*two2n2n+24.)-dMult*(dMult-1.)*(dMult-2.)*(12.*three2n1n1n+16.*two1n1n
2363 + 24.*three3n2n1n+48.*three2n1n1n+96.*two1n1n+8.*three4n3n1n+32.*three3n2n1n+96.*three2n1n1n+144.*two1n1n+6.*three4n2n2n
2364 + 96.*two2n2n+36.*two2n2n+72.+48.*three3n2n1n+16.*two3n3n+72.*three2n1n1n+144.*two1n1n)-dMult*(dMult-1.)*(8.*two1n1n
2365 + 12.*two2n2n+16.+8.*two3n3n+48.*two1n1n+1.*two4n4n+16.*two2n2n+18.)-dMult)
2366 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.)); // to be improved (direct formula needed)
2367
2368 fQCorrelations->Fill(30.,eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
ae733b3b 2369
9c1a9547 2370 // distribution of <cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
2371 f8pDistribution->Fill(eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
2372
2373 } // end of if(dMult>7)
1dfa3c16 2374
9c1a9547 2375} // end of AliFlowAnalysisWithQCumulants::CalculateCorrelationsForIntegratedFlow()
bc92c0cb 2376
2377
9c1a9547 2378//================================================================================================================================
bc92c0cb 2379
2380
9c1a9547 2381void AliFlowAnalysisWithQCumulants::CalculateWeightedCorrelationsForIntegratedFlow()
2382{
2383 // calculate all weighted correlations needed for 'no-name' integrated flow and store them in 1D profile fQCorrelationsW
2384
2385 // Remark 1: binning of fQCorrelationsW is organized as follows:
2386 //..............................................................................................
2387 // ---- bins 1-20: 2-particle correlations ----
2388 // 1st bin: two1n1nW1W1 = <w1 w2 cos(n*(phi1-phi2))>
2389 // 2nd bin: two2n2nW2W2 = <w1^2 w2^2 cos(2n*(phi1-phi2))>
2390 // 3rd bin: two3n3nW3W3 = <w1^3 w2^3 cos(3n*(phi1-phi2))>
2391 // 4th bin: two4n4nW4W4 = <w1^4 w2^4 cos(4n*(phi1-phi2))>
2392 // 5th bin: two1n1nW3W1 = <w1^3 w2 cos(n*(phi1-phi2))>
2393 // 6th bin: two1n1nW1W1W2 = <w1 w2 w3^2 cos(n*(phi1-phi2))>
2394 // ---- bins 21-40: 3-particle correlations ----
2395 // 21st bin: three2n1n1nW2W1W1 = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
2396 // ---- bins 41-60: 4-particle correlations ----
2397 // 41st bin: four1n1n1n1nW1W1W1W1 = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
2398 // ---- bins 61-80: 5-particle correlations ----
2399 // ---- bins 81-100: 6-particle correlations ----
2400 // ---- bins 101-120: 7-particle correlations ----
2401 // ---- bins 121-140: 8-particle correlations ----
2402 //..............................................................................................
2403
2404 // multiplicity (number of particles used to determine the reaction plane)
2405 Double_t dMult = (*fSMpk)(0,0);
2406
2407 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
2408 Double_t dReQ1n1k = (*fReQ)(0,1);
2409 Double_t dReQ2n2k = (*fReQ)(1,2);
2410 Double_t dReQ3n3k = (*fReQ)(2,3);
2411 Double_t dReQ4n4k = (*fReQ)(3,4);
2412 Double_t dReQ1n3k = (*fReQ)(0,3);
2413 Double_t dImQ1n1k = (*fImQ)(0,1);
2414 Double_t dImQ2n2k = (*fImQ)(1,2);
2415 Double_t dImQ3n3k = (*fImQ)(2,3);
2416 Double_t dImQ4n4k = (*fImQ)(3,4);
2417 Double_t dImQ1n3k = (*fImQ)(0,3);
2418
2419 // dMs are variables introduced in order to simplify some Eqs. bellow:
2420 //..............................................................................................
2421 Double_t dM11 = (*fSMpk)(1,1)-(*fSMpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
2422 Double_t dM22 = (*fSMpk)(1,2)-(*fSMpk)(0,4); // dM22 = sum_{i,j=1,i!=j}^M w_i^2 w_j^2
2423 Double_t dM33 = (*fSMpk)(1,3)-(*fSMpk)(0,6); // dM33 = sum_{i,j=1,i!=j}^M w_i^3 w_j^3
2424 Double_t dM44 = (*fSMpk)(1,4)-(*fSMpk)(0,8); // dM44 = sum_{i,j=1,i!=j}^M w_i^4 w_j^4
2425 Double_t dM31 = (*fSMpk)(0,3)*(*fSMpk)(0,1)-(*fSMpk)(0,4); // dM31 = sum_{i,j=1,i!=j}^M w_i^3 w_j
2426 Double_t dM211 = (*fSMpk)(0,2)*(*fSMpk)(1,1)-2.*(*fSMpk)(0,3)*(*fSMpk)(0,1)
2427 - (*fSMpk)(1,2)+2.*(*fSMpk)(0,4); // dM211 = sum_{i,j,k=1,i!=j!=k}^M w_i^2 w_j w_k
2428 Double_t dM1111 = (*fSMpk)(3,1)-6.*(*fSMpk)(0,2)*(*fSMpk)(1,1)
2429 + 8.*(*fSMpk)(0,3)*(*fSMpk)(0,1)
2430 + 3.*(*fSMpk)(1,2)-6.*(*fSMpk)(0,4); // dM1111 = sum_{i,j,k,l=1,i!=j!=k!=l}^M w_i w_j w_k w_l
2431 //..............................................................................................
bc92c0cb 2432
2433
9c1a9547 2434
bc92c0cb 2435
9c1a9547 2436 // ***********************************************
2437 // **** weighted multi-particle correlations: ****
2438 // ***********************************************
2439 //..............................................................................................
2440 // weighted 2-particle correlations:
2441 Double_t two1n1nW1W1 = 0.; // <w1 w2 cos(n*(phi1-phi2))>
2442 Double_t two2n2nW2W2 = 0.; // <w1^2 w2^2 cos(2n*(phi1-phi2))>
2443 Double_t two3n3nW3W3 = 0.; // <w1^3 w2^3 cos(3n*(phi1-phi2))>
2444 Double_t two4n4nW4W4 = 0.; // <w1^4 w2^4 cos(4n*(phi1-phi2))>
2445 Double_t two1n1nW3W1 = 0.; // <w1^3 w2 cos(n*(phi1-phi2))>
2446 Double_t two1n1nW1W1W2 = 0.; // <w1 w2 w3^2 cos(n*(phi1-phi2))>
2447
2448 if(dMult>1)
2449 {
2450 if(dM11)
2451 {
2452 two1n1nW1W1 = (pow(dReQ1n1k,2)+pow(dImQ1n1k,2)-(*fSMpk)(0,2))/dM11;
2453 fQCorrelationsW->Fill(0.,two1n1nW1W1,dM11);
2454 }
2455 if(dM22)
2456 {
2457 two2n2nW2W2 = (pow(dReQ2n2k,2)+pow(dImQ2n2k,2)-(*fSMpk)(0,4))/dM22;
2458 fQCorrelationsW->Fill(1.,two2n2nW2W2,dM22);
2459 }
2460 if(dM33)
2461 {
2462 two3n3nW3W3 = (pow(dReQ3n3k,2)+pow(dImQ3n3k,2)-(*fSMpk)(0,6))/dM33;
2463 fQCorrelationsW->Fill(2.,two3n3nW3W3,dM33);
2464 }
2465 if(dM44)
2466 {
2467 two4n4nW4W4 = (pow(dReQ4n4k,2)+pow(dImQ4n4k,2)-(*fSMpk)(0,8))/dM44;
2468 fQCorrelationsW->Fill(3.,two4n4nW4W4,dM44);
2469 }
2470 if(dM31)
2471 {
2472 two1n1nW3W1 = (dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k-(*fSMpk)(0,4))/dM31;
2473 fQCorrelationsW->Fill(4.,two1n1nW3W1,dM31);
2474 }
2475 if(dM211)
2476 {
2477 two1n1nW1W1W2 = ((*fSMpk)(0,2)*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2)-(*fSMpk)(0,2))
2478 - 2.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k
2479 - (*fSMpk)(0,4)))/dM211;
2480 fQCorrelationsW->Fill(5.,two1n1nW1W1W2,dM211);
2481 }
2482 } // end of if(dMult>1)
2483 //..............................................................................................
2484
2485 //..............................................................................................
2486 // weighted 3-particle correlations:
2487 Double_t three2n1n1nW2W1W1 = 0.; // <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
2488
2489 if(dMult>2)
2490 {
2491 if(dM211)
2492 {
2493 three2n1n1nW2W1W1 = (pow(dReQ1n1k,2.)*dReQ2n2k+2.*dReQ1n1k*dImQ1n1k*dImQ2n2k-pow(dImQ1n1k,2.)*dReQ2n2k
2494 - 2.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k)
2495 - pow(dReQ2n2k,2)-pow(dImQ2n2k,2)
2496 + 2.*(*fSMpk)(0,4))/dM211;
2497 fQCorrelationsW->Fill(20.,three2n1n1nW2W1W1,dM211);
2498 }
2499 } // end of if(dMult>2)
2500 //..............................................................................................
2501
2502 //..............................................................................................
2503 // weighted 4-particle correlations:
2504 Double_t four1n1n1n1nW1W1W1W1 = 0.; // <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
2505 if(dMult>3)
2506 {
2507 if(dM1111)
2508 {
2509 four1n1n1n1nW1W1W1W1 = (pow(pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.),2)
2510 - 2.*(pow(dReQ1n1k,2.)*dReQ2n2k+2.*dReQ1n1k*dImQ1n1k*dImQ2n2k-pow(dImQ1n1k,2.)*dReQ2n2k)
2511 + 8.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k)
2512 + (pow(dReQ2n2k,2)+pow(dImQ2n2k,2))
2513 - 4.*(*fSMpk)(0,2)*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
2514 - 6.*(*fSMpk)(0,4)+2.*(*fSMpk)(1,2))/dM1111;
2515 fQCorrelationsW->Fill(40.,four1n1n1n1nW1W1W1W1,dM1111);
2516 }
2517 } // end of if(dMult>3)
2518 //..............................................................................................
2519
2520} // end of AliFlowAnalysisWithQCumulants::CalculateWeightedCorrelationsForIntegratedFlow()
bc92c0cb 2521
2522
9c1a9547 2523//================================================================================================================================
bc92c0cb 2524
2525
9c1a9547 2526void AliFlowAnalysisWithQCumulants::CalculateCorrelationsForDifferentialFlow(TString type)
2527{
2528 // calculate all correlations needed for differential flow for each (pt,eta) bin:
2529
2530 // pt and eta bin width:
2531 Double_t dBinWidthPt = 0.; // to be improved (should I promote this variable to data members?)
2532 Double_t dBinWidthEta = 0.; // to be improved (should I promote this variable to data members?)
2533
2534 if(fnBinsPt) dBinWidthPt=(fPtMax-fPtMin)/fnBinsPt;
2535 if(fnBinsEta) dBinWidthEta=(fEtaMax-fEtaMin)/fnBinsEta;
2536
2537 // multiplicity:
2538 Double_t dMult = (*fSMpk)(0,0);
2539
2540 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
2541 Double_t dReQ1n = (*fReQ)(0,0);
2542 Double_t dReQ2n = (*fReQ)(1,0);
2543 //Double_t dReQ3n = (*fReQ)(2,0);
2544 //Double_t dReQ4n = (*fReQ)(3,0);
2545 Double_t dImQ1n = (*fImQ)(0,0);
2546 Double_t dImQ2n = (*fImQ)(1,0);
2547 //Double_t dImQ3n = (*fImQ)(2,0);
2548 //Double_t dImQ4n = (*fImQ)(3,0);
2549
2550 // looping over all (pt,eta) bins and calculating correlations needed for differential flow:
2551 for(Int_t p=1;p<=fnBinsPt;p++)
2552 {
2553 for(Int_t e=1;e<=fnBinsEta;e++)
2554 {
2555 // real and imaginary parts of q_n (non-weighted Q-vector evaluated only for POIs in harmonic n for each (pt,eta) bin):
2556 Double_t dReqnPtEta = 0.;
2557 Double_t dImqnPtEta = 0.;
2558
2559 // number of POIs in each (pt,eta) bin:
2560 Double_t dmPtEta = 0.;
2561
2562 // real and imaginary parts of q''_{n}, q''_{2n}, ...
2563 // (non-weighted Q-vectors evaluated only for particles which are both RPs and POIs in harmonic n, 2n, ... for each (pt,eta) bin):
2564 Double_t dReqPrimePrime1nPtEta = 0.;
2565 Double_t dImqPrimePrime1nPtEta = 0.;
2566 Double_t dReqPrimePrime2nPtEta = 0.;
2567 Double_t dImqPrimePrime2nPtEta = 0.;
2568
2569 // number of particles which are both RPs and POIs in each (pt,eta) bin:
2570 Double_t dmPrimePrimePtEta = 0.;
2571
2572 if(type == "POI")
2573 {
2574 // q''_{n}, q''_{2n}:
2575 //...............................................................................................
2576 dReqPrimePrime1nPtEta = fReqPrimePrime1nPtEta->GetBinContent(fReqPrimePrime1nPtEta->GetBin(p,e));
2577 dImqPrimePrime1nPtEta = fImqPrimePrime1nPtEta->GetBinContent(fImqPrimePrime1nPtEta->GetBin(p,e));
2578 dReqPrimePrime2nPtEta = fReqPrimePrime2nPtEta->GetBinContent(fReqPrimePrime2nPtEta->GetBin(p,e));
2579 dImqPrimePrime2nPtEta = fImqPrimePrime2nPtEta->GetBinContent(fImqPrimePrime2nPtEta->GetBin(p,e));
2580 //...............................................................................................
2581
2582 // m'':
2583 dmPrimePrimePtEta = fmPrimePrimePtEta->GetBinContent(fmPrimePrimePtEta->GetBin(p,e));
2584
2585 // q'_{n}:
2586 dReqnPtEta = fReqnPtEta->GetBinContent(fReqnPtEta->GetBin(p,e));
2587 dImqnPtEta = fImqnPtEta->GetBinContent(fImqnPtEta->GetBin(p,e));
2588 dmPtEta = fmPtEta->GetBinContent(fmPtEta->GetBin(p,e));
2589 }
2590 else if(type == "RP")
2591 {
2592 // q_RP{n}, q_RP{2n}:
2593 //...............................................................................................
2594 dReqPrimePrime1nPtEta = fReqRP1nPtEta->GetBinContent(fReqRP1nPtEta->GetBin(p,e));
2595 dImqPrimePrime1nPtEta = fImqRP1nPtEta->GetBinContent(fImqRP1nPtEta->GetBin(p,e));
2596 dReqPrimePrime2nPtEta = fReqRP2nPtEta->GetBinContent(fReqRP2nPtEta->GetBin(p,e));
2597 dImqPrimePrime2nPtEta = fImqRP2nPtEta->GetBinContent(fImqRP2nPtEta->GetBin(p,e));
2598 //...............................................................................................
2599
2600 // m'':
2601 dmPrimePrimePtEta = fmRPPtEta->GetBinContent(fmRPPtEta->GetBin(p,e));
2602
2603 dReqnPtEta = fReqRP1nPtEta->GetBinContent(fReqRP1nPtEta->GetBin(p,e)); // not a bug ;-)
2604 dImqnPtEta = fImqRP1nPtEta->GetBinContent(fImqRP1nPtEta->GetBin(p,e)); // not a bug ;-)
2605 dmPtEta = fmRPPtEta->GetBinContent(fmRPPtEta->GetBin(p,e)); // not a bug ;-)
2606 }
2607
2608 // 2'-particle correlation:
2609 Double_t two1n1nPtEta = 0.;
2610 if(dmPtEta*dMult-dmPrimePrimePtEta)
2611 {
2612 two1n1nPtEta = (dReqnPtEta*dReQ1n+dImqnPtEta*dImQ1n-dmPrimePrimePtEta)
2613 / (dmPtEta*dMult-dmPrimePrimePtEta);
2614
2615 // fill the 2D profile to get the average correlation for each (pt, eta) bin:
2616 if(type == "POI")
2bdc5281 2617 {
9c1a9547 2618 f2pPtEtaPOI->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,two1n1nPtEta,dmPtEta*dMult-dmPrimePrimePtEta);
2619 }
2620 else if(type == "RP")
2621 {
2622 f2pPtEtaRP->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,two1n1nPtEta,dmPtEta*dMult-dmPrimePrimePtEta);
2623 }
2624 } // end of if(dmPtEta*dMult-dmPrimePrimePtEta)
2bdc5281 2625
9c1a9547 2626 // 4'-particle correlation:
2627 Double_t four1n1n1n1nPtEta = 0.;
2628 if((dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
2629 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.)) // to be improved (introduce a new variable for this expression)
2630 {
2631 four1n1n1n1nPtEta = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(dReqnPtEta*dReQ1n+dImqnPtEta*dImQ1n)
2632 - dReqPrimePrime2nPtEta*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
2633 - 2.*dImqPrimePrime2nPtEta*dReQ1n*dImQ1n
2634 - dReqnPtEta*(dReQ1n*dReQ2n+dImQ1n*dImQ2n)
2635 + dImqnPtEta*(dImQ1n*dReQ2n-dReQ1n*dImQ2n)
2636 - 2.*dMult*(dReqnPtEta*dReQ1n+dImqnPtEta*dImQ1n)
2637 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*dmPrimePrimePtEta
2638 + 6.*(dReqPrimePrime1nPtEta*dReQ1n+dImqPrimePrime1nPtEta*dImQ1n)
2639 + 1.*(dReqPrimePrime2nPtEta*dReQ2n+dImqPrimePrime2nPtEta*dImQ2n)
2640 + 2.*(dReqnPtEta*dReQ1n+dImqnPtEta*dImQ1n)
2641 + 2.*dmPrimePrimePtEta*dMult
2642 - 6.*dmPrimePrimePtEta)
2643 / ((dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
2644 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.));
2645
2646 // fill the 2D profile to get the average correlation for each (pt, eta) bin:
2647 if(type == "POI")
2648 {
2649 f4pPtEtaPOI->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,four1n1n1n1nPtEta,
2650 (dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
2651 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.));
2652 }
2653 else if(type == "RP")
2654 {
2655 f4pPtEtaRP->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,four1n1n1n1nPtEta,
2656 (dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
2657 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.));
2658 }
2659 } // end of if((dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
2660 // +dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.))
2661
2662 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
2663 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
2664
2665} // end of AliFlowAnalysisWithQCumulants::CalculateCorrelationsForDifferentialFlow()
bc92c0cb 2666
bc92c0cb 2667
9c1a9547 2668//================================================================================================================================
bc92c0cb 2669
2670
9c1a9547 2671void AliFlowAnalysisWithQCumulants::CalculateWeightedCorrelationsForDifferentialFlow(TString type)
2672{
2673 // calculate all weighted correlations needed for differential flow
2674
2675 // pt and eta bin width:
2676 Double_t dBinWidthPt = 0.; // to be improved (should I promote this variable to data members?)
2677 Double_t dBinWidthEta = 0.; // to be improved (should I promote this variable to data members?)
2678
2679 if(fnBinsPt) dBinWidthPt=(fPtMax-fPtMin)/fnBinsPt;
2680 if(fnBinsEta) dBinWidthEta=(fEtaMax-fEtaMin)/fnBinsEta;
2681
2682 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
2683 Double_t dReQ1n1k = (*fReQ)(0,1);
2684 Double_t dReQ2n2k = (*fReQ)(1,2);
2685 Double_t dReQ1n3k = (*fReQ)(0,3);
2686 //Double_t dReQ4n4k = (*fReQ)(3,4);
2687 Double_t dImQ1n1k = (*fImQ)(0,1);
2688 Double_t dImQ2n2k = (*fImQ)(1,2);
2689 Double_t dImQ1n3k = (*fImQ)(0,3);
2690 //Double_t dImQ4n4k = (*fImQ)(3,4);
2691
2692 // S^M_{p,k} (see .h file for the definition of fSMpk):
2693 Double_t dSM1p1k = (*fSMpk)(0,1);
2694 Double_t dSM1p2k = (*fSMpk)(0,2);
2695 Double_t dSM1p3k = (*fSMpk)(0,3);
2696 Double_t dSM2p1k = (*fSMpk)(1,1);
2697 Double_t dSM3p1k = (*fSMpk)(2,1);
2698
2699 // looping over all (pt,eta) bins and calculating weighted correlations needed for differential flow:
2700 for(Int_t p=1;p<=fnBinsPt;p++)
2701 {
2702 for(Int_t e=1;e<=fnBinsEta;e++)
2703 {
2704 // real and imaginary parts of q_n (non-weighted Q-vector evaluated only for POIs in harmonic n for each (pt,eta) bin):
2705 Double_t dReqnPtEta = 0.;
2706 Double_t dImqnPtEta = 0.;
2707
2708 // number of POIs in each (pt,eta) bin:
2709 Double_t dmPtEta = 0.;
2710
2711 // real and imaginary parts of q''_{n,2k}, q''_{2n,1k}, ...
2712 // (weighted Q-vectors evaluated only for particles which are both RPs and POIs in harmonic n, 2n, ... for each (pt,eta) bin):
2713 Double_t dReqPrimePrime1n2kPtEta = 0.;
2714 Double_t dImqPrimePrime1n2kPtEta = 0.;
2715 Double_t dReqPrimePrime2n1kPtEta = 0.;
2716 Double_t dImqPrimePrime2n1kPtEta = 0.;
2717
2718 // S^{m''}_{1,1}, S^{m''}_{1,2}, S^{m''}_{1,3}... (see .h file for the definition):
2719 Double_t dSmPrimePrime1p1kPtEta = 0.;
2720 Double_t dSmPrimePrime1p2kPtEta = 0.;
2721 Double_t dSmPrimePrime1p3kPtEta = 0.;
2722
2723 // M0111 from Eq. (118) in QC2c (to be improved (notation))
2724 Double_t dM0111 = 0.;
2725
2726 // qPOI_{n}: // to be improved (notation)
2727 if(type == "POI")
2728 {
2729 dReqnPtEta = fReqnPtEta->GetBinContent(fReqnPtEta->GetBin(p,e));
2730 dImqnPtEta = fImqnPtEta->GetBinContent(fImqnPtEta->GetBin(p,e));
2731 dmPtEta = fmPtEta->GetBinContent(fmPtEta->GetBin(p,e));
2732
2733 //...............................................................................................
2734 // q''_{n,2k}, q''_{2n,1k}:
2735 dReqPrimePrime1n2kPtEta = fReqPrimePrime1n2kPtEta->GetBinContent(fReqPrimePrime1n2kPtEta->GetBin(p,e));
2736 dImqPrimePrime1n2kPtEta = fImqPrimePrime1n2kPtEta->GetBinContent(fImqPrimePrime1n2kPtEta->GetBin(p,e));
2737 dReqPrimePrime2n1kPtEta = fReqPrimePrime2n1kPtEta->GetBinContent(fReqPrimePrime2n1kPtEta->GetBin(p,e));
2738 dImqPrimePrime2n1kPtEta = fImqPrimePrime2n1kPtEta->GetBinContent(fImqPrimePrime2n1kPtEta->GetBin(p,e));
2739
2740 // S^{m''}_{1,1}, S^{m''}_{1,2}, S^{m''}_{1,3}...:
2741 dSmPrimePrime1p1kPtEta = fSmPrimePrime1p1kPtEta->GetBinContent(fSmPrimePrime1p1kPtEta->GetBin(p,e));
2742 dSmPrimePrime1p2kPtEta = fSmPrimePrime1p2kPtEta->GetBinContent(fSmPrimePrime1p2kPtEta->GetBin(p,e));
2743 dSmPrimePrime1p3kPtEta = fSmPrimePrime1p3kPtEta->GetBinContent(fSmPrimePrime1p3kPtEta->GetBin(p,e));
2744
2745 // M0111 from Eq. (118) in QC2c (to be improved (notation)):
2746 dM0111 = dmPtEta*(dSM3p1k-3.*dSM1p1k*dSM1p2k+2.*dSM1p3k)
2747 - 3.*(dSmPrimePrime1p1kPtEta*(dSM2p1k-dSM1p2k)
2748 + 2.*(dSmPrimePrime1p3kPtEta-dSmPrimePrime1p2kPtEta*dSM1p1k));
2749 //...............................................................................................
2750 }
2751 else if(type == "RP")
2752 {
2753 dReqnPtEta = fReqRP1nPtEta->GetBinContent(fReqRP1nPtEta->GetBin(p,e)); // not a bug ;-)
2754 dImqnPtEta = fImqRP1nPtEta->GetBinContent(fImqRP1nPtEta->GetBin(p,e)); // not a bug ;-)
2755 dmPtEta = fmRPPtEta->GetBinContent(fmRPPtEta->GetBin(p,e)); // not a bug ;-)
2756
2757 //...............................................................................................
2758 // q''_{n,2k}, q''_{2n,1k}: (to be improved (notation)):
2759 dReqPrimePrime1n2kPtEta = fReqRP1n2kPtEta->GetBinContent(fReqRP1n2kPtEta->GetBin(p,e));
2760 dImqPrimePrime1n2kPtEta = fImqRP1n2kPtEta->GetBinContent(fImqRP1n2kPtEta->GetBin(p,e));
2761 dReqPrimePrime2n1kPtEta = fReqRP2n1kPtEta->GetBinContent(fReqRP2n1kPtEta->GetBin(p,e));
2762 dImqPrimePrime2n1kPtEta = fImqRP2n1kPtEta->GetBinContent(fImqRP2n1kPtEta->GetBin(p,e));
2763
2764 // S^{m''}_{1,1}, S^{m''}_{1,2}, S^{m''}_{1,3}...: (to be improved (notation)):
2765 dSmPrimePrime1p1kPtEta = fSmRP1p1kPtEta->GetBinContent(fSmRP1p1kPtEta->GetBin(p,e));
2766 dSmPrimePrime1p2kPtEta = fSmRP1p2kPtEta->GetBinContent(fSmRP1p2kPtEta->GetBin(p,e));
2767 dSmPrimePrime1p3kPtEta = fSmRP1p3kPtEta->GetBinContent(fSmRP1p3kPtEta->GetBin(p,e));
2768
2769 // M0111 from Eq. (118) in QC2c (to be improved (notation)):
2770 dM0111 = dmPtEta*(dSM3p1k-3.*dSM1p1k*dSM1p2k+2.*dSM1p3k)
2771 - 3.*(dSmPrimePrime1p1kPtEta*(dSM2p1k-dSM1p2k)
2772 + 2.*(dSmPrimePrime1p3kPtEta-dSmPrimePrime1p2kPtEta*dSM1p1k));
2773 //...............................................................................................
2774 }
2775
2776 // 2'-particle correlation:
2777 Double_t two1n1nW0W1PtEta = 0.;
2778 if(dmPtEta*dSM1p1k-dSmPrimePrime1p1kPtEta)
2779 {
2780 two1n1nW0W1PtEta = (dReqnPtEta*dReQ1n1k+dImqnPtEta*dImQ1n1k-dSmPrimePrime1p1kPtEta)
2781 / (dmPtEta*dSM1p1k-dSmPrimePrime1p1kPtEta);
2782
2783 // fill the 2D profile to get the average correlation for each (pt, eta) bin:
2784 if(type == "POI")
2785 {
2786 f2pPtEtaPOIW->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,two1n1nW0W1PtEta,
2787 dmPtEta*dSM1p1k-dSmPrimePrime1p1kPtEta);
2788 }
2789 else if(type == "RP")
2790 {
2791 f2pPtEtaRPW->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,two1n1nW0W1PtEta,
2792 dmPtEta*dSM1p1k-dSmPrimePrime1p1kPtEta);
2793 }
2794 } // end of if(dmPtEta*dMult-dmPrimePrimePtEta)
2795
2796 // 4'-particle correlation:
2797 Double_t four1n1n1n1nW0W1W1W1PtEta = 0.;
2798 if(dM0111)
2799 {
2800 four1n1n1n1nW0W1W1W1PtEta = ((pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.))*(dReqnPtEta*dReQ1n1k+dImqnPtEta*dImQ1n1k)
2801 - dReqPrimePrime2n1kPtEta*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))
2802 - 2.*dImqPrimePrime2n1kPtEta*dReQ1n1k*dImQ1n1k
2803 - dReqnPtEta*(dReQ1n1k*dReQ2n2k+dImQ1n1k*dImQ2n2k)
2804 + dImqnPtEta*(dImQ1n1k*dReQ2n2k-dReQ1n1k*dImQ2n2k)
2805 - 2.*dSM1p2k*(dReqnPtEta*dReQ1n1k+dImqnPtEta*dImQ1n1k)
2806 - 2.*(pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.))*dSmPrimePrime1p1kPtEta
2807 + 6.*(dReqPrimePrime1n2kPtEta*dReQ1n1k+dImqPrimePrime1n2kPtEta*dImQ1n1k)
2808 + 1.*(dReqPrimePrime2n1kPtEta*dReQ2n2k+dImqPrimePrime2n1kPtEta*dImQ2n2k)
2809 + 2.*(dReqnPtEta*dReQ1n3k+dImqnPtEta*dImQ1n3k)
2810 + 2.*dSmPrimePrime1p1kPtEta*dSM1p2k
2811 - 6.*dSmPrimePrime1p3kPtEta)
2812 / dM0111; // to be imropoved (notation of dM0111)
2813
2814 // fill the 2D profile to get the average correlation for each (pt, eta) bin:
2815 if(type == "POI")
2816 {
2817 f4pPtEtaPOIW->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,four1n1n1n1nW0W1W1W1PtEta,dM0111);
2818 }
2819 else if(type == "RP")
2820 {
2821 f4pPtEtaRPW->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,four1n1n1n1nW0W1W1W1PtEta,dM0111);
2822 }
2823 } // end of if(dM0111)
2824
2825 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
2826 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
2827
2828} // end of AliFlowAnalysisWithQCumulants::CalculateWeightedCorrelationsForDifferentialFlow(TString type)
bc92c0cb 2829
2830
9c1a9547 2831//================================================================================================================================
bc92c0cb 2832
2833
2bdc5281 2834void AliFlowAnalysisWithQCumulants::CalculateCorrectionsForNonUniformAcceptanceForNoNameIntegratedFlowCosTerms()
c365fe76 2835{
2bdc5281 2836 // calculate corrections for non-uniform acceptance of the detector for no-name integrated flow (cos terms)
c365fe76 2837
2838 // multiplicity:
2839 Double_t dMult = (*fSMpk)(0,0);
2840
2841 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
2842 Double_t dReQ1n = (*fReQ)(0,0);
2843 Double_t dReQ2n = (*fReQ)(1,0);
2844 //Double_t dReQ3n = (*fReQ)(2,0);
2845 //Double_t dReQ4n = (*fReQ)(3,0);
2846 Double_t dImQ1n = (*fImQ)(0,0);
2847 Double_t dImQ2n = (*fImQ)(1,0);
2848 //Double_t dImQ3n = (*fImQ)(2,0);
2849 //Double_t dImQ4n = (*fImQ)(3,0);
2850
2851 // *************************************************************
2852 // **** corrections for non-uniform acceptance (cos terms): ****
2853 // *************************************************************
2854 //
2855 // Remark 1: corrections for non-uniform acceptance (cos terms) calculated with non-weighted Q-vectors
2856 // are stored in 1D profile fQCorrectionsCos.
2857 // Remark 2: binning of fQCorrectionsCos is organized as follows:
2858 // --------------------------------------------------------------------------------------------------------------------
2859 // 1st bin: <<cos(n*(phi1))>> = cosP1n
2860 // 2nd bin: <<cos(n*(phi1+phi2))>> = cosP1nP1n
2861 // 3rd bin: <<cos(n*(phi1-phi2-phi3))>> = cosP1nM1nM1n
2862 // ...
2863 // --------------------------------------------------------------------------------------------------------------------
2864
2865 // 1-particle:
2866 Double_t cosP1n = 0.; // <<cos(n*(phi1))>>
2867
2868 if(dMult>0)
2869 {
2870 cosP1n = dReQ1n/dMult;
2871
2872 fQCorrectionsCos->Fill(0.,cosP1n,dMult);
2873 }
2874
2875 // 2-particle:
2876 Double_t cosP1nP1n = 0.; // <<cos(n*(phi1+phi2))>>
2877
2878 if(dMult>1)
2879 {
2880 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
2881
2882 fQCorrectionsCos->Fill(1.,cosP1nP1n,dMult*(dMult-1));
2883 }
2884
2885 // 3-particle:
2886 Double_t cosP1nM1nM1n = 0.; // <<cos(n*(phi1-phi2-phi3))>>
2887
2888 if(dMult>2)
2889 {
2890 cosP1nM1nM1n = ( dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2)) - dReQ1n*dReQ2n - dImQ1n*dImQ2n - 2.*(dMult-1)*dReQ1n ) /(dMult*(dMult-1)*(dMult-2));
2891
2892 fQCorrectionsCos->Fill(2.,cosP1nM1nM1n,dMult*(dMult-1)*(dMult-2));
2893 }
2894
2bdc5281 2895} // end of AliFlowAnalysisWithQCumulants::CalculateCorrectionsForNonUniformAcceptanceForNoNameIntegratedFlowCosTerms()
c365fe76 2896
2897
2898//================================================================================================================================
2899
2900
2bdc5281 2901void AliFlowAnalysisWithQCumulants::CalculateCorrectionsForNonUniformAcceptanceForNoNameIntegratedFlowSinTerms()
c365fe76 2902{
2bdc5281 2903 // calculate corrections for non-uniform acceptance of the detector for no-name integrated flow (sin terms)
c365fe76 2904
2905 // multiplicity:
2906 Double_t dMult = (*fSMpk)(0,0);
2907
2908 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
2909 Double_t dReQ1n = (*fReQ)(0,0);
2910 Double_t dReQ2n = (*fReQ)(1,0);
2911 //Double_t dReQ3n = (*fReQ)(2,0);
2912 //Double_t dReQ4n = (*fReQ)(3,0);
2913 Double_t dImQ1n = (*fImQ)(0,0);
2914 Double_t dImQ2n = (*fImQ)(1,0);
2915 //Double_t dImQ3n = (*fImQ)(2,0);
2916 //Double_t dImQ4n = (*fImQ)(3,0);
2917
2918 // *************************************************************
2919 // **** corrections for non-uniform acceptance (sin terms): ****
2920 // *************************************************************
2921 //
2922 // Remark 1: corrections for non-uniform acceptance (sin terms) calculated with non-weighted Q-vectors
2923 // are stored in 1D profile fQCorrectionsSin.
2924 // Remark 2: binning of fQCorrectionsSin is organized as follows:
2925 // --------------------------------------------------------------------------------------------------------------------
2926 // 1st bin: <<sin(n*(phi1))>> = sinP1n
2927 // 2nd bin: <<sin(n*(phi1+phi2))>> = sinP1nP1n
2928 // 3rd bin: <<sin(n*(phi1-phi2-phi3))>> = sinP1nM1nM1n
2929 // ...
2930 // --------------------------------------------------------------------------------------------------------------------
2931
2932 // 1-particle:
2933 Double_t sinP1n = 0.; // <sin(n*(phi1))>
2934
2935 if(dMult>0)
2936 {
2937 sinP1n = dImQ1n/dMult;
2938
2939 fQCorrectionsSin->Fill(0.,sinP1n,dMult);
2940 }
2941
2942 // 2-particle:
2943 Double_t sinP1nP1n = 0.; // <<sin(n*(phi1+phi2))>>
2944
2945 if(dMult>1)
2946 {
2947 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
2948
2949 fQCorrectionsSin->Fill(1.,sinP1nP1n,dMult*(dMult-1));
2950 }
2951
2952 // 3-particle:
2953 Double_t sinP1nM1nM1n = 0.; // <<sin(n*(phi1-phi2-phi3))>>
2954
2955 if(dMult>2)
2956 {
2957 sinP1nM1nM1n = ( -dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2)) + dReQ1n*dImQ2n - dImQ1n*dReQ2n + 2.*(dMult-1)*dImQ1n ) /(dMult*(dMult-1)*(dMult-2));
2958
2959 fQCorrectionsSin->Fill(2.,sinP1nM1nM1n,dMult*(dMult-1)*(dMult-2));
2960 }
2961
2bdc5281 2962} // end of AliFlowAnalysisWithQCumulants::CalculateCorrectionsForNonUniformAcceptanceForNoNameIntegratedFlowSinTerms()
2963
2964
2965//================================================================================================================================
2966
2967
2968void AliFlowAnalysisWithQCumulants::CalculateCorrectionsForNonUniformAcceptanceForDifferentialFlowCosTerms(TString type)
2969{
2970 // calculate corrections for non-uniform acceptance of the detector for differential flow (cos terms)
2971
2972 // pt and eta bin width:
2973 Double_t dBinWidthPt = 0.; // to be improved (should I promote this variable to data members?)
2974 Double_t dBinWidthEta = 0.; // to be improved (should I promote this variable to data members?)
2975
2976 if(fnBinsPt) dBinWidthPt=(fPtMax-fPtMin)/fnBinsPt;
2977 if(fnBinsEta) dBinWidthEta=(fEtaMax-fEtaMin)/fnBinsEta;
2978
2979 // multiplicity:
2980 //Double_t dMult = (*fSMpk)(0,0);
2981
2982 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
2983 //Double_t dReQ1n = (*fReQ)(0,0);
2984 //Double_t dReQ2n = (*fReQ)(1,0);
2985 //Double_t dReQ3n = (*fReQ)(2,0);
2986 //Double_t dReQ4n = (*fReQ)(3,0);
2987 //Double_t dImQ1n = (*fImQ)(0,0);
2988 //Double_t dImQ2n = (*fImQ)(1,0);
2989 //Double_t dImQ3n = (*fImQ)(2,0);
2990 //Double_t dImQ4n = (*fImQ)(3,0);
2991
2992 // looping over all (pt,eta) bins and calculating correlations needed for differential flow:
2993 for(Int_t p=1;p<=fnBinsPt;p++)
2994 {
2995 for(Int_t e=1;e<=fnBinsEta;e++)
2996 {
2997 // real and imaginary parts of q_n (non-weighted Q-vector evaluated only for POIs in harmonic n for each (pt,eta) bin):
2998 Double_t dReqnPtEta = 0.;
2999 Double_t dImqnPtEta = 0.;
3000
3001 // number of POIs in each (pt,eta) bin:
3002 Double_t dmPtEta = 0.;
3003
3004 // real and imaginary parts of q''_{n}, q''_{2n}, ...
3005 // (non-weighted Q-vectors evaluated only for particles which are both RPs and POIs in harmonic n, 2n, ... for each (pt,eta) bin):
3006 //Double_t dReqPrimePrime1nPtEta = 0.;
3007 //Double_t dImqPrimePrime1nPtEta = 0.;
3008 //Double_t dReqPrimePrime2nPtEta = 0.;
3009 //Double_t dImqPrimePrime2nPtEta = 0.;
3010
3011 // number of particles which are both RPs and POIs in each (pt,eta) bin:
3012 //Double_t dmPrimePrimePtEta = 0.;
3013
3014 if(type == "POI")
3015 {
3016 // q''_{n}, q''_{2n}:
3017 //...............................................................................................
3018 //dReqPrimePrime1nPtEta = fReqPrimePrime1nPtEta->GetBinContent(fReqPrimePrime1nPtEta->GetBin(p,e));
3019 //dImqPrimePrime1nPtEta = fImqPrimePrime1nPtEta->GetBinContent(fImqPrimePrime1nPtEta->GetBin(p,e));
3020 //dReqPrimePrime2nPtEta = fReqPrimePrime2nPtEta->GetBinContent(fReqPrimePrime2nPtEta->GetBin(p,e));
3021 //dImqPrimePrime2nPtEta = fImqPrimePrime2nPtEta->GetBinContent(fImqPrimePrime2nPtEta->GetBin(p,e));
3022 //...............................................................................................
3023
3024 // m'':
3025 //dmPrimePrimePtEta = fmPrimePrimePtEta->GetBinContent(fmPrimePrimePtEta->GetBin(p,e));
3026
3027 // q'_{n}:
3028 dReqnPtEta = fReqnPtEta->GetBinContent(fReqnPtEta->GetBin(p,e));
3029 dImqnPtEta = fImqnPtEta->GetBinContent(fImqnPtEta->GetBin(p,e));
3030 dmPtEta = fmPtEta->GetBinContent(fmPtEta->GetBin(p,e));
3031 }
3032 else if(type == "RP")
3033 {
3034 // q_RP{n}, q_RP{2n}:
3035 //...............................................................................................
3036 //dReqPrimePrime1nPtEta = fReqRP1nPtEta->GetBinContent(fReqRP1nPtEta->GetBin(p,e));
3037 //dImqPrimePrime1nPtEta = fImqRP1nPtEta->GetBinContent(fImqRP1nPtEta->GetBin(p,e));
3038 //dReqPrimePrime2nPtEta = fReqRP2nPtEta->GetBinContent(fReqRP2nPtEta->GetBin(p,e));
3039 //dImqPrimePrime2nPtEta = fImqRP2nPtEta->GetBinContent(fImqRP2nPtEta->GetBin(p,e));
3040 //...............................................................................................
3041
3042 // m'':
3043 //dmPrimePrimePtEta = fmRPPtEta->GetBinContent(fmRPPtEta->GetBin(p,e));
3044
3045 dReqnPtEta = fReqRP1nPtEta->GetBinContent(fReqRP1nPtEta->GetBin(p,e)); // not a bug ;-)
3046 dImqnPtEta = fImqRP1nPtEta->GetBinContent(fImqRP1nPtEta->GetBin(p,e)); // not a bug ;-)
3047 dmPtEta = fmRPPtEta->GetBinContent(fmRPPtEta->GetBin(p,e)); // not a bug ;-)
3048 }
3049
3050 // 1'-p correction:
3051 Double_t oneCosP1nPsiPtEta = 0.;
3052
3053 if(dmPtEta)
3054 {
3055 oneCosP1nPsiPtEta = dReqnPtEta/dmPtEta;
3056
3057 // fill the 2D profile to get the average 1'-p correction for each (pt, eta) bin:
3058 if(type == "POI")
3059 {
3060 fCorrectionsCosP1nPsiPtEtaPOI->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,
3061 oneCosP1nPsiPtEta,dmPtEta);
3062 }
3063 else if(type == "RP")
3064 {
3065 fCorrectionsCosP1nPsiPtEtaRP->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,
3066 oneCosP1nPsiPtEta,dmPtEta);
3067 }
3068 } // end of if(dmPtEta*dMult-dmPrimePrimePtEta)
3069
3070 /*
3071
3072 // 4'-particle correlation:
3073 Double_t four1n1n1n1nPtEta = 0.;
3074 if((dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
3075 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.)) // to be improved (introduce a new variable for this expression)
3076 {
3077 four1n1n1n1nPtEta = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(dReqnPtEta*dReQ1n+dImqnPtEta*dImQ1n)
3078 - dReqPrimePrime2nPtEta*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
3079 - 2.*dImqPrimePrime2nPtEta*dReQ1n*dImQ1n
3080 - dReqnPtEta*(dReQ1n*dReQ2n+dImQ1n*dImQ2n)
3081 + dImqnPtEta*(dImQ1n*dReQ2n-dReQ1n*dImQ2n)
3082 - 2.*dMult*(dReqnPtEta*dReQ1n+dImqnPtEta*dImQ1n)
3083 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*dmPrimePrimePtEta
3084 + 6.*(dReqPrimePrime1nPtEta*dReQ1n+dImqPrimePrime1nPtEta*dImQ1n)
3085 + 1.*(dReqPrimePrime2nPtEta*dReQ2n+dImqPrimePrime2nPtEta*dImQ2n)
3086 + 2.*(dReqnPtEta*dReQ1n+dImqnPtEta*dImQ1n)
3087 + 2.*dmPrimePrimePtEta*dMult
3088 - 6.*dmPrimePrimePtEta)
3089 / ((dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
3090 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.));
3091
3092 // fill the 2D profile to get the average correlation for each (pt, eta) bin:
3093 if(type == "POI")
3094 {
3095 f4pPtEtaPOI->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,four1n1n1n1nPtEta,
3096 (dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
3097 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.));
3098 }
3099 else if(type == "RP")
3100 {
3101 f4pPtEtaRP->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,four1n1n1n1nPtEta,
3102 (dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
3103 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.));
3104 }
3105 } // end of if((dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
3106 // +dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.))
3107
3108 */
3109
3110 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
3111 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
3112
3113} // end of AliFlowAnalysisWithQCumulants::CalculateCorrectionsForNonUniformAcceptanceForDifferentialFlowCosTerms(TString type)
3114
3115
3116//================================================================================================================================
3117
3118
3119void AliFlowAnalysisWithQCumulants::CalculateCorrectionsForNonUniformAcceptanceForDifferentialFlowSinTerms(TString type)
3120{
3121 // calculate corrections for non-uniform acceptance of the detector for differential flow (sin terms)
3122
3123 // pt and eta bin width:
3124 Double_t dBinWidthPt = 0.; // to be improved (should I promote this variable to data members?)
3125 Double_t dBinWidthEta = 0.; // to be improved (should I promote this variable to data members?)
3126
3127 if(fnBinsPt) dBinWidthPt=(fPtMax-fPtMin)/fnBinsPt;
3128 if(fnBinsEta) dBinWidthEta=(fEtaMax-fEtaMin)/fnBinsEta;
3129
3130 // multiplicity:
3131 //Double_t dMult = (*fSMpk)(0,0);
3132
3133 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
3134 //Double_t dReQ1n = (*fReQ)(0,0);
3135 //Double_t dReQ2n = (*fReQ)(1,0);
3136 //Double_t dReQ3n = (*fReQ)(2,0);
3137 //Double_t dReQ4n = (*fReQ)(3,0);
3138 //Double_t dImQ1n = (*fImQ)(0,0);
3139 //Double_t dImQ2n = (*fImQ)(1,0);
3140 //Double_t dImQ3n = (*fImQ)(2,0);
3141 //Double_t dImQ4n = (*fImQ)(3,0);
3142
3143 // looping over all (pt,eta) bins and calculating correlations needed for differential flow:
3144 for(Int_t p=1;p<=fnBinsPt;p++)
3145 {
3146 for(Int_t e=1;e<=fnBinsEta;e++)
3147 {
3148 // real and imaginary parts of q_n (non-weighted Q-vector evaluated only for POIs in harmonic n for each (pt,eta) bin):
3149 Double_t dReqnPtEta = 0.;
3150 Double_t dImqnPtEta = 0.;
3151
3152 // number of POIs in each (pt,eta) bin:
3153 Double_t dmPtEta = 0.;
3154
3155 // real and imaginary parts of q''_{n}, q''_{2n}, ...
3156 // (non-weighted Q-vectors evaluated only for particles which are both RPs and POIs in harmonic n, 2n, ... for each (pt,eta) bin):
3157 //Double_t dReqPrimePrime1nPtEta = 0.;
3158 //Double_t dImqPrimePrime1nPtEta = 0.;
3159 //Double_t dReqPrimePrime2nPtEta = 0.;
3160 //Double_t dImqPrimePrime2nPtEta = 0.;
3161
3162 // number of particles which are both RPs and POIs in each (pt,eta) bin:
3163 //Double_t dmPrimePrimePtEta = 0.;
3164
3165 if(type == "POI")
3166 {
3167 // q''_{n}, q''_{2n}:
3168 //...............................................................................................
3169 //dReqPrimePrime1nPtEta = fReqPrimePrime1nPtEta->GetBinContent(fReqPrimePrime1nPtEta->GetBin(p,e));
3170 //dImqPrimePrime1nPtEta = fImqPrimePrime1nPtEta->GetBinContent(fImqPrimePrime1nPtEta->GetBin(p,e));
3171 //dReqPrimePrime2nPtEta = fReqPrimePrime2nPtEta->GetBinContent(fReqPrimePrime2nPtEta->GetBin(p,e));
3172 //dImqPrimePrime2nPtEta = fImqPrimePrime2nPtEta->GetBinContent(fImqPrimePrime2nPtEta->GetBin(p,e));
3173 //...............................................................................................
3174
3175 // m'':
3176 //dmPrimePrimePtEta = fmPrimePrimePtEta->GetBinContent(fmPrimePrimePtEta->GetBin(p,e));
3177
3178 // q'_{n}:
3179 dReqnPtEta = fReqnPtEta->GetBinContent(fReqnPtEta->GetBin(p,e));
3180 dImqnPtEta = fImqnPtEta->GetBinContent(fImqnPtEta->GetBin(p,e));
3181 dmPtEta = fmPtEta->GetBinContent(fmPtEta->GetBin(p,e));
3182 }
3183 else if(type == "RP")
3184 {
3185 // q_RP{n}, q_RP{2n}:
3186 //...............................................................................................
3187 //dReqPrimePrime1nPtEta = fReqRP1nPtEta->GetBinContent(fReqRP1nPtEta->GetBin(p,e));
3188 //dImqPrimePrime1nPtEta = fImqRP1nPtEta->GetBinContent(fImqRP1nPtEta->GetBin(p,e));
3189 //dReqPrimePrime2nPtEta = fReqRP2nPtEta->GetBinContent(fReqRP2nPtEta->GetBin(p,e));
3190 //dImqPrimePrime2nPtEta = fImqRP2nPtEta->GetBinContent(fImqRP2nPtEta->GetBin(p,e));
3191 //...............................................................................................
3192
3193 // m'':
3194 //dmPrimePrimePtEta = fmRPPtEta->GetBinContent(fmRPPtEta->GetBin(p,e));
3195
3196 dReqnPtEta = fReqRP1nPtEta->GetBinContent(fReqRP1nPtEta->GetBin(p,e)); // not a bug ;-)
3197 dImqnPtEta = fImqRP1nPtEta->GetBinContent(fImqRP1nPtEta->GetBin(p,e)); // not a bug ;-)
3198 dmPtEta = fmRPPtEta->GetBinContent(fmRPPtEta->GetBin(p,e)); // not a bug ;-)
3199 }
3200
3201 // 1'-p correction:
3202 Double_t oneSinP1nPsiPtEta = 0.;
3203
3204 if(dmPtEta)
3205 {
3206 oneSinP1nPsiPtEta = dImqnPtEta/dmPtEta;
3207
3208 // fill the 2D profile to get the average 1'-p correction for each (pt, eta) bin:
3209 if(type == "POI")
3210 {
3211 fCorrectionsSinP1nPsiPtEtaPOI->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,
3212 oneSinP1nPsiPtEta,dmPtEta);
3213 }
3214 else if(type == "RP")
3215 {
3216 fCorrectionsSinP1nPsiPtEtaRP->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,
3217 oneSinP1nPsiPtEta,dmPtEta);
3218 }
3219 } // end of if(dmPtEta*dMult-dmPrimePrimePtEta)
3220
3221 /*
3222
3223 // 4'-particle correlation:
3224 Double_t four1n1n1n1nPtEta = 0.;
3225 if((dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
3226 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.)) // to be improved (introduce a new variable for this expression)
3227 {
3228 four1n1n1n1nPtEta = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(dReqnPtEta*dReQ1n+dImqnPtEta*dImQ1n)
3229 - dReqPrimePrime2nPtEta*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
3230 - 2.*dImqPrimePrime2nPtEta*dReQ1n*dImQ1n
3231 - dReqnPtEta*(dReQ1n*dReQ2n+dImQ1n*dImQ2n)
3232 + dImqnPtEta*(dImQ1n*dReQ2n-dReQ1n*dImQ2n)
3233 - 2.*dMult*(dReqnPtEta*dReQ1n+dImqnPtEta*dImQ1n)
3234 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*dmPrimePrimePtEta
3235 + 6.*(dReqPrimePrime1nPtEta*dReQ1n+dImqPrimePrime1nPtEta*dImQ1n)
3236 + 1.*(dReqPrimePrime2nPtEta*dReQ2n+dImqPrimePrime2nPtEta*dImQ2n)
3237 + 2.*(dReqnPtEta*dReQ1n+dImqnPtEta*dImQ1n)
3238 + 2.*dmPrimePrimePtEta*dMult
3239 - 6.*dmPrimePrimePtEta)
3240 / ((dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
3241 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.));
3242
3243 // fill the 2D profile to get the average correlation for each (pt, eta) bin:
3244 if(type == "POI")
3245 {
3246 f4pPtEtaPOI->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,four1n1n1n1nPtEta,
3247 (dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
3248 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.));
3249 }
3250 else if(type == "RP")
3251 {
3252 f4pPtEtaRP->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,four1n1n1n1nPtEta,
3253 (dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
3254 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.));
3255 }
3256 } // end of if((dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
3257 // +dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.))
3258
3259 */
3260
3261 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
3262 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
3263
3264} // end of AliFlowAnalysisWithQCumulants::CalculateCorrectionsForNonUniformAcceptanceForDifferentialFlowSinTerms(TString type)
c365fe76 3265
3266
3267//================================================================================================================================
3268
3269
9c1a9547 3270void AliFlowAnalysisWithQCumulants::EvaluateNestedLoopsForIntegratedFlow(AliFlowEventSimple* anEvent)
3271{
3272 // evaluate the nested loops relevant for integrated flow (needed for cross-checking the results)
3d824203 3273
9c1a9547 3274 Int_t nPrim = anEvent->NumberOfTracks();
dee1e0e0 3275
9c1a9547 3276 TH1F *phiWeights = NULL; // histogram with phi weights
3277 Int_t nBinsPhi = 0;
3d824203 3278
9c1a9547 3279 if(fUsePhiWeights)
3280 {
3281 if(!fWeightsList)
3282 {
3283 cout<<" WARNING: fWeightsList is NULL pointer in AFAWQC::ENLFIF(). "<<endl;
3284 exit(0);
3285 }
3286 phiWeights = dynamic_cast<TH1F *>(fWeightsList->FindObject("phi_weights"));
3287 if(!phiWeights)
3288 {
3289 cout<<" WARNING: couldn't access the histogram with phi weights in AFAWQC::ENLFIF(). "<<endl;
3290 exit(0);
3291 }
3292 nBinsPhi = phiWeights->GetNbinsX();
3293 }
77515452 3294
9c1a9547 3295 Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
3296 Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1., wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
77515452 3297
9c1a9547 3298 Int_t n=2; // to be improved
77515452 3299
9c1a9547 3300 // ******************************************
3301 // **** NESTED LOOPS FOR INTEGRATED FLOW ****
3302 // ******************************************
3303 //
3304 // Remark 1: multi-particle correlations calculated with nested loops without weights are stored in 1D profile fDirectCorrelations;
3305 // Remark 2: multi-particle correlations calculated with nested loops with weights are stored in 1D profile fDirectCorrelationsW;
3306
3307 // Remark 3: binning of fDirectCorrelations is organized as follows:
3308 // --------------------------------------------------------------------------------------------------------------------
3309 // 1st bin: <2>_{1n|1n} = two1n1n = cos(n*(phi1-phi2))>
3310 // 2nd bin: <2>_{2n|2n} = two2n2n = cos(2n*(phi1-phi2))>
3311 // 3rd bin: <2>_{3n|3n} = two3n3n = cos(3n*(phi1-phi2))>
3312 // 4th bin: <2>_{4n|4n} = two4n4n = cos(4n*(phi1-phi2))>
3313 // 5th bin: ---- EMPTY ----
3314 // 6th bin: <3>_{2n|1n,1n} = three2n1n1n = <cos(n*(2.*phi1-phi2-phi3))>
3315 // 7th bin: <3>_{3n|2n,1n} = three3n2n1n = <cos(n*(3.*phi1-2.*phi2-phi3))>
3316 // 8th bin: <3>_{4n|2n,2n} = three4n2n2n = <cos(n*(4.*phi1-2.*phi2-2.*phi3))>
3317 // 9th bin: <3>_{4n|3n,1n} = three4n3n1n = <cos(n*(4.*phi1-3.*phi2-phi3))>
3318 // 10th bin: ---- EMPTY ----
3319 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1n = <cos(n*(phi1+phi2-phi3-phi4))>
3320 // 12th bin: <4>_{2n,1n|2n,1n} = four2n1n2n1n = <cos(2.*n*(phi1+phi2-phi3-phi4))>
3321 // 13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n = <cos(n*(2.*phi1+phi2-2.*phi3-phi4))>
3322 // 14th bin: <4>_{3n|1n,1n,1n} = four3n1n1n1n = <cos(n*(3.*phi1-phi2-phi3-phi4))>
3323 // 15th bin: <4>_{3n,1n|3n,1n} = four3n1n3n1n = <cos(n*(4.*phi1-2.*phi2-phi3-phi4))>
3324 // 16th bin: <4>_{3n,1n|2n,2n} = four3n1n2n2n = <cos(n*(3.*phi1+phi2-2.*phi3-2.*phi4))>
3325 // 17th bin: <4>_{4n|2n,1n,1n} = four4n2n1n1n = <cos(n*(3.*phi1+phi2-3.*phi3-phi4))>
3326 // 18th bin: ---- EMPTY ----
3327 // 19th bin: <5>_{2n|1n,1n,1n,1n} = five2n1n1n1n1n = <cos(n*(2.*phi1+phi2-phi3-phi4-phi5))>
3328 // 20th bin: <5>_{2n,2n|2n,1n,1n} = five2n2n2n1n1n = <cos(n*(2.*phi1+2.*phi2-2.*phi3-phi4-phi5))>
3329 // 21st bin: <5>_{3n,1n|2n,1n,1n} = five3n1n2n1n1n = <cos(n*(3.*phi1+phi2-2.*phi3-phi4-phi5))>
3330 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = five4n1n1n1n1n = <cos(n*(4.*phi1-phi2-phi3-phi4-phi5))>
3331 // 23rd bin: ---- EMPTY ----
3332 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = six1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3-phi4-phi5-phi6))>
3333 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = six2n1n1n2n1n1n = <cos(n*(2.*phi1+2.*phi2-phi3-phi4-phi5-phi6))>
3334 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = six2n2n1n1n1n1n = <cos(n*(3.*phi1+phi2-phi3-phi4-phi5-phi6))>
3335 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = six3n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-2.*phi4-phi5-phi6))>
3336 // 28th bin: ---- EMPTY ----
3337 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = seven2n1n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
3338 // 30th bin: ---- EMPTY ----
3339 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = eight1n1n1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
3340 // --------------------------------------------------------------------------------------------------------------------
3341
3342 // Remark 4: binning of fDirectCorrelationsW is organized as follows:
3343 //..............................................................................................
3344 // ---- bins 1-20: 2-particle correlations ----
3345 // 1st bin: two1n1nW1W1 = <w1 w2 cos(n*(phi1-phi2))>
3346 // 2nd bin: two2n2nW2W2 = <w1^2 w2^2 cos(2n*(phi1-phi2))>
3347 // 3rd bin: two3n3nW3W3 = <w1^3 w2^3 cos(3n*(phi1-phi2))>
3348 // 4th bin: two4n4nW4W4 = <w1^4 w2^4 cos(4n*(phi1-phi2))>
3349 // 5th bin: two1n1nW3W1 = <w1^3 w2 cos(n*(phi1-phi2))>
3350 // 6th bin: two1n1nW1W1W2 = <w1 w2 w3^2 cos(n*(phi1-phi2))>
3351 // ---- bins 21-40: 3-particle correlations ----
3352 // 21st bin: three2n1n1nW2W1W1 = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
3353 // ---- bins 41-60: 4-particle correlations ----
3354 // 41st bin: four1n1n1n1nW1W1W1W1 = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
3355 // ---- bins 61-80: 5-particle correlations ----
3356 // ---- bins 81-100: 6-particle correlations ----
3357 // ---- bins 101-120: 7-particle correlations ----
3358 // ---- bins 121-140: 8-particle correlations ----
3359 //..............................................................................................
77515452 3360
c365fe76 3361 // Remark 5: corrections for non-uniform acceptance (cos terms) calculated with nested loops are stored
3362 // in 1D profile fDirectCorrectionsCos (binning is the same as in fQCorrectionsCos - see above);
3363 // Remark 6: corrections for non-uniform acceptance (sin terms) calculated with nested loops are stored
3364 // in 1D profile fDirectCorrectionsSin (binning is the same as in fQCorrectionsSin - see above);
77515452 3365
9c1a9547 3366 // 2-particle correlations:
3367 for(Int_t i1=0;i1<nPrim;i1++)
bc92c0cb 3368 {
dee1e0e0 3369 fTrack=anEvent->GetTrack(i1);
9c1a9547 3370 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3371 phi1=fTrack->Phi();
3d824203 3372 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
c365fe76 3373 // corrections for non-uniform acceptance (cos terms)
3374 fDirectCorrectionsCos->Fill(0.,cos(n*phi1),1.); // <cos(n*phi1)>
3375 // corrections for non-uniform acceptance (sin terms)
3376 fDirectCorrectionsSin->Fill(0.,sin(n*phi1),1.); // <sin(n*phi1)>
9c1a9547 3377 for(Int_t i2=0;i2<nPrim;i2++)
bc92c0cb 3378 {
dee1e0e0 3379 if(i2==i1)continue;
3380 fTrack=anEvent->GetTrack(i2);
9c1a9547 3381 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3382 phi2=fTrack->Phi();
3d824203 3383 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
9c1a9547 3384
3385 // non-weighted:
3386 //------------------------------------------------------------------------------
3387 fDirectCorrelations->Fill(0.,cos(n*(phi1-phi2)),1.); // <cos(n*(phi1-phi2))>
3388 fDirectCorrelations->Fill(1.,cos(2.*n*(phi1-phi2)),1.); // <cos(2n*(phi1-phi2))>
3389 fDirectCorrelations->Fill(2.,cos(3.*n*(phi1-phi2)),1.); // <cos(3n*(phi1-phi2))>
3390 fDirectCorrelations->Fill(3.,cos(4.*n*(phi1-phi2)),1.); // <cos(4n*(phi1-phi2))>
3391 //------------------------------------------------------------------------------
3392
3393 // weighted:
3394 //................................................................................................................
3395 fDirectCorrelationsW->Fill(0.,cos(n*(phi1-phi2)),wPhi1*wPhi2); // <w1 w2 cos( n*(phi1-phi2))>
3396 fDirectCorrelationsW->Fill(1.,cos(2.*n*(phi1-phi2)),pow(wPhi1,2)*pow(wPhi2,2)); // <w1^2 w2^2 cos(2n*(phi1-phi2))>
3397 fDirectCorrelationsW->Fill(2.,cos(3.*n*(phi1-phi2)),pow(wPhi1,3)*pow(wPhi2,3)); // <w1^3 w2^3 cos(3n*(phi1-phi2))>
3398 fDirectCorrelationsW->Fill(3.,cos(4.*n*(phi1-phi2)),pow(wPhi1,4)*pow(wPhi2,4)); // <w1^4 w2^4 cos(4n*(phi1-phi2))>
3399 fDirectCorrelationsW->Fill(4.,cos(n*(phi1-phi2)),pow(wPhi1,3)*wPhi2); // <w1^3 w2 cos(n*(phi1-phi2))>
3400 //................................................................................................................
c365fe76 3401
3402 // corrections for non-uniform acceptance (cos terms)
3403 //................................................................................................................
3404 fDirectCorrectionsCos->Fill(1.,cos(n*(phi1+phi2)),1.); // <<cos(n*(phi1+phi2))>>
3405 //................................................................................................................
3406
3407 // corrections for non-uniform acceptance (sin terms)
3408 //................................................................................................................
3409 fDirectCorrectionsSin->Fill(1.,sin(n*(phi1+phi2)),1.); // <<sin(n*(phi1+phi2))>>
3410 //................................................................................................................
3411
bc92c0cb 3412 }
3413 }
c365fe76 3414
9c1a9547 3415 // 3-particle correlations:
3416 for(Int_t i1=0;i1<nPrim;i1++)
bc92c0cb 3417 {
dee1e0e0 3418 fTrack=anEvent->GetTrack(i1);
9c1a9547 3419 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3420 phi1=fTrack->Phi();
3d824203 3421 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
9c1a9547 3422 for(Int_t i2=0;i2<nPrim;i2++)
bc92c0cb 3423 {
dee1e0e0 3424 if(i2==i1)continue;
3425 fTrack=anEvent->GetTrack(i2);
9c1a9547 3426 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3427 phi2=fTrack->Phi();
3d824203 3428 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
9c1a9547 3429 for(Int_t i3=0;i3<nPrim;i3++)
bc92c0cb 3430 {
dee1e0e0 3431 if(i3==i1||i3==i2)continue;
3432 fTrack=anEvent->GetTrack(i3);
9c1a9547 3433 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3434 phi3=fTrack->Phi();
3d824203 3435 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
3d824203 3436
9c1a9547 3437 // non-weighted:
3438 //-----------------------------------------------------------------------------------
3439 fDirectCorrelations->Fill(5.,cos(2.*n*phi1-n*(phi2+phi3)),1.); //<3>_{2n|nn,n}
3440 fDirectCorrelations->Fill(6.,cos(3.*n*phi1-2.*n*phi2-n*phi3),1.); //<3>_{3n|2n,n}
3441 fDirectCorrelations->Fill(7.,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1.); //<3>_{4n|2n,2n}
3442 fDirectCorrelations->Fill(8.,cos(4.*n*phi1-3.*n*phi2-n*phi3),1.); //<3>_{4n|3n,n}
3443 //-----------------------------------------------------------------------------------
3d824203 3444
9c1a9547 3445 // weighted:
3446 //..............................................................................................................................
3447 // 2-p:
3448 fDirectCorrelationsW->Fill(5.,cos(n*(phi1-phi2)),wPhi1*wPhi2*pow(wPhi3,2)); // <w1 w2 w3^2 cos(n*(phi1-phi2))>
3d824203 3449
9c1a9547 3450 // 3-p:
3451 fDirectCorrelationsW->Fill(20.,cos(2.*n*phi1-n*(phi2+phi3)),pow(wPhi1,2)*wPhi2*wPhi3); // <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
3452 //..............................................................................................................................
3d824203 3453
c365fe76 3454
3455 // corrections for non-uniform acceptance (cos terms)
3456 //................................................................................................................
3457 fDirectCorrectionsCos->Fill(2.,cos(n*(phi1-phi2-phi3)),1.); // <<cos(n*(phi1-phi2-phi3))>>
3458 //................................................................................................................
3459
3460 // corrections for non-uniform acceptance (sin terms)
3461 //................................................................................................................
3462 fDirectCorrectionsSin->Fill(2.,sin(n*(phi1-phi2-phi3)),1.); // <<sin(n*(phi1-phi2-phi3))>>
3463 //................................................................................................................
3464
bc92c0cb 3465 }
3466 }
3467 }
3d824203 3468
9c1a9547 3469 // 4-particle correlations:
3470 for(Int_t i1=0;i1<nPrim;i1++)
bc92c0cb 3471 {
dee1e0e0 3472 fTrack=anEvent->GetTrack(i1);
9c1a9547 3473 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3474 phi1=fTrack->Phi();
3d824203 3475 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
9c1a9547 3476 for(Int_t i2=0;i2<nPrim;i2++)
bc92c0cb 3477 {
dee1e0e0 3478 if(i2==i1)continue;
3479 fTrack=anEvent->GetTrack(i2);
9c1a9547 3480 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3481 phi2=fTrack->Phi();
3d824203 3482 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
9c1a9547 3483 for(Int_t i3=0;i3<nPrim;i3++)
bc92c0cb 3484 {
dee1e0e0 3485 if(i3==i1||i3==i2)continue;
3486 fTrack=anEvent->GetTrack(i3);
9c1a9547 3487 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3488 phi3=fTrack->Phi();
3d824203 3489 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
9c1a9547 3490 for(Int_t i4=0;i4<nPrim;i4++)
bc92c0cb 3491 {
dee1e0e0 3492 if(i4==i1||i4==i2||i4==i3)continue;
3493 fTrack=anEvent->GetTrack(i4);
9c1a9547 3494 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3495 phi4=fTrack->Phi();
3d824203 3496 if(phiWeights) wPhi4 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*nBinsPhi/TMath::TwoPi())));
3d824203 3497
9c1a9547 3498 // non-weighted:
3499 //-------------------------------------------------------------------------------------------------
3500 fDirectCorrelations->Fill(10.,cos(n*phi1+n*phi2-n*phi3-n*phi4),1.); // <4>_{n,n|n,n}
3501 fDirectCorrelations->Fill(11.,cos(2.*n*phi1+n*phi2-2.*n*phi3-n*phi4),1.); // <4>_{2n,n|2n,n}
3502 fDirectCorrelations->Fill(12.,cos(2.*n*phi1+2*n*phi2-2.*n*phi3-2.*n*phi4),1.); // <4>_{2n,2n|2n,2n}
3503 fDirectCorrelations->Fill(13.,cos(3.*n*phi1-n*phi2-n*phi3-n*phi4),1.); // <4>_{3n|n,n,n}
3504 fDirectCorrelations->Fill(14.,cos(3.*n*phi1+n*phi2-3.*n*phi3-n*phi4),1.); // <4>_{3n,n|3n,n}
3505 fDirectCorrelations->Fill(15.,cos(3.*n*phi1+n*phi2-2.*n*phi3-2.*n*phi4),1.); // <4>_{3n,n|2n,2n}
3506 fDirectCorrelations->Fill(16.,cos(4.*n*phi1-2.*n*phi2-n*phi3-n*phi4),1.); // <4>_{4n|2n,n,n}
3507 //-------------------------------------------------------------------------------------------------
3508
3509 // weighted:
3510 //.......................................................................................
3511 // 4-p:
3512 fDirectCorrelationsW->Fill(40.,cos(n*phi1+n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4);
3513 //.......................................................................................
3514
bc92c0cb 3515 }
3516 }
3517 }
3518 }
9c1a9547 3519
3520 // 5-particle correlations:
3521 for(Int_t i1=0;i1<nPrim;i1++)
bc92c0cb 3522 {
dee1e0e0 3523 //cout<<"i1 = "<<i1<<endl;
3524 fTrack=anEvent->GetTrack(i1);
9c1a9547 3525 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3526 phi1=fTrack->Phi();
3d824203 3527 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
9c1a9547 3528 for(Int_t i2=0;i2<nPrim;i2++)
bc92c0cb 3529 {
dee1e0e0 3530 if(i2==i1)continue;
3531 fTrack=anEvent->GetTrack(i2);
9c1a9547 3532 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3533 phi2=fTrack->Phi();
3d824203 3534 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
9c1a9547 3535 for(Int_t i3=0;i3<nPrim;i3++)
bc92c0cb 3536 {
dee1e0e0 3537 if(i3==i1||i3==i2)continue;
3538 fTrack=anEvent->GetTrack(i3);
9c1a9547 3539 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3540 phi3=fTrack->Phi();
3d824203 3541 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
9c1a9547 3542 for(Int_t i4=0;i4<nPrim;i4++)
bc92c0cb 3543 {
dee1e0e0 3544 if(i4==i1||i4==i2||i4==i3)continue;
3545 fTrack=anEvent->GetTrack(i4);
9c1a9547 3546 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3547 phi4=fTrack->Phi();
3d824203 3548 if(phiWeights) wPhi4 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*nBinsPhi/TMath::TwoPi())));
9c1a9547 3549 for(Int_t i5=0;i5<nPrim;i5++)
bc92c0cb 3550 {
dee1e0e0 3551 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
3552 fTrack=anEvent->GetTrack(i5);
9c1a9547 3553 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3554 phi5=fTrack->Phi();
3d824203 3555 if(phiWeights) wPhi5 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi5*nBinsPhi/TMath::TwoPi())));
9c1a9547 3556
3557 // non-weighted:
3558 //------------------------------------------------------------------------------------------------------
3559 fDirectCorrelations->Fill(18.,cos(2.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5),1.); //<5>_{2n,n|n,n,n}
3560 fDirectCorrelations->Fill(19.,cos(2.*n*phi1+2.*n*phi2-2.*n*phi3-n*phi4-n*phi5),1.); //<5>_{2n,2n|2n,n,n}
3561 fDirectCorrelations->Fill(20.,cos(3.*n*phi1+n*phi2-2.*n*phi3-n*phi4-n*phi5),1.); //<5>_{3n,n|2n,n,n}
3562 fDirectCorrelations->Fill(21.,cos(4.*n*phi1-n*phi2-n*phi3-n*phi4-n*phi5),1.); //<5>_{4n|n,n,n,n}
3563 //------------------------------------------------------------------------------------------------------
3564
3565 // weighted:
3566 //..............................................................................................................
3567 // 5-p:
3568 fDirectCorrelationsW->Fill(60.,cos(2.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5),pow(wPhi1,2)*wPhi2*wPhi3*wPhi4*wPhi5);
3569 //..............................................................................................................
3570
bc92c0cb 3571 }
3572 }
3573 }
3574 }
3575 }
3576
9c1a9547 3577 // 6-particle correlations:
3578 for(Int_t i1=0;i1<nPrim;i1++)
dee1e0e0 3579 {
3580 //cout<<"i1 = "<<i1<<endl;
3581 fTrack=anEvent->GetTrack(i1);
9c1a9547 3582 if(!(fTrack->InRPSelection())) continue;
dee1e0e0 3583 phi1=fTrack->Phi();
3d824203 3584 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
9c1a9547 3585 for(Int_t i2=0;i2<nPrim;i2++)
dee1e0e0 3586 {
3587 if(i2==i1)continue;
3588 fTrack=anEvent->GetTrack(i2);
9c1a9547 3589 if(!(fTrack->InRPSelection())) continue;
dee1e0e0 3590 phi2=fTrack->Phi();
3d824203 3591 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
9c1a9547 3592 for(Int_t i3=0;i3<nPrim;i3++)
dee1e0e0 3593 {
3594 if(i3==i1||i3==i2)continue;
3595 fTrack=anEvent->GetTrack(i3);
9c1a9547 3596 if(!(fTrack->InRPSelection())) continue;
dee1e0e0 3597 phi3=fTrack->Phi();
3d824203 3598 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
9c1a9547 3599 for(Int_t i4=0;i4<nPrim;i4++)
dee1e0e0 3600 {
3601 if(i4==i1||i4==i2||i4==i3)continue;
3602 fTrack=anEvent->GetTrack(i4);
9c1a9547 3603 if(!(fTrack->InRPSelection())) continue;
dee1e0e0 3604 phi4=fTrack->Phi();
3d824203 3605 if(phiWeights) wPhi4 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*nBinsPhi/TMath::TwoPi())));
9c1a9547 3606 for(Int_t i5=0;i5<nPrim;i5++)
dee1e0e0 3607 {
3608 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
3609 fTrack=anEvent->GetTrack(i5);
9c1a9547 3610 if(!(fTrack->InRPSelection())) continue;
dee1e0e0 3611 phi5=fTrack->Phi();
3d824203 3612 if(phiWeights) wPhi5 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi5*nBinsPhi/TMath::TwoPi())));
9c1a9547 3613 for(Int_t i6=0;i6<nPrim;i6++)
dee1e0e0 3614 {
3615 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
3616 fTrack=anEvent->GetTrack(i6);
9c1a9547 3617 if(!(fTrack->InRPSelection())) continue;
dee1e0e0 3618 phi6=fTrack->Phi();
3d824203 3619 if(phiWeights) wPhi6 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi6*nBinsPhi/TMath::TwoPi())));
9c1a9547 3620
3621 // non-weighted:
3622 //-----------------------------------------------------------------------------------------------------------
3623 fDirectCorrelations->Fill(23.,cos(n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6),1.); //<6>_{n,n,n|n,n,n}
3624 fDirectCorrelations->Fill(24.,cos(2.*n*phi1+n*phi2+n*phi3-2.*n*phi4-n*phi5-n*phi6),1.); //<6>_{2n,n,n|2n,n,n}
3625 fDirectCorrelations->Fill(25.,cos(2.*n*phi1+2.*n*phi2-n*phi3-n*phi4-n*phi5-n*phi6),1.); //<6>_{2n,2n|n,n,n,n}
3626 fDirectCorrelations->Fill(26.,cos(3.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5-n*phi6),1.); //<6>_{3n,n|n,n,n,n}
3627 //-----------------------------------------------------------------------------------------------------------
3628
3629 // weighted:
3630 //.................................................................................................................
3631 // 6-p:
3632 fDirectCorrelationsW->Fill(80.,cos(n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6);
3633 //.................................................................................................................
3634
dee1e0e0 3635 }
3636 }
3637 }
3638 }
3639 }
3640 }
3d824203 3641
9c1a9547 3642 // 7-particle correlations:
3643 for(Int_t i1=0;i1<nPrim;i1++)
bc92c0cb 3644 {
dee1e0e0 3645 //cout<<"i1 = "<<i1<<endl;
3646 fTrack=anEvent->GetTrack(i1);
9c1a9547 3647 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3648 phi1=fTrack->Phi();
3d824203 3649 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
9c1a9547 3650 for(Int_t i2=0;i2<nPrim;i2++)
bc92c0cb 3651 {
dee1e0e0 3652 if(i2==i1)continue;
3653 fTrack=anEvent->GetTrack(i2);
9c1a9547 3654 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3655 phi2=fTrack->Phi();
3d824203 3656 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
9c1a9547 3657 for(Int_t i3=0;i3<nPrim;i3++)
bc92c0cb 3658 {
dee1e0e0 3659 if(i3==i1||i3==i2)continue;
3660 fTrack=anEvent->GetTrack(i3);
9c1a9547 3661 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3662 phi3=fTrack->Phi();
3d824203 3663 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
9c1a9547 3664 for(Int_t i4=0;i4<nPrim;i4++)
bc92c0cb 3665 {
dee1e0e0 3666 if(i4==i1||i4==i2||i4==i3)continue;
3667 fTrack=anEvent->GetTrack(i4);
9c1a9547 3668 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3669 phi4=fTrack->Phi();
3d824203 3670 if(phiWeights) wPhi4 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*nBinsPhi/TMath::TwoPi())));
9c1a9547 3671 for(Int_t i5=0;i5<nPrim;i5++)
bc92c0cb 3672 {
dee1e0e0 3673 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
3674 fTrack=anEvent->GetTrack(i5);
9c1a9547 3675 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3676 phi5=fTrack->Phi();
3d824203 3677 if(phiWeights) wPhi5 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi5*nBinsPhi/TMath::TwoPi())));
9c1a9547 3678 for(Int_t i6=0;i6<nPrim;i6++)
bc92c0cb 3679 {
dee1e0e0 3680 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
3681 fTrack=anEvent->GetTrack(i6);
9c1a9547 3682 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 3683 phi6=fTrack->Phi();
3d824203 3684 if(phiWeights) wPhi6 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi6*nBinsPhi/TMath::TwoPi())));
9c1a9547 3685 for(Int_t i7=0;i7<nPrim;i7++)
dee1e0e0 3686 {
3687 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
3688 fTrack=anEvent->GetTrack(i7);
9c1a9547 3689 if(!(fTrack->InRPSelection())) continue;
dee1e0e0 3690 phi7=fTrack->Phi();
3d824203 3691 if(phiWeights) wPhi7 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi7*nBinsPhi/TMath::TwoPi())));
9c1a9547 3692
3693 // non-weighted:
3694 //---------------------------------------------------------------------------------------------------------------
3695 fDirectCorrelations->Fill(28.,cos(2.*n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6-n*phi7),1.);//<7>_{2n,n,n|n,n,n,n}
3696 //---------------------------------------------------------------------------------------------------------------
3697
3698 // weighted:
3699 //..........................................................................................................................................
3700 fDirectCorrelationsW->Fill(100.,cos(2.*n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6-n*phi7),pow(wPhi1,2.)*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6*wPhi7);
3701 //..........................................................................................................................................
3702
dee1e0e0 3703 }
bc92c0cb 3704 }
3705 }
3706 }
3707 }
3708 }
3709 }
52021ae2 3710
9c1a9547 3711 // 8-particle correlations:
3712 for(Int_t i1=0;i1<nPrim;i1++)
dee1e0e0 3713 {
3714 cout<<"i1 = "<<i1<<endl;
3715 fTrack=anEvent->GetTrack(i1);
9c1a9547 3716 if(!(fTrack->InRPSelection())) continue;
dee1e0e0 3717 phi1=fTrack->Phi();
3d824203 3718 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
9c1a9547 3719 for(Int_t i2=0;i2<nPrim;i2++)
dee1e0e0 3720 {
3721 if(i2==i1)continue;
3722 fTrack=anEvent->GetTrack(i2);
9c1a9547 3723 if(!(fTrack->InRPSelection())) continue;
dee1e0e0 3724 phi2=fTrack->Phi();
3d824203 3725 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
9c1a9547 3726 for(Int_t i3=0;i3<nPrim;i3++)
dee1e0e0 3727 {
3728 if(i3==i1||i3==i2)continue;
3729 fTrack=anEvent->GetTrack(i3);
9c1a9547 3730 if(!(fTrack->InRPSelection())) continue;
dee1e0e0 3731 phi3=fTrack->Phi();
3d824203 3732 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
9c1a9547 3733 for(Int_t i4=0;i4<nPrim;i4++)
dee1e0e0 3734 {
3735 if(i4==i1||i4==i2||i4==i3)continue;
3736 fTrack=anEvent->GetTrack(i4);
9c1a9547 3737 if(!(fTrack->InRPSelection())) continue;
dee1e0e0 3738 phi4=fTrack->Phi();
3d824203 3739 if(phiWeights) wPhi4 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*nBinsPhi/TMath::TwoPi())));
9c1a9547 3740 for(Int_t i5=0;i5<nPrim;i5++)
dee1e0e0 3741 {
3742 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
3743 fTrack=anEvent->GetTrack(i5);
9c1a9547 3744 if(!(fTrack->InRPSelection())) continue;
dee1e0e0 3745 phi5=fTrack->Phi();
3d824203 3746 if(phiWeights) wPhi5 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi5*nBinsPhi/TMath::TwoPi())));
9c1a9547 3747 for(Int_t i6=0;i6<nPrim;i6++)
dee1e0e0 3748 {
3749 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
3750 fTrack=anEvent->GetTrack(i6);
9c1a9547 3751 if(!(fTrack->InRPSelection())) continue;
3d824203 3752 phi6=fTrack->Phi();
3753 if(phiWeights) wPhi6 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi6*nBinsPhi/TMath::TwoPi())));
9c1a9547 3754 for(Int_t i7=0;i7<nPrim;i7++)
dee1e0e0 3755 {
3756 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
3757 fTrack=anEvent->GetTrack(i7);
9c1a9547 3758 if(!(fTrack->InRPSelection())) continue;
3d824203 3759 phi7=fTrack->Phi();
3760 if(phiWeights) wPhi7 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi7*nBinsPhi/TMath::TwoPi())));
9c1a9547 3761 for(Int_t i8=0;i8<nPrim;i8++)
dee1e0e0 3762 {
3763 if(i8==i1||i8==i2||i8==i3||i8==i4||i8==i5||i8==i6||i8==i7)continue;
3764 fTrack=anEvent->GetTrack(i8);
9c1a9547 3765 if(!(fTrack->InRPSelection())) continue;
3d824203 3766 phi8=fTrack->Phi();
9c1a9547 3767 if(phiWeights) wPhi8 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi8*nBinsPhi/TMath::TwoPi())));
3768
3769 // non-weighted:
3770 //--------------------------------------------------------------------------------------------------------------------
3771 fDirectCorrelations->Fill(30.,cos(n*phi1+n*phi2+n*phi3+n*phi4-n*phi5-n*phi6-n*phi7-n*phi8),1.);//<8>_{n,n,n,n|n,n,n,n}
3772 //--------------------------------------------------------------------------------------------------------------------
3773
3774 // weighted:
3775 //...........................................................................................................................................
3776 fDirectCorrelations->Fill(120.,cos(n*phi1+n*phi2+n*phi3+n*phi4-n*phi5-n*phi6-n*phi7-n*phi8),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6*wPhi7*wPhi8);
3777 //...........................................................................................................................................
3778
dee1e0e0 3779 }
3780 }
3781 }
3782 }
3783 }
3784 }
3785 }
9c1a9547 3786 }
3787
3788} // end of AliFlowAnalysisWithQCumulants::EvaluateNestedLoopsForIntegratedFlow(AliFlowEventSimple* anEvent)
3789
3790
3791//================================================================================================================================
3792
3793
3794void AliFlowAnalysisWithQCumulants::EvaluateNestedLoopsForDifferentialFlow(AliFlowEventSimple* anEvent)
3795{
3796 // evaluate the nested loops relevant for differential flow (needed for cross-checking the results)
3797
3798 Int_t nPrim = anEvent->NumberOfTracks();
3799
3800 TH1F *phiWeights = NULL; // histogram with phi weights
3801 Int_t nBinsPhi = 0;
3802
3803 if(fUsePhiWeights)
3804 {
3805 if(!fWeightsList)
3806 {
3807 cout<<" WARNING: fWeightsList is NULL pointer in AFAWQC::ENLFDF(). "<<endl;
3808 exit(0);
3809 }
3810 phiWeights = dynamic_cast<TH1F *>(fWeightsList->FindObject("phi_weights"));
3811 if(!phiWeights)
3812 {
3813 cout<<" WARNING: couldn't access the histogram with phi weights in AFAWQC::ENLFDF(). "<<endl;
3814 exit(0);
3815 }
3816 nBinsPhi = phiWeights->GetNbinsX();
3817 }
bc92c0cb 3818
9c1a9547 3819 Double_t psi1=0., phi2=0., phi3=0., phi4=0.;// phi5=0., phi6=0., phi7=0., phi8=0.;
3820 Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1.;// wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
77515452 3821
9c1a9547 3822 Int_t n=2; // to be improved
3823
3824 // ********************************************
3825 // **** NESTED LOOPS FOR DIFFERENTIAL FLOW ****
3826 // ********************************************
3827
3828 // Remark 1: (pt,eta) bin in which the cross-checking will be performed is given by 1.1 < pt < 1.2 GeV and -0.55 < eta < -0.525
3829
3830 // Remark 2: multi-particle correlations needed for diff. flow calculated with nested loops without weights are stored in 1D profile
3831 // fDirectCorrelationsDiffFlow
4057ba99 3832
9c1a9547 3833 // Remark 3: multi-particle correlations needed for diff. flow calculated with nested loops with weights are stored in 1D profile
3834 // fDirectCorrelationsDiffFlowW;
bc92c0cb 3835
9c1a9547 3836 // Remark 4: binning of fDirectCorrelationsDiffFlow is organized as follows:
3837 //......................................................................................
3838 // ---- bins 1-20: 2-particle correlations ----
3839 // 1st bin: <2'>_{1n|1n} = twoPrime1n1n = <cos(n*(psi1-phi2))>
3840 // ---- bins 21-40: 3-particle correlations ----
3841 // ---- bins 41-60: 4-particle correlations ----
3842 // 41st bin: <4'>_{1n,1n|1n,1n} = fourPrime1n1n1n1n = <cos(n*(psi1+phi2-phi3-phi4))>
3843 //......................................................................................
b7cb54d5 3844
9c1a9547 3845 // Remark 5: binning of fDirectCorrelationsDiffFlow is organized as follows:
3846 //......................................................................................
3847 // ---- bins 1-20: 2-particle correlations ----
3848 // 1st bin: twoPrime1n1nW0W1 = <w2 cos(n*(psi1-phi2))>
3849 // ---- bins 21-40: 3-particle correlations ----
3850 // ---- bins 41-60: 4-particle correlations ----
3851 // 41st bin: fourPrime1n1n1n1nW0W1W1W1 = <w2 w3 w4 cos(n*(psi1+phi2-phi3-phi4))>
3852 //......................................................................................
77515452 3853
9c1a9547 3854 // 2'-particle:
4057ba99 3855 for(Int_t i1=0;i1<nPrim;i1++)
bc92c0cb 3856 {
dee1e0e0 3857 fTrack=anEvent->GetTrack(i1);
9c1a9547 3858 // POI condition (first particle in the correlator must be POI):
3859 if(!((fTrack->Pt()>=1.1 && fTrack->Pt()<1.2) && (fTrack->Eta()>=-0.55 && fTrack->Eta()<-0.525) && (fTrack->InPOISelection())))continue;
3860 psi1=fTrack->Phi();
3861 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(psi1*nBinsPhi/TMath::TwoPi())));
2bdc5281 3862
3863 fDirectCorrectionsDiffFlowCos->Fill(0.,cos(1.*n*(psi1)),1.); // <<cos(n*(psi1))>>
3864 fDirectCorrectionsDiffFlowSin->Fill(0.,sin(1.*n*(psi1)),1.); // <<sin(n*(psi1))>>
3865
4057ba99 3866 for(Int_t i2=0;i2<nPrim;i2++)
bc92c0cb 3867 {
4057ba99 3868 if(i2==i1)continue;
3869 fTrack=anEvent->GetTrack(i2);
9c1a9547 3870 // RP condition (!(first) particle in the correlator must be RP):
3871 if(!(fTrack->InRPSelection()))continue;
4057ba99 3872 phi2=fTrack->Phi();
3d824203 3873 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
9c1a9547 3874
3875 // non-weighted:
3876 //.....................................................................................
3877 fDirectCorrelationsDiffFlow->Fill(0.,cos(1.*n*(psi1-phi2)),1.); // <cos(n*(psi1-phi2))>
3878 //.....................................................................................
3d824203 3879
9c1a9547 3880 // weighted:
3881 //.....................................................................................
3882 fDirectCorrelationsDiffFlowW->Fill(0.,cos(1.*n*(psi1-phi2)),wPhi2); // <w2 cos(n*(psi1-phi2))>
3883 //.....................................................................................
3d824203 3884
9c1a9547 3885 //fDirectCorrelations->Fill(103.,cos(1.*n*(phi1-phi2)),pow(wPhi1,2)*wPhi2);//<2'>_{n,n}
3886 //fDirectCorrelations->Fill(104.,cos(2.*n*(phi1-phi2)),wPhi1*pow(wPhi2,2));//<2'>_{n,n}
3887 //fDirectCorrelations->Fill(105.,cos(1.*n*(phi1-phi2)),pow(wPhi2,3));//<2'>_{n,n}
3888 //fDirectCorrelations->Fill(41.,cos(2.*n*(phi1-phi2)),1);//<2'>_{2n,2n}
3889 //fDirectCorrelations->Fill(42.,cos(3.*n*(phi1-phi2)),1);//<2'>_{3n,3n}
3890 //fDirectCorrelations->Fill(43.,cos(4.*n*(phi1-phi2)),1);//<2'>_{4n,4n}
3d824203 3891
4057ba99 3892 }//end of for(Int_t i2=0;i2<nPrim;i2++)
3893 }//end of for(Int_t i1=0;i1<nPrim;i1++)
b7cb54d5 3894
3d824203 3895
3896
3897 /*
3898
bc92c0cb 3899 //<3'>_{2n|n,n}
4057ba99 3900 for(Int_t i1=0;i1<nPrim;i1++)
bc92c0cb 3901 {
dee1e0e0 3902 fTrack=anEvent->GetTrack(i1);
b7cb54d5 3903 if(!((fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)&&(fTrack->InPOISelection())))continue;//POI condition
9c1a9547 3904 psi1=fTrack->Phi();
3905 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(psi1*nBinsPhi/TMath::TwoPi())));
4057ba99 3906 for(Int_t i2=0;i2<nPrim;i2++)
bc92c0cb 3907 {
4057ba99 3908 if(i2==i1)continue;
3909 fTrack=anEvent->GetTrack(i2);
b7cb54d5 3910 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 3911 phi2=fTrack->Phi();
3d824203 3912 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
4057ba99 3913 for(Int_t i3=0;i3<nPrim;i3++)
bc92c0cb 3914 {
4057ba99 3915 if(i3==i1||i3==i2)continue;
3916 fTrack=anEvent->GetTrack(i3);
b7cb54d5 3917 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 3918 phi3=fTrack->Phi();
3d824203 3919 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
3920 //fill the fDirectCorrelations:
3921
3922 // 2-p
9c1a9547 3923 //fDirectCorrelations->Fill(101.,cos(n*(phi2-phi3)),wPhi1*wPhi2*wPhi3); // <w1 w2 w3 cos(n(phi2-phi3))>
3924 //fDirectCorrelations->Fill(102.,cos(n*(phi1-phi3)),pow(wPhi2,2.)*wPhi3); // <w2^2 w3 cos(n(psi1-phi2))>
3d824203 3925
3926 // 3-p
9c1a9547 3927 //fDirectCorrelations->Fill(110.,cos(n*(2.*phi1-phi2-phi3)),wPhi1*wPhi2*wPhi3); // <w1 w2 w3 cos(n(2psi1-phi2-phi3))>
3928 //fDirectCorrelations->Fill(111.,cos(n*(phi1+phi2-2.*phi3)),wPhi2*pow(wPhi3,2.)); // <w2 w3^2 cos(n(psi1+phi2-2.*phi3))>
3d824203 3929
3930
3931 //fDirectCorrelations->Fill(46.,cos(n*(phi1+phi2-2.*phi3)),1);//<3'>_{n,n|2n}
4057ba99 3932 }//end of for(Int_t i3=0;i3<nPrim;i3++)
3933 }//end of for(Int_t i2=0;i2<nPrim;i2++)
9c1a9547 3934 }//end of for(Int_t i1=0;i1<nPrim;i1++)
3d824203 3935 */
3936
9c1a9547 3937 // 4'-particle:
4057ba99 3938 for(Int_t i1=0;i1<nPrim;i1++)
bc92c0cb 3939 {
dee1e0e0 3940 fTrack=anEvent->GetTrack(i1);
9c1a9547 3941 // POI condition (first particle in the correlator must be POI):
3942 if(!((fTrack->Pt()>=1.1 && fTrack->Pt()<1.2) && (fTrack->Eta()>=-0.55 && fTrack->Eta()<-0.525) && (fTrack->InPOISelection())))continue;
3943 psi1=fTrack->Phi();
3944 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(psi1*nBinsPhi/TMath::TwoPi())));
4057ba99 3945 for(Int_t i2=0;i2<nPrim;i2++)
bc92c0cb 3946 {
4057ba99 3947 if(i2==i1)continue;
3948 fTrack=anEvent->GetTrack(i2);
9c1a9547 3949 // RP condition (!(first) particle in the correlator must be RP):
3950 if(!(fTrack->InRPSelection()))continue;
4057ba99 3951 phi2=fTrack->Phi();
3d824203 3952 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
4057ba99 3953 for(Int_t i3=0;i3<nPrim;i3++)
3954 {
3955 if(i3==i1||i3==i2)continue;
3956 fTrack=anEvent->GetTrack(i3);
9c1a9547 3957 // RP condition (!(first) particle in the correlator must be RP):
3958 if(!(fTrack->InRPSelection()))continue;
4057ba99 3959 phi3=fTrack->Phi();
3d824203 3960 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
4057ba99 3961 for(Int_t i4=0;i4<nPrim;i4++)
bc92c0cb 3962 {
4057ba99 3963 if(i4==i1||i4==i2||i4==i3)continue;
3964 fTrack=anEvent->GetTrack(i4);
9c1a9547 3965 // RP condition (!(first) particle in the correlator must be RP):
3966 if(!(fTrack->InRPSelection()))continue;
4057ba99 3967 phi4=fTrack->Phi();
3d824203 3968 if(phiWeights) wPhi4 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*nBinsPhi/TMath::TwoPi())));
3d824203 3969
9c1a9547 3970 // non-weighted:
3971 //.........................................................................................................................
3972 fDirectCorrelationsDiffFlow->Fill(40.,cos(n*(psi1+phi2-phi3-phi4)),1.); // <cos(n(psi1+phi1-phi2-phi3))>
3973 //.........................................................................................................................
3974
3975 // weighted:
3976 //...............................................................................................................................
3977 fDirectCorrelationsDiffFlowW->Fill(40.,cos(n*(psi1+phi2-phi3-phi4)),wPhi2*wPhi3*wPhi4); // <w2 w3 w4 cos(n(psi1+phi2-phi3-phi4))>
3978 //...............................................................................................................................
3979
4057ba99 3980 }//end of for(Int_t i4=0;i4<nPrim;i4++)
3981 }//end of for(Int_t i3=0;i3<nPrim;i3++)
3982 }//end of for(Int_t i2=0;i2<nPrim;i2++)
3983 }//end of for(Int_t i1=0;i1<nPrim;i1++)
ae733b3b 3984
9c1a9547 3985 /*
4057ba99 3986 //<5'>_{2n,n|n,n,n}
3987 for(Int_t i1=0;i1<nPrim;i1++)
3988 {
3989 fTrack=anEvent->GetTrack(i1);
b7cb54d5 3990 if(!((fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)&&(fTrack->InPOISelection())))continue;//POI condition
4057ba99 3991 phi1=fTrack->Phi();
3992 for(Int_t i2=0;i2<nPrim;i2++)
3993 {
3994 if(i2==i1)continue;
3995 fTrack=anEvent->GetTrack(i2);
b7cb54d5 3996 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 3997 phi2=fTrack->Phi();
3998 for(Int_t i3=0;i3<nPrim;i3++)
3999 {
4000 if(i3==i1||i3==i2)continue;
4001 fTrack=anEvent->GetTrack(i3);
b7cb54d5 4002 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4003 phi3=fTrack->Phi();
4004 for(Int_t i4=0;i4<nPrim;i4++)
4005 {
4006 if(i4==i1||i4==i2||i4==i3)continue;
4007 fTrack=anEvent->GetTrack(i4);
b7cb54d5 4008 if(!(fTrack->InRPSelection()))continue;//RP condition
ae733b3b 4009 phi4=fTrack->Phi();//
4057ba99 4010 for(Int_t i5=0;i5<nPrim;i5++)
bc92c0cb 4011 {
4057ba99 4012 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
4013 fTrack=anEvent->GetTrack(i5);
b7cb54d5 4014 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4015 phi5=fTrack->Phi();
4016 //fill the fDirectCorrelations:if(bNestedLoops)
9c1a9547 4017 //fDirectCorrelations->Fill(55.,cos(2.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5),1);//<5'>_{2n,n|n,n,n}
4057ba99 4018 }//end of for(Int_t i5=0;i5<nPrim;i5++)
4019 }//end of for(Int_t i4=0;i4<nPrim;i4++)
4020 }//end of for(Int_t i3=0;i3<nPrim;i3++)
4021 }//end of for(Int_t i2=0;i2<nPrim;i2++)
4022 }//end of for(Int_t i1=0;i1<nPrim;i1++)
4023
9c1a9547 4024
4025
4026 */
4027 /*
4028
4029
4030
4057ba99 4031 //<6'>_{n,n,n|n,n,n}
4032 for(Int_t i1=0;i1<nPrim;i1++)
4033 {
4034 fTrack=anEvent->GetTrack(i1);
b7cb54d5 4035 if(!((fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)&&(fTrack->InPOISelection())))continue;//POI condition
4057ba99 4036 phi1=fTrack->Phi();
4037 for(Int_t i2=0;i2<nPrim;i2++)
4038 {
4039 if(i2==i1)continue;
4040 fTrack=anEvent->GetTrack(i2);
b7cb54d5 4041 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4042 phi2=fTrack->Phi();
4043 for(Int_t i3=0;i3<nPrim;i3++)
4044 {
4045 if(i3==i1||i3==i2)continue;
4046 fTrack=anEvent->GetTrack(i3);
b7cb54d5 4047 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4048 phi3=fTrack->Phi();
4049 for(Int_t i4=0;i4<nPrim;i4++)
4050 {
4051 if(i4==i1||i4==i2||i4==i3)continue;
4052 fTrack=anEvent->GetTrack(i4);
b7cb54d5 4053 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4054 phi4=fTrack->Phi();
4055 for(Int_t i5=0;i5<nPrim;i5++)
4056 {
4057 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
4058 fTrack=anEvent->GetTrack(i5);
b7cb54d5 4059 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4060 phi5=fTrack->Phi();
4061 for(Int_t i6=0;i6<nPrim;i6++)
4062 {
4063 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
4064 fTrack=anEvent->GetTrack(i6);
b7cb54d5 4065 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4066 phi6=fTrack->Phi();
4067 //fill the fDirectCorrelations:
9c1a9547 4068 //fDirectCorrelations->Fill(60.,cos(n*(phi1+phi2+phi3-phi4-phi5-phi6)),1);//<6'>_{n,n,n|n,n,n}
4057ba99 4069 }//end of for(Int_t i6=0;i6<nPrim;i6++)
4070 }//end of for(Int_t i5=0;i5<nPrim;i5++)
4071 }//end of for(Int_t i4=0;i4<nPrim;i4++)
4072 }//end of for(Int_t i3=0;i3<nPrim;i3++)
4073 }//end of for(Int_t i2=0;i2<nPrim;i2++)
4074 }//end of for(Int_t i1=0;i1<nPrim;i1++)
9c1a9547 4075
4057ba99 4076
9c1a9547 4077 */
4078 /*
4079
4080
4057ba99 4081 //<7'>_{2n,n,n|n,n,n,n}
4082 for(Int_t i1=0;i1<nPrim;i1++)
4083 {
4084 fTrack=anEvent->GetTrack(i1);
b7cb54d5 4085 if(!((fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)&&(fTrack->InPOISelection())))continue;//POI condition
4057ba99 4086 phi1=fTrack->Phi();
4087 for(Int_t i2=0;i2<nPrim;i2++)
4088 {
4089 if(i2==i1)continue;
4090 fTrack=anEvent->GetTrack(i2);
b7cb54d5 4091 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4092 phi2=fTrack->Phi();
4093 for(Int_t i3=0;i3<nPrim;i3++)
4094 {
4095 if(i3==i1||i3==i2)continue;
4096 fTrack=anEvent->GetTrack(i3);
b7cb54d5 4097 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4098 phi3=fTrack->Phi();
4099 for(Int_t i4=0;i4<nPrim;i4++)
4100 {
4101 if(i4==i1||i4==i2||i4==i3)continue;
4102 fTrack=anEvent->GetTrack(i4);
b7cb54d5 4103 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4104 phi4=fTrack->Phi();
4105 for(Int_t i5=0;i5<nPrim;i5++)
4106 {
4107 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
4108 fTrack=anEvent->GetTrack(i5);
b7cb54d5 4109 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4110 phi5=fTrack->Phi();
4111 for(Int_t i6=0;i6<nPrim;i6++)
4112 {
4113 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
4114 fTrack=anEvent->GetTrack(i6);
b7cb54d5 4115 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4116 phi6=fTrack->Phi();
4117 for(Int_t i7=0;i7<nPrim;i7++)
4118 {
4119 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
4120 fTrack=anEvent->GetTrack(i7);
b7cb54d5 4121 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4122 phi7=fTrack->Phi();
4123 //fill the fDirectCorrelations:
9c1a9547 4124 //fDirectCorrelations->Fill(65.,cos(2.*n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6-n*phi7),1);//<7'>_{2n,n,n|n,n,n,n}
4057ba99 4125 }//end of for(Int_t i7=0;i7<nPrim;i7++)
4126 }//end of for(Int_t i6=0;i6<nPrim;i6++)
4127 }//end of for(Int_t i5=0;i5<nPrim;i5++)
4128 }//end of for(Int_t i4=0;i4<nPrim;i4++)
4129 }//end of for(Int_t i3=0;i3<nPrim;i3++)
4130 }//end of for(Int_t i2=0;i2<nPrim;i2++)
4131 }//end of for(Int_t i1=0;i1<nPrim;i1++)
9c1a9547 4132
4057ba99 4133
9c1a9547 4134
4135 */
4136 /*
4137
4138
4139
4057ba99 4140 //<8'>_{n,n,n,n|n,n,n,n}
4141 for(Int_t i1=0;i1<nPrim;i1++)
4142 {
4143 fTrack=anEvent->GetTrack(i1);
b7cb54d5 4144 if(!((fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)&&(fTrack->InPOISelection())))continue;//POI condition
4057ba99 4145 phi1=fTrack->Phi();
4146 for(Int_t i2=0;i2<nPrim;i2++)
4147 {
4148 if(i2==i1)continue;
4149 fTrack=anEvent->GetTrack(i2);
b7cb54d5 4150 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4151 phi2=fTrack->Phi();
4152 for(Int_t i3=0;i3<nPrim;i3++)
4153 {
4154 if(i3==i1||i3==i2)continue;
4155 fTrack=anEvent->GetTrack(i3);
b7cb54d5 4156 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4157 phi3=fTrack->Phi();
4158 for(Int_t i4=0;i4<nPrim;i4++)
4159 {
4160 if(i4==i1||i4==i2||i4==i3)continue;
4161 fTrack=anEvent->GetTrack(i4);
b7cb54d5 4162 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4163 phi4=fTrack->Phi();
4164 for(Int_t i5=0;i5<nPrim;i5++)
4165 {
4166 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
4167 fTrack=anEvent->GetTrack(i5);
b7cb54d5 4168 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4169 phi5=fTrack->Phi();
4170 for(Int_t i6=0;i6<nPrim;i6++)
4171 {
4172 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
4173 fTrack=anEvent->GetTrack(i6);
b7cb54d5 4174 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4175 phi6=fTrack->Phi();
4176 for(Int_t i7=0;i7<nPrim;i7++)
4177 {
4178 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
4179 fTrack=anEvent->GetTrack(i7);
b7cb54d5 4180 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4181 phi7=fTrack->Phi();
4182 for(Int_t i8=0;i8<nPrim;i8++)
4183 {
4184 if(i8==i1||i8==i2||i8==i3||i8==i4||i8==i5||i8==i6||i8==i7)continue;
4185 fTrack=anEvent->GetTrack(i8);
b7cb54d5 4186 if(!(fTrack->InRPSelection()))continue;//RP condition
4057ba99 4187 phi8=fTrack->Phi();
4188 //fill the fDirectCorrelations:
9c1a9547 4189 //fDirectCorrelations->Fill(70.,cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)),1);//<8'>_{n,n,n,n|n,n,n,n}
4057ba99 4190 }//end of for(Int_t i8=0;i8<nPrim;i8++)
4191 }//end of for(Int_t i7=0;i7<nPrim;i7++)
4192 }//end of for(Int_t i6=0;i6<nPrim;i6++)
4193 }//end of for(Int_t i5=0;i5<nPrim;i5++)
4194 }//end of for(Int_t i4=0;i4<nPrim;i4++)
4195 }//end of for(Int_t i3=0;i3<nPrim;i3++)
4196 }//end of for(Int_t i2=0;i2<nPrim;i2++)
4197 }//end of for(Int_t i1=0;i1<nPrim;i1++)
4198
4199
4200
9c1a9547 4201 */
4202
4203
4204
3d824203 4205
9c1a9547 4206} // end of AliFlowAnalysisWithQCumulants::EvaluateNestedLoopsForDifferentialFlow(AliFlowEventSimple* anEvent)
4207
4208
4209//================================================================================================================================
4210
4211
fd46c3dd 4212void AliFlowAnalysisWithQCumulants::GetOutputHistograms(TList *outputListHistos)
4213{
4214 // get pointers to all output histograms (called before Finish())
4215 if(outputListHistos)
4216 {
4217 // with or without weights
4218 TBits *useWeightsBits = dynamic_cast<TBits*>(outputListHistos->FindObject("TBits"));
c365fe76 4219
4220 //final results (no-name integrated flow without weights)
4221 TH1D *finalCorrectionsForNUA = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fFinalCorrectionsForNUA"));
fd46c3dd 4222
4223 //final results (no-name integrated flow without weights)
4224 TH1D *intFlowResultsQC = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fIntFlowResultsQC"));
4225
4226 //final results (no-name integrated flow with weights)
4227 TH1D *intFlowResultsQCW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fIntFlowResultsQCW"));
4228
4229 //final results (POIs integrated flow without weights)
4230 TH1D *intFlowResultsPOIQC = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fIntFlowResultsPOIQC"));
4231
4232 //final results (POIs integrated flow with weights)
4233 TH1D *intFlowResultsPOIQCW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fIntFlowResultsPOIQCW"));
4234
4235 //final results (RPs integrated flow without weights)
4236 TH1D *intFlowResultsRPQC = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fIntFlowResultsRPQC"));
4237
4238 //final results (RPs integrated flow with weights)
4239 TH1D *intFlowResultsRPQCW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fIntFlowResultsRPQCW"));
4240
4241 //final results (differential flow)
4242 TH1D *diffFlowResults2ndOrder = dynamic_cast<TH1D*>(outputListHistos->FindObject("fDiffFlowResults2ndOrderQC"));
4243 TH1D *diffFlowResults4thOrder = dynamic_cast<TH1D*>(outputListHistos->FindObject("fDiffFlowResults4thOrderQC"));
4244
4245 //final results for covariances (1st bin <2*4>-<2>*<4>, 2nd bin <2*6>-<2>*<6>, ...)
4246 TH1D *covariances = dynamic_cast<TH1D*>(outputListHistos->FindObject("fCovariances"));
4247
4248 //common control histograms (taking into account only the events with 2 and more particles)
4249 AliFlowCommonHist *commonHist2nd = dynamic_cast<AliFlowCommonHist*>(outputListHistos->FindObject("AliFlowCommonHist2ndOrderQC"));
4250
4251 //common control histograms (taking into account only the events with 4 and more particles)
4252 AliFlowCommonHist *commonHist4th = dynamic_cast<AliFlowCommonHist*>(outputListHistos->FindObject("AliFlowCommonHist4thOrderQC"));
4253
4254 //common control histograms (taking into account only the events with 6 and more particles)
4255 AliFlowCommonHist *commonHist6th = dynamic_cast<AliFlowCommonHist*>(outputListHistos->FindObject("AliFlowCommonHist6thOrderQC"));
4256
4257 //common control histograms (taking into account only the events with 8 and more particles)
4258 AliFlowCommonHist *commonHist8th = dynamic_cast<AliFlowCommonHist*>(outputListHistos->FindObject("AliFlowCommonHist8thOrderQC"));
4259
4260 //common histograms to store the final results for the 2nd order integrated and differential flow
4261 AliFlowCommonHistResults *commonHistRes2nd = dynamic_cast<AliFlowCommonHistResults*>(outputListHistos->FindObject("AliFlowCommonHistResults2ndOrderQC"));
4262
4263 //common histograms to store the final results for the 4th order integrated and differential flow
4264 AliFlowCommonHistResults *commonHistRes4th = dynamic_cast<AliFlowCommonHistResults*>(outputListHistos->FindObject("AliFlowCommonHistResults4thOrderQC"));
4265
4266 //common histograms to store the final results for the 6th order integrated and differential flow
4267 AliFlowCommonHistResults *commonHistRes6th = dynamic_cast<AliFlowCommonHistResults*>(outputListHistos->FindObject("AliFlowCommonHistResults6thOrderQC"));
4268
4269 //common histograms to store the final results for the 8th order integrated and differential flow
4270 AliFlowCommonHistResults *commonHistRes8th = dynamic_cast<AliFlowCommonHistResults*>(outputListHistos->FindObject("AliFlowCommonHistResults8thOrderQC"));
4271
4272 //average selected multiplicity (for int. flow)
4273 TProfile *AvMult = dynamic_cast<TProfile*>(outputListHistos->FindObject("fAvMultIntFlowQC"));
4274
4275 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4276 // !!!! to be removed !!!!
4277 //profiles containing the Q-vectors from all events
4278 TProfile *qvectorForEachEventX = dynamic_cast<TProfile*>(outputListHistos->FindObject("fQvectorForEachEventX"));
4279 TProfile *qvectorForEachEventY = dynamic_cast<TProfile*>(outputListHistos->FindObject("fQvectorForEachEventY"));
4280 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4281
4282 //multi-particle correlations calculated from Q-vectors
4283 TProfile *qCorrelations = dynamic_cast<TProfile*>(outputListHistos->FindObject("fQCorrelations"));
4284
4285 //weighted multi-particle correlations calculated from Q-vectors
4286 TProfile *qCorrelationsW = dynamic_cast<TProfile*>(outputListHistos->FindObject("fQCorrelationsW"));
c365fe76 4287
4288 // corrections for non-uniform acceptance (cos terms) calculated from Q-vectors
4289 TProfile *qCorrectionsCos = dynamic_cast<TProfile*>(outputListHistos->FindObject("fQCorrectionsCos"));
fd46c3dd 4290
c365fe76 4291 // corrections for non-uniform acceptance (sin terms) calculated from Q-vectors
4292 TProfile *qCorrectionsSin = dynamic_cast<TProfile*>(outputListHistos->FindObject("fQCorrectionsSin"));
4293
fd46c3dd 4294 //average of products: 1st bin: <2*4>, 2nd bin: <2*6>, ...
4295 TProfile *QProduct = dynamic_cast<TProfile*>(outputListHistos->FindObject("fQProduct"));
4296
4297 //average 2- and 4-particle correlations per pt-bin
4298 TProfile *binnedPt2p1n1nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f2PerPtBin1n1nRP"));
4299 TProfile *binnedPt4p1n1n1n1nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f4PerPtBin1n1n1n1nRP"));
4300
4301 //average 2- and 4-particle correlations per eta-bin
4302 TProfile *binnedEta2p1n1nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f2PerEtaBin1n1nRP"));
4303 TProfile *binnedEta4p1n1n1n1nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f4PerEtaBin1n1n1n1nRP"));
4304
4305 //average 2- and 4-particle correlations per pt-bin
4306 TProfile *binnedPt2p1n1nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f2PerPtBin1n1nPOI"));
4307 TProfile *binnedPt4p1n1n1n1nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f4PerPtBin1n1n1n1nPOI"));
4308
4309 //average 2- and 4-particle correlations per eta-bin
4310 TProfile *binnedEta2p1n1nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f2PerEtaBin1n1nPOI"));
4311 TProfile *binnedEta4p1n1n1n1nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f4PerEtaBin1n1n1n1nPOI"));
4312
4313 //average 2- and 4-particle correlations per pt-bin
4314 TProfile *binnedWPt2p1n1nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f2WPerPtBin1n1nPOI"));
4315 TProfile *binnedWPt4p1n1n1n1nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f4WPerPtBin1n1n1n1nPOI"));
4316
4317 TProfile *binnedWEta2p1n1nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f2WPerEtaBin1n1nPOI"));
4318 TProfile *binnedWEta4p1n1n1n1nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f4WPerEtaBin1n1n1n1nPOI"));
4319
4320 TProfile *binnedWPt2p1n1nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f2WPerPtBin1n1nRP"));
4321 TProfile *binnedWPt4p1n1n1n1nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f4WPerPtBin1n1n1n1nRP"));
4322
4323 TProfile *binnedWEta2p1n1nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f2WPerEtaBin1n1nRP"));
4324 TProfile *binnedWEta4p1n1n1n1nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f4WPerEtaBin1n1n1n1nRP"));
4325
4326 //average values of Q-vector components (1st bin: <Q_x>, 2nd bin: <Q_y>, 3rd bin: <(Q_x)^2>, 4th bin: <(Q_y)^2>)
4327 TProfile *QVectorComponents = dynamic_cast<TProfile*>(outputListHistos->FindObject("fQvectorComponents"));
4328
4329 // multi-particle correlations calculated with nested loop (needed for int. flow)
4330 TProfile *directCorrelations = dynamic_cast<TProfile*>(outputListHistos->FindObject("fDirectCorrelations"));
4331
4332 // multi-particle correlations calculated with nested loop (needed for weighted int. flow)
4333 TProfile *directCorrelationsW = dynamic_cast<TProfile*>(outputListHistos->FindObject("fDirectCorrelationsW"));
4334
4335 // multi-particle correlations calculated with nested loop (needed for diff. flow)
4336 TProfile *directCorrelationsDiffFlow = dynamic_cast<TProfile*>(outputListHistos->FindObject("fDirectCorrelationsDiffFlow"));
4337
4338 // multi-particle correlations calculated with nested loop (needed for int. flow)
4339 TProfile *directCorrelationsDiffFlowW = dynamic_cast<TProfile*>(outputListHistos->FindObject("fDirectCorrelationsDiffFlowW"));
4340
2bdc5281 4341 // corrections for non-uniform acceptance (cos terms) calculated with nested loop (integrated flow)
c365fe76 4342 TProfile *directCorrectionsCos = dynamic_cast<TProfile*>(outputListHistos->FindObject("fDirectCorrectionsCos"));
fd46c3dd 4343
2bdc5281 4344 // corrections for non-uniform acceptance (sin terms) calculated with nested loop (integrated flow)
c365fe76 4345 TProfile *directCorrectionsSin = dynamic_cast<TProfile*>(outputListHistos->FindObject("fDirectCorrectionsSin"));
fd46c3dd 4346
2bdc5281 4347 // corrections for non-uniform acceptance (cos terms) calculated with nested loop (differential flow)
4348 TProfile *directCorrectionsDiffFlowCos = dynamic_cast<TProfile*>(outputListHistos->FindObject("fDirectCorrectionsDiffFlowCos"));
fd46c3dd 4349
2bdc5281 4350 // corrections for non-uniform acceptance (sin terms) calculated with nested loop (differential flow)
4351 TProfile *directCorrectionsDiffFlowSin = dynamic_cast<TProfile*>(outputListHistos->FindObject("fDirectCorrectionsDiffFlowSin"));
4352
fd46c3dd 4353 // ...............................................................................................................................................
4354 // non-weighted correlations for each (pt,eta) bin for POIs:
4355 TProfile2D *twoPtEtaPOI = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f2pPtEtaPOI"));
4356 TProfile2D *fourPtEtaPOI = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f4pPtEtaPOI"));
4357 TProfile2D *sixPtEtaPOI = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f6pPtEtaPOI"));
4358 TProfile2D *eightPtEtaPOI = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f8pPtEtaPOI"));
2bdc5281 4359
4360
4361 //......................................................................................................
4362
4363
4364 // terms: corrections for non-uniform acceptance to non-weighted correlations for differential flow of POIs:
4365 TProfile2D *correctionsCosP1nPsiPtEtaPOI = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("fCorrectionsCosP1nPsiPtEtaPOI"));
4366 TProfile2D *correctionsSinP1nPsiPtEtaPOI = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("fCorrectionsSinP1nPsiPtEtaPOI"));
4367
4368
4369 //....
4370
4371
4372 // terms: corrections for non-uniform acceptance to non-weighted correlations for differential flow of POIs:
4373 TProfile2D *correctionsCosP1nPsiPtEtaRP = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("fCorrectionsCosP1nPsiPtEtaRP"));
4374 TProfile2D *correctionsSinP1nPsiPtEtaRP = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("fCorrectionsSinP1nPsiPtEtaRP"));
4375
4376
4377 //......................................................................................................
4378
4379
4380 // corrections for non-uniform acceptance to non-weighted correlations for differential flow of POIs:
4381 TH2D *twoFinalCorrectionForNUAPtEtaPOI = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f2pFinalCorrectionsForNUAPtEtaPOI"));
4382 TH2D *fourFinalCorrectionForNUAPtEtaPOI = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f4pFinalCorrectionsForNUAPtEtaPOI"));
4383 TH2D *sixFinalCorrectionForNUAPtEtaPOI = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f6pFinalCorrectionsForNUAPtEtaPOI"));
4384 TH2D *eightFinalCorrectionForNUAPtEtaPOI = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f8pFinalCorrectionsForNUAPtEtaPOI"));
4385
4386 // corrections for non-uniform acceptance to non-weighted correlations for differential flow of POIs:
4387 TH1D *twoFinalCorrectionForNUAPtPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f2pFinalCorrectionsForNUAPtPOI"));
4388 TH1D *fourFinalCorrectionForNUAPtPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f4pFinalCorrectionsForNUAPtPOI"));
4389 TH1D *sixFinalCorrectionForNUAPtPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f6pFinalCorrectionsForNUAPtPOI"));
4390 TH1D *eightFinalCorrectionForNUAPtPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f8pFinalCorrectionsForNUAPtPOI"));
4391
4392 // corrections for non-uniform acceptance to non-weighted correlations for differential flow of POIs:
4393 TH1D *twoFinalCorrectionForNUAEtaPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f2pFinalCorrectionsForNUAEtaPOI"));
4394 TH1D *fourFinalCorrectionForNUAEtaPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f4pFinalCorrectionsForNUAEtaPOI"));
4395 TH1D *sixFinalCorrectionForNUAEtaPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f6pFinalCorrectionsForNUAEtaPOI"));
4396 TH1D *eightFinalCorrectionForNUAEtaPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f8pFinalCorrectionsForNUAEtaPOI"));
fd46c3dd 4397
4398 // non-weighted final results for differential flow for each for POIs:
4399 // 3D (pt,eta)
4400 TH2D *vn2ndPtEtaPOI = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn2ndPtEtaPOI"));
4401 TH2D *vn4thPtEtaPOI = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn4thPtEtaPOI"));
4402 TH2D *vn6thPtEtaPOI = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn6thPtEtaPOI"));
4403 TH2D *vn8thPtEtaPOI = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn8thPtEtaPOI"));
4404 // 2D (pt)
4405 TH1D *vn2ndPtPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn2ndPtPOI"));
4406 TH1D *vn4thPtPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn4thPtPOI"));
4407 TH1D *vn6thPtPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn6thPtPOI"));
4408 TH1D *vn8thPtPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn8thPtPOI"));
4409 // 2D (eta)
4410 TH1D *vn2ndEtaPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn2ndEtaPOI"));
4411 TH1D *vn4thEtaPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn4thEtaPOI"));
4412 TH1D *vn6thEtaPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn6thEtaPOI"));
4413 TH1D *vn8thEtaPOI = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn8thEtaPOI"));
4414
4415 // weighted correlations for each (pt,eta) bin for POIs:
4416 TProfile2D *twoPtEtaPOIW = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f2pPtEtaPOIW"));
4417 TProfile2D *fourPtEtaPOIW = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f4pPtEtaPOIW"));
4418 TProfile2D *sixPtEtaPOIW = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f6pPtEtaPOIW"));
4419 TProfile2D *eightPtEtaPOIW = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f8pPtEtaPOIW"));
4420
4421 // weighted final results for differential flow for each for POIs:
4422 // 3D (pt,eta)
4423 TH2D *vn2ndPtEtaPOIW = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn2ndPtEtaPOIW"));
4424 TH2D *vn4thPtEtaPOIW = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn4thPtEtaPOIW"));
4425 TH2D *vn6thPtEtaPOIW = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn6thPtEtaPOIW"));
4426 TH2D *vn8thPtEtaPOIW = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn8thPtEtaPOIW"));
4427 // 2D (pt)
4428 TH1D *vn2ndPtPOIW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn2ndPtPOIW"));
4429 TH1D *vn4thPtPOIW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn4thPtPOIW"));
4430 TH1D *vn6thPtPOIW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn6thPtPOIW"));
2bdc5281 4431 TH1D *vn8thPtPOIW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn8thPtPOIW"));
fd46c3dd 4432 // 2D (eta)
4433 TH1D *vn2ndEtaPOIW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn2ndEtaPOIW"));
4434 TH1D *vn4thEtaPOIW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn4thEtaPOIW"));
4435 TH1D *vn6thEtaPOIW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn6thEtaPOIW"));
4436 TH1D *vn8thEtaPOIW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn8thEtaPOIW"));
4437
4438 // non-weighted correlations for each (pt,eta) bin for RPs:
4439 TProfile2D *twoPtEtaRP = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f2pPtEtaRP"));
4440 TProfile2D *fourPtEtaRP = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f4pPtEtaRP"));
4441 TProfile2D *sixPtEtaRP = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f6pPtEtaRP"));
4442 TProfile2D *eightPtEtaRP = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f8pPtEtaRP"));
2bdc5281 4443
4444 // corrections for non-uniform acceptance to non-weighted correlations for differential flow of RPs:
4445 TH2D *twoFinalCorrectionForNUAPtEtaRP = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f2pFinalCorrectionsForNUAPtEtaRP"));
4446 TH2D *fourFinalCorrectionForNUAPtEtaRP = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f4pFinalCorrectionsForNUAPtEtaRP"));
4447 TH2D *sixFinalCorrectionForNUAPtEtaRP = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f6pFinalCorrectionsForNUAPtEtaRP"));
4448 TH2D *eightFinalCorrectionForNUAPtEtaRP = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f8pFinalCorrectionsForNUAPtEtaRP"));
4449
4450 // corrections for non-uniform acceptance to non-weighted correlations for differential flow of RPs:
4451 TH1D *twoFinalCorrectionForNUAPtRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f2pFinalCorrectionsForNUAPtRP"));
4452 TH1D *fourFinalCorrectionForNUAPtRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f4pFinalCorrectionsForNUAPtRP"));
4453 TH1D *sixFinalCorrectionForNUAPtRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f6pFinalCorrectionsForNUAPtRP"));
4454 TH1D *eightFinalCorrectionForNUAPtRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f8pFinalCorrectionsForNUAPtRP"));
4455
4456 // corrections for non-uniform acceptance to non-weighted correlations for differential flow of RPs:
4457 TH1D *twoFinalCorrectionForNUAEtaRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f2pFinalCorrectionsForNUAEtaRP"));
4458 TH1D *fourFinalCorrectionForNUAEtaRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f4pFinalCorrectionsForNUAEtaRP"));
4459 TH1D *sixFinalCorrectionForNUAEtaRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f6pFinalCorrectionsForNUAEtaRP"));
4460 TH1D *eightFinalCorrectionForNUAEtaRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("f8pFinalCorrectionsForNUAEtaRP"));
fd46c3dd 4461
4462 // non-weighted final results for differential flow for RPs:
4463 // 3D (pt,eta)
4464 TH2D *vn2ndPtEtaRP = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn2ndPtEtaRP"));
4465 TH2D *vn4thPtEtaRP = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn4thPtEtaRP"));
4466 TH2D *vn6thPtEtaRP = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn6thPtEtaRP"));
4467 TH2D *vn8thPtEtaRP = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn8thPtEtaRP"));
4468 // 2D (pt)
4469 TH1D *vn2ndPtRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn2ndPtRP"));
4470 TH1D *vn4thPtRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn4thPtRP"));
4471 TH1D *vn6thPtRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn6thPtRP"));
4472 TH1D *vn8thPtRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn8thPtRP"));
4473 // 2D (eta)
4474 TH1D *vn2ndEtaRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn2ndEtaRP"));
4475 TH1D *vn4thEtaRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn4thEtaRP"));
4476 TH1D *vn6thEtaRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn6thEtaRP"));
4477 TH1D *vn8thEtaRP = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn8thEtaRP"));
4478
4479 // weighted correlations for each (pt,eta) bin for RPs:
4480 TProfile2D *twoPtEtaRPW = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f2pPtEtaRPW"));
4481 TProfile2D *fourPtEtaRPW = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f4pPtEtaRPW"));
4482 TProfile2D *sixPtEtaRPW = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f6pPtEtaRPW"));
4483 TProfile2D *eightPtEtaRPW = dynamic_cast<TProfile2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("DifferentialFlow")))->FindObject("f8pPtEtaRPW"));
4484
4485 // weighted final results for differential flow for RPs:
4486 // 3D (pt,eta)
4487 TH2D *vn2ndPtEtaRPW = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn2ndPtEtaRPW"));
4488 TH2D *vn4thPtEtaRPW = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn4thPtEtaRPW"));
4489 TH2D *vn6thPtEtaRPW = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn6thPtEtaRPW"));
4490 TH2D *vn8thPtEtaRPW = dynamic_cast<TH2D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn8thPtEtaRPW"));
4491 // 2D (pt)
4492 TH1D *vn2ndPtRPW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn2ndPtRPW"));
4493 TH1D *vn4thPtRPW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn4thPtRPW"));
4494 TH1D *vn6thPtRPW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn6thPtRPW"));
4495 TH1D *vn8thPtRPW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn8thPtRPW"));
4496 // 2D (eta)
4497 TH1D *vn2ndEtaRPW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn2ndEtaRPW"));
4498 TH1D *vn4thEtaRPW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn4thEtaRPW"));
4499 TH1D *vn6thEtaRPW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn6thEtaRPW"));
4500 TH1D *vn8thEtaRPW = dynamic_cast<TH1D*>((dynamic_cast<TList*>(outputListHistos->FindObject("Results")))->FindObject("fvn8thEtaRPW"));
4501 // ...............................................................................................................................................
4502
4503
4504
4505 //----------------------------------------------------
4506
4507 this->SetUseWeightsBits(useWeightsBits);
c365fe76 4508 this->SetFinalCorrectionsForNUA(finalCorrectionsForNUA);
fd46c3dd 4509 this->SetIntFlowResults(intFlowResultsQC);
4510 this->SetIntFlowResultsW(intFlowResultsQCW);
4511 this->SetIntFlowResultsPOI(intFlowResultsPOIQC);
4512 this->SetIntFlowResultsPOIW(intFlowResultsPOIQCW);
4513 this->SetIntFlowResultsRP(intFlowResultsRPQC);
4514 this->SetIntFlowResultsRPW(intFlowResultsRPQCW);
4515
4516 this->SetDiffFlowResults2nd(diffFlowResults2ndOrder);
4517 this->SetDiffFlowResults4th(diffFlowResults4thOrder);
4518 this->SetCovariances(covariances);
4519
4520 this->SetCommonHists2nd(commonHist2nd);
4521 this->SetCommonHists4th(commonHist4th);
4522 this->SetCommonHists6th(commonHist6th);
4523 this->SetCommonHists8th(commonHist8th);
4524
4525 this->SetCommonHistsResults2nd(commonHistRes2nd);
4526 this->SetCommonHistsResults4th(commonHistRes4th);
4527 this->SetCommonHistsResults6th(commonHistRes6th);
4528 this->SetCommonHistsResults8th(commonHistRes8th);
4529
4530 this->SetAverageMultiplicity(AvMult);
4531 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4532 // !!!! to be removed !!!!
4533 this->SetQvectorForEachEventX(qvectorForEachEventX);
4534 this->SetQvectorForEachEventY(qvectorForEachEventY);
4535 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4536 this->SetQCorrelations(qCorrelations);
4537 this->SetQCorrelationsW(qCorrelationsW);
c365fe76 4538 this->SetQCorrectionsCos(qCorrectionsCos);
4539 this->SetQCorrectionsSin(qCorrectionsSin);
fd46c3dd 4540 this->SetQProduct(QProduct);
4541 this->SetQVectorComponents(QVectorComponents);
4542
4543 this->SetTwo1n1nPerPtBinRP(binnedPt2p1n1nRP);
4544 this->SetFour1n1n1n1nPerPtBinRP(binnedPt4p1n1n1n1nRP);
4545
4546 this->SetTwo1n1nPerEtaBinRP(binnedEta2p1n1nRP);
4547 this->SetFour1n1n1n1nPerEtaBinRP(binnedEta4p1n1n1n1nRP);
4548
4549 this->SetTwo1n1nPerPtBinPOI(binnedPt2p1n1nPOI);
4550 this->SetFour1n1n1n1nPerPtBinPOI(binnedPt4p1n1n1n1nPOI);
4551
4552 this->SetTwo1n1nPerEtaBinPOI(binnedEta2p1n1nPOI);
4553 this->SetFour1n1n1n1nPerEtaBinPOI(binnedEta4p1n1n1n1nPOI);
4554
4555 this->SetTwo1n1nWPerPtBinPOI(binnedWPt2p1n1nPOI);
4556 this->SetFour1n1n1n1nWPerPtBinPOI(binnedWPt4p1n1n1n1nPOI);
4557
4558 this->SetTwo1n1nWPerEtaBinPOI(binnedWEta2p1n1nPOI);
4559 this->SetFour1n1n1n1nWPerEtaBinPOI(binnedWEta4p1n1n1n1nPOI);
4560
4561 this->SetTwo1n1nWPerPtBinRP(binnedWPt2p1n1nRP);
4562 this->SetFour1n1n1n1nWPerPtBinRP(binnedWPt4p1n1n1n1nRP);
4563
4564 this->SetTwo1n1nWPerEtaBinRP(binnedWEta2p1n1nRP);
4565 this->SetFour1n1n1n1nWPerEtaBinRP(binnedWEta4p1n1n1n1nRP);
4566
4567 // nested loops results:
4568 this->SetDirectCorrelations(directCorrelations);
4569 this->SetDirectCorrelationsW(directCorrelationsW);
4570 this->SetDirectCorrelationsDiffFlow(directCorrelationsDiffFlow);
4571 this->SetDirectCorrelationsDiffFlowW(directCorrelationsDiffFlowW);
c365fe76 4572 this->SetDirectCorrectionsCos(directCorrectionsCos);
4573 this->SetDirectCorrectionsSin(directCorrectionsSin);
2bdc5281 4574 this->SetDirectCorrectionsDiffFlowCos(directCorrectionsDiffFlowCos);
4575 this->SetDirectCorrectionsDiffFlowSin(directCorrectionsDiffFlowSin);
fd46c3dd 4576
4577 // non-weighted correlations for each (pt,eta) bin for POIs:
4578 this->Set2pPtEtaPOI(twoPtEtaPOI);
4579 this->Set4pPtEtaPOI(fourPtEtaPOI);
4580 this->Set6pPtEtaPOI(sixPtEtaPOI);
4581 this->Set8pPtEtaPOI(eightPtEtaPOI);
4582
2bdc5281 4583
4584 //............................................
4585 // terms: corrections for non-uniform acceptance to non-weighted correlations for differential flow of POIs:
4586 this->SetCorrectionsCosP1nPsiPtEtaPOI(correctionsCosP1nPsiPtEtaPOI);
4587 this->SetCorrectionsSinP1nPsiPtEtaPOI(correctionsSinP1nPsiPtEtaPOI);
4588
4589
4590 //....
4591
4592
4593 this->SetCorrectionsCosP1nPsiPtEtaRP(correctionsCosP1nPsiPtEtaRP);
4594 this->SetCorrectionsSinP1nPsiPtEtaRP(correctionsSinP1nPsiPtEtaRP);
4595 //............................................
4596
4597 // corrections for non-uniform acceptance to non-weighted correlations for differential flow of POIs:
4598 this->Set2pFinalCorrectionsForNUAPtEtaPOI(twoFinalCorrectionForNUAPtEtaPOI);
4599 this->Set4pFinalCorrectionsForNUAPtEtaPOI(fourFinalCorrectionForNUAPtEtaPOI);
4600 this->Set6pFinalCorrectionsForNUAPtEtaPOI(sixFinalCorrectionForNUAPtEtaPOI);
4601 this->Set8pFinalCorrectionsForNUAPtEtaPOI(eightFinalCorrectionForNUAPtEtaPOI);
4602
4603 // corrections for non-uniform acceptance to non-weighted correlations for differential flow of POIs:
4604 this->Set2pFinalCorrectionsForNUAPtPOI(twoFinalCorrectionForNUAPtPOI);
4605 this->Set4pFinalCorrectionsForNUAPtPOI(fourFinalCorrectionForNUAPtPOI);
4606 this->Set6pFinalCorrectionsForNUAPtPOI(sixFinalCorrectionForNUAPtPOI);
4607 this->Set8pFinalCorrectionsForNUAPtPOI(eightFinalCorrectionForNUAPtPOI);
4608
4609 // corrections for non-uniform acceptance to non-weighted correlations for differential flow of POIs:
4610 this->Set2pFinalCorrectionsForNUAEtaPOI(twoFinalCorrectionForNUAEtaPOI);
4611 this->Set4pFinalCorrectionsForNUAEtaPOI(fourFinalCorrectionForNUAEtaPOI);
4612 this->Set6pFinalCorrectionsForNUAEtaPOI(sixFinalCorrectionForNUAEtaPOI);
4613 this->Set8pFinalCorrectionsForNUAEtaPOI(eightFinalCorrectionForNUAEtaPOI);
4614
fd46c3dd 4615 // non-weighted final results for differential flow for POIs:
4616 // 3D (pt,eta)
4617 this->Setvn2ndPtEtaPOI(vn2ndPtEtaPOI);
4618 this->Setvn4thPtEtaPOI(vn4thPtEtaPOI);
4619 this->Setvn6thPtEtaPOI(vn6thPtEtaPOI);
4620 this->Setvn8thPtEtaPOI(vn8thPtEtaPOI);
4621 // 2D (pt)
4622 this->Setvn2ndPtPOI(vn2ndPtPOI);
4623 this->Setvn4thPtPOI(vn4thPtPOI);
4624 this->Setvn6thPtPOI(vn6thPtPOI);
4625 this->Setvn8thPtPOI(vn8thPtPOI);
4626 // 2D (eta)
4627 this->Setvn2ndEtaPOI(vn2ndEtaPOI);
4628 this->Setvn4thEtaPOI(vn4thEtaPOI);
4629 this->Setvn6thEtaPOI(vn6thEtaPOI);
4630 this->Setvn8thEtaPOI(vn8thEtaPOI);
4631
4632 // weighted correlations for each (pt,eta) bin for POIs:
4633 this->Set2pPtEtaPOIW(twoPtEtaPOIW);
4634 this->Set4pPtEtaPOIW(fourPtEtaPOIW);
4635 this->Set6pPtEtaPOIW(sixPtEtaPOIW);
4636 this->Set8pPtEtaPOIW(eightPtEtaPOIW);
4637
4638 // weighted final results for differential flow for POIs:
4639 // 3D (pt,eta)
4640 this->Setvn2ndPtEtaPOIW(vn2ndPtEtaPOIW);
4641 this->Setvn4thPtEtaPOIW(vn4thPtEtaPOIW);
4642 this->Setvn6thPtEtaPOIW(vn6thPtEtaPOIW);
4643 this->Setvn8thPtEtaPOIW(vn8thPtEtaPOIW);
4644 // 2D (pt)
4645 this->Setvn2ndPtPOIW(vn2ndPtPOIW);
4646 this->Setvn4thPtPOIW(vn4thPtPOIW);
4647 this->Setvn6thPtPOIW(vn6thPtPOIW);
4648 this->Setvn8thPtPOIW(vn8thPtPOIW);
4649 // 2D (eta)
4650 this->Setvn2ndEtaPOIW(vn2ndEtaPOIW);
4651 this->Setvn4thEtaPOIW(vn4thEtaPOIW);
4652 this->Setvn6thEtaPOIW(vn6thEtaPOIW);
4653 this->Setvn8thEtaPOIW(vn8thEtaPOIW);
4654
4655 // non-weighted correlations for each (pt,eta) bin for RPs:
4656 this->Set2pPtEtaRP(twoPtEtaRP);
4657 this->Set4pPtEtaRP(fourPtEtaRP);
4658 this->Set6pPtEtaRP(sixPtEtaRP);
4659 this->Set8pPtEtaRP(eightPtEtaRP);
4660
2bdc5281 4661 // corrections for non-uniform acceptance to non-weighted correlations for differential flow of RPs:
4662 this->Set2pFinalCorrectionsForNUAPtEtaRP(twoFinalCorrectionForNUAPtEtaRP);
4663 this->Set4pFinalCorrectionsForNUAPtEtaRP(fourFinalCorrectionForNUAPtEtaRP);
4664 this->Set6pFinalCorrectionsForNUAPtEtaRP(sixFinalCorrectionForNUAPtEtaRP);
4665 this->Set8pFinalCorrectionsForNUAPtEtaRP(eightFinalCorrectionForNUAPtEtaRP);
4666
4667 // corrections for non-uniform acceptance to non-weighted correlations for differential flow of RPs:
4668 this->Set2pFinalCorrectionsForNUAPtRP(twoFinalCorrectionForNUAPtRP);
4669 this->Set4pFinalCorrectionsForNUAPtRP(fourFinalCorrectionForNUAPtRP);
4670 this->Set6pFinalCorrectionsForNUAPtRP(sixFinalCorrectionForNUAPtRP);
4671 this->Set8pFinalCorrectionsForNUAPtRP(eightFinalCorrectionForNUAPtRP);
4672
4673 // corrections for non-uniform acceptance to non-weighted correlations for differential flow of RPs:
4674 this->Set2pFinalCorrectionsForNUAEtaRP(twoFinalCorrectionForNUAEtaRP);
4675 this->Set4pFinalCorrectionsForNUAEtaRP(fourFinalCorrectionForNUAEtaRP);
4676 this->Set6pFinalCorrectionsForNUAEtaRP(sixFinalCorrectionForNUAEtaRP);
4677 this->Set8pFinalCorrectionsForNUAEtaRP(eightFinalCorrectionForNUAEtaRP);
4678
fd46c3dd 4679 // non-weighted final results for differential flow for RPs:
4680 // 3D (pt,eta)
4681 this->Setvn2ndPtEtaRP(vn2ndPtEtaRP);
4682 this->Setvn4thPtEtaRP(vn4thPtEtaRP);
4683 this->Setvn6thPtEtaRP(vn6thPtEtaRP);
4684 this->Setvn8thPtEtaRP(vn8thPtEtaRP);
4685 // 2D (pt)
4686 this->Setvn2ndPtRP(vn2ndPtRP);
4687 this->Setvn4thPtRP(vn4thPtRP);
4688 this->Setvn6thPtRP(vn6thPtRP);
4689 this->Setvn8thPtRP(vn8thPtRP);
4690 // 2D (eta)
4691 this->Setvn2ndEtaRP(vn2ndEtaRP);
4692 this->Setvn4thEtaRP(vn4thEtaRP);
4693 this->Setvn6thEtaRP(vn6thEtaRP);
4694 this->Setvn8thEtaRP(vn8thEtaRP);
4695
4696 // weighted correlations for each (pt,eta) bin for RPs:
4697 this->Set2pPtEtaRPW(twoPtEtaRPW);
4698 this->Set4pPtEtaRPW(fourPtEtaRPW);
4699 this->Set6pPtEtaRPW(sixPtEtaRPW);
4700 this->Set8pPtEtaRPW(eightPtEtaRPW);
4701
4702 // weighted final results for differential flow for RPs:
4703 // 3D (pt,eta)
4704 this->Setvn2ndPtEtaRPW(vn2ndPtEtaRPW);
4705 this->Setvn4thPtEtaRPW(vn4thPtEtaRPW);
4706 this->Setvn6thPtEtaRPW(vn6thPtEtaRPW);
4707 this->Setvn8thPtEtaRPW(vn8thPtEtaRPW);
4708 // 2D (pt)
4709 this->Setvn2ndPtRPW(vn2ndPtRPW);
4710 this->Setvn4thPtRPW(vn4thPtRPW);
4711 this->Setvn6thPtRPW(vn6thPtRPW);
4712 this->Setvn8thPtRPW(vn8thPtRPW);
4713 // 2D (eta)
4714 this->Setvn2ndEtaRPW(vn2ndEtaRPW);
4715 this->Setvn4thEtaRPW(vn4thEtaRPW);
4716 this->Setvn6thEtaRPW(vn6thEtaRPW);
4717 this->Setvn8thEtaRPW(vn8thEtaRPW);
4718 }
4719}
4720
4721
4722//================================================================================================================================
4723
4724
9c1a9547 4725void AliFlowAnalysisWithQCumulants::Finish()
4726{
4727 // calculate the final results
3d824203 4728
9c1a9547 4729 fUseWeights = fUseWeightsBits->TestBitNumber(1); // to be improved
3d824203 4730
9c1a9547 4731 // compare correlations needed for integrated flow:
4732 if(fDirectCorrelations->GetBinContent(1) != 0 || fDirectCorrelationsW->GetBinContent(1) != 0)
4733 {
4734 this->CompareDirectAndQCorrelationsForIntegratedFlow(fUseWeights);
4735 }
2bdc5281 4736 // compare correlations needed for differential flow:
9c1a9547 4737 if(fDirectCorrelationsDiffFlow->GetBinContent(1) != 0 || fDirectCorrelationsDiffFlowW->GetBinContent(1) != 0)
4738 {
4739 this->CompareDirectAndQCorrelationsForDifferentialFlow(fUseWeights);
4740 }
3d824203 4741
9c1a9547 4742
3d824203 4743
9c1a9547 4744
4745 // *************************************
4746 // **** CALCULATE THE FINAL RESULTS ****
4747 // *************************************
4748
2bdc5281 4749 if(!fUseWeights)
4750 {
4751 this->CalculateFinalCorrectionsForNonUniformAcceptanceForNoNameIntegratedFlow(); // to be improved (to calculate also when weights are used)
4752 this->CalculateFinalCorrectionsForNonUniformAcceptanceForDifferentialFlow(kFALSE,"POI"); // to be improved (to calculate also when weights are used)
4753 this->CalculateFinalCorrectionsForNonUniformAcceptanceForDifferentialFlow(kFALSE,"RP"); // to be improved (to calculate also when weights are used)
4754 }
c365fe76 4755
9c1a9547 4756 // integrated flow ('no-name') without weights:
4757 // calculate final results for no-name integrated flow without weights:
4758 this->CalculateFinalResultsForNoNameIntegratedFlow(kFALSE);
4759
4760 // integrated flow ('no-name') with weights:
4761 // calculate final results for no-name integrated flow with weights:
4762 if(fUseWeights) this->CalculateFinalResultsForNoNameIntegratedFlow(fUseWeights);
4763
9c1a9547 4764 // **** POI ****
4765
4766 // differential flow (POI) without weights:
4767 // calculate final results for 2nd order differential flow of POIs without weights:
3c16adde 4768 this->CalculateFinalResultsForDifferentialFlow(fvn2ndPtEtaPOI,fvn2ndPtPOI,fvn2ndEtaPOI,f2pPtEtaPOI);
9c1a9547 4769 // calculate final results for 4th order differential flow of POIs without weights:
3c16adde 4770 this->CalculateFinalResultsForDifferentialFlow(fvn4thPtEtaPOI,fvn4thPtPOI,fvn4thEtaPOI,f2pPtEtaPOI,f4pPtEtaPOI);
9c1a9547 4771 // calculate final results for 6th order differential flow of POIs without weights:
3c16adde 4772 // this->CalculateFinalResultsForDifferentialFlow(fvn6thPtEtaPOI,fvn6thPtPOI,fvn6thEtaPOI,f2pPtEtaPOI,f4pPtEtaPOI,f6pPtEtaPOI);
9c1a9547 4773 // calculate final results for 8th order differential flow of POIs without weights:
3c16adde 4774 // this->CalculateFinalResultsForDifferentialFlow(fvn8thPtEtaPOI,fvn8thPtPOI,fvn8thEtaPOI,f2pPtEtaPOI,f4pPtEtaPOI,f6pPtEtaPOI,f8pPtEtaPOI);
9c1a9547 4775
4776 // differential flow (POI) with weights:
4777 // calculate final results for 2nd order differential flow of POIs with weights:
3c16adde 4778 if(fUseWeights) this->CalculateFinalResultsForDifferentialFlow(fvn2ndPtEtaPOIW,fvn2ndPtPOIW,fvn2ndEtaPOIW,f2pPtEtaPOIW);
9c1a9547 4779 // calculate final results for 4th order differential flow of POIs without weights:
3c16adde 4780 if(fUseWeights) this->CalculateFinalResultsForDifferentialFlow(fvn4thPtEtaPOIW,fvn4thPtPOIW,fvn4thEtaPOIW,f2pPtEtaPOIW,f4pPtEtaPOIW);
9c1a9547 4781 // calculate final results for 6th order differential flow of POIs with weights:
3c16adde 4782 // if(fUseWeights) this->CalculateFinalResultsForDifferentialFlow(fvn6thPtEtaPOIW,fvn6thPtPOIW,fvn6thEtaPOIW,f2pPtEtaPOIW,f4pPtEtaPOIW,f6pPtEtaPOIW);
9c1a9547 4783 // calculate final results for 8th order differential flow of POIs without weights:
3c16adde 4784 // if(fUseWeights) this->CalculateFinalResultsForDifferentialFlow(fvn8thPtEtaPOIW,fvn8thPtPOIW,fvn8thEtaPOIW,f2pPtEtaPOIW,f4pPtEtaPOIW,f6pPtEtaPOIW,f8pPtEtaPOIW);
9c1a9547 4785
4786 // integrated flow (POI) without weights:
4787 // calculate final results for integrated flow of POIs without weights:
4788 this->CalculateFinalResultsForRPandPOIIntegratedFlow(kFALSE,"POI");
4789
4790 // integrated flow (POI) with weights:
4791 // calculate final results for integrated flow of POIs with weights:
fcb2164b 4792 if(fUseWeights) this->CalculateFinalResultsForRPandPOIIntegratedFlow(kTRUE,"POI");
9c1a9547 4793
4794
4795 // **** RP ****
4796
4797 // differential flow (RP) without weights:
4798 // calculate final results for 2nd order differential flow of RPs without weights:
3c16adde 4799 this->CalculateFinalResultsForDifferentialFlow(fvn2ndPtEtaRP,fvn2ndPtRP,fvn2ndEtaRP,f2pPtEtaRP);
9c1a9547 4800 // calculate final results for 4th order differential flow of RPs without weights:
3c16adde 4801 this->CalculateFinalResultsForDifferentialFlow(fvn4thPtEtaRP,fvn4thPtRP,fvn4thEtaRP,f2pPtEtaRP,f4pPtEtaRP);
9c1a9547 4802 // calculate final results for 6th order differential flow of RPs without weights:
3c16adde 4803 // this->CalculateFinalResultsForDifferentialFlow(fvn6thPtEtaRP,fvn6thPtRP,fvn6thEtaRP,f2pPtEtaRP,f4pPtEtaRP,f6pPtEtaRP);
9c1a9547 4804 // calculate final results for 8th order differential flow of RPs without weights:
3c16adde 4805 // this->CalculateFinalResultsForDifferentialFlow(fvn8thPtEtaRP,fvn8thPtRP,fvn8thEtaRP,f2pPtEtaRP,f4pPtEtaRP,f6pPtEtaRP,f8pPtEtaRP);
9c1a9547 4806
4807 // differential flow (RP) with weights:
4808 // calculate final results for 2nd order differential flow of RPs with weights:
3c16adde 4809 if(fUseWeights) this->CalculateFinalResultsForDifferentialFlow(fvn2ndPtEtaRPW,fvn2ndPtRPW,fvn2ndEtaRPW,f2pPtEtaRPW);
9c1a9547 4810 // calculate final results for 4th order differential flow of RPs without weights:
3c16adde 4811 if(fUseWeights) this->CalculateFinalResultsForDifferentialFlow(fvn4thPtEtaRPW,fvn4thPtRPW,fvn4thEtaRPW,f2pPtEtaRPW,f4pPtEtaRPW);
9c1a9547 4812 // calculate final results for 6th order differential flow of RPs with weights:
3c16adde 4813 // if(fUseWeights) this->CalculateFinalResultsForDifferentialFlow(fvn6thPtEtaRPW,fvn6thPtRPW,fvn6thEtaRPW,f2pPtEtaRPW,f4pPtEtaRPW,f6pPtEtaRPW);
9c1a9547 4814 // calculate final results for 8th order differential flow of RPs without weights:
3c16adde 4815 // if(fUseWeights) this->CalculateFinalResultsForDifferentialFlow(fvn8thPtEtaRPW,fvn8thPtRPW,fvn8thEtaRPW,f2pPtEtaRPW,f4pPtEtaRPW,f6pPtEtaRPW,f8pPtEtaRPW);
9c1a9547 4816
4817 // integrated flow (RP) without weights:
4818 // calculate final results for integrated flow of RPs without weights:
4819 this->CalculateFinalResultsForRPandPOIIntegratedFlow(kFALSE,"RP");
4820
4821 // integrated flow (RP) with weights:
4822 // calculate final results for integrated flow of POIs with weights:
fcb2164b 4823 if(fUseWeights) this->CalculateFinalResultsForRPandPOIIntegratedFlow(kTRUE,"RP");
3d824203 4824
9c1a9547 4825
3d824203 4826
9c1a9547 4827 // *****************************************************
4828 // **** PRINT THE FINAL RESULTS FOR INTEGRATED FLOW ****
4829 // *****************************************************
4830
4831 // print the final results for 'no-name' integrated flow without weights:
4832 this->PrintFinalResultsForIntegratedFlow(kFALSE,"NONAME"); // OK tested (just still nEvts and AvM)
4833
4834 // print the final results for 'no-name' integrated flow with weights:
4835 if(fUseWeights) this->PrintFinalResultsForIntegratedFlow(fUseWeights,"NONAME"); // OK tested (just still nEvts and AvM)
4836
4837 // print the final results for RPs integrated flow without weights:
4838 this->PrintFinalResultsForIntegratedFlow(kFALSE,"RP");
4839
4840 // print the final results for RPs integrated flow with weights:
4841 if(fUseWeights) this->PrintFinalResultsForIntegratedFlow(kTRUE,"RP");
4842
4843 // print the final results for POIs integrated flow without weights:
4844 this->PrintFinalResultsForIntegratedFlow(kFALSE,"POI");
4845
4846 // print the final results for POIs integrated flow with weights:
4847 if(fUseWeights) this->PrintFinalResultsForIntegratedFlow(kTRUE,"POI");
4848
4849 //this->TempDeleteMe();
4850
4851} // end of AliFlowAnalysisWithQCumulants::Finish()
4852
4853
4854//================================================================================================================================
4855
4856
4857TProfile* AliFlowAnalysisWithQCumulants::MakePtProjection(TProfile2D *profilePtEta) const
4858{
4859 // project 2D profile onto pt axis to get 1D profile
4860
4861 Int_t nBinsPt = profilePtEta->GetNbinsX();
4862 Double_t dPtMin = (profilePtEta->GetXaxis())->GetXmin();
4863 Double_t dPtMax = (profilePtEta->GetXaxis())->GetXmax();
4864
4865 Int_t nBinsEta = profilePtEta->GetNbinsY();
4866
4867 TProfile *profilePt = new TProfile("","",nBinsPt,dPtMin,dPtMax);
4868
4869 for(Int_t p=1;p<=nBinsPt;p++)
4870 {
4871 Double_t contentPt = 0.;
4872 Double_t entryPt = 0.;
4873 for(Int_t e=1;e<=nBinsEta;e++)
4874 {
4875 contentPt += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
4876 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
4877 entryPt += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
4878 }
4879 profilePt->SetBinContent(p,contentPt);
4880 profilePt->SetBinEntries(p,entryPt);
4881 }
4882
4883 return profilePt;
4884
4885} // end of TProfile* AliFlowAnalysisWithQCumulants::MakePtProjection(TProfile2D *profilePtEta)
4886
4887
4888//================================================================================================================================
4889
4890
4891TProfile* AliFlowAnalysisWithQCumulants::MakeEtaProjection(TProfile2D *profilePtEta) const
4892{
4893 // project 2D profile onto eta axis to get 1D profile
4894
4895 Int_t nBinsEta = profilePtEta->GetNbinsY();
4896 Double_t dEtaMin = (profilePtEta->GetYaxis())->GetXmin();
4897 Double_t dEtaMax = (profilePtEta->GetYaxis())->GetXmax();
4898
4899 Int_t nBinsPt = profilePtEta->GetNbinsX();
4900
4901 TProfile *profileEta = new TProfile("","",nBinsEta,dEtaMin,dEtaMax);
4902
4903 for(Int_t e=1;e<=nBinsEta;e++)
4904 {
4905 Double_t contentEta = 0.;
4906 Double_t entryEta = 0.;
4907 for(Int_t p=1;p<=nBinsPt;p++)
4908 {
4909 contentEta += (profilePtEta->GetBinContent(profilePtEta->GetBin(p,e)))
4910 * (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
4911 entryEta += (profilePtEta->GetBinEntries(profilePtEta->GetBin(p,e)));
4912 }
4913 profileEta->SetBinContent(e,contentEta);
4914 profileEta->SetBinEntries(e,entryEta);
4915 }
4916
4917 return profileEta;
4918
4919} // end of TProfile* AliFlowAnalysisWithQCumulants::MakeEtaProjection(TProfile2D *profilePtEta)
4920
4921
4922//================================================================================================================================
4923
4924
2bdc5281 4925void AliFlowAnalysisWithQCumulants::CalculateFinalCorrectionsForNonUniformAcceptanceForNoNameIntegratedFlow(Bool_t useWeights)
c365fe76 4926{
4927 // final corrections for non-uniform acceptance for QC{2}, QC{4}, QC{6} and QC{8}
4928
4929 // 2-, 4-, 6- and 8-particle azimuthal correlation (not corrected for bias from non-uniform accaptance!):
4930 Double_t two = 0.; // <<2>>_{n|n}
4931 Double_t four = 0.; // <<4>>_{n,n|n,n}
4932 Double_t six = 0.; // <<6>>_{n,n,n|n,n,n}
4933 Double_t eight = 0.; // <<8>>_{n,n,n,n|n,n,n,n}
4934
4935 if(!(useWeights))
4936 {
4937 // measured multi-particle correlations:
4938 two = fQCorrelations->GetBinContent(1);
4939 four = fQCorrelations->GetBinContent(11);
4940 six = fQCorrelations->GetBinContent(24);
4941 eight = fQCorrelations->GetBinContent(31);
4942 }
4943
4944 // corrections for non-uniform acceptance for QC{2}, QC{4}, QC{6} and QC{8}
4945 Double_t twoCorrection = 0.; // bias to QC{2} coming from non-uniform acceptance of the detector
4946 Double_t fourCorrection = 0.; // bias to QC{4} coming from non-uniform acceptance of the detector
4947 //Double_t sixCorrection = 0.; // bias to QC{6} coming from non-uniform acceptance of the detector
4948 //Double_t eightCorrection = 0.; // bias to QC{8} coming from non-uniform acceptance of the detector
4949
2bdc5281 4950 if(fQCorrectionsCos && fQCorrectionsSin && fFinalCorrectionsForNUA)
c365fe76 4951 {
4952 // correction to QC{2}:
4953 Double_t twoCorrection1stTerm = pow(fQCorrectionsCos->GetBinContent(1),2); // <<cos(n*phi1)>>^2
4954 Double_t twoCorrection2ndTerm = pow(fQCorrectionsSin->GetBinContent(1),2); // <<sin(n*phi1)>>^2
4955 // final correction to QC{2}:
4956 twoCorrection = twoCorrection1stTerm + twoCorrection2ndTerm;
4957 // store final correction to QC{2}:
4958 fFinalCorrectionsForNUA->SetBinContent(1,twoCorrection);
4959
4960 cout<<"Quantifying corrections for non-uniform acceptance for QC:"<<endl;
4961 cout<<endl;
4962
4963 if(two-twoCorrection)
4964 {
4965 cout<<" QC{2,biased}/QC{2,corrected} = "<<two/(two-twoCorrection)<<endl;
4966 } else
4967 {
4968 cout<<" QC{2,corrected} = 0"<<endl;
4969 }
4970
4971 // correction to QC{4}:
4972 Double_t fourCorrection1stTerm = fQCorrectionsCos->GetBinContent(1)
4973 * fQCorrectionsCos->GetBinContent(3); // <<cos(n*phi1)>><<cos(n*(phi1-phi2-phi3))>>
4974 Double_t fourCorrection2ndTerm = fQCorrectionsSin->GetBinContent(1)
4975 * fQCorrectionsSin->GetBinContent(3); // <<sin(n*phi1)>><<sin(n*(phi1-phi2-phi3))>>
4976 Double_t fourCorrection3rdTerm = pow(fQCorrectionsCos->GetBinContent(2),2); // <<cos(n*(phi1+phi2))>>^2
4977 Double_t fourCorrection4thTerm = pow(fQCorrectionsSin->GetBinContent(2),2); // <<sin(n*(phi1+phi2))>>^2
4978 Double_t fourCorrection5thTerm = fQCorrectionsCos->GetBinContent(2)
4979 * (pow(fQCorrectionsCos->GetBinContent(1),2)
4980 - pow(fQCorrectionsSin->GetBinContent(1),2)); // <<cos(n*(phi1+phi2))>>(<<cos(n*phi1)>>^2+<<sin(n*phi1)>>^2)
4981 Double_t fourCorrection6thTerm = fQCorrectionsSin->GetBinContent(2)
4982 * fQCorrectionsCos->GetBinContent(1)
4983 * fQCorrectionsSin->GetBinContent(1); // <<sin(n*(phi1+phi2))>><<cos(n*phi1)>><<sin(n*phi1)>>
4984 Double_t fourCorrection7thTerm = two*(pow(fQCorrectionsCos->GetBinContent(1),2)
4985 + pow(fQCorrectionsSin->GetBinContent(1),2)); // <<cos(n*(phi1-phi2))>>(<<cos(n*phi1)>>^2+<<sin(n*phi1)>>^2)
4986 Double_t fourCorrection8thTerm = pow(pow(fQCorrectionsCos->GetBinContent(1),2)
4987 + pow(fQCorrectionsSin->GetBinContent(1),2),2); // (<<cos(n*phi1)>>^2+<<sin(n*phi1)>>^2)^2
4988 // final correction to QC{4}:
4989 fourCorrection = 4.*fourCorrection1stTerm-4.*fourCorrection2ndTerm
4990 + fourCorrection3rdTerm+fourCorrection4thTerm
4991 - 4.*fourCorrection5thTerm-8.*fourCorrection6thTerm
4992 - 8.*fourCorrection7thTerm+6.*fourCorrection8thTerm;
4993 // store final correction to QC{4}:
4994 fFinalCorrectionsForNUA->SetBinContent(2,fourCorrection);
4995
4996 if(four-2.*pow(two,2.)-fourCorrection)
4997 {
4998 cout<<" QC{4,biased}/QC{4,corrected} = "<<(four-2.*pow(two,2.))/(four-2.*pow(two,2.)-fourCorrection)<<endl;
4999 } else
5000 {
5001 cout<<" QC{4,corrected} = 0"<<endl;
5002 }
5003
5004 } else
5005 {
2bdc5281 5006 cout<<"WARNING: fQCorrectionsCos, fQCorrectionsSin or fFinalCorrectionsForNUA is NULL in QC::CFCFNUA !!!!"<<endl;
5007 cout<<" Corrections for non-uniform acceptance were not calculated for 'noname' integrated flow. "<<endl;
c365fe76 5008 }
5009
2bdc5281 5010} // end of AliFlowAnalysisWithQCumulants::CalculateFinalCorrectionsForNonUniformAcceptanceForNoNameIntegratedFlow(Bool_t useWeights)
5011
5012
5013//================================================================================================================================
5014
5015
5016void AliFlowAnalysisWithQCumulants::CalculateFinalCorrectionsForNonUniformAcceptanceForDifferentialFlow(Bool_t useWeights,TString type)
5017{
5018 // calculate final corrections due to non-uniform acceptance of the detector to reduced multi-particle correlations
5019 if(!(useWeights))
5020 {
5021 if(type == "POI")
5022 {
5023 // **** corrections for non-uniform acceptance for 2nd order QC' for POI's ****
5024
5025 // 1st term: <<cos(n*psi)>><<cos(n*phi)>>:
5026 if(fCorrectionsCosP1nPsiPtEtaPOI && fQCorrectionsCos)
5027 {
5028 // pt,eta:
a228a60e 5029 if(f2pFinalCorrectionsForNUAPtEtaPOI) f2pFinalCorrectionsForNUAPtEtaPOI->Reset(); // to be improved
2bdc5281 5030 TH2D *correctionPtEta1stTerm = new TH2D(*(fCorrectionsCosP1nPsiPtEtaPOI->ProjectionXY("","e")));
5031 correctionPtEta1stTerm->Scale(fQCorrectionsCos->GetBinContent(1)); // to be improved: are errors propagated correctly here?
5032 if(f2pFinalCorrectionsForNUAPtEtaPOI) f2pFinalCorrectionsForNUAPtEtaPOI->Add(correctionPtEta1stTerm); // to be improved (if condition goes somewhere else)
5033 delete correctionPtEta1stTerm;
5034 // pt:
a228a60e 5035 if(f2pFinalCorrectionsForNUAPtPOI) f2pFinalCorrectionsForNUAPtPOI->Reset(); // to be improved
2bdc5281 5036 TH1D *correctionPt1stTerm = new TH1D(*((this->MakePtProjection(fCorrectionsCosP1nPsiPtEtaPOI))->ProjectionX("","e"))); // to be improved: are errors propagated correctly here?
5037 correctionPt1stTerm->Scale(fQCorrectionsCos->GetBinContent(1)); // to be improved: are errors propagated correctly here?
5038 if(f2pFinalCorrectionsForNUAPtPOI) f2pFinalCorrectionsForNUAPtPOI->Add(correctionPt1stTerm); // to be improved (if condition goes somewhere else)
5039 delete correctionPt1stTerm;
5040 // eta:
a228a60e 5041 if(f2pFinalCorrectionsForNUAEtaPOI) f2pFinalCorrectionsForNUAEtaPOI->Reset(); // to be improved
2bdc5281 5042 TH1D *correctionEta1stTerm = new TH1D(*((this->MakeEtaProjection(fCorrectionsCosP1nPsiPtEtaPOI))->ProjectionX("","e"))); // to be improved: are errors propagated correctly here?
5043 correctionEta1stTerm->Scale(fQCorrectionsCos->GetBinContent(1)); // to be improved: are errors propagated correctly here?
5044 if(f2pFinalCorrectionsForNUAEtaPOI) f2pFinalCorrectionsForNUAEtaPOI->Add(correctionEta1stTerm); // to be improved (if condition goes somewhere else)
5045 delete correctionEta1stTerm;
5046 } else
5047 {
5048 cout<<"WARNING: (fCorrectionsCosP1nPsiPtEtaPOI && fQCorrectionsCos && f2pFinalCorrectionsForNUAPtEtaPOI) is NULL in QC::CFCFNUAFDF() !!!! "<<endl;
5049 cout<<" Corrections for non-uniform acceptance for differential flow are not correct."<<endl;
5050 }
5051
5052 // 2nd term: <<sin(n*psi)>><<sin(n*phi)>>:
5053 if(fCorrectionsSinP1nPsiPtEtaPOI && fQCorrectionsSin)
5054 {
a228a60e 5055 // pt,eta:
2bdc5281 5056 TH2D *correctionPtEta2ndTerm = new TH2D(*(fCorrectionsSinP1nPsiPtEtaPOI->ProjectionXY("","e")));
5057 correctionPtEta2ndTerm->Scale(fQCorrectionsSin->GetBinContent(1)); // to be improved: are errors propagated correctly here?
5058 if(f2pFinalCorrectionsForNUAPtEtaPOI) f2pFinalCorrectionsForNUAPtEtaPOI->Add(correctionPtEta2ndTerm); // to be improved (if condition goes somewhere else)
5059 delete correctionPtEta2ndTerm;
5060 // pt:
5061 TH1D *correctionPt2ndTerm = new TH1D(*((this->MakePtProjection(fCorrectionsSinP1nPsiPtEtaPOI))->ProjectionX("","e"))); // to be improved: are errors propagated correctly here?
5062 correctionPt2ndTerm->Scale(fQCorrectionsSin->GetBinContent(1)); // to be improved: are errors propagated correctly here?
5063 if(f2pFinalCorrectionsForNUAPtPOI) f2pFinalCorrectionsForNUAPtPOI->Add(correctionPt2ndTerm); // to be improved (if condition goes somewhere else)
5064 delete correctionPt2ndTerm;
5065 // eta:
5066 TH1D *correctionEta2ndTerm = new TH1D(*((this->MakeEtaProjection(fCorrectionsSinP1nPsiPtEtaPOI))->ProjectionX("","e"))); // to be improved: are errors propagated correctly here?
5067 correctionEta2ndTerm->Scale(fQCorrectionsSin->GetBinContent(1)); // to be improved: are errors propagated correctly here?
5068 if(f2pFinalCorrectionsForNUAEtaPOI) f2pFinalCorrectionsForNUAEtaPOI->Add(correctionEta2ndTerm); // to be improved (if condition goes somewhere else)
5069 delete correctionEta2ndTerm;
5070 } else
5071 {
5072 cout<<"WARNING: (fCorrectionsSinP1nPsiPtEtaPOI && fQCorrectionsSin) is NULL in QC::CFCFNUAFDF() !!!! "<<endl;
5073 cout<<" Corrections for non-uniform acceptance for differential flow are not correct."<<endl;
5074 }
5075 } else if(type == "RP")
5076 {
5077 // **** corrections for non-uniform acceptance for 2nd order QC' for RP's ****
5078
5079 // 1st term: <<cos(n*psi)>><<cos(n*phi)>>:
5080 if(fCorrectionsCosP1nPsiPtEtaRP && fQCorrectionsCos)
5081 {
5082 // pt,eta:
a228a60e 5083 if(f2pFinalCorrectionsForNUAPtEtaRP) f2pFinalCorrectionsForNUAPtEtaRP->Reset(); // to be improved
2bdc5281 5084 TH2D *correctionPtEta1stTerm = new TH2D(*(fCorrectionsCosP1nPsiPtEtaRP->ProjectionXY("","e")));
5085 correctionPtEta1stTerm->Scale(fQCorrectionsCos->GetBinContent(1)); // to be improved: are errors propagated correctly here?
5086 if(f2pFinalCorrectionsForNUAPtEtaRP) f2pFinalCorrectionsForNUAPtEtaRP->Add(correctionPtEta1stTerm); // to be improved (if condition goes somewhere else)
5087 delete correctionPtEta1stTerm;
5088 // pt:
a228a60e 5089 if(f2pFinalCorrectionsForNUAPtRP) f2pFinalCorrectionsForNUAPtRP->Reset(); // to be improved
2bdc5281 5090 TH1D *correctionPt1stTerm = new TH1D(*((this->MakePtProjection(fCorrectionsCosP1nPsiPtEtaRP))->ProjectionX("","e"))); // to be improved: are errors propagated correctly here?
5091 correctionPt1stTerm->Scale(fQCorrectionsCos->GetBinContent(1)); // to be improved: are errors propagated correctly here?
5092 if(f2pFinalCorrectionsForNUAPtRP) f2pFinalCorrectionsForNUAPtRP->Add(correctionPt1stTerm); // to be improved (if condition goes somewhere else)
5093 delete correctionPt1stTerm;
5094 // eta:
a228a60e 5095 if(f2pFinalCorrectionsForNUAEtaRP) f2pFinalCorrectionsForNUAEtaRP->Reset(); // to be improved
2bdc5281 5096 TH1D *correctionEta1stTerm = new TH1D(*((this->MakeEtaProjection(fCorrectionsCosP1nPsiPtEtaRP))->ProjectionX("","e"))); // to be improved: are errors propagated correctly here?
5097 correctionEta1stTerm->Scale(fQCorrectionsCos->GetBinContent(1)); // to be improved: are errors propagated correctly here?
5098 if(f2pFinalCorrectionsForNUAEtaRP) f2pFinalCorrectionsForNUAEtaRP->Add(correctionEta1stTerm); // to be improved (if condition goes somewhere else)
5099 delete correctionEta1stTerm;
5100 } else
5101 {
5102 cout<<"WARNING: (fCorrectionsCosP1nPsiPtEtaRP && fQCorrectionsCos) is NULL in QC::CFCFNUAFDF() !!!! "<<endl;
5103 cout<<" Corrections for non-uniform acceptance for differential flow are not correct."<<endl;
5104 }
5105 // 2nd term: <<sin(n*psi)>><<sin(n*phi)>>:
5106 if(fCorrectionsSinP1nPsiPtEtaRP && fQCorrectionsSin)
5107 {
5108 // pt,eta:
5109 TH2D *correctionPtEta2ndTerm = new TH2D(*(fCorrectionsSinP1nPsiPtEtaRP->ProjectionXY("","e")));
5110 correctionPtEta2ndTerm->Scale(fQCorrectionsSin->GetBinContent(1)); // to be improved: are errors propagated correctly here?
5111 if(f2pFinalCorrectionsForNUAPtEtaRP) f2pFinalCorrectionsForNUAPtEtaRP->Add(correctionPtEta2ndTerm); // to be improved (if condition goes somewhere else)
5112 delete correctionPtEta2ndTerm;
5113 // pt:
5114 TH1D *correctionPt2ndTerm = new TH1D(*((this->MakePtProjection(fCorrectionsSinP1nPsiPtEtaRP))->ProjectionX("","e"))); // to be improved: are errors propagated correctly here?
5115 correctionPt2ndTerm->Scale(fQCorrectionsSin->GetBinContent(1)); // to be improved: are errors propagated correctly here?
5116 if(f2pFinalCorrectionsForNUAPtRP) f2pFinalCorrectionsForNUAPtRP->Add(correctionPt2ndTerm); // to be improved (if condition goes somewhere else)
5117 delete correctionPt2ndTerm;
5118 // eta:
5119 TH1D *correctionEta2ndTerm = new TH1D(*((this->MakeEtaProjection(fCorrectionsSinP1nPsiPtEtaRP))->ProjectionX("","e"))); // to be improved: are errors propagated correctly here?
5120 correctionEta2ndTerm->Scale(fQCorrectionsSin->GetBinContent(1)); // to be improved: are errors propagated correctly here?
5121 if(f2pFinalCorrectionsForNUAEtaRP) f2pFinalCorrectionsForNUAEtaRP->Add(correctionEta2ndTerm); // to be improved (if condition goes somewhere else)
5122 delete correctionEta2ndTerm;
5123 } else
5124 {
5125 cout<<"WARNING: (fCorrectionsSinP1nPsiPtEtaRP && fQCorrectionsSin) is NULL in QC::CFCFNUAFDF() !!!! "<<endl;
5126 cout<<" Corrections for non-uniform acceptance for differential flow are not correct."<<endl;
5127 }
5128 } else // to else if(type == "RP")
5129 {
5130 cout<<"WARNING: Type must be either POI or RP in QC::CFCFNUAFDF() !!!! "<<endl;
5131 cout<<" Corrections for non-uniform acceptance for differential flow were not calculated."<<endl;
5132 }
5133 } else // to if(!(useWeights))
5134 {
5135 // ...
5136 }
5137
5138} // end of AliFlowAnalysisWithQCumulants::CalculateFinalCorrectionsForNonUniformAcceptanceForDifferentialFlow(Bool_t useWeights,TString type)
c365fe76 5139
5140
5141//================================================================================================================================
5142
5143
9c1a9547 5144void AliFlowAnalysisWithQCumulants::CalculateFinalResultsForNoNameIntegratedFlow(Bool_t useWeights)
5145{
5146 // calculate final results for 'no-name' integrated flow
5147
5148 // 2-, 4-, 6- and 8-particle azimuthal correlation:
5149 Double_t two = 0.; // <<2>>_{n|n}
5150 Double_t four = 0.; // <<4>>_{n,n|n,n}
5151 Double_t six = 0.; // <<6>>_{n,n,n|n,n,n}
5152 Double_t eight = 0.; // <<8>>_{n,n,n,n|n,n,n,n}
5153
5154 if(!(useWeights))
5155 {
c365fe76 5156 // measured multi-particle correlations:
9c1a9547 5157 two = fQCorrelations->GetBinContent(1);
5158 four = fQCorrelations->GetBinContent(11);
5159 six = fQCorrelations->GetBinContent(24);
c365fe76 5160 eight = fQCorrelations->GetBinContent(31);
9c1a9547 5161 }
5162
5163 if(useWeights)
5164 {
5165 two = fQCorrelationsW->GetBinContent(1);
5166 four = fQCorrelationsW->GetBinContent(41);
5167 six = fQCorrelationsW->GetBinContent(81);
5168 eight = fQCorrelationsW->GetBinContent(121);
5169 }
5170
5171 // 2nd, 4th, 6th and 8th order Q-cumulant:
5172 Double_t secondOrderQCumulant = two; // c_n{2}
5173 Double_t fourthOrderQCumulant = four-2.*pow(two,2.); // c_n{4}
5174 Double_t sixthOrderQCumulant = six-9.*two*four+12.*pow(two,3.); // c_n{6}
5175 Double_t eightOrderQCumulant = eight-16.*two*six-18.*pow(four,2.)+144.*pow(two,2.)*four-144.*pow(two,4.); // c_n{8}
5176
c365fe76 5177 // corrections for non-uniform acceptance for QC{2}, QC{4}, QC{6} and QC{8}
f4d9977e 5178 Double_t twoCorrection = 0.;
5179 Double_t fourCorrection = 0.;
5180 //Double_t sixCorrection = 0.;
5181 //Double_t eightCorrection = 0.;
5182 if(fFinalCorrectionsForNUA)
5183 {
5184 twoCorrection = fFinalCorrectionsForNUA->GetBinContent(1); // bias to QC{2} coming from non-uniform acceptance of the detector
5185 fourCorrection = fFinalCorrectionsForNUA->GetBinContent(2); // bias to QC{4} coming from non-uniform acceptance of the detector
5186 // sixCorrection = fFinalCorrectionsForNUA->GetBinContent(3); // bias to QC{6} coming from non-uniform acceptance of the detector
5187 // eightCorrection = fFinalCorrectionsForNUA->GetBinContent(4); // bias to QC{8} coming from non-uniform acceptance of the detector
5188 }
c365fe76 5189
5190 // applying the corrections for non-uniform acceptance:
5191 secondOrderQCumulant = secondOrderQCumulant - twoCorrection;
5192 fourthOrderQCumulant = fourthOrderQCumulant - fourCorrection;
5193 //sixthOrderQCumulant = sixthOrderQCumulant - sixCorrection;
5194 //eightOrderQCumulant = eightOrderQCumulant - eightCorrection;
5195
cad7c05a 5196 // errors: (to be improved i.e. reimplemented)
5197 Double_t secondOrderError = 0;
5198 if(two > 0. && !(useWeights))
5199 {
5200 Double_t nEvtsNoName = (fCommonHists2nd->GetHistMultRP())->GetEntries();
5201 if(nEvtsNoName>0) secondOrderError = (fQCorrelations->GetBinError(1)/(2.*pow(two,0.5)))/(pow(nEvtsNoName,0.5));
5202 }
5203
9c1a9547 5204 if(useWeights) sixthOrderQCumulant = 0.; // to be removed (once 6th order with weights is calculated)
5205 if(useWeights) eightOrderQCumulant = 0.; // to be removed (once 8th order with weights is calculated)
5206
5207 // "no-name" integrated flow estimates from Q-cumulants:
5208 Double_t dVn2 = 0.,dVn4 = 0.,dVn6 = 0.,dVn8 = 0.;
5209 // Double_t sd2=0.,sd4=0.,sd6=0.,sd8=0.; // to be improved (errors needed)
5210 if(secondOrderQCumulant>0.)
5211 {
5212 // v_n{2}
5213 dVn2 = pow(secondOrderQCumulant,0.5);
5214 if(!(useWeights))
5215 {
5216 fIntFlowResultsQC->SetBinContent(1,dVn2);
cad7c05a 5217 fIntFlowResultsQC->SetBinError(1,secondOrderError); // to be improved
9c1a9547 5218 }
5219 if(useWeights)
5220 {
5221 fIntFlowResultsQCW->SetBinContent(1,dVn2);
5222 fIntFlowResultsQCW->SetBinError(1,0.); // to be improved
5223 }
5224
5225 // fill common histogram:
cad7c05a 5226 fCommonHistsResults2nd->FillIntegratedFlow(dVn2,secondOrderError); // to be improved
9c1a9547 5227
5228 }
5229 if(fourthOrderQCumulant<0.)
5230 {
5231 // v_n{4}
5232 dVn4 = pow(-fourthOrderQCumulant,1./4.);
5233 if(!(useWeights))
5234 {
5235 fIntFlowResultsQC->SetBinContent(2,dVn4);
5236 fIntFlowResultsQC->SetBinError(2,0.); // to be improved
5237 }
5238 if(useWeights)
5239 {
5240 fIntFlowResultsQCW->SetBinContent(2,dVn4);
5241 fIntFlowResultsQCW->SetBinError(2,0.); // to be improved
5242 }
5243
5244 // fill common histogram:
5245 fCommonHistsResults4th->FillIntegratedFlow(dVn4, 0.); // to be improved
5246
5247 }
5248 if(sixthOrderQCumulant>0.)
5249 {
5250 // v_n{6}
5251 dVn6 = pow((1./4.)*sixthOrderQCumulant,1./6.);
5252 if(!(useWeights))
5253 {
5254 fIntFlowResultsQC->SetBinContent(3,dVn6);
5255 fIntFlowResultsQC->SetBinError(3,0.); // to be improved
5256 }
5257 if(useWeights)
5258 {
5259 fIntFlowResultsQCW->SetBinContent(3,dVn6);
5260 fIntFlowResultsQCW->SetBinError(3,0.); // to be improved
5261 }
5262
5263 // fill common histogram:
5264 fCommonHistsResults6th->FillIntegratedFlow(dVn6, 0.); // to be improved
5265
5266 }
5267 if(eightOrderQCumulant<0.)
5268 {
5269 // v_n{8}
5270 dVn8 = pow((-1./33.)*eightOrderQCumulant,1./8.);
5271 if(!(useWeights))
5272 {
5273 fIntFlowResultsQC->SetBinContent(4,dVn8);
5274 fIntFlowResultsQC->SetBinError(4,0.); // to be improved
5275 }
5276 if(useWeights)
5277 {
5278 fIntFlowResultsQCW->SetBinContent(4,dVn8);
5279 fIntFlowResultsQCW->SetBinError(4,0.); // to be improved
5280 }
5281
5282 // fill common histogram:
5283 fCommonHistsResults8th->FillIntegratedFlow(dVn8, 0.); // to be improved
5284
5285 }
4057ba99 5286
9c1a9547 5287} // end of AliFlowAnalysisWithQCumulants::CalculateFinalResultsForNoNameIntegratedFlow(Bool_t useWeights)
5288
5289
5290//================================================================================================================================
5291
5292
5293void AliFlowAnalysisWithQCumulants::CalculateFinalResultsForRPandPOIIntegratedFlow(Bool_t useWeights, TString type)
5294{
5295 // calculate final results for integrated flow of RPs and POIs
5296
5297 TH1F *yield2ndPt = NULL;
5298 TH1F *yield4thPt = NULL;
5299 TH1F *yield6thPt = NULL;
5300 TH1F *yield8thPt = NULL;
4057ba99 5301
9c1a9547 5302 if(type == "POI")
5303 {
5304 yield2ndPt = new TH1F(*(fCommonHists2nd->GetHistPtPOI()));
5305 yield4thPt = new TH1F(*(fCommonHists4th->GetHistPtPOI()));
5306 yield6thPt = new TH1F(*(fCommonHists6th->GetHistPtPOI()));
5307 yield8thPt = new TH1F(*(fCommonHists8th->GetHistPtPOI()));
5308 }
5309 else if (type == "RP")
5310 {
5311 yield2ndPt = new TH1F(*(fCommonHists2nd->GetHistPtRP()));
5312 yield4thPt = new TH1F(*(fCommonHists4th->GetHistPtRP()));
5313 yield6thPt = new TH1F(*(fCommonHists6th->GetHistPtRP()));
5314 yield8thPt = new TH1F(*(fCommonHists8th->GetHistPtRP()));
5315 }
3d824203 5316
9c1a9547 5317 Int_t nBinsPt = yield2ndPt->GetNbinsX();
3d824203 5318
9c1a9547 5319 TH1D *flow2ndPt = NULL;
5320 TH1D *flow4thPt = NULL;
5321 TH1D *flow6thPt = NULL;
5322 TH1D *flow8thPt = NULL;
3d824203 5323
9c1a9547 5324 if(!(useWeights))
5325 {
5326 if(type == "POI")
5327 {
5328 flow2ndPt = new TH1D(*fvn2ndPtPOI);
5329 flow4thPt = new TH1D(*fvn4thPtPOI);
5330 flow6thPt = new TH1D(*fvn6thPtPOI);
5331 flow8thPt = new TH1D(*fvn8thPtPOI);
5332 }
5333 else if (type == "RP")
5334 {
5335 flow2ndPt = new TH1D(*fvn2ndPtRP);
5336 flow4thPt = new TH1D(*fvn4thPtRP);
5337 flow6thPt = new TH1D(*fvn6thPtRP);
5338 flow8thPt = new TH1D(*fvn8thPtRP);
5339 }
5340 }
5341 else if (useWeights)
5342 {
5343 if(type == "POI")
5344 {
5345 flow2ndPt = new TH1D(*fvn2ndPtPOIW);
5346 flow4thPt = new TH1D(*fvn4thPtPOIW);
5347 flow6thPt = new TH1D(*fvn6thPtPOIW);
5348 flow8thPt = new TH1D(*fvn8thPtPOIW);
5349 }
5350 else if (type == "RP")
5351 {
5352 flow2ndPt = new TH1D(*fvn2ndPtRPW);
5353 flow4thPt = new TH1D(*fvn4thPtRPW);
5354 flow6thPt = new TH1D(*fvn6thPtRPW);
5355 flow8thPt = new TH1D(*fvn8thPtRPW);
5356 }
5357 }
3d824203 5358
9c1a9547 5359 Double_t dvn2nd = 0., dvn4th = 0., dvn6th = 0., dvn8th = 0.; // differential flow
5360 Double_t dVn2nd = 0., dVn4th = 0., dVn6th = 0., dVn8th = 0.; // integrated flow
5361 Double_t dSd2nd = 0., dSd4th = 0., dSd6th = 0., dSd8th = 0.; // error on integrated flow (to be improved - calculation needed)
5362
5363 Double_t dYield2nd = 0., dYield4th = 0., dYield6th = 0., dYield8th = 0.; // pt yield
5364 Double_t dSum2nd = 0., dSum4th = 0., dSum6th = 0., dSum8th = 0.; // needed for normalizing integrated flow
3d824203 5365
9c1a9547 5366 // looping over pt bins:
5367 for(Int_t p=1;p<nBinsPt+1;p++)
5368 {
9c1a9547 5369 dvn2nd = flow2ndPt->GetBinContent(p);
5370 dvn4th = flow4thPt->GetBinContent(p);
5371 dvn6th = flow6thPt->GetBinContent(p);
5372 dvn8th = flow8thPt->GetBinContent(p);
5373
fcb2164b 5374 dYield2nd = yield2ndPt->GetBinContent(p);
9c1a9547 5375 dYield4th = yield4thPt->GetBinContent(p);
5376 dYield6th = yield6thPt->GetBinContent(p);
5377 dYield8th = yield8thPt->GetBinContent(p);
5378
5379 dVn2nd += dvn2nd*dYield2nd;
5380 dVn4th += dvn4th*dYield4th;
5381 dVn6th += dvn6th*dYield6th;
5382 dVn8th += dvn8th*dYield8th;
5383
5384 dSum2nd += dYield2nd;
5385 dSum4th += dYield4th;
5386 dSum6th += dYield6th;
5387 dSum8th += dYield8th;
5388
5389 // ... to be improved - errors needed to be calculated
5390
5391 } // end of for(Int_t p=1;p<nBinsPt+1;p++)
5392
5393 // normalizing the results for integrated flow:
5394 if(dSum2nd) dVn2nd/=dSum2nd;
5395 if(dSum4th) dVn4th/=dSum4th;
5396 if(dSum6th) dVn6th/=dSum6th;
5397 if(dSum8th) dVn8th/=dSum8th;
3d824203 5398
9c1a9547 5399 // storing the results for integrated flow:
5400 if(!(useWeights))
5401 {
5402 if(type == "POI")
5403 {
5404 // 2nd:
5405 fIntFlowResultsPOIQC->SetBinContent(1,dVn2nd);
5406 fIntFlowResultsPOIQC->SetBinError(1,dSd2nd);
5407 // 4th:
5408 fIntFlowResultsPOIQC->SetBinContent(2,dVn4th);
5409 fIntFlowResultsPOIQC->SetBinError(2,dSd4th);
5410 // 6th:
5411 fIntFlowResultsPOIQC->SetBinContent(3,dVn6th);
5412 fIntFlowResultsPOIQC->SetBinError(3,dSd6th);
5413 // 8th:
5414 fIntFlowResultsPOIQC->SetBinContent(4,dVn8th);
5415 fIntFlowResultsPOIQC->SetBinError(4,dSd8th);
5416 }
5417 else if (type == "RP")
5418 {
5419 // 2nd:
5420 fIntFlowResultsRPQC->SetBinContent(1,dVn2nd);
5421 fIntFlowResultsRPQC->SetBinError(1,dSd2nd);
5422 // 4th:
5423 fIntFlowResultsRPQC->SetBinContent(2,dVn4th);
5424 fIntFlowResultsRPQC->SetBinError(2,dSd4th);
5425 // 6th:
5426 fIntFlowResultsRPQC->SetBinContent(3,dVn6th);
5427 fIntFlowResultsRPQC->SetBinError(3,dSd6th);
5428 // 8th:
5429 fIntFlowResultsRPQC->SetBinContent(4,dVn8th);
5430 fIntFlowResultsRPQC->SetBinError(4,dSd8th);
5431 }
5432 }
5433 else if (useWeights)
5434 {
5435 if(type == "POI")
5436 {
5437 // 2nd:
5438 fIntFlowResultsPOIQCW->SetBinContent(1,dVn2nd);
5439 fIntFlowResultsPOIQCW->SetBinError(1,dSd2nd);
5440 // 4th:
5441 fIntFlowResultsPOIQCW->SetBinContent(2,dVn4th);
5442 fIntFlowResultsPOIQCW->SetBinError(2,dSd4th);
5443 // 6th:
5444 fIntFlowResultsPOIQCW->SetBinContent(3,dVn6th);
5445 fIntFlowResultsPOIQCW->SetBinError(3,dSd6th);
5446 // 8th:
5447 fIntFlowResultsPOIQCW->SetBinContent(4,dVn8th);
5448 fIntFlowResultsPOIQCW->SetBinError(4,dSd8th);
5449 }
5450 else if (type == "RP")
5451 {
5452 // 2nd:
5453 fIntFlowResultsRPQCW->SetBinContent(1,dVn2nd);
5454 fIntFlowResultsRPQCW->SetBinError(1,dSd2nd);
5455 // 4th:
5456 fIntFlowResultsRPQCW->SetBinContent(2,dVn4th);
5457 fIntFlowResultsRPQCW->SetBinError(2,dSd4th);
5458 // 6th:
5459 fIntFlowResultsRPQCW->SetBinContent(3,dVn6th);
5460 fIntFlowResultsRPQCW->SetBinError(3,dSd6th);
5461 // 8th:
5462 fIntFlowResultsRPQCW->SetBinContent(4,dVn8th);
5463 fIntFlowResultsRPQCW->SetBinError(4,dSd8th);
5464 }
5465 }
3d824203 5466
9c1a9547 5467 // storing the results for integrated flow in common histos:
5468 // to be improved - now they are being filled twice ...
5469 if(type == "POI")
5470 {
5471 fCommonHistsResults2nd->FillIntegratedFlowPOI(dVn2nd,0.); // to be improved (errors)
5472 fCommonHistsResults4th->FillIntegratedFlowPOI(dVn4th,0.); // to be improved (errors)
5473 fCommonHistsResults6th->FillIntegratedFlowPOI(dVn6th,0.); // to be improved (errors)
5474 fCommonHistsResults8th->FillIntegratedFlowPOI(dVn8th,0.); // to be improved (errors)
5475 }
5476 else if (type == "RP")
5477 {
5478 fCommonHistsResults2nd->FillIntegratedFlowRP(dVn2nd,0.); // to be improved (errors)
5479 fCommonHistsResults4th->FillIntegratedFlowRP(dVn4th,0.); // to be improved (errors)
5480 fCommonHistsResults6th->FillIntegratedFlowRP(dVn6th,0.); // to be improved (errors)
5481 fCommonHistsResults8th->FillIntegratedFlowRP(dVn8th,0.); // to be improved (errors)
5482 }
3d824203 5483
9c1a9547 5484 delete flow2ndPt;
5485 delete flow4thPt;
5486 delete flow6thPt;
5487 delete flow8thPt;
3d824203 5488
9c1a9547 5489 delete yield2ndPt;
5490 delete yield4thPt;
5491 delete yield6thPt;
5492 delete yield8thPt;
5493
5494} // end of AliFlowAnalysisWithQCumulants::CalculateFinalResultsForRPandPOIIntegratedFlow(Bool_t useWeights, TString type)
5495
5496
5497//==================================================================================================================================
5498
5499
3c16adde 5500void AliFlowAnalysisWithQCumulants::CalculateFinalResultsForDifferentialFlow(
5501 TH2D *flowPtEta, TH1D *flowPt, TH1D *flowEta,
5502 TProfile2D *profile2ndPtEta, TProfile2D *profile4thPtEta,
5503 TProfile2D *profile6thPtEta, TProfile2D *profile8thPtEta)
9c1a9547 5504{
5505 // calculate and store the final results for integrated flow
3d824203 5506
9c1a9547 5507 TString *namePtEta = new TString();
5508 TString *type = new TString();
3c16adde 5509 TString *order2nd = new TString();
5510 TString *order4th = new TString();
5511 TString *order6th = new TString();
5512 TString *order8th = new TString();
9c1a9547 5513 TString *w = new TString();
5514
3c16adde 5515 if(profile2ndPtEta) *namePtEta = profile2ndPtEta->GetName();
9c1a9547 5516 if(namePtEta->Contains("POI")) *type = "POI";
5517 if(namePtEta->Contains("RP")) *type = "RP";
9c1a9547 5518 if(namePtEta->Contains("W")) *w = "W";
3c16adde 5519 if(namePtEta->Contains("2")) *order2nd = "2";
3c16adde 5520 if(profile4thPtEta) *namePtEta = profile4thPtEta->GetName();
5521 if(namePtEta->Contains("4")) *order4th = "4";
5522
5523 if(profile6thPtEta) *namePtEta = profile6thPtEta->GetName();
5524 if(namePtEta->Contains("6")) *order6th = "6";
5525
5526 if(profile8thPtEta) *namePtEta = profile8thPtEta->GetName();
5527 if(namePtEta->Contains("8")) *order8th = "8";
2bdc5281 5528
3c16adde 5529 TProfile *profile2ndPt = NULL;
5530 TProfile *profile4thPt = NULL;
5531 TProfile *profile6thPt = NULL;
5532 TProfile *profile8thPt = NULL;
5533
5534 TProfile *profile2ndEta = NULL;
5535 TProfile *profile4thEta = NULL;
5536 TProfile *profile6thEta = NULL;
5537 TProfile *profile8thEta = NULL;
5538
5539 if(*order2nd == "2")
5540 {
5541 profile2ndPt = new TProfile(*(this->MakePtProjection(profile2ndPtEta)));
5542 profile2ndEta = new TProfile(*(this->MakeEtaProjection(profile2ndPtEta)));
5543 if(*order4th == "4")
5544 {
5545 profile4thPt = new TProfile(*(this->MakePtProjection(profile4thPtEta)));
5546 profile4thEta = new TProfile(*(this->MakeEtaProjection(profile4thPtEta)));
5547 if(*order6th == "6")
5548 {
5549 profile6thPt = new TProfile(*(this->MakePtProjection(profile6thPtEta)));
5550 profile6thEta = new TProfile(*(this->MakeEtaProjection(profile6thPtEta)));
5551 if(*order8th == "8")
5552 {
5553 profile8thPt = new TProfile(*(this->MakePtProjection(profile8thPtEta)));
5554 profile8thEta = new TProfile(*(this->MakeEtaProjection(profile8thPtEta)));
5555 }
5556 }
5557 }
5558 }
3d824203 5559
3c16adde 5560 Int_t nBinsPt = profile2ndPt->GetNbinsX();
5561 Int_t nBinsEta = profile2ndEta->GetNbinsX();
3d824203 5562
3c16adde 5563 Double_t dV2 = 0.;
5564 Double_t dV4 = 0.;
5565 Double_t dV6 = 0.;
9c1a9547 5566 Double_t dV8 = 0.;
3d824203 5567
9c1a9547 5568 if(!(*w == "W"))
5569 {
2bdc5281 5570 dV2 = fIntFlowResultsQC->GetBinContent(1);
9c1a9547 5571 dV4 = fIntFlowResultsQC->GetBinContent(2);
5572 dV6 = fIntFlowResultsQC->GetBinContent(3);
5573 dV8 = fIntFlowResultsQC->GetBinContent(4);
5574 }
5575 else if(*w == "W")
5576 {
5577 dV2 = fIntFlowResultsQCW->GetBinContent(1);
5578 dV4 = fIntFlowResultsQCW->GetBinContent(2);
5579 dV6 = fIntFlowResultsQCW->GetBinContent(3);
5580 dV8 = fIntFlowResultsQCW->GetBinContent(4);
5581 }
5582
5583 // 3D (pt,eta):
5584 Double_t twoPrimePtEta = 0.; // <<2'>> (pt,eta)
5585 Double_t fourPrimePtEta = 0.; // <<4'>> (pt,eta)
5586 //Double_t sixPrimePtEta = 0.; // <<6'>> (pt,eta)
5587 //Double_t eightPrimePtEta = 0.; // <<8'>> (pt,eta)
5588 Double_t secondOrderDiffFlowCumulantPtEta = 0.; // d_n{2,Q} (pt,eta)
5589 Double_t fourthOrderDiffFlowCumulantPtEta = 0.; // d_n{4,Q} (pt,eta)
5590 //Double_t sixthOrderDiffFlowCumulantPtEta = 0.; // d_n{6,Q} (pt,eta)
5591 //Double_t eightOrderDiffFlowCumulantPtEta = 0.; // d_n{8,Q} (pt,eta)2nd
5592 Double_t dv2PtEta = 0.; // v'_n{2} (pt,eta)
5593 Double_t dv4PtEta = 0.; // v'_n{4} (pt,eta)
5594 //Double_t dv6PtEta = 0.; // v'_n{6} (pt,eta)
5595 //Double_t dv8PtEta = 0.; // v'_n{8} (pt,eta)
5596
5597 // 2D (pt):
5598 Double_t twoPrimePt = 0.; // <<2'>> (pt)
5599 Double_t fourPrimePt = 0.; // <<4'>> (pt)
5600 //Double_t sixPrimePt = 0.; // <<6'>> (pt)
5601 //Double_t eightPrimePt = 0.; // <<8'>> (pt)
5602 Double_t secondOrderDiffFlowCumulantPt = 0.; // d_n{2,Q} (pt)
5603 Double_t fourthOrderDiffFlowCumulantPt = 0.; // d_n{4,Q} (pt)
5604 //Double_t sixthOrderDiffFlowCumulantPt = 0.; // d_n{6,Q} (pt)
5605 //Double_t eightOrderDiffFlowCumulantPt = 0.; // d_n{8,Q} (pt)
5606 Double_t dv2Pt = 0.; // v'_n{2} (pt)
5607 Double_t dv4Pt = 0.; // v'_n{4} (pt)
5608 //Double_t dv6Pt = 0.; // v'_n{6} (pt)
5609 //Double_t dv8Pt = 0.; // v'_n{8} (pt)
5610
5611 // 2D (eta):
5612 Double_t twoPrimeEta = 0.; // <<2'>> (eta)
5613 Double_t fourPrimeEta = 0.; // <<4>> (eta)
5614 //Double_t sixPrimeEta = 0.; // <<6>> (eta)
5615 //Double_t eightPrimeEta = 0.; // <<8'>> (eta)
5616 Double_t secondOrderDiffFlowCumulantEta = 0.; // d_n{2,Q} (eta)
5617 Double_t fourthOrderDiffFlowCumulantEta = 0.; // d_n{4,Q} (eta)
5618 //Double_t sixthOrderDiffFlowCumulantEta = 0.; // d_n{6,Q} (eta)
5619 //Double_t eightOrderDiffFlowCumulantEta = 0.; // d_n{8,Q} (eta)
5620 Double_t dv2Eta = 0.; // v'_n{2} (eta)
5621 Double_t dv4Eta = 0.; // v'_n{4} (eta)
5622 //Double_t dv6Eta = 0.; // v'_n{6} (eta)
5623 //Double_t dv8Eta = 0.; // v'_n{8} (eta)
5624
5625
5626 // looping over (pt,eta) bins to calculate v'(pt,eta)
5627 for(Int_t p=1;p<nBinsPt+1;p++)
5628 {
5629 for(Int_t e=1;e<nBinsEta+1;e++)
5630 {
5631
5632 // 2nd order:
3c16adde 5633 twoPrimePtEta = profile2ndPtEta->GetBinContent(profile2ndPtEta->GetBin(p,e));
9c1a9547 5634 secondOrderDiffFlowCumulantPtEta = twoPrimePtEta;
2bdc5281 5635
5636
5637 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
5638 // to be improved (applying correction for NUA):
5639 if(namePtEta->Contains("POI"))
5640 {
5641 if(f2pFinalCorrectionsForNUAPtEtaPOI) secondOrderDiffFlowCumulantPtEta = twoPrimePtEta
5642 - f2pFinalCorrectionsForNUAPtEtaPOI->GetBinContent(f2pFinalCorrectionsForNUAPtEtaPOI->GetBin(p,e)) ;
5643 } else if (namePtEta->Contains("RP"))
5644 {
5645 if(f2pFinalCorrectionsForNUAPtEtaRP) secondOrderDiffFlowCumulantPtEta = twoPrimePtEta
5646 - f2pFinalCorrectionsForNUAPtEtaRP->GetBinContent(f2pFinalCorrectionsForNUAPtEtaRP->GetBin(p,e));
5647 }
5648 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
5649
5650
9c1a9547 5651 if(dV2)
5652 {
5653 dv2PtEta = secondOrderDiffFlowCumulantPtEta/dV2;
3c16adde 5654 if(*order2nd == "2")
5655 {
5656 flowPtEta->SetBinContent(p,e,dv2PtEta);
5657 }
9c1a9547 5658 }
5659
5660 // 4th order:
3c16adde 5661 if(*order4th == "4" || *order6th == "6" || *order8th == "8")
9c1a9547 5662 {
3c16adde 5663 fourPrimePtEta = profile4thPtEta->GetBinContent(profile4thPtEta->GetBin(p,e));
9c1a9547 5664 fourthOrderDiffFlowCumulantPtEta = fourPrimePtEta - 2.*twoPrimePtEta*pow(dV2,2.); // to be improved (correlations instead of pow(dV2,2.))
5665 if(dV4)
5666 {
3c16adde 5667 dv4PtEta = -fourthOrderDiffFlowCumulantPtEta/pow(dV4,3);
5668 if(*order4th == "4")
5669 {
5670 flowPtEta->SetBinContent(p,e,dv4PtEta);
5671 }
9c1a9547 5672 }
5673 }
5674
5675 } // end of for(Int_t e=1;e<nBinsEta+1;e++)
5676 } // end of for(Int_t p=1;p<nBinsPt+1;p++)
5677
5678
5679 // looping over (pt) bins to calcualate v'(pt)
5680 for(Int_t p=1;p<nBinsPt+1;p++)
5681 {
3d824203 5682
9c1a9547 5683 // 2nd order:
3c16adde 5684 twoPrimePt = profile2ndPt->GetBinContent(p);
9c1a9547 5685 secondOrderDiffFlowCumulantPt = twoPrimePt;
2bdc5281 5686
5687
5688 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
5689 // to be improved (applying correction for NUA):
5690 if(namePtEta->Contains("POI"))
5691 {
5692 if(f2pFinalCorrectionsForNUAPtPOI) secondOrderDiffFlowCumulantPt = twoPrimePt
5693 - f2pFinalCorrectionsForNUAPtPOI->GetBinContent(p) ;
5694 } else if (namePtEta->Contains("RP"))
5695 {
5696 if(f2pFinalCorrectionsForNUAPtRP) secondOrderDiffFlowCumulantPt = twoPrimePt
5697 - f2pFinalCorrectionsForNUAPtRP->GetBinContent(p);
5698 }
5699 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
5700
5701
9c1a9547 5702 if(dV2)
5703 {
5704 dv2Pt = secondOrderDiffFlowCumulantPt/dV2;
3c16adde 5705 if(*order2nd == "2")
5706 {
5707 flowPt->SetBinContent(p,dv2Pt);
5708 }
9c1a9547 5709
5710 // common control histos: (to be improved fill only once. now they are filled first without weights and then with weights):
3c16adde 5711 if(namePtEta->Contains("POI") && *order2nd == "2")
9c1a9547 5712 {
5713 fCommonHistsResults2nd->FillDifferentialFlowPtPOI(p,dv2Pt,0.); //to be improved (errors && bb or bb+1 ?)
5714 }
3c16adde 5715 else if(namePtEta->Contains("RP") && *order2nd == "2")
9c1a9547 5716 {
5717 fCommonHistsResults2nd->FillDifferentialFlowPtRP(p,dv2Pt,0.); //to be improved (errors && bb or bb+1 ?)
5718 }
5719
5720 }
5721
5722 // 4th order:
3c16adde 5723 if(*order4th == "4" || *order6th == "6" || *order8th == "8")
9c1a9547 5724 {
3c16adde 5725 fourPrimePt = profile4thPt->GetBinContent(profile4thPt->GetBin(p));
9c1a9547 5726 fourthOrderDiffFlowCumulantPt = fourPrimePt - 2.*twoPrimePt*pow(dV2,2.); // to be improved (correlations instead of pow(dV2,2.))
5727 if(dV4)
5728 {
3c16adde 5729 dv4Pt = -fourthOrderDiffFlowCumulantPt/pow(dV4,3);
5730 if(*order4th == "4")
5731 {
5732 flowPt->SetBinContent(p,dv4Pt);
5733 }
9c1a9547 5734
5735 // common control histos: (to be improved):
3c16adde 5736 if(namePtEta->Contains("POI") && *order4th == "4")
9c1a9547 5737 {
5738 fCommonHistsResults4th->FillDifferentialFlowPtPOI(p,dv4Pt,0.); //to be improved (errors && bb or bb+1 ?)
5739 }
3c16adde 5740 else if(namePtEta->Contains("RP") && *order4th == "4" )
9c1a9547 5741 {
5742 fCommonHistsResults4th->FillDifferentialFlowPtRP(p,dv4Pt,0.); //to be improved (errors && bb or bb+1 ?)
5743 }
5744
5745 }
5746 }
5747
5748 } // end of for(Int_t p=1;p<nBinsPt+1;p++)
3d824203 5749
5750
9c1a9547 5751 // looping over (eta) bins to calcualate v'(eta)
5752 for(Int_t e=1;e<nBinsEta+1;e++)
5753 {
3d824203 5754
9c1a9547 5755 // 2nd order:
3c16adde 5756 twoPrimeEta = profile2ndEta->GetBinContent(e);
9c1a9547 5757 secondOrderDiffFlowCumulantEta = twoPrimeEta;
2bdc5281 5758
5759
5760 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
5761 // to be improved (applying correction for NUA):
5762 if(namePtEta->Contains("POI"))
5763 {
5764 if(f2pFinalCorrectionsForNUAEtaPOI) secondOrderDiffFlowCumulantEta = twoPrimeEta
5765 - f2pFinalCorrectionsForNUAEtaPOI->GetBinContent(e) ;
5766 } else if (namePtEta->Contains("RP"))
5767 {
5768 if(f2pFinalCorrectionsForNUAEtaRP) secondOrderDiffFlowCumulantEta = twoPrimeEta
5769 - f2pFinalCorrectionsForNUAEtaRP->GetBinContent(e);
5770 }
5771 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
5772
5773
9c1a9547 5774 if(dV2)
5775 {
5776 dv2Eta = secondOrderDiffFlowCumulantEta/dV2;
3c16adde 5777 if(*order2nd == "2")
5778 {
5779 flowEta->SetBinContent(e,dv2Eta);
5780 }
9c1a9547 5781
5782 // common control histos: (to be improved):
3c16adde 5783 if(namePtEta->Contains("POI") && *order2nd == "2")
9c1a9547 5784 {
5785 fCommonHistsResults2nd->FillDifferentialFlowEtaPOI(e,dv2Eta,0.); //to be improved (errors && bb or bb+1 ?)
5786 }
3c16adde 5787 else if(namePtEta->Contains("RP") && *order2nd == "2")
9c1a9547 5788 {
5789 fCommonHistsResults2nd->FillDifferentialFlowEtaRP(e,dv2Eta,0.); //to be improved (errors && bb or bb+1 ?)
5790 }
5791
2bdc5281 5792
9c1a9547 5793 }
5794
5795 // 4th order:
3c16adde 5796 if(*order4th == "4" || *order6th == "6" || *order8th == "8")
9c1a9547 5797 {
3c16adde 5798 fourPrimeEta = profile4thEta->GetBinContent(profile4thEta->GetBin(e));
9c1a9547 5799 fourthOrderDiffFlowCumulantEta = fourPrimeEta - 2.*twoPrimeEta*pow(dV2,2.); // to be improved (correlations instead of pow(dV2,2.))
5800 if(dV4)
5801 {
3c16adde 5802 dv4Eta = -fourthOrderDiffFlowCumulantEta/pow(dV4,3);
5803 if(*order4th == "4")
5804 {
5805 flowEta->SetBinContent(e,dv4Eta);
5806 }
9c1a9547 5807
5808 // common control histos: (to be improved):
3c16adde 5809 if(namePtEta->Contains("POI") && *order4th == "4")
9c1a9547 5810 {
5811 fCommonHistsResults4th->FillDifferentialFlowEtaPOI(e,dv4Eta,0.); //to be improved (errors && bb or bb+1 ?)
5812 }
3c16adde 5813 else if(namePtEta->Contains("RP") && *order4th == "4")
9c1a9547 5814 {
5815 fCommonHistsResults4th->FillDifferentialFlowEtaRP(e,dv4Eta,0.); //to be improved (errors && bb or bb+1 ?)
5816 }
5817
5818 }
5819 }
5820
5821 } // end of for(Int_t e=1;e<nBinsEta+1;e++)
5822
5823 delete namePtEta;
5824 delete type;
3c16adde 5825 delete order2nd;
5826 delete order4th;
5827 delete order6th;
5828 delete order8th;
9c1a9547 5829 delete w;
3c16adde 5830 delete profile2ndPt;
5831 delete profile4thPt;
5832 delete profile6thPt;
5833 delete profile8thPt;
5834 delete profile2ndEta;
5835 delete profile4thEta;
5836 delete profile6thEta;
5837 delete profile8thEta;
3d824203 5838
9c1a9547 5839} // end of AliFlowAnalysisWithQCumulants::CalculateFinalResultsForDifferentialFlow(Bool_t useWeights, TString type)
bc92c0cb 5840
bc92c0cb 5841
9c1a9547 5842//================================================================================================================================
bc92c0cb 5843
9c1a9547 5844
5845void AliFlowAnalysisWithQCumulants::PrintFinalResultsForIntegratedFlow(Bool_t useWeights, TString type)
bc92c0cb 5846{
9c1a9547 5847 // printing on the screen the final results for integrated flow ('no-name', POI and RP, without/with weights)
3d824203 5848
9c1a9547 5849 Int_t n = 2; // to be improved / removed
77515452 5850
9c1a9547 5851 Double_t nEvtsNoName = (fCommonHists2nd->GetHistMultRP())->GetEntries(); // to be improved
5852 Double_t dMultNoName = (fCommonHists2nd->GetHistMultRP())->GetMean(); // to be improved
5853 Double_t nEvtsPOI = (fCommonHists2nd->GetHistMultPOI())->GetEntries(); // to be improved
5854 Double_t dMultPOI = (fCommonHists2nd->GetHistMultPOI())->GetMean(); // to be improved
5855 Double_t nEvtsRP = (fCommonHists2nd->GetHistMultRP())->GetEntries(); // to be improved
5856 Double_t dMultRP = (fCommonHists2nd->GetHistMultRP())->GetMean(); // to be improved
77515452 5857
9c1a9547 5858 TH1D *finalResultsIntFlow = NULL;
77515452 5859
9c1a9547 5860 if(!(useWeights))
5861 {
5862 if(type == "NONAME") finalResultsIntFlow = new TH1D(*fIntFlowResultsQC);
5863 if(type == "POI") finalResultsIntFlow = new TH1D(*fIntFlowResultsPOIQC);
5864 if(type == "RP") finalResultsIntFlow = new TH1D(*fIntFlowResultsRPQC);
5865 }
77515452 5866
9c1a9547 5867 if(useWeights)
77515452 5868 {
9c1a9547 5869 if(type == "NONAME") finalResultsIntFlow = new TH1D(*fIntFlowResultsQCW);
5870 if(type == "POI") finalResultsIntFlow = new TH1D(*fIntFlowResultsPOIQCW);
5871 if(type == "RP") finalResultsIntFlow = new TH1D(*fIntFlowResultsRPQCW);
5872 }
5873
5874 Double_t dVn[4] = {0.}; // array to hold Vn{2}, Vn{4}, Vn{6} and Vn{8}
5875 Double_t dVnErr[4] = {0.}; // array to hold errors of Vn{2}, Vn{4}, Vn{6} and Vn{8}
5876
5877 if(finalResultsIntFlow)
77515452 5878 {
9c1a9547 5879 for(Int_t i=0;i<4;i++)
5880 {
5881 dVn[i] = finalResultsIntFlow->GetBinContent(i+1);
5882 dVnErr[i] = finalResultsIntFlow->GetBinError(i+1);
5883 }
5884 }
5885
5886 TString title = " flow estimates from Q-cumulants";
5887 TString subtitle = " (";
5888
5889 if(!(useWeights))
77515452 5890 {
9c1a9547 5891 subtitle.Append(type);
5892 subtitle.Append(", without weights)");
5893 }
5894
5895 if(useWeights)
77515452 5896 {
9c1a9547 5897 subtitle.Append(type);
5898 subtitle.Append(", with weights)");
77515452 5899 }
9c1a9547 5900
77515452 5901 cout<<endl;
9c1a9547 5902 cout<<"**********************************"<<endl;
5903 cout<<"**********************************"<<endl;
5904 cout<<title.Data()<<endl;
5905 cout<<subtitle.Data()<<endl;
77515452 5906 cout<<endl;
9c1a9547 5907
5908 for(Int_t i=0;i<4;i++)
5909 {
5910 if(dVn[i]>=0.)
5911 {
5912 cout<<" v_"<<n<<"{"<<2*(i+1)<<"} = "<<dVn[i]<<" +/- "<<dVnErr[i]<<endl;
5913 }
5914 else
5915 {
5916 cout<<" v_"<<n<<"{"<<2*(i+1)<<"} = Im"<<endl;
5917 }
77515452 5918 }
9c1a9547 5919
77515452 5920 cout<<endl;
9c1a9547 5921 if(type == "NONAME")
5922 {
5923 cout<<" nEvts = "<<nEvtsNoName<<", AvM = "<<dMultNoName<<endl; // to be improved
5924 }
5925 else if (type == "RP")
5926 {
5927 cout<<" nEvts = "<<nEvtsRP<<", AvM = "<<dMultRP<<endl; // to be improved
5928 }
5929 else if (type == "POI")
5930 {
5931 cout<<" nEvts = "<<nEvtsPOI<<", AvM = "<<dMultPOI<<endl; // to be improved
5932 }
5933 cout<<"**********************************"<<endl;
5934 cout<<"**********************************"<<endl;
77515452 5935 cout<<endl;
9c1a9547 5936
5937}// end of AliFlowAnalysisWithQCumulants::PrintFinalResultsForIntegratedFlow(Bool_t useWeights=kTRUE, TString type="NONAME");
77515452 5938
77515452 5939
9c1a9547 5940//================================================================================================================================
77515452 5941
9c1a9547 5942
5943void AliFlowAnalysisWithQCumulants::CompareDirectAndQCorrelationsForIntegratedFlow(Bool_t useWeights)
77515452 5944{
9c1a9547 5945 // compare correlations needed for int. flow calculated with nested loops and those calculated from Q-vectors
5946
5947 cout<<endl;
5948 cout<<" *************************************"<<endl;
5949 cout<<" **** cross-checking the formulas ****"<<endl;
5950 cout<<" **** for integrated flow ****"<<endl;
5951 cout<<" *************************************"<<endl;
5952 cout<<endl;
5953
5954 if(!(useWeights))
77515452 5955 {
9c1a9547 5956 cout<<"<2>_{1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(1)<<endl;
5957 cout<<"<2>_{1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(1)<<endl;
5958 cout<<endl;
5959 cout<<"<2>_{2n,2n} from Q-vectors = "<<fQCorrelations->GetBinContent(2)<<endl;
5960 cout<<"<2>_{2n,2n} from nested loops = "<<fDirectCorrelations->GetBinContent(2)<<endl;
5961 cout<<endl;
5962 cout<<"<2>_{3n,3n} from Q-vectors = "<<fQCorrelations->GetBinContent(3)<<endl;
5963 cout<<"<2>_{3n,3n} from nested loops = "<<fDirectCorrelations->GetBinContent(3)<<endl;
5964 cout<<endl;
5965 cout<<"<2>_{4n,4n} from Q-vectors = "<<fQCorrelations->GetBinContent(4)<<endl;
5966 cout<<"<2>_{4n,4n} from nested loops = "<<fDirectCorrelations->GetBinContent(4)<<endl;
5967 cout<<endl;
5968 cout<<"<3>_{2n|1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(6)<<endl;
5969 cout<<"<3>_{2n|1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(6)<<endl;
5970 cout<<endl;
5971 cout<<"<3>_{3n|2n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(7)<<endl;
5972 cout<<"<3>_{3n|2n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(7)<<endl;
5973 cout<<endl;
5974 cout<<"<3>_{4n,2n,2n} from Q-vectors = "<<fQCorrelations->GetBinContent(8)<<endl;
5975 cout<<"<3>_{4n,2n,2n} from nested loops = "<<fDirectCorrelations->GetBinContent(8)<<endl;
5976 cout<<endl;
5977 cout<<"<3>_{4n,3n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(9)<<endl;
5978 cout<<"<3>_{4n,3n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(9)<<endl;
5979 cout<<endl;
5980 cout<<"<4>_{1n,1n|1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(11)<<endl;
5981 cout<<"<4>_{1n,1n|1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(11)<<endl;
5982 cout<<endl;
5983 cout<<"<4>_{2n,1n|2n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(12)<<endl;
5984 cout<<"<4>_{2n,1n|2n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(12)<<endl;
5985 cout<<endl;
5986 cout<<"<4>_{2n,2n|2n,2n} from Q-vectors = "<<fQCorrelations->GetBinContent(13)<<endl;
5987 cout<<"<4>_{2n,2n|2n,2n} from nested loops = "<<fDirectCorrelations->GetBinContent(13)<<endl;
5988 cout<<endl;
5989 cout<<"<4>_{3n|1n,1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(14)<<endl;
5990 cout<<"<4>_{3n|1n,1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(14)<<endl;
5991 cout<<endl;
5992 cout<<"<4>_{3n,1n|3n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(15)<<endl;
5993 cout<<"<4>_{3n,1n|3n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(15)<<endl;
5994 cout<<endl;
5995 cout<<"<4>_{3n,1n|2n,2n} from Q-vectors = "<<fQCorrelations->GetBinContent(16)<<endl;
5996 cout<<"<4>_{3n,1n|2n,2n} from nested loops = "<<fDirectCorrelations->GetBinContent(16)<<endl;
5997 cout<<endl;
5998 cout<<"<4>_{4n|2n,1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(17)<<endl;
5999 cout<<"<4>_{4n|2n,1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(17)<<endl;
6000 cout<<endl;
6001 cout<<"<5>_{2n,1n|1n,1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(19)<<endl;
6002 cout<<"<5>_{2n,1n|1n,1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(19)<<endl;
6003 cout<<endl;
6004 cout<<"<5>_{2n,2n|2n,1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(20)<<endl;
6005 cout<<"<5>_{2n,2n|2n,1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(20)<<endl;
6006 cout<<endl;
6007 cout<<"<5>_{3n,1n|2n,1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(21)<<endl;
6008 cout<<"<5>_{3n,1n|2n,1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(21)<<endl;
6009 cout<<endl;
6010 cout<<"<5>_{4n|1n,1n,1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(22)<<endl;
6011 cout<<"<5>_{4n|1n,1n,1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(22)<<endl;
6012 cout<<endl;
6013 cout<<"<6>_{1n,1n,1n|1n,1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(24)<<endl;
6014 cout<<"<6>_{1n,1n,1n|1n,1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(24)<<endl;
6015 cout<<endl;
6016 cout<<"<6>_{2n,1n,1n|2n,1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(25)<<endl;
6017 cout<<"<6>_{2n,1n,1n|2n,1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(25)<<endl;
6018 cout<<endl;
6019 cout<<"<6>_{2n,2n|1n,1n,1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(26)<<endl;
6020 cout<<"<6>_{2n,2n|1n,1n,1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(26)<<endl;
6021 cout<<endl;
6022 cout<<"<6>_{3n,1n|1n,1n,1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(27)<<endl;
6023 cout<<"<6>_{3n,1n|1n,1n,1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(27)<<endl;
6024 cout<<endl;
6025 cout<<"<7>_{2n,1n,1n|1n,1n,1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(29)<<endl;
6026 cout<<"<7>_{2n,1n,1n|1n,1n,1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(29)<<endl;
6027 cout<<endl;
6028 cout<<"<8>_{1n,1n,1n,1n|1n,1n,1n,1n} from Q-vectors = "<<fQCorrelations->GetBinContent(31)<<endl;
6029 cout<<"<8>_{1n,1n,1n,1n|1n,1n,1n,1n} from nested loops = "<<fDirectCorrelations->GetBinContent(31)<<endl;
6030 cout<<endl;
c365fe76 6031 cout<<"****************************************************"<<endl;
6032 cout<<"****************************************************"<<endl;
6033 cout<<endl;
6034 cout<<"<cos(n*phi1)> from Q-vectors = "<<fQCorrectionsCos->GetBinContent(1)<<endl;
6035 cout<<"<cos(n*phi1)> from nested loops = "<<fDirectCorrectionsCos->GetBinContent(1)<<endl;
6036 cout<<endl;
6037 cout<<"<sin(n*phi1)> from Q-vectors = "<<fQCorrectionsSin->GetBinContent(1)<<endl;
6038 cout<<"<sin(n*phi1)> from nested loops = "<<fDirectCorrectionsSin->GetBinContent(1)<<endl;
6039 cout<<endl;
6040 cout<<"<cos(n*(phi1+phi2))> from Q-vectors = "<<fQCorrectionsCos->GetBinContent(2)<<endl;
6041 cout<<"<cos(n*(phi1+phi2))> from nested loops = "<<fDirectCorrectionsCos->GetBinContent(2)<<endl;
6042 cout<<endl;
6043 cout<<"<sin(n*(phi1+phi2))> from Q-vectors = "<<fQCorrectionsSin->GetBinContent(2)<<endl;
6044 cout<<"<sin(n*(phi1+phi2))> from nested loops = "<<fDirectCorrectionsSin->GetBinContent(2)<<endl;
6045 cout<<endl;
6046 cout<<"<cos(n*(phi1-phi2-phi3))> from Q-vectors = "<<fQCorrectionsCos->GetBinContent(3)<<endl;
6047 cout<<"<cos(n*(phi1-phi2-phi3))> from nested loops = "<<fDirectCorrectionsCos->GetBinContent(3)<<endl;
6048 cout<<endl;
6049 cout<<"<sin(n*(phi1-phi2-phi3))> from Q-vectors = "<<fQCorrectionsSin->GetBinContent(3)<<endl;
6050 cout<<"<sin(n*(phi1-phi2-phi3))> from nested loops = "<<fDirectCorrectionsSin->GetBinContent(3)<<endl;
6051 cout<<endl;
77515452 6052 }
9c1a9547 6053
6054 if(useWeights)
77515452 6055 {
9c1a9547 6056 //.........................................................................................
6057 cout<<"<w1 w2 cos(n*(phi1-phi2))> from Q-vectors = "<<fQCorrelationsW->GetBinContent(1)<<endl;
6058 cout<<"<<w1 w2 cos(n*(phi1-phi2))> from nested loops = "<<fDirectCorrelationsW->GetBinContent(1)<<endl;
6059 cout<<endl;
6060 cout<<"<w1^2 w2^2 cos(2n*(phi1-phi2))> from Q-vectors = "<<fQCorrelationsW->GetBinContent(2)<<endl;
6061 cout<<"<w1^2 w2^2 cos(2n*(phi1-phi2))> from nested loops = "<<fDirectCorrelationsW->GetBinContent(2)<<endl;
6062 cout<<endl;
6063 cout<<"<w1^3 w2^3 cos(3n*(phi1-phi2))> from Q-vectors = "<<fQCorrelationsW->GetBinContent(3)<<endl;
6064 cout<<"<w1^3 w2^3 cos(3n*(phi1-phi2))> from nested loops = "<<fDirectCorrelationsW->GetBinContent(3)<<endl;
6065 cout<<endl;
6066 cout<<"<w1^4 w2^4 cos(4n*(phi1-phi2))> from Q-vectors = "<<fQCorrelationsW->GetBinContent(4)<<endl;
6067 cout<<"<w1^4 w2^4 cos(4n*(phi1-phi2))> from nested loops = "<<fDirectCorrelationsW->GetBinContent(4)<<endl;
6068 cout<<endl;
6069 cout<<"<w1^3 w2 cos(n*(phi1-phi2))> from Q-vectors = "<<fQCorrelationsW->GetBinContent(5)<<endl;
6070 cout<<"<w1^3 w2 cos(n*(phi1-phi2))> from nested loops = "<<fDirectCorrelationsW->GetBinContent(5)<<endl;
6071 cout<<endl;
6072 cout<<"<w1 w2 w3^2 cos(n*(phi1-phi2))> from Q-vectors = "<<fQCorrelationsW->GetBinContent(6)<<endl;
6073 cout<<"<w1 w2 w3^2 cos(n*(phi1-phi2))> from nested loops = "<<fDirectCorrelationsW->GetBinContent(6)<<endl;
6074 cout<<endl;
6075 cout<<"<w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))> from Q-vectors = "<<fQCorrelationsW->GetBinContent(21)<<endl;
6076 cout<<"<w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))> from nested loops = "<<fDirectCorrelationsW->GetBinContent(21)<<endl;
6077 cout<<endl;
6078 cout<<"<w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> from Q-vectors = "<<fQCorrelationsW->GetBinContent(41)<<endl;
6079 cout<<"<w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> from nested loops = "<<fDirectCorrelationsW->GetBinContent(41)<<endl;
6080 cout<<endl;
6081 //.........................................................................................
77515452 6082 }
9c1a9547 6083
6084} // end of AliFlowAnalysisWithQCumulants::CompareDirectAndQCorrelationsForIntegratedFlow(Bool_t useWeights)
6085
77515452 6086
9c1a9547 6087//================================================================================================================================
77515452 6088
77515452 6089
9c1a9547 6090void AliFlowAnalysisWithQCumulants::CompareDirectAndQCorrelationsForDifferentialFlow(Bool_t useWeights)
77515452 6091{
9c1a9547 6092 // compare correlations needed for diff. flow calculated with nested loops and those calculated from Q-vectors
6093
6094 cout<<endl;
6095 cout<<" *************************************"<<endl;
6096 cout<<" **** cross-checking the formulas ****"<<endl;
6097 cout<<" **** for differential flow ****"<<endl;
6098 cout<<" **** ****"<<endl;
6099 cout<<" **** (pt,eta) bin: ****"<<endl;
6100 cout<<" **** 1.1 < pt < 1.2 GeV ****"<<endl;
6101 cout<<" **** -0.55 < eta < -0.525 ****"<<endl;
6102 cout<<" *************************************"<<endl;
6103 cout<<endl;
6104
6105 if(!useWeights)
6106 {
6107 cout<<"<cos(n(psi1-phi2))> from Q-vectors = "<<f2pPtEtaPOI->GetBinContent(f2pPtEtaPOI->GetBin(12,19))<<endl;
6108 cout<<"<cos(n(psi1-phi2))> from nested loops = "<<fDirectCorrelationsDiffFlow->GetBinContent(1)<<endl;
6109 cout<<endl;
6110 cout<<"<cos(n(psi1+phi2-phi3-phi4))> from Q-vectors = "<<f4pPtEtaPOI->GetBinContent(f4pPtEtaPOI->GetBin(12,19))<<endl;
6111 cout<<"<cos(n(psi1+phi2-phi3-phi4))> from nested loops = "<<fDirectCorrelationsDiffFlow->GetBinContent(41)<<endl;
2bdc5281 6112 cout<<endl;
6113 cout<<"****************************************************"<<endl;
6114 cout<<"****************************************************"<<endl;
6115 cout<<endl;
6116 cout<<"<cos(n(psi1))> from Q-vectors = "<<fCorrectionsCosP1nPsiPtEtaPOI->GetBinContent(fCorrectionsCosP1nPsiPtEtaPOI->GetBin(12,19))<<endl;
6117 cout<<"<cos(n(psi1))> from nested loops = "<<fDirectCorrectionsDiffFlowCos->GetBinContent(1)<<endl;
6118 cout<<endl;
6119 cout<<"<sin(n(psi1))> from Q-vectors = "<<fCorrectionsSinP1nPsiPtEtaPOI->GetBinContent(fCorrectionsSinP1nPsiPtEtaPOI->GetBin(12,19))<<endl;
6120 cout<<"<sin(n(psi1))> from nested loops = "<<fDirectCorrectionsDiffFlowSin->GetBinContent(1)<<endl;
9c1a9547 6121 cout<<endl;
77515452 6122 }
9c1a9547 6123
6124 if(useWeights)
77515452 6125 {
9c1a9547 6126 cout<<"<w2 cos(n(psi1-phi2))> from Q-vectors = "<<f2pPtEtaPOIW->GetBinContent(f2pPtEtaPOIW->GetBin(12,19))<<endl;
6127 cout<<"<w2 cos(n(psi1-phi2))> from nested loops = "<<fDirectCorrelationsDiffFlowW->GetBinContent(1)<<endl;
6128 cout<<endl;
6129 cout<<"<w2 w3 w4 cos(n(psi1+phi2-phi3-phi4))> from Q-vectors = "<<f4pPtEtaPOIW->GetBinContent(f4pPtEtaPOIW->GetBin(12,19))<<endl;
6130 cout<<"<w2 w3 w4 cos(n(psi1+phi2-phi3-phi4))> from nested loops = "<<fDirectCorrelationsDiffFlowW->GetBinContent(41)<<endl;
6131 cout<<endl;
77515452 6132 }
3d824203 6133
9c1a9547 6134} // end of void AliFlowAnalysisWithQCumulants::CompareDirectAndQCorrelationsForDifferentialFlow()
77515452 6135
7e58a232 6136
9c1a9547 6137//================================================================================================================================
77515452 6138
77515452 6139
9c1a9547 6140void AliFlowAnalysisWithQCumulants::WriteHistograms(TString outputFileName)
77515452 6141{
9c1a9547 6142 //store the final results in output .root file
6143 TFile *output = new TFile(outputFileName.Data(),"RECREATE");
0fe80f88 6144 //output->WriteObject(fHistList, "cobjQC","SingleKey");
6145 fHistList->SetName("cobjQC");
9455e15e 6146 fHistList->SetOwner(kTRUE);
0fe80f88 6147 fHistList->Write(fHistList->GetName(), TObject::kSingleKey);
9c1a9547 6148 delete output;
6149}
77515452 6150
77515452 6151
9c1a9547 6152//================================================================================================================================
77515452 6153
b7cb54d5 6154
9c1a9547 6155void AliFlowAnalysisWithQCumulants::TempDeleteMe()
6156{
2bdc5281 6157 /*
6158 TProfile *tempDeleteMe = new TProfile("tempDeleteMe","tempDeleteMe",2,0,2);
6159 tempDeleteMe->Fill(0.5,10);
6160 tempDeleteMe->Fill(0.5,20);
6161
6162 tempDeleteMe->Fill(1.5,100);
6163 tempDeleteMe->Fill(1.5,200);
6164
6165 cout<<tempDeleteMe->GetBinContent(1)<<endl;
6166 cout<<tempDeleteMe->GetBinContent(2)<<endl;
6167 */
6168
6169
6170
77515452 6171 /*
9c1a9547 6172 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
e085f1a9 6173 TCanvas* qvectorPlot = new TCanvas("qvectorPlot","Q-vector Plot",1000,1000);
6174
6175 qvectorPlot->cd(1);
6176
6177 TH1D* style = new TH1D("style","Q-vectors",100,-244,244);
6178 (style->GetYaxis())->SetRangeUser(-244,244);
6179
6180 style->Draw();
6181
6182 Int_t nBins=fQvectorForEachEventX->GetNbinsX();
6183 Double_t qxxx=0.,qyyy=0.;
6184 //cout<<"nBins = "<<nBins<<endl;
6185 //cout<<fQvectorForEachEventX->GetBinEntries(4)<<endl;
6186 //cout<<fQvectorForEachEventY->GetBinEntries(4)<<endl;
6187
6188 for(Int_t b=1;b<nBins+1;b++)
6189 {
6190 if(fQvectorForEachEventX->GetBinEntries(b)==1 && fQvectorForEachEventY->GetBinEntries(b)==1)
6191 {
6192 qxxx=fQvectorForEachEventX->GetBinContent(b);
6193 qyyy=fQvectorForEachEventY->GetBinContent(b);
6194 //cout<<qxxx<<" "<<qyyy<<endl;
6195 TArrow *qvector = new TArrow(0.0,0.0,qxxx,qyyy,0.0144,"|>");
6196 qvector->SetAngle(40);
6197 qvector->SetLineWidth(2);
6198 qvector->Draw("");
6199 }
6200 }
e085f1a9 6201 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
9c1a9547 6202 */
6203
6204
2bdc5281 6205 /*
9c1a9547 6206 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
6207 Int_t nBinsPt=3, nBinsEta=2;
6208 Double_t ptMin=0., ptMax=3.;
6209 Double_t etaMin=0., etaMax=2.;
6210
e085f1a9 6211
9c1a9547 6212 //avarage of the generating function for integrated flow <G[p][q]>
6213 TProfile2D *tempPtEta = new TProfile2D("tempPtEta","<2'>(pt,eta)",nBinsPt,ptMin,ptMax,nBinsEta,etaMin,etaMax);
6214 tempPtEta->SetXTitle("pt");
6215 tempPtEta->SetYTitle("eta");
6216
6217 // (1,1):
6218 tempPtEta->Fill(0.5,0.67,0.4,2);
6219 tempPtEta->Fill(0.1,0.44,0.6,3);
6220
6221 // (3,1):
6222 tempPtEta->Fill(2.5,0.01,2.2,4);
6223 tempPtEta->Fill(2.1,0.74,2.6,3.7);
6224
6225 //tempPtEta->Fill(2.5,0.5,1,2);
6226 //tempPtEta->Fill(2.5,1.5,3,1);
6227 //tempPtEta->Fill(2.6,0.6,7,3);
6228 //tempPtEta->Fill(2.5,0.5,1,1);
6229
6230
6231
6232 TCanvas* tempCanvas = new TCanvas("tempCanvas","tempCanvas",1000,600);
6233
6234 tempCanvas->Divide(1,2);
6235
6236 tempCanvas->cd(1);
6237 tempPtEta->Draw("SURF1");
6238
6239 (tempCanvas->cd(2))->Divide(1,2);
6240
6241 tempCanvas->cd(1);
6242 //tempPt->Draw();
6243
6244 tempCanvas->cd(2);
6245 //tempEta->Draw();
2bdc5281 6246
6247 */
6248
9c1a9547 6249
6250 /*
6251 cout<<tempPtEta->GetBinContent(tempPtEta->GetBin(1,1))<<endl;
6252 cout<<tempPtEta->GetBinContent(tempPtEta->GetBin(3,1))<<endl;
6253 cout<<tempEta->GetBinContent(1)<<endl;
6254 cout<<tempEta->GetBinEntries(1)<<endl;
6255 cout<<tempEta->GetBinContent(2)<<endl;
6256 cout<<tempEta->GetBinEntries(2)<<endl;
6257 cout<<endl;
6258 */
6259 /*
6260 cout<<tempPtEta->GetBinContent(3,1)<<endl;
6261 cout<<tempPtEta->GetBinEntries(tempPtEta->GetBin(3,1))<<endl;
6262 cout<<endl;
6263
6264 cout<<tempPtEta->GetBinContent(1,2)<<endl;
6265 cout<<tempPtEta->GetBinEntries(tempPtEta->GetBin(1,2))<<endl;
6266 cout<<endl;
6267
6268 cout<<"xy"<<endl;
6269 cout<<tempPt->GetBinContent(1)<<endl;
6270 //cout<<tempPt->GetBinEntries(1)<<endl;
6271 cout<<tempPt->GetBinContent(3)<<endl;
6272 //cout<<tempPt->GetBinEntries(3)<<endl;
6273 cout<<endl;
6274
6275 cout<<tempEta->GetBinContent(1)<<endl;
6276 //cout<<tempEta->GetBinEntries(1)<<endl;
6277 cout<<tempEta->GetBinContent(2)<<endl;
6278 //cout<<tempEta->GetBinEntries(2)<<endl;
6279 cout<<endl;
6280
6281 //tempPtEta->Draw("LEGO2");
6282 */
6283
6284 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
bc92c0cb 6285
6286
1315fe58 6287}
bc92c0cb 6288
dee1e0e0 6289
9c1a9547 6290//================================================================================================================================
4057ba99 6291
6292