allow to cut on multiplicity
[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"
48
49class TH1;
9c1a9547 50class TH2;
bc92c0cb 51class TGraph;
52class TPave;
53class TLatex;
54class TMarker;
55class TRandom3;
56class TObjArray;
57class TList;
58class TCanvas;
59class TSystem;
60class TROOT;
61class AliFlowVector;
62class TVector;
63
64//================================================================================================================
65
66ClassImp(AliFlowAnalysisWithQCumulants)
67
68AliFlowAnalysisWithQCumulants::AliFlowAnalysisWithQCumulants():
69 fTrack(NULL),
70 fHistList(NULL),
ae733b3b 71 fDiffFlowList(NULL),
03a02aca 72 fWeightsList(NULL),
9c1a9547 73 fResultsList(NULL),
1315fe58 74 fAvMultIntFlowQC(NULL),
bc92c0cb 75 fQvectorComponents(NULL),
1315fe58 76 fDiffFlowResults2ndOrderQC(NULL),
77 fDiffFlowResults4thOrderQC(NULL),
78 fCovariances(NULL),
e085f1a9 79 fQvectorForEachEventX(NULL),//to be removed
80 fQvectorForEachEventY(NULL),//to be removed
bc92c0cb 81 fQCorrelations(NULL),
9c1a9547 82 fQCorrelationsW(NULL),
c365fe76 83 fQCorrectionsCos(NULL),
84 fQCorrectionsSin(NULL),
8842fb2b 85 fQProduct(NULL),
bc92c0cb 86 fDirectCorrelations(NULL),
9c1a9547 87 fDirectCorrelationsW(NULL),
88 fDirectCorrelationsDiffFlow(NULL),
89 fDirectCorrelationsDiffFlowW(NULL),
c365fe76 90 fDirectCorrectionsCos(NULL),
91 fDirectCorrectionsSin(NULL),
1dfa3c16 92 f2PerPtBin1n1nPOI(NULL),
1dfa3c16 93 f4PerPtBin1n1n1n1nPOI(NULL),
1dfa3c16 94 f2PerEtaBin1n1nPOI(NULL),
1dfa3c16 95 f4PerEtaBin1n1n1n1nPOI(NULL),
3d824203 96 f2WPerPtBin1n1nPOI(NULL),
3d824203 97 f4WPerPtBin1n1n1n1nPOI(NULL),
3d824203 98 f2WPerEtaBin1n1nPOI(NULL),
99 f4WPerEtaBin1n1n1n1nPOI(NULL),
77515452 100 f2PerPtBin1n1nRP(NULL),
101 f4PerPtBin1n1n1n1nRP(NULL),
102 f2PerEtaBin1n1nRP(NULL),
103 f4PerEtaBin1n1n1n1nRP(NULL),
3d824203 104 f2WPerPtBin1n1nRP(NULL),
105 f4WPerPtBin1n1n1n1nRP(NULL),
3d824203 106 f2WPerEtaBin1n1nRP(NULL),
107 f4WPerEtaBin1n1n1n1nRP(NULL),
cb308e83 108 fCommonHists2nd(NULL),
109 fCommonHists4th(NULL),
110 fCommonHists6th(NULL),
111 fCommonHists8th(NULL),
8842fb2b 112 fCommonHistsResults2nd(NULL),
113 fCommonHistsResults4th(NULL),
114 fCommonHistsResults6th(NULL),
115 fCommonHistsResults8th(NULL),
52021ae2 116 f2pDistribution(NULL),
117 f4pDistribution(NULL),
118 f6pDistribution(NULL),
5e838eeb 119 f8pDistribution(NULL),
8842fb2b 120 fnBinsPt(0),
121 fPtMin(0),
1dfa3c16 122 fPtMax(0),
123 fnBinsEta(0),
124 fEtaMin(0),
e085f1a9 125 fEtaMax(0),
126 fEventCounter(0),
127 fUsePhiWeights(kFALSE),
128 fUsePtWeights(kFALSE),
9c1a9547 129 fUseEtaWeights(kFALSE),
130 fUseWeights(kFALSE),
131 fUseWeightsBits(NULL),
9c1a9547 132
133 // ...................................................................................................................
134 // Q_{n,k} and S^M_{n,k}:
135 fReQ(NULL),
136 fImQ(NULL),
137 fSMpk(NULL),
138
139 // q_n and m:
140 fReqnPtEta(NULL),
141 fImqnPtEta(NULL),
142 fmPtEta(NULL),
143
144 // non-weighted q''_{n} and q''_{2n}:
145 fReqPrimePrime1nPtEta(NULL),
146 fImqPrimePrime1nPtEta(NULL),
147 fReqPrimePrime2nPtEta(NULL),
148 fImqPrimePrime2nPtEta(NULL),
149
150 // weighted q''_{n,2k} and q''_{2n,k}:
151 fReqPrimePrime1n2kPtEta(NULL),
152 fImqPrimePrime1n2kPtEta(NULL),
153 fReqPrimePrime2n1kPtEta(NULL),
154 fImqPrimePrime2n1kPtEta(NULL),
155
156 // m''
157 fmPrimePrimePtEta(NULL),
158
159 // S^{m''}_{n,k}
160 fSmPrimePrime1p1kPtEta(NULL),
161 fSmPrimePrime1p2kPtEta(NULL),
162 fSmPrimePrime1p3kPtEta(NULL),
163
164 // non-weighted q_RP{n} and q_RP{2n}:
165 fReqRP1nPtEta(NULL),
166 fImqRP1nPtEta(NULL),
167 fReqRP2nPtEta(NULL),
168 fImqRP2nPtEta(NULL),
169
170 // weighted q_RP{n,2k} and q_RP{2n,k} (for each (pt,eta) bin for RPs)
171 fReqRP1n2kPtEta(NULL),
172 fImqRP1n2kPtEta(NULL),
173 fReqRP2n1kPtEta(NULL),
174 fImqRP2n1kPtEta(NULL),
175
176 // m_RP:
177 fmRPPtEta(NULL), // # of particles which are RPs for each (pt,eta) bin
178
179 // S^{m_RP}_{p,k} (for each (pt,eta) bin for RPs):
180 fSmRP1p1kPtEta(NULL),
181 fSmRP1p2kPtEta(NULL),
182 fSmRP1p3kPtEta(NULL),
183
184 // ----- RESULTS ----
185
c365fe76 186 fFinalCorrectionsForNUA(NULL), // NUA = non-uniform acceptance
187
9c1a9547 188 // non-weighted integrated flow:
189 fIntFlowResultsQC(NULL),
190 fIntFlowResultsPOIQC(NULL),
191 fIntFlowResultsRPQC(NULL),
192
193 // weighted integrated flow:
194 fIntFlowResultsQCW(NULL),
195 fIntFlowResultsPOIQCW(NULL),
196 fIntFlowResultsRPQCW(NULL),
197
198 // non-weighted correlations for each (pt,eta) bin for POIs:
199 f2pPtEtaPOI(NULL),
200 f4pPtEtaPOI(NULL),
201 f6pPtEtaPOI(NULL),
202 f8pPtEtaPOI(NULL),
203
204 // non-weighted final results for differential flow for POIs:
205 // 3D (pt,eta)
206 fvn2ndPtEtaPOI(NULL),
207 fvn4thPtEtaPOI(NULL),
208 fvn6thPtEtaPOI(NULL),
209 fvn8thPtEtaPOI(NULL),
210 // 2D (pt)
211 fvn2ndPtPOI(NULL),
212 fvn4thPtPOI(NULL),
213 fvn6thPtPOI(NULL),
214 fvn8thPtPOI(NULL),
215 // 2D (eta)
216 fvn2ndEtaPOI(NULL),
217 fvn4thEtaPOI(NULL),
218 fvn6thEtaPOI(NULL),
219 fvn8thEtaPOI(NULL),
220
221 // weighted correlations for each (pt,eta) bin for POIs:
222 f2pPtEtaPOIW(NULL),
223 f4pPtEtaPOIW(NULL),
224 f6pPtEtaPOIW(NULL),
225 f8pPtEtaPOIW(NULL),
226
227 // weighted final results for differential flow for POIs:
228 // 3D (pt,eta)
229 fvn2ndPtEtaPOIW(NULL),
230 fvn4thPtEtaPOIW(NULL),
231 fvn6thPtEtaPOIW(NULL),
232 fvn8thPtEtaPOIW(NULL),
233 // 2D (pt)
234 fvn2ndPtPOIW(NULL),
235 fvn4thPtPOIW(NULL),
236 fvn6thPtPOIW(NULL),
237 fvn8thPtPOIW(NULL),
238 // 2D (eta)
239 fvn2ndEtaPOIW(NULL),
240 fvn4thEtaPOIW(NULL),
241 fvn6thEtaPOIW(NULL),
242 fvn8thEtaPOIW(NULL),
243
244 // non-weighted correlations for each (pt,eta) bin for RPs:
245 f2pPtEtaRP(NULL),
246 f4pPtEtaRP(NULL),
247 f6pPtEtaRP(NULL),
248 f8pPtEtaRP(NULL),
249
250 // non-weighted final results for differential flow for RPs:
251 // 3D (pt,eta)
252 fvn2ndPtEtaRP(NULL),
253 fvn4thPtEtaRP(NULL),
254 fvn6thPtEtaRP(NULL),
255 fvn8thPtEtaRP(NULL),
256 // 2D (pt)
257 fvn2ndPtRP(NULL),
258 fvn4thPtRP(NULL),
259 fvn6thPtRP(NULL),
260 fvn8thPtRP(NULL),
261 // 2D (eta)
262 fvn2ndEtaRP(NULL),
263 fvn4thEtaRP(NULL),
264 fvn6thEtaRP(NULL),
265 fvn8thEtaRP(NULL),
266
267 // weighted correlations for each (pt,eta) bin for RPs:
268 f2pPtEtaRPW(NULL),
269 f4pPtEtaRPW(NULL),
270 f6pPtEtaRPW(NULL),
271 f8pPtEtaRPW(NULL),
272
273 // weighted final results for differential flow for RPs:
274 // 3D (pt,eta)
275 fvn2ndPtEtaRPW(NULL),
276 fvn4thPtEtaRPW(NULL),
277 fvn6thPtEtaRPW(NULL),
278 fvn8thPtEtaRPW(NULL),
279 // 2D (pt)
280 fvn2ndPtRPW(NULL),
281 fvn4thPtRPW(NULL),
282 fvn6thPtRPW(NULL),
283 fvn8thPtRPW(NULL),
284 // 2D (eta)
285 fvn2ndEtaRPW(NULL),
286 fvn4thEtaRPW(NULL),
287 fvn6thEtaRPW(NULL),
288 fvn8thEtaRPW(NULL)
289 // ...................................................................................................................
290
bc92c0cb 291{
9c1a9547 292 // constructor
ae733b3b 293 fHistList = new TList();
294 fDiffFlowList = new TList();
295 fDiffFlowList->SetName("DifferentialFlow");
03a02aca 296 fWeightsList = new TList();
ae733b3b 297 fWeightsList->SetName("Weights");
9c1a9547 298 fResultsList = new TList();
299 fResultsList->SetName("Results");
03a02aca 300
8842fb2b 301 fnBinsPt = AliFlowCommonConstants::GetNbinsPt();
302 fPtMin = AliFlowCommonConstants::GetPtMin();
303 fPtMax = AliFlowCommonConstants::GetPtMax();
304
1dfa3c16 305 fnBinsEta = AliFlowCommonConstants::GetNbinsEta();
306 fEtaMin = AliFlowCommonConstants::GetEtaMin();
307 fEtaMax = AliFlowCommonConstants::GetEtaMax();
bc92c0cb 308}
309
310AliFlowAnalysisWithQCumulants::~AliFlowAnalysisWithQCumulants()
311{
03a02aca 312 //destructor
bc92c0cb 313 delete fHistList;
ae733b3b 314 delete fDiffFlowList;
315 delete fWeightsList;
9c1a9547 316 delete fResultsList;
bc92c0cb 317}
318
319//================================================================================================================
320
e085f1a9 321void AliFlowAnalysisWithQCumulants::Init()
bc92c0cb 322{
323 //various output histograms
bc92c0cb 324 //avarage multiplicity
1315fe58 325 fAvMultIntFlowQC = new TProfile("fAvMultIntFlowQC","Average Multiplicity",1,0,1,"s");
326 fAvMultIntFlowQC->SetXTitle("");
327 fAvMultIntFlowQC->SetYTitle("");
328 fAvMultIntFlowQC->SetLabelSize(0.06);
329 fAvMultIntFlowQC->SetMarkerStyle(25);
330 fAvMultIntFlowQC->SetLabelOffset(0.01);
331 (fAvMultIntFlowQC->GetXaxis())->SetBinLabel(1,"Average Multiplicity");
332 fHistList->Add(fAvMultIntFlowQC);
bc92c0cb 333
334 //Q-vector stuff
335 fQvectorComponents = new TProfile("fQvectorComponents","Avarage of Q-vector components",44,0.,44.,"s");
336 fQvectorComponents->SetXTitle("");
337 fQvectorComponents->SetYTitle("");
338 //fHistList->Add(fQvectorComponents);
339
bc92c0cb 340 //final results for differential flow from 2nd order Q-cumulant
8842fb2b 341 fDiffFlowResults2ndOrderQC = new TH1D("fDiffFlowResults2ndOrderQC","Differential Flow from 2nd Order Q-cumulant",fnBinsPt,fPtMin,fPtMax);
1315fe58 342 fDiffFlowResults2ndOrderQC->SetXTitle("p_{t} [GeV]");
343 //fDiffFlowResults2ndOrderQC->SetYTitle("Differential Flow");
344 fHistList->Add(fDiffFlowResults2ndOrderQC);
bc92c0cb 345
346 //final results for differential flow from 4th order Q-cumulant
8842fb2b 347 fDiffFlowResults4thOrderQC = new TH1D("fDiffFlowResults4thOrderQC","Differential Flow from 4th Order Q-cumulant",fnBinsPt,fPtMin,fPtMax);
1315fe58 348 fDiffFlowResults4thOrderQC->SetXTitle("p_{t} [GeV]");
349 //fDiffFlowResults4thOrderQC->SetYTitle("Differential Flow");
350 fHistList->Add(fDiffFlowResults4thOrderQC);
351
352 //final results for covariances (1st bin: <2*4>-<2>*<4>, 2nd bin: <2*6>-<2>*<6>, ...)
353 fCovariances = new TH1D("fCovariances","Covariances",6,0,6);
354 //fCovariances->SetXTitle("");
355 //fCovariances->SetYTitle("<covariance>");
356 fCovariances->SetLabelSize(0.04);
357 fCovariances->SetTickLength(1);
358 fCovariances->SetMarkerStyle(25);
359 (fCovariances->GetXaxis())->SetBinLabel(1,"Cov(2,4)");
360 (fCovariances->GetXaxis())->SetBinLabel(2,"Cov(2,6)");
361 (fCovariances->GetXaxis())->SetBinLabel(3,"Cov(2,8)");
362 (fCovariances->GetXaxis())->SetBinLabel(4,"Cov(4,6)");
363 (fCovariances->GetXaxis())->SetBinLabel(5,"Cov(4,8)");
364 (fCovariances->GetXaxis())->SetBinLabel(6,"Cov(6,8)");
365 fHistList->Add(fCovariances);
bc92c0cb 366
e085f1a9 367 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
368 // !!!! to be removed !!!!
369 //profile containing the x-components of Q-vectors from all events
370 fQvectorForEachEventX = new TProfile("fQvectorForEachEventX","x-components of Q-vectors",44000,1,44000,"s");
371 fHistList->Add(fQvectorForEachEventX);
372
373 //profile containing the y-components of Q-vectors from all events
374 fQvectorForEachEventY = new TProfile("fQvectorForEachEventY","y-components of Q-vectors",44000,1,44000,"s");
375 fHistList->Add(fQvectorForEachEventY);
376 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
377
9c1a9547 378 // multi-particle correlations calculated from Q-vectors
dee1e0e0 379 fQCorrelations = new TProfile("fQCorrelations","multi-particle correlations from Q-vectors",32,0,32,"s");
1315fe58 380 fQCorrelations->SetTickLength(-0.01,"Y");
381 fQCorrelations->SetMarkerStyle(25);
382 fQCorrelations->SetLabelSize(0.03);
383 fQCorrelations->SetLabelOffset(0.01,"Y");
9c1a9547 384 // 2-p:
1315fe58 385 (fQCorrelations->GetXaxis())->SetBinLabel(1,"<<2>>_{n|n}");
386 (fQCorrelations->GetXaxis())->SetBinLabel(2,"<<2>>_{2n|2n}");
387 (fQCorrelations->GetXaxis())->SetBinLabel(3,"<<2>>_{3n|3n}");
388 (fQCorrelations->GetXaxis())->SetBinLabel(4,"<<2>>_{4n|4n}");
9c1a9547 389 // 3-p:
1315fe58 390 (fQCorrelations->GetXaxis())->SetBinLabel(6,"<<3>>_{2n|n,n}");
391 (fQCorrelations->GetXaxis())->SetBinLabel(7,"<<3>>_{3n|2n,n}");
392 (fQCorrelations->GetXaxis())->SetBinLabel(8,"<<3>>_{4n|2n,2n}");
393 (fQCorrelations->GetXaxis())->SetBinLabel(9,"<<3>>_{4n|3n,n}");
9c1a9547 394 // 4-p:
1315fe58 395 (fQCorrelations->GetXaxis())->SetBinLabel(11,"<<4>>_{n,n|n,n}");
396 (fQCorrelations->GetXaxis())->SetBinLabel(12,"<<4>>_{2n,n|2n,n}");
dee1e0e0 397 (fQCorrelations->GetXaxis())->SetBinLabel(13,"<<4>>_{2n,2n|2n,2n}");
398 (fQCorrelations->GetXaxis())->SetBinLabel(14,"<<4>>_{3n|n,n,n}");
399 (fQCorrelations->GetXaxis())->SetBinLabel(15,"<<4>>_{3n,n|3n,n}");
400 (fQCorrelations->GetXaxis())->SetBinLabel(16,"<<4>>_{3n,n|2n,2n}");
401 (fQCorrelations->GetXaxis())->SetBinLabel(17,"<<4>>_{4n|2n,n,n}");
9c1a9547 402 // 5-p:
dee1e0e0 403 (fQCorrelations->GetXaxis())->SetBinLabel(19,"<<5>>_{2n|n,n,n,n}");
404 (fQCorrelations->GetXaxis())->SetBinLabel(20,"<<5>>_{2n,2n|2n,n,n}");
405 (fQCorrelations->GetXaxis())->SetBinLabel(21,"<<5>>_{3n,n|2n,n,n}");
406 (fQCorrelations->GetXaxis())->SetBinLabel(22,"<<5>>_{4n|n,n,n,n}");
9c1a9547 407 // 6-p:
dee1e0e0 408 (fQCorrelations->GetXaxis())->SetBinLabel(24,"<<6>>_{n,n,n|n,n,n}");
409 (fQCorrelations->GetXaxis())->SetBinLabel(25,"<<6>>_{2n,n,n|2n,n,n}");
410 (fQCorrelations->GetXaxis())->SetBinLabel(26,"<<6>>_{2n,2n|n,n,n,n}");
411 (fQCorrelations->GetXaxis())->SetBinLabel(27,"<<6>>_{3n,n|n,n,n,n}");
9c1a9547 412 // 7-p:
dee1e0e0 413 (fQCorrelations->GetXaxis())->SetBinLabel(29,"<<7>>_{2n,n,n|n,n,n,n}");
9c1a9547 414 // 8-p:
dee1e0e0 415 (fQCorrelations->GetXaxis())->SetBinLabel(31,"<<8>>_{n,n,n,n|n,n,n,n}");
9c1a9547 416 // add fQCorrelations to the main list:
bc92c0cb 417 fHistList->Add(fQCorrelations);
418
9c1a9547 419 //.........................................................................
3d824203 420 //weighted multi-particle correlations calculated from Q-vectors
9c1a9547 421 fQCorrelationsW = new TProfile("fQCorrelationsW","weighted multi-particle correlations from Q-vectors",200,0,200,"s");
422 fQCorrelationsW->SetTickLength(-0.01,"Y");
423 fQCorrelationsW->SetMarkerStyle(25);
424 fQCorrelationsW->SetLabelSize(0.03);
425 fQCorrelationsW->SetLabelOffset(0.01,"Y");
426 // 2-p:
427 (fQCorrelationsW->GetXaxis())->SetBinLabel(1,"<w_{1}w_{2}cos(n(#phi_{1}-#phi_{2}))>");
428 (fQCorrelationsW->GetXaxis())->SetBinLabel(2,"<w_{1}^{2}w_{2}^{2}cos(2n(#phi_{1}-#phi_{2}))>");
429 (fQCorrelationsW->GetXaxis())->SetBinLabel(3,"<w_{1}^{3}w_{2}^{3}cos(3n(#phi_{1}-#phi_{2}))>");
430 (fQCorrelationsW->GetXaxis())->SetBinLabel(4,"<w_{1}^{4}w_{2}^{4}cos(4n(#phi_{1}-#phi_{2}))>");
431 (fQCorrelationsW->GetXaxis())->SetBinLabel(5,"<w_{1}^{3}w_{2}cos(n(#phi_{1}-#phi_{2}))>");
432 (fQCorrelationsW->GetXaxis())->SetBinLabel(6,"<w_{1}^{2}w_{2}w_{3}cos(n(#phi_{1}-#phi_{2}))>");
433 // 3-p:
434 (fQCorrelationsW->GetXaxis())->SetBinLabel(21,"<w_{1}w_{2}w_{3}^{2}cos(n(2#phi_{1}-#phi_{2}-#phi_{3}))>");
435 // 4-p:
436 (fQCorrelationsW->GetXaxis())->SetBinLabel(41,"<w_{1}w_{2}w_{3}w_{4}cos(n(#phi_{1}+#phi_{2}-#phi_{3}-#phi_{4}))>");
437 // add fQCorrelationsW to the main list:
438 fHistList->Add(fQCorrelationsW);
439 //.........................................................................
3d824203 440
c365fe76 441 //.........................................................................
442 // corrections for non-uniform acceptance (cos terms) calculated from Q-vectors
443 fQCorrectionsCos = new TProfile("fQCorrectionsCos"," corrections for non-uniform acceptance (cos terms)",100,0,100,"s");
444 fQCorrectionsCos->SetTickLength(-0.01,"Y");
445 fQCorrectionsCos->SetMarkerStyle(25);
446 fQCorrectionsCos->SetLabelSize(0.03);
447 fQCorrectionsCos->SetLabelOffset(0.01,"Y");
448 // 1-p:
449 (fQCorrectionsCos->GetXaxis())->SetBinLabel(1,"cos(n(#phi_{1}))>");
450 // 2-p:
451 // 3-p:
3d824203 452
c365fe76 453 // add fQCorrectionsCos to the main list:
454 fHistList->Add(fQCorrectionsCos);
455 //.........................................................................
456
457 // corrections for non-uniform acceptance (cos terms) calculated with nested loops
458 fDirectCorrectionsCos = new TProfile("fDirectCorrectionsCos"," corrections for non-uniform acceptance (cos terms)",100,0,100,"s");
459 fDirectCorrectionsCos->SetTickLength(-0.01,"Y");
460 fDirectCorrectionsCos->SetMarkerStyle(25);
461 fDirectCorrectionsCos->SetLabelSize(0.03);
462 fDirectCorrectionsCos->SetLabelOffset(0.01,"Y");
463 // binned in the samw way as fQCorrectionsCos (see above)
464 // add fDirectCorrectionsCos to the main list:
465 fHistList->Add(fDirectCorrectionsCos);
466
467 //.........................................................................
468 // corrections for non-uniform acceptance (sin terms) calculated from Q-vectors
469 fQCorrectionsSin = new TProfile("fQCorrectionsSin"," corrections for non-uniform acceptance (sin terms)",100,0,100,"s");
470 fQCorrectionsSin->SetTickLength(-0.01,"Y");
471 fQCorrectionsSin->SetMarkerStyle(25);
472 fQCorrectionsSin->SetLabelSize(0.03);
473 fQCorrectionsSin->SetLabelOffset(0.01,"Y");
474 // 1-p:
475 (fQCorrectionsSin->GetXaxis())->SetBinLabel(1,"sin(n(#phi_{1}))>");
476 // 2-p:
477 // 3-p:
478
479 // add fQCorrectionsSin to the main list:
480 fHistList->Add(fQCorrectionsSin);
481 //.........................................................................
482
483 // corrections for non-uniform acceptance (sin terms) calculated with nested loops
484 fDirectCorrectionsSin = new TProfile("fDirectCorrectionsSin"," corrections for non-uniform acceptance (sin terms)",100,0,100,"s");
485 fDirectCorrectionsSin->SetTickLength(-0.01,"Y");
486 fDirectCorrectionsSin->SetMarkerStyle(25);
487 fDirectCorrectionsSin->SetLabelSize(0.03);
488 fDirectCorrectionsSin->SetLabelOffset(0.01,"Y");
489 // binned in the samw way as fQCorrectionsSin (see above)
490 // add fDirectCorrectionsSin to the main list:
491 fHistList->Add(fDirectCorrectionsSin);
492
8842fb2b 493 //average products
494 fQProduct = new TProfile("fQProduct","average of products",6,0,6,"s");
495 fQProduct->SetTickLength(-0.01,"Y");
496 fQProduct->SetMarkerStyle(25);
497 fQProduct->SetLabelSize(0.03);
498 fQProduct->SetLabelOffset(0.01,"Y");
499 (fQProduct->GetXaxis())->SetBinLabel(1,"<<2*4>>");
500 (fQProduct->GetXaxis())->SetBinLabel(2,"<<2*6>>");
501 (fQProduct->GetXaxis())->SetBinLabel(3,"<<2*8>>");
502 (fQProduct->GetXaxis())->SetBinLabel(4,"<<4*6>>");
503 (fQProduct->GetXaxis())->SetBinLabel(5,"<<4*8>>");
504 (fQProduct->GetXaxis())->SetBinLabel(6,"<<6*8>>");
505 fQProduct->SetXTitle("");
506 fQProduct->SetYTitle("");
507 fHistList->Add(fQProduct);
bc92c0cb 508
9c1a9547 509 // multi-particle correlations calculated with nested loops (needed for int. flow)
510 fDirectCorrelations = new TProfile("fDirectCorrelations","multi-particle correlations with nested loops",100,0,100,"s");
bc92c0cb 511 fDirectCorrelations->SetXTitle("");
512 fDirectCorrelations->SetYTitle("correlations");
513 fHistList->Add(fDirectCorrelations);
514
9c1a9547 515 // multi-particle correlations calculated with nested loops (needed for weighted int. flow)
516 fDirectCorrelationsW = new TProfile("fDirectCorrelationsW","multi-particle correlations with nested loops",200,0,200,"s");
517 fDirectCorrelationsW->SetXTitle("");
518 fDirectCorrelationsW->SetYTitle("correlations");
519 fHistList->Add(fDirectCorrelationsW);
520
521 // multi-particle correlations calculated with nested loops (needed for diff. flow)
522 fDirectCorrelationsDiffFlow = new TProfile("fDirectCorrelationsDiffFlow","multi-particle correlations with nested loops",200,0,200,"s");
523 fDirectCorrelationsDiffFlow->SetXTitle("");
524 fDirectCorrelationsDiffFlow->SetYTitle("correlations");
525 fHistList->Add(fDirectCorrelationsDiffFlow);
526
527 // multi-particle correlations calculated with nested loops (needed for weighted diff. flow)
528 fDirectCorrelationsDiffFlowW = new TProfile("fDirectCorrelationsDiffFlowW","multi-particle correlations with nested loops",200,0,200,"s");
529 fDirectCorrelationsDiffFlowW->SetXTitle("");
530 fDirectCorrelationsDiffFlowW->SetYTitle("correlations");
531 fHistList->Add(fDirectCorrelationsDiffFlowW);
532
1dfa3c16 533 //f2PerPtBin1n1nRP
534 f2PerPtBin1n1nRP = new TProfile("f2PerPtBin1n1nRP","<2'>_{n|n}",fnBinsPt,fPtMin,fPtMax,"s");
535 f2PerPtBin1n1nRP->SetXTitle("p_{t} [GeV]");
ae733b3b 536 fDiffFlowList->Add(f2PerPtBin1n1nRP);
1dfa3c16 537
1dfa3c16 538 //f4PerPtBin1n1n1n1nRP
539 f4PerPtBin1n1n1n1nRP = new TProfile("f4PerPtBin1n1n1n1nRP","<4'>_{n,n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
540 f4PerPtBin1n1n1n1nRP->SetXTitle("p_{t} [GeV]");
ae733b3b 541 fDiffFlowList->Add(f4PerPtBin1n1n1n1nRP);
1dfa3c16 542
1dfa3c16 543 //f2PerEtaBin1n1nRP
544 f2PerEtaBin1n1nRP = new TProfile("f2PerEtaBin1n1nRP","<2'>_{n|n}",fnBinsEta,fEtaMin,fEtaMax,"s");
545 f2PerEtaBin1n1nRP->SetXTitle("#eta");
ae733b3b 546 fDiffFlowList->Add(f2PerEtaBin1n1nRP);
1dfa3c16 547
1dfa3c16 548 //f4PerEtaBin1n1n1n1nRP
549 f4PerEtaBin1n1n1n1nRP = new TProfile("f4PerEtaBin1n1n1n1nRP","<4'>_{n,n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
550 f4PerEtaBin1n1n1n1nRP->SetXTitle("#eta");
ae733b3b 551 fDiffFlowList->Add(f4PerEtaBin1n1n1n1nRP);
1dfa3c16 552
1dfa3c16 553 //f2PerPtBin1n1nPOI
554 f2PerPtBin1n1nPOI = new TProfile("f2PerPtBin1n1nPOI","<2'>_{n|n}",fnBinsPt,fPtMin,fPtMax,"s");
4057ba99 555 f2PerPtBin1n1nPOI->SetXTitle("#eta");
ae733b3b 556 fDiffFlowList->Add(f2PerPtBin1n1nPOI);
1dfa3c16 557
1dfa3c16 558 //f4PerPtBin1n1n1n1nPOI
559 f4PerPtBin1n1n1n1nPOI = new TProfile("f4PerPtBin1n1n1n1nPOI","<4'>_{n,n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
560 f4PerPtBin1n1n1n1nPOI->SetXTitle("p_{t} [GeV]");
ae733b3b 561 fDiffFlowList->Add(f4PerPtBin1n1n1n1nPOI);
1dfa3c16 562
1dfa3c16 563 //f2PerEtaBin1n1nPOI
564 f2PerEtaBin1n1nPOI = new TProfile("f2PerEtaBin1n1nPOI","<2'>_{n|n}",fnBinsEta,fEtaMin,fEtaMax,"s");
565 f2PerEtaBin1n1nPOI->SetXTitle("#eta");
ae733b3b 566 fDiffFlowList->Add(f2PerEtaBin1n1nPOI);
1dfa3c16 567
1dfa3c16 568 //f4PerEtaBin1n1n1n1nPOI
569 f4PerEtaBin1n1n1n1nPOI = new TProfile("f4PerEtaBin1n1n1n1nPOI","<4'>_{n,n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
570 f4PerEtaBin1n1n1n1nPOI->SetXTitle("#eta");
ae733b3b 571 fDiffFlowList->Add(f4PerEtaBin1n1n1n1nPOI);
bc92c0cb 572
3d824203 573 //f2WPerPtBin1n1nPOI
574 f2WPerPtBin1n1nPOI = new TProfile("f2WPerPtBin1n1nPOI","<2'>_{n|n}",fnBinsPt,fPtMin,fPtMax,"s");
575 f2WPerPtBin1n1nPOI->SetXTitle("#pt");
576 fDiffFlowList->Add(f2WPerPtBin1n1nPOI);
577
3d824203 578 //f4WPerPtBin1n1n1n1nPOI
579 f4WPerPtBin1n1n1n1nPOI = new TProfile("f4WPerPtBin1n1n1n1nPOI","<4'>_{n,n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
580 f4WPerPtBin1n1n1n1nPOI->SetXTitle("#Pt");
581 fDiffFlowList->Add(f4WPerPtBin1n1n1n1nPOI);
582
3d824203 583 //f2WPerEtaBin1n1nPOI
584 f2WPerEtaBin1n1nPOI = new TProfile("f2WPerEtaBin1n1nPOI","<2'>_{n|n}",fnBinsEta,fEtaMin,fEtaMax,"s");
585 f2WPerEtaBin1n1nPOI->SetXTitle("#eta");
586 fDiffFlowList->Add(f2WPerEtaBin1n1nPOI);
587
588 //f4WPerEtaBin1n1n1n1nPOI
589 f4WPerEtaBin1n1n1n1nPOI = new TProfile("f4WPerEtaBin1n1n1n1nPOI","<4'>_{n,n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
590 f4WPerEtaBin1n1n1n1nPOI->SetXTitle("#eta");
591 fDiffFlowList->Add(f4WPerEtaBin1n1n1n1nPOI);
592
3d824203 593 //f2WPerPtBin1n1nRP
594 f2WPerPtBin1n1nRP = new TProfile("f2WPerPtBin1n1nRP","<2'>_{n|n}",fnBinsPt,fPtMin,fPtMax,"s");
595 f2WPerPtBin1n1nRP->SetXTitle("#pt");
596 fDiffFlowList->Add(f2WPerPtBin1n1nRP);
597
598 //f4WPerPtBin1n1n1n1nRP
599 f4WPerPtBin1n1n1n1nRP = new TProfile("f4WPerPtBin1n1n1n1nRP","<4'>_{n,n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
600 f4WPerPtBin1n1n1n1nRP->SetXTitle("#Pt");
601 fDiffFlowList->Add(f4WPerPtBin1n1n1n1nRP);
602
3d824203 603 //f2WPerEtaBin1n1nRP
604 f2WPerEtaBin1n1nRP = new TProfile("f2WPerEtaBin1n1nRP","<2'>_{n|n}",fnBinsEta,fEtaMin,fEtaMax,"s");
605 f2WPerEtaBin1n1nRP->SetXTitle("#eta");
606 fDiffFlowList->Add(f2WPerEtaBin1n1nRP);
607
608 //f4WPerEtaBin1n1n1n1nRP
609 f4WPerEtaBin1n1n1n1nRP = new TProfile("f4WPerEtaBin1n1n1n1nRP","<4'>_{n,n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
610 f4WPerEtaBin1n1n1n1nRP->SetXTitle("#eta");
611 fDiffFlowList->Add(f4WPerEtaBin1n1n1n1nRP);
612
cb308e83 613 //common control histogram (2nd order)
614 fCommonHists2nd = new AliFlowCommonHist("AliFlowCommonHist2ndOrderQC");
615 fHistList->Add(fCommonHists2nd);
1315fe58 616
cb308e83 617 //common control histogram (4th order)
618 fCommonHists4th = new AliFlowCommonHist("AliFlowCommonHist4thOrderQC");
619 fHistList->Add(fCommonHists4th);
620
621 //common control histogram (6th order)
622 fCommonHists6th = new AliFlowCommonHist("AliFlowCommonHist6thOrderQC");
623 fHistList->Add(fCommonHists6th);
624
625 //common control histogram (8th order)
626 fCommonHists8th = new AliFlowCommonHist("AliFlowCommonHist8thOrderQC");
627 fHistList->Add(fCommonHists8th);
4057ba99 628
8842fb2b 629 //common histograms for final results (2nd order)
1315fe58 630 fCommonHistsResults2nd = new AliFlowCommonHistResults("AliFlowCommonHistResults2ndOrderQC");
631 fHistList->Add(fCommonHistsResults2nd);
632
8842fb2b 633 //common histograms for final results (4th order)
1315fe58 634 fCommonHistsResults4th = new AliFlowCommonHistResults("AliFlowCommonHistResults4thOrderQC");
635 fHistList->Add(fCommonHistsResults4th);
636
8842fb2b 637 //common histograms for final results (6th order)
1315fe58 638 fCommonHistsResults6th = new AliFlowCommonHistResults("AliFlowCommonHistResults6thOrderQC");
639 fHistList->Add(fCommonHistsResults6th);
640
8842fb2b 641 //common histograms for final results (8th order)
1315fe58 642 fCommonHistsResults8th = new AliFlowCommonHistResults("AliFlowCommonHistResults8thOrderQC");
643 fHistList->Add(fCommonHistsResults8th);
1315fe58 644
645 //weighted <2>_{n|n} distribution
52021ae2 646 f2pDistribution = new TH1D("f2pDistribution","<2>_{n|n} distribution",100000,-0.02,0.1);
647 f2pDistribution->SetXTitle("<2>_{n|n}");
648 f2pDistribution->SetYTitle("Counts");
649 fHistList->Add(f2pDistribution);
1315fe58 650
651 //weighted <4>_{n,n|n,n} distribution
52021ae2 652 f4pDistribution = new TH1D("f4pDistribution","<4>_{n,n|n,n} distribution",100000,-0.00025,0.002);
653 f4pDistribution->SetXTitle("<4>_{n,n|n,n}");
654 f4pDistribution->SetYTitle("Counts");
655 fHistList->Add(f4pDistribution);
1315fe58 656
657 //weighted <6>_{n,n,n|n,n,n} distribution
52021ae2 658 f6pDistribution = new TH1D("f6pDistribution","<6>_{n,n,n|n,n,n} distribution",100000,-0.000005,0.000025);
659 f6pDistribution->SetXTitle("<6>_{n,n,n|n,n,n}");
660 f6pDistribution->SetYTitle("Counts");
661 fHistList->Add(f6pDistribution);
bc92c0cb 662
5e838eeb 663 //weighted <8>_{n,n,n,n|n,n,n,n} distribution
664 f8pDistribution = new TH1D("f8pDistribution","<8>_{n,n,n,n|n,n,n,n} distribution",100000,-0.000000001,0.00000001);
665 f8pDistribution->SetXTitle("<8>_{n,n,n,n|n,n,n,n}");
666 f8pDistribution->SetYTitle("Counts");
667 fHistList->Add(f8pDistribution);
ae733b3b 668
ae733b3b 669
03a02aca 670
ae733b3b 671
bc92c0cb 672
ae733b3b 673
ae733b3b 674
ae733b3b 675
9c1a9547 676 // .......................................................................................................................................
677 // Q_{n,k} and S^M_{n,k}:
678 fReQ = new TMatrixD(4,9);
679 fImQ = new TMatrixD(4,9);
680 fSMpk = new TMatrixD(8,9);
ae733b3b 681
9c1a9547 682 // q'_{n}:
683 fReqnPtEta = new TH2D("fReqnPtEta","Re[q_{n}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
684 fImqnPtEta = new TH2D("fImqnPtEta","Im[q_{n}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
685 fmPtEta = new TH2D("fmPtEta","m(p_{t},#eta)",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
bc92c0cb 686
9c1a9547 687 // non-weighted q''_{n} and q''_{2n}:
688 fReqPrimePrime1nPtEta = new TH2D("fReqPrimePrime1nPtEta","Re[q''_{n}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
689 fImqPrimePrime1nPtEta = new TH2D("fImqPrimePrime1nPtEta","Im[q''_{n}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
690 fReqPrimePrime2nPtEta = new TH2D("fReqPrimePrime2nPtEta","Re[q''_{2n}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
691 fImqPrimePrime2nPtEta = new TH2D("fImqPrimePrime2nPtEta","Im[q''_{2n}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
692
693 // weighted q''_{n,2k} and q''_{2n,k}:
694 fReqPrimePrime1n2kPtEta = new TH2D("fReqPrimePrime1n2kPtEta","Re[q''_{n,2}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
695 fImqPrimePrime1n2kPtEta = new TH2D("fImqPrimePrime1n2kPtEta","Im[q''_{n,2}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
696 fReqPrimePrime2n1kPtEta = new TH2D("fReqPrimePrime2n1kPtEta","Re[q''_{2n,1(p_{t},#eta)}]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
697 fImqPrimePrime2n1kPtEta = new TH2D("fImqPrimePrime2n1kPtEta","Im[q''_{2n,1}(p_{t},#eta)]",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1dfa3c16 698
9c1a9547 699 // m'':
700 fmPrimePrimePtEta = new TH2D("fmPrimePrimePtEta","m''(p_{t},#eta)",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
bc92c0cb 701
9c1a9547 702 // S^{m''}_{p,k}:
703 fSmPrimePrime1p1kPtEta = new TH2D("fSmPrimePrime1p1kPtEta","S^{m''}_{1,1}(p_{t},#eta)",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
704 fSmPrimePrime1p2kPtEta = new TH2D("fSmPrimePrime1p2kPtEta","S^{m''}_{1,2}(p_{t},#eta)",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
705 fSmPrimePrime1p3kPtEta = new TH2D("fSmPrimePrime1p3kPtEta","S^{m''}_{1,3}(p_{t},#eta)",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
706
707 // non-weighted q_RP{n} and q_RP{2n}:
708 fReqRP1nPtEta = new TH2D("fReqRP1nPtEta","Re[q_{n}(p_{t},#eta)] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
709 fImqRP1nPtEta = new TH2D("fImqRP1nPtEta","Im[q_{n}(p_{t},#eta)] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
710 fReqRP2nPtEta = new TH2D("fReqRP2nPtEta","Re[q_{2n}(p_{t},#eta)] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
711 fImqRP2nPtEta = new TH2D("fImqRP2nPtEta","Im[q_{2n}(p_{t},#eta)] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
bc92c0cb 712
9c1a9547 713 // weighted q_RP{n,2k} and q_RP{2n,k}:
714 fReqRP1n2kPtEta = new TH2D("fReqRP1n2kPtEta","Re[q_{n,2}(p_{t},#eta)] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
715 fImqRP1n2kPtEta = new TH2D("fImqRP1n2kPtEta","Im[q_{n,2}(p_{t},#eta)] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
716 fReqRP2n1kPtEta = new TH2D("fReqRP2n1kPtEta","Re[q_{2n,1(p_{t},#eta)}] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
717 fImqRP2n1kPtEta = new TH2D("fImqRP2n1kPtEta","Im[q_{2n,1}(p_{t},#eta)] for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
cb308e83 718
9c1a9547 719 // mRP:
720 fmRPPtEta = new TH2D("fmRPPtEta","m(p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
dee1e0e0 721
9c1a9547 722 // S^{mRP}_{p,k}:
723 fSmRP1p1kPtEta = new TH2D("fSmRP1p1kPtEta","S^{m}_{1,1}(p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
724 fSmRP1p2kPtEta = new TH2D("fSmRP1p2kPtEta","S^{m}_{1,2}(p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
725 fSmRP1p3kPtEta = new TH2D("fSmRP1p3kPtEta","S^{m}_{1,3}(p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
dee1e0e0 726
9c1a9547 727 // ----- RESULTS ----
dee1e0e0 728
c365fe76 729 // final corrections for non-uniform acceptance for QC{2}, QC{4}, QC{6} and QC{8}:
730 fFinalCorrectionsForNUA = new TH1D("fFinalCorrectionsForNUA","Corrections for non-uniform acceptance to Q-cumulants",4,0,4);
731 fFinalCorrectionsForNUA->SetLabelSize(0.06);
732 fFinalCorrectionsForNUA->SetMarkerStyle(25);
733 (fFinalCorrectionsForNUA->GetXaxis())->SetBinLabel(1,"QC{2}");
734 (fFinalCorrectionsForNUA->GetXaxis())->SetBinLabel(2,"QC{4}");
735 (fFinalCorrectionsForNUA->GetXaxis())->SetBinLabel(3,"QC{6}");
736 (fFinalCorrectionsForNUA->GetXaxis())->SetBinLabel(4,"QC{8}");
737 fResultsList->Add(fFinalCorrectionsForNUA);
738
9c1a9547 739 // final results for non-weighted no-name integrated flow:
740 fIntFlowResultsQC = new TH1D("fIntFlowResultsQC","Integrated Flow from Q-cumulants",4,0,4);
741 fIntFlowResultsQC->SetLabelSize(0.06);
742 fIntFlowResultsQC->SetMarkerStyle(25);
743 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
744 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
745 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
746 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
747 fResultsList->Add(fIntFlowResultsQC);
748
749 // final results for non-weighted POIs integrated flow:
750 fIntFlowResultsPOIQC = new TH1D("fIntFlowResultsPOIQC","Integrated Flow (POI) from Q-cumulants",4,0,4);
751 fIntFlowResultsPOIQC->SetLabelSize(0.06);
752 fIntFlowResultsPOIQC->SetMarkerStyle(25);
753 (fIntFlowResultsPOIQC->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
754 (fIntFlowResultsPOIQC->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
755 (fIntFlowResultsPOIQC->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
756 (fIntFlowResultsPOIQC->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
757 fResultsList->Add(fIntFlowResultsPOIQC);
758
759 // final results for non-weighted RPs integrated flow:
760 fIntFlowResultsRPQC = new TH1D("fIntFlowResultsRPQC","Integrated Flow (RP) from Q-cumulants",4,0,4);
761 fIntFlowResultsRPQC->SetLabelSize(0.06);
762 fIntFlowResultsRPQC->SetMarkerStyle(25);
763 (fIntFlowResultsRPQC->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
764 (fIntFlowResultsRPQC->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
765 (fIntFlowResultsRPQC->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
766 (fIntFlowResultsRPQC->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
767 fResultsList->Add(fIntFlowResultsRPQC);
768
769 // final results for weighted no-name integrated flow:
770 fIntFlowResultsQCW = new TH1D("fIntFlowResultsQCW","Integrated Flow from Q-cumulants with Weights",4,0,4);
771 fIntFlowResultsQCW->SetLabelSize(0.06);
772 fIntFlowResultsQCW->SetMarkerStyle(25);
773 (fIntFlowResultsQCW->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
774 (fIntFlowResultsQCW->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
775 (fIntFlowResultsQCW->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
776 (fIntFlowResultsQCW->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
777 fResultsList->Add(fIntFlowResultsQCW);
778
779 // final results for weighted POIs integrated flow:
780 fIntFlowResultsPOIQCW = new TH1D("fIntFlowResultsPOIQCW","Integrated Flow (POI) from Q-cumulants with Weights",4,0,4);
781 fIntFlowResultsPOIQCW->SetLabelSize(0.06);
782 fIntFlowResultsPOIQCW->SetMarkerStyle(25);
783 (fIntFlowResultsPOIQCW->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
784 (fIntFlowResultsPOIQCW->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
785 (fIntFlowResultsPOIQCW->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
786 (fIntFlowResultsPOIQCW->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
787 fResultsList->Add(fIntFlowResultsPOIQCW);
788
789 // final results for weighted RPs integrated flow:
790 fIntFlowResultsRPQCW = new TH1D("fIntFlowResultsRPQCW","Integrated Flow (RP) from Q-cumulants with Weights",4,0,4);
791 fIntFlowResultsRPQCW->SetLabelSize(0.06);
792 fIntFlowResultsRPQCW->SetMarkerStyle(25);
793 (fIntFlowResultsRPQCW->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
794 (fIntFlowResultsRPQCW->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
795 (fIntFlowResultsRPQCW->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
796 (fIntFlowResultsRPQCW->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
797 fResultsList->Add(fIntFlowResultsRPQCW);
798
799 // <cos n(psi1-phi2)> for POIs:
800 f2pPtEtaPOI = new TProfile2D("f2pPtEtaPOI","<cos n(#psi_{1}-#phi_{2})> (p_{t},#eta) for POIs",
801 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
802 f2pPtEtaPOI->SetXTitle("p_{t}");
803 f2pPtEtaPOI->SetYTitle("#eta");
804 fDiffFlowList->Add(f2pPtEtaPOI);
805
806 // <cos n(psi1+phi2-phi3-phi4)> for POIs:
807 f4pPtEtaPOI = new TProfile2D("f4pPtEtaPOI","<cos n(#psi_{1}+#phi_{2}-#phi_{3}-#phi_{4})> (p_{t},#eta) for POIs",
808 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
809 f4pPtEtaPOI->SetXTitle("p_{t}");
810 f4pPtEtaPOI->SetYTitle("#eta");
811 fDiffFlowList->Add(f4pPtEtaPOI);
812
813 // <cos n(psi1+phi2+phi3-phi4-phi5-phi6)> for POIs:
814 f6pPtEtaPOI = new TProfile2D("f6pPtEtaPOI","<cos n(#psi_{1}+#phi_{2}+#phi_{3}-#phi_{4}-#phi_{5}-#phi_{6})> (p_{t},#eta) for POIs",
815 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
816 f6pPtEtaPOI->SetXTitle("p_{t}");
817 f6pPtEtaPOI->SetYTitle("#eta");
818 fDiffFlowList->Add(f6pPtEtaPOI);
819
820 // <cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)> for POIs:
821 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",
822 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
823 f8pPtEtaPOI->SetXTitle("p_{t}");
824 f8pPtEtaPOI->SetYTitle("#eta");
825 fDiffFlowList->Add(f8pPtEtaPOI);
826
827 // non-weighted v'_{n}{2,QC} (pt,eta) for POIs
828 fvn2ndPtEtaPOI = new TH2D("fvn2ndPtEtaPOI","v'_{n}{2,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
829 fvn2ndPtEtaPOI->SetXTitle("p_{t}");
830 fvn2ndPtEtaPOI->SetYTitle("#eta");
831 fResultsList->Add(fvn2ndPtEtaPOI);
832
833 // non-weighted v'_{n}{4,QC} (pt,eta) for POIs
834 fvn4thPtEtaPOI = new TH2D("fvn4thPtEtaPOI","v'_{n}{4,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
835 fvn4thPtEtaPOI->SetXTitle("p_{t}");
836 fvn4thPtEtaPOI->SetYTitle("#eta");
837 fResultsList->Add(fvn4thPtEtaPOI);
838
839 // non-weighted v'_{n}{6,QC} (pt,eta) for POIs
840 fvn6thPtEtaPOI = new TH2D("fvn6thPtEtaPOI","v'_{n}{6,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
841 fvn6thPtEtaPOI->SetXTitle("p_{t}");
842 fvn6thPtEtaPOI->SetYTitle("#eta");
843 fResultsList->Add(fvn6thPtEtaPOI);
844
845 // non-weighted v'_{n}{8,QC} (pt,eta) for POIs
846 fvn8thPtEtaPOI = new TH2D("fvn8thPtEtaPOI","v'_{n}{8,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
847 fvn8thPtEtaPOI->SetXTitle("p_{t}");
848 fvn8thPtEtaPOI->SetYTitle("#eta");
849 fResultsList->Add(fvn8thPtEtaPOI);
850
851 // non-weighted v'_{n}{2,QC} (pt) for POIs
852 fvn2ndPtPOI = new TH1D("fvn2ndPtPOI","v'_{n}{2,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
853 fvn2ndPtPOI->SetXTitle("p_{t}");
854 fResultsList->Add(fvn2ndPtPOI);
855
856 // non-weighted v'_{n}{4,QC} (pt) for POIs
857 fvn4thPtPOI = new TH1D("fvn4thPtPOI","v'_{n}{4,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
858 fvn4thPtPOI->SetXTitle("p_{t}");
859 fvn4thPtPOI->SetYTitle("#eta");
860 fResultsList->Add(fvn4thPtPOI);
861
862 // non-weighted v'_{n}{6,QC} (pt) for POIs
863 fvn6thPtPOI = new TH1D("fvn6thPtPOI","v'_{n}{6,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
864 fvn6thPtPOI->SetXTitle("p_{t}");
865 fResultsList->Add(fvn6thPtPOI);
866
867 // non-weighted v'_{n}{8,QC} (pt) for POIs
868 fvn8thPtPOI = new TH1D("fvn8thPtPOI","v'_{n}{8,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
869 fvn8thPtPOI->SetXTitle("p_{t}");
870 fResultsList->Add(fvn8thPtPOI);
871
872 // non-weighted v'_{n}{2,QC} (eta) for POIs
873 fvn2ndEtaPOI = new TH1D("fvn2ndEtaPOI","v'_{n}{2,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
874 fvn2ndEtaPOI->SetXTitle("#eta");
875 fResultsList->Add(fvn2ndEtaPOI);
876
877 // non-weighted v'_{n}{4,QC} (eta) for POIs
878 fvn4thEtaPOI = new TH1D("fvn4thEtaPOI","v'_{n}{4,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
879 fvn4thEtaPOI->SetXTitle("#eta");
880 fResultsList->Add(fvn4thEtaPOI);
881
882 // non-weighted v'_{n}{6,QC} (eta) for POIs
883 fvn6thEtaPOI = new TH1D("fvn6thEtaPOI","v'_{n}{6,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
884 fvn6thEtaPOI->SetXTitle("#eta");
885 fResultsList->Add(fvn6thEtaPOI);
886
887 // non-weighted v'_{n}{8,QC} (eta) for POIs
888 fvn8thEtaPOI = new TH1D("fvn8thEtaPOI","v'_{n}{8,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
889 fvn8thEtaPOI->SetXTitle("p_{t}");
890 fResultsList->Add(fvn8thEtaPOI);
891
892 // <w2 cos n(psi1-phi2)> for POIs:
893 f2pPtEtaPOIW = new TProfile2D("f2pPtEtaPOIW","<w_{2} cos n(#psi_{1}-#phi_{2})> (p_{t},#eta) for POIs",
894 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
895 f2pPtEtaPOIW->SetXTitle("p_{t}");
896 fDiffFlowList->Add(f2pPtEtaPOIW);
897
898 // <w2 w3 w4 cos n(psi1+phi2-phi3-phi4)> for POIs:
899 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",
900 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
901 f4pPtEtaPOIW->SetXTitle("p_{t}");
902 fDiffFlowList->Add(f4pPtEtaPOIW);
903
904 // <w2 w3 w4 w5 w6 cos n(psi1+phi2+phi3-phi4-phi5-phi6)> for POIs:
905 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");
906 f6pPtEtaPOIW->SetXTitle("p_{t}");
907 fDiffFlowList->Add(f6pPtEtaPOIW);
908
909 // <w2 w3 w4 w5 w6 w7 w8 cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)> for POIs:
910 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");
911 f8pPtEtaPOIW->SetXTitle("p_{t}");
912 f8pPtEtaPOIW->SetYTitle("#eta");
913 fDiffFlowList->Add(f8pPtEtaPOIW);
914
915 // weighted v'_{n}{2,QC} (pt,eta) for POIs
916 fvn2ndPtEtaPOIW = new TH2D("fvn2ndPtEtaPOIW","weighted v'_{n}{2,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
917 fvn2ndPtEtaPOIW->SetXTitle("p_{t}");
918 fvn2ndPtEtaPOIW->SetYTitle("#eta");
919 fResultsList->Add(fvn2ndPtEtaPOIW);
920
921 // weighted v'_{n}{4,QC} (pt,eta) for POIs
922 fvn4thPtEtaPOIW = new TH2D("fvn4thPtEtaPOIW","weighted v'_{n}{4,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
923 fvn4thPtEtaPOIW->SetXTitle("p_{t}");
924 fvn4thPtEtaPOIW->SetYTitle("#eta");
925 fResultsList->Add(fvn4thPtEtaPOIW);
926
927 // weighted v'_{n}{6,QC} (pt,eta) for POIs
928 fvn6thPtEtaPOIW = new TH2D("fvn6thPtEtaPOIW","weighted v'_{n}{6,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
929 fvn6thPtEtaPOIW->SetXTitle("p_{t}");
930 fvn6thPtEtaPOIW->SetYTitle("#eta");
931 fResultsList->Add(fvn6thPtEtaPOIW);
932
933 // weighted v'_{n}{8,QC} (pt,eta) for POIs
934 fvn8thPtEtaPOIW = new TH2D("fvn8thPtEtaPOIW","weighted v'_{n}{8,QC} (p_{t},#eta) for POIs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
935 fvn8thPtEtaPOIW->SetXTitle("p_{t}");
936 fvn8thPtEtaPOIW->SetYTitle("#eta");
937 fResultsList->Add(fvn8thPtEtaPOIW);
938
939 // weighted v'_{n}{2,QC} (pt) for POIs
940 fvn2ndPtPOIW = new TH1D("fvn2ndPtPOIW","weighted v'_{n}{2,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
941 fvn2ndPtPOIW->SetXTitle("p_{t}");
942 fResultsList->Add(fvn2ndPtPOIW);
943
944 // weighted v'_{n}{4,QC} (pt) for POIs
945 fvn4thPtPOIW = new TH1D("fvn4thPtPOIW","weighted v'_{n}{4,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
946 fvn4thPtPOIW->SetXTitle("p_{t}");
947 fResultsList->Add(fvn4thPtPOIW);
948
949 // weighted v'_{n}{6,QC} (pt) for POIs
950 fvn6thPtPOIW = new TH1D("fvn6thPtPOIW","weighted v'_{n}{6,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
951 fvn6thPtPOIW->SetXTitle("p_{t}");
952 fResultsList->Add(fvn6thPtPOIW);
953
954 // weighted v'_{n}{8,QC} (pt) for POIs
955 fvn8thPtPOIW = new TH1D("fvn8thPtPOIW","weighted v'_{n}{8,QC} (p_{t}) for POIs",fnBinsPt,fPtMin,fPtMax);
956 fvn8thPtPOIW->SetXTitle("p_{t}");
957 fResultsList->Add(fvn8thPtPOIW);
958
959 // weighted v'_{n}{2,QC} (eta) for POIs
960 fvn2ndEtaPOIW = new TH1D("fvn2ndEtaPOIW","weighted v'_{n}{2,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
961 fvn2ndEtaPOIW->SetXTitle("#eta");
962 fResultsList->Add(fvn2ndEtaPOIW);
963
964 // weighted v'_{n}{4,QC} (eta) for POIs
965 fvn4thEtaPOIW = new TH1D("fvn4thEtaPOIW","weighted v'_{n}{4,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
966 fvn4thEtaPOIW->SetXTitle("#eta");
967 fResultsList->Add(fvn4thEtaPOIW);
968
969 // weighted v'_{n}{6,QC} (eta) for POIs
970 fvn6thEtaPOIW = new TH1D("fvn6thEtaPOIW","weighted v'_{n}{6,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
971 fvn6thEtaPOIW->SetXTitle("#eta");
972 fResultsList->Add(fvn6thEtaPOIW);
973
974 // weighted v'_{n}{8,QC} (eta) for POIs
975 fvn8thEtaPOIW = new TH1D("fvn8thEtaPOIW","weighted v'_{n}{8,QC} (#eta) for POIs",fnBinsEta,fEtaMin,fEtaMax);
976 fvn8thEtaPOIW->SetXTitle("#eta");
977 fResultsList->Add(fvn8thEtaPOIW);
978
979 // <cos n(psi1-phi2)> for RPs:
980 f2pPtEtaRP = new TProfile2D("f2pPtEtaRP","<cos n(#psi_{1}-#phi_{2})> (p_{t},#eta) for RPs",
981 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
982 f2pPtEtaRP->SetXTitle("p_{t}");
983 f2pPtEtaRP->SetYTitle("#eta");
984 fDiffFlowList->Add(f2pPtEtaRP);
985
986 // <cos n(psi1+phi2-phi3-phi4)> for RPs:
987 f4pPtEtaRP = new TProfile2D("f4pPtEtaRP","<cos n(#psi_{1}+#phi_{2}-#phi_{3}-#phi_{4})> (p_{t},#eta) for RPs",
988 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
989 f4pPtEtaRP->SetXTitle("p_{t}");
990 f4pPtEtaRP->SetYTitle("#eta");
991 fDiffFlowList->Add(f4pPtEtaRP);
992
993 // <cos n(psi1+phi2+phi3-phi4-phi5-phi6)> for RPs:
994 f6pPtEtaRP = new TProfile2D("f6pPtEtaRP","<cos n(#psi_{1}+#phi_{2}+#phi_{3}-#phi_{4}-#phi_{5}-#phi_{6})> (p_{t},#eta) for RPs",
995 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
996 f6pPtEtaRP->SetXTitle("p_{t}");
997 f6pPtEtaRP->SetYTitle("#eta");
998 fDiffFlowList->Add(f6pPtEtaRP);
999
1000 // <cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)> for RPs:
1001 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",
1002 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1003 f8pPtEtaRP->SetXTitle("p_{t}");
1004 f8pPtEtaRP->SetYTitle("#eta");
1005 fDiffFlowList->Add(f8pPtEtaRP);
1006
1007 // non-weighted v'_{n}{2,QC} (pt,eta) for RPs
1008 fvn2ndPtEtaRP = new TH2D("fvn2ndPtEtaRP","v'_{n}{2,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1009 fvn2ndPtEtaRP->SetXTitle("p_{t}");
1010 fvn2ndPtEtaRP->SetYTitle("#eta");
1011 fResultsList->Add(fvn2ndPtEtaRP);
1012
1013 // non-weighted v'_{n}{4,QC} (pt,eta) for RPs
1014 fvn4thPtEtaRP = new TH2D("fvn4thPtEtaRP","v'_{n}{4,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1015 fvn4thPtEtaRP->SetXTitle("p_{t}");
1016 fvn4thPtEtaRP->SetYTitle("#eta");
1017 fResultsList->Add(fvn4thPtEtaRP);
1018
1019 // non-weighted v'_{n}{6,QC} (pt,eta) for RPs
1020 fvn6thPtEtaRP = new TH2D("fvn6thPtEtaRP","v'_{n}{6,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1021 fvn6thPtEtaRP->SetXTitle("p_{t}");
1022 fvn6thPtEtaRP->SetYTitle("#eta");
1023 fResultsList->Add(fvn6thPtEtaRP);
1024
1025 // non-weighted v'_{n}{8,QC} (pt,eta) for RPs
1026 fvn8thPtEtaRP = new TH2D("fvn8thPtEtaRP","v'_{n}{8,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1027 fvn8thPtEtaRP->SetXTitle("p_{t}");
1028 fvn8thPtEtaRP->SetYTitle("#eta");
1029 fResultsList->Add(fvn8thPtEtaRP);
1030
1031 // non-weighted v'_{n}{2,QC} (pt) for RPs
1032 fvn2ndPtRP = new TH1D("fvn2ndPtRP","v'_{n}{2,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1033 fvn2ndPtRP->SetXTitle("p_{t}");
1034 fResultsList->Add(fvn2ndPtRP);
1035
1036 // non-weighted v'_{n}{4,QC} (pt) for RPs
1037 fvn4thPtRP = new TH1D("fvn4thPtRP","v'_{n}{4,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1038 fvn4thPtRP->SetXTitle("p_{t}");
1039 fResultsList->Add(fvn4thPtRP);
1040
1041 // non-weighted v'_{n}{6,QC} (pt) for RPs
1042 fvn6thPtRP = new TH1D("fvn6thPtRP","v'_{n}{6,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1043 fvn6thPtRP->SetXTitle("p_{t}");
1044 fResultsList->Add(fvn6thPtRP);
1045
1046 // non-weighted v'_{n}{8,QC} (pt) for RPs
1047 fvn8thPtRP = new TH1D("fvn8thPtRP","v'_{n}{8,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1048 fvn8thPtRP->SetXTitle("p_{t}");
1049 fResultsList->Add(fvn8thPtRP);
1050
1051 // non-weighted v'_{n}{2,QC} (eta) for RPs
1052 fvn2ndEtaRP = new TH1D("fvn2ndEtaRP","v'_{n}{2,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1053 fvn2ndEtaRP->SetXTitle("#eta");
1054 fResultsList->Add(fvn2ndEtaRP);
1055
1056 // non-weighted v'_{n}{4,QC} (eta) for RPs
1057 fvn4thEtaRP = new TH1D("fvn4thEtaRP","v'_{n}{4,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1058 fvn4thEtaRP->SetXTitle("#eta");
1059 fResultsList->Add(fvn4thEtaRP);
1060
1061 // non-weighted v'_{n}{6,QC} (eta) for RPs
1062 fvn6thEtaRP = new TH1D("fvn6thEtaRP","v'_{n}{6,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1063 fvn6thEtaRP->SetXTitle("#eta");
1064 fResultsList->Add(fvn6thEtaRP);
1065
1066 // non-weighted v'_{n}{8,QC} (eta) for RPs
1067 fvn8thEtaRP = new TH1D("fvn8thEtaRP","v'_{n}{8,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1068 fvn8thEtaRP->SetXTitle("#eta");
1069 fResultsList->Add(fvn8thEtaRP);
1070
1071 // <w2 cos n(psi1-phi2)> for RPs:
1072 f2pPtEtaRPW = new TProfile2D("f2pPtEtaRPW","<w_{2} cos n(#psi_{1}-#phi_{2})> (p_{t},#eta) for RPs",
1073 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1074 f2pPtEtaRPW->SetXTitle("p_{t}");
1075 f2pPtEtaRPW->SetYTitle("#eta");
1076 fDiffFlowList->Add(f2pPtEtaRPW);
1077
1078 // <w2 w3 w4 cos n(psi1+phi2-phi3-phi4)> for RPs:
1079 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",
1080 fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax,"s");
1081 f4pPtEtaRPW->SetXTitle("p_{t}");
1082 f4pPtEtaRPW->SetYTitle("#eta");
1083 fDiffFlowList->Add(f4pPtEtaRPW);
1084
1085 // <w2 w3 w4 w5 w6 cos n(psi1+phi2+phi3-phi4-phi5-phi6)> for RPs:
1086 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");
1087 f6pPtEtaRPW->SetXTitle("p_{t}");
1088 f6pPtEtaRPW->SetYTitle("#eta");
1089 fDiffFlowList->Add(f6pPtEtaRPW);
1090
1091 // <w2 w3 w4 w5 w6 w7 w8 cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)> for RPs:
1092 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");
1093 f8pPtEtaRPW->SetXTitle("p_{t}");
1094 f8pPtEtaRPW->SetYTitle("#eta");
1095 fDiffFlowList->Add(f8pPtEtaRPW);
1096
1097 // weighted v'_{n}{2,QC} (pt,eta) for RPs
1098 fvn2ndPtEtaRPW = new TH2D("fvn2ndPtEtaRPW","weighted v'_{n}{2,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1099 fvn2ndPtEtaRPW->SetXTitle("p_{t}");
1100 fvn2ndPtEtaRPW->SetYTitle("#eta");
1101 fResultsList->Add(fvn2ndPtEtaRPW);
1102
1103 // weighted v'_{n}{4,QC} (pt,eta) for RPs
1104 fvn4thPtEtaRPW = new TH2D("fvn4thPtEtaRPW","weighted v'_{n}{4,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1105 fvn4thPtEtaRPW->SetXTitle("p_{t}");
1106 fvn4thPtEtaRPW->SetYTitle("#eta");
1107 fResultsList->Add(fvn4thPtEtaRPW);
1108
1109 // weighted v'_{n}{6,QC} (pt,eta) for RPs
1110 fvn6thPtEtaRPW = new TH2D("fvn6thPtEtaRPW","weighted v'_{n}{6,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1111 fvn6thPtEtaRPW->SetXTitle("p_{t}");
1112 fvn6thPtEtaRPW->SetYTitle("#eta");
1113 fResultsList->Add(fvn6thPtEtaRPW);
1114
1115 // weighted v'_{n}{8,QC} (pt,eta) for RPs
1116 fvn8thPtEtaRPW = new TH2D("fvn8thPtEtaRPW","weighted v'_{n}{8,QC} (p_{t},#eta) for RPs",fnBinsPt,fPtMin,fPtMax,fnBinsEta,fEtaMin,fEtaMax);
1117 fvn8thPtEtaRPW->SetXTitle("p_{t}");
1118 fvn8thPtEtaRPW->SetYTitle("#eta");
1119 fResultsList->Add(fvn8thPtEtaRPW);
1120
1121 // weighted v'_{n}{2,QC} (pt) for RPs
1122 fvn2ndPtRPW = new TH1D("fvn2ndPtRPW","weighted v'_{n}{2,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1123 fvn2ndPtRPW->SetXTitle("p_{t}");
1124 fResultsList->Add(fvn2ndPtRPW);
1125
1126 // weighted v'_{n}{4,QC} (pt) for RPs
1127 fvn4thPtRPW = new TH1D("fvn4thPtRPW","weighted v'_{n}{4,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1128 fvn4thPtRPW->SetXTitle("p_{t}");
1129 fResultsList->Add(fvn4thPtRPW);
1130
1131 // weighted v'_{n}{6,QC} (pt) for RPs
1132 fvn6thPtRPW = new TH1D("fvn6thPtRPW","weighted v'_{n}{6,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1133 fvn6thPtRPW->SetXTitle("p_{t}");
1134 fResultsList->Add(fvn6thPtRPW);
1135
1136 // weighted v'_{n}{8,QC} (pt) for RPs
1137 fvn8thPtRPW = new TH1D("fvn8thPtRPW","weighted v'_{n}{8,QC} (p_{t}) for RPs",fnBinsPt,fPtMin,fPtMax);
1138 fvn8thPtRPW->SetXTitle("p_{t}");
1139 fResultsList->Add(fvn8thPtRPW);
1140
1141 // weighted v'_{n}{2,QC} (eta) for RPs
1142 fvn2ndEtaRPW = new TH1D("fvn2ndEtaRPW","weighted v'_{n}{2,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1143 fvn2ndEtaRPW->SetXTitle("#eta");
1144 fResultsList->Add(fvn2ndEtaRPW);
1145
1146 // weighted v'_{n}{4,QC} (eta) for RPs
1147 fvn4thEtaRPW = new TH1D("fvn4thEtaRPW","weighted v'_{n}{4,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1148 fvn4thEtaRPW->SetXTitle("#eta");
1149 fResultsList->Add(fvn4thEtaRPW);
1150
1151 // weighted v'_{n}{6,QC} (eta) for RPs
1152 fvn6thEtaRPW = new TH1D("fvn6thEtaRPW","weighted v'_{n}{6,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1153 fvn6thEtaRPW->SetXTitle("#eta");
1154 fResultsList->Add(fvn6thEtaRPW);
1155
1156 // weighted v'_{n}{8,QC} (eta) for RPs
1157 fvn8thEtaRP = new TH1D("fvn8thEtaEtaRP","weighted v'_{n}{8,QC} (#eta) for RPs",fnBinsEta,fEtaMin,fEtaMax);
1158 fvn8thEtaRP->SetXTitle("#eta");
1159 fResultsList->Add(fvn8thEtaRP);
1160 // .....................................................................................................................................
1161
1162
1163
1164
1165 // add fUseWeightsBits to the main list (to be improved)
1166 fUseWeightsBits = new TBits(1);
1167 fHistList->Add(fUseWeightsBits);
1168
1169 // add list fWeightsList with weights to the main list
1170 fHistList->Add(fWeightsList);
dee1e0e0 1171
9c1a9547 1172 // add list fDiffFlowList with histograms and profiles needed for differential flow to the main list
1173 fHistList->Add(fDiffFlowList);
5e838eeb 1174
9c1a9547 1175 // add list fResultsList with final results to the main list
1176 fHistList->Add(fResultsList);
3c16adde 1177
9c1a9547 1178
1179}//end of Init()
3d824203 1180
9c1a9547 1181
1182//================================================================================================================
1183
1184
1185void AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
1186{
1187 // running over data only in this method
1188
1189
1190
1191
1192 // *********************************************
1193 // **** ACCESS THE OUTPUT FILE WITH WEIGHTS ****
1194 // *********************************************
1195
1196 fUseWeights = fUsePhiWeights||fUsePtWeights||fUseEtaWeights;
1197 fUseWeightsBits->SetBitNumber(1,fUseWeights); // to be improved (how to pass boolean to Finish()?)
1198
3d824203 1199 TH1F *phiWeights = NULL; // histogram with phi weights
1200 TH1D *ptWeights = NULL; // histogram with pt weights
1201 TH1D *etaWeights = NULL; // histogram with eta weights
1202
9c1a9547 1203 if(fUseWeights)
3d824203 1204 {
1205 if(!fWeightsList)
1315fe58 1206 {
9c1a9547 1207 cout<<" WARNING: fWeightsList is NULL pointer in AFAWQC::Make(). "<<endl;
3d824203 1208 exit(0);
1209 }
1210 if(fUsePhiWeights)
1211 {
1212 phiWeights = dynamic_cast<TH1F *>(fWeightsList->FindObject("phi_weights"));
1213 if(!phiWeights)
ae733b3b 1214 {
9c1a9547 1215 cout<<" WARNING: couldn't access the histogram with phi weights in AFAWQC::Make(). "<<endl;
3d824203 1216 exit(0);
ae733b3b 1217 }
3d824203 1218 }
1219 if(fUsePtWeights)
1220 {
1221 ptWeights = dynamic_cast<TH1D *>(fWeightsList->FindObject("pt_weights"));
1222 if(!ptWeights)
1223 {
9c1a9547 1224 cout<<" WARNING: couldn't access the histogram with pt weights in AFAWQC::Make(). "<<endl;
3d824203 1225 exit(0);
1226 }
1227 }
1228 if(fUseEtaWeights)
1229 {
1230 etaWeights = dynamic_cast<TH1D *>(fWeightsList->FindObject("eta_weights"));
1231 if(!etaWeights)
1232 {
9c1a9547 1233 cout<<" WARNING: couldn't access the histogram with eta weights in AFAWQC::Make(). "<<endl;
3d824203 1234 exit(0);
1235 }
1236 }
1237 }
1238
77515452 1239 Int_t nBinsPhi = 0;
9c1a9547 1240 Double_t dBinWidthPt = 0.;
1241 Double_t dBinWidthEta = 0.;
1242
77515452 1243 if(fnBinsPt)
1244 {
1245 dBinWidthPt=(fPtMax-fPtMin)/fnBinsPt;
1246 }
9c1a9547 1247
77515452 1248 if(fnBinsEta)
1249 {
1250 dBinWidthEta=(fEtaMax-fEtaMin)/fnBinsEta;
1251 }
3d824203 1252
1253 if(fWeightsList)
9c1a9547 1254 {
1255 if(fUsePhiWeights)
3d824203 1256 {
9c1a9547 1257 if(phiWeights) nBinsPhi = phiWeights->GetNbinsX();
1258 }
1259 if(fUsePtWeights)
1260 {
1261 if(ptWeights)
3d824203 1262 {
9c1a9547 1263 Double_t dBinWidthPtW = ptWeights->GetBinWidth(1); // assuming that all bins have the same width
1264 if(dBinWidthPtW != dBinWidthPt)
3d824203 1265 {
9c1a9547 1266 cout<<" WARNING: dBinWidthPtW != dBinWidthPt in AFAWQC::Make()."<<endl;
1267 exit(0);
1268 }
1269 Double_t dPtMinW = (ptWeights->GetXaxis())->GetXmin();
1270 if(dPtMinW != fPtMin)
1271 {
1272 cout<<" WARNING: dPtMinW != fPtMin in AFAWQC::Make()."<<endl;
1273 exit(0);
1274 }
1275 }
1276 }
1277 if(fUseEtaWeights)
1278 {
1279 if(etaWeights)
3d824203 1280 {
9c1a9547 1281 Double_t dBinWidthEtaW = etaWeights->GetBinWidth(1); // assuming that all bins have the same width
1282 if(dBinWidthEtaW != dBinWidthEta)
3d824203 1283 {
9c1a9547 1284 cout<<" WARNING: dBinWidthEtaW != dBinWidthEta in AFAWQC::Make()."<<endl;
1285 exit(0);
1286 }
1287 Double_t dEtaMinW = (etaWeights->GetXaxis())->GetXmin();
1288 if(dEtaMinW != fEtaMin)
1289 {
1290 cout<<" WARNING: dEtaMinW != fEtaMin in AFAWQC::Make()."<<endl;
1291 exit(0);
1292 }
1293 }
1294 }
1295 } // end of if(weightsList)
3d824203 1296
9c1a9547 1297 Double_t dPhi = 0.; // azumithal angle in the laboratory frame
1298 Double_t dPt = 0.; // transverse momentum
1299 Double_t dEta = 0.; // pseudorapidity
1300
3d824203 1301 Double_t wPhi = 1.; // phi weight
1302 Double_t wPt = 1.; // pt weight
1303 Double_t wEta = 1.; // eta weight
1304
9c1a9547 1305
1306
1307
1308 // ********************************************
1309 // **** FILL THE COMMON CONTROL HISTOGRAMS ****
1310 // ********************************************
1311
1312 Int_t nRP = anEvent->GetEventNSelTracksRP();
1313 if(nRP>1)
1314 {
1315 fCommonHists2nd->FillControlHistograms(anEvent);
1316 if(nRP>3)
1317 {
1318 fCommonHists4th->FillControlHistograms(anEvent);
1319 if(nRP>5)
3d824203 1320 {
9c1a9547 1321 fCommonHists6th->FillControlHistograms(anEvent);
1322 if(nRP>7)
3d824203 1323 {
9c1a9547 1324 fCommonHists8th->FillControlHistograms(anEvent);
1325 } // end of if(nRP>7)
1326 } // end of if(nRP>5)
1327 } // end of if(nRP>3)
1328 } // end of if(nRP>1)
3d824203 1329
3d824203 1330
3d824203 1331
9c1a9547 1332
1333 // ***************************
1334 // **** LOOPING OVER DATA ****
1335 // ***************************
3d824203 1336
9c1a9547 1337 Int_t nPrim = anEvent->NumberOfTracks();
3d824203 1338
9c1a9547 1339 // nPrim = total number of primary tracks, i.e. nPrim = nRP + nPOI + rest, where:
1340 // nRP = # of particles used to determine the reaction plane;
1341 // nPOI = # of particles of interest for a detailed flow analysis;
1342 // rest = # of particles which are niether RPs not POIs.
3d824203 1343
9c1a9547 1344 for(Int_t i=0;i<nPrim;i++)
3d824203 1345 {
9c1a9547 1346 fTrack=anEvent->GetTrack(i);
77515452 1347 if(fTrack)
1348 {
9c1a9547 1349 if(!(fTrack->InRPSelection() || fTrack->InPOISelection())) continue;
1350
1351 // checking the RP condition:
1352 if(fTrack->InRPSelection())
1353 {
1354 dPhi = fTrack->Phi();
1355 dPt = fTrack->Pt();
1356 dEta = fTrack->Eta();
1357
1358 // determine phi weight for this particle:
1359 if(phiWeights && nBinsPhi)
3d824203 1360 {
9c1a9547 1361 wPhi = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*nBinsPhi/TMath::TwoPi())));
1362 }
1363 // determine pt weight for this particle:
1364 if(ptWeights && dBinWidthPt)
1365 {
1366 wPt = ptWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-fPtMin)/dBinWidthPt)));
1367 }
1368 // determine eta weight for this particle:
1369 if(etaWeights && dBinWidthEta)
1370 {
1371 wEta = etaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-fEtaMin)/dBinWidthEta)));
1372 }
1373
1374 // fill Re[Q_{n,k}] and Im[Q_{n,k}]:
1375 for(Int_t n=0;n<4;n++)
1376 {
1377 for(Int_t k=0;k<9;k++)
77515452 1378 {
9c1a9547 1379 (*fReQ)(n,k)+=pow(wPhi*wPt*wEta,k)*TMath::Cos(2*(n+1)*dPhi);
1380 (*fImQ)(n,k)+=pow(wPhi*wPt*wEta,k)*TMath::Sin(2*(n+1)*dPhi);
77515452 1381 }
9c1a9547 1382 }
1383
1384 // fill S^{M}_{p,k}:
1385 for(Int_t p=0;p<8;p++)
1386 {
1387 for(Int_t k=0;k<9;k++)
1388 {
1389 (*fSMpk)(p,k)+=pow(wPhi*wPt*wEta,k);
77515452 1390 }
9c1a9547 1391 }
77515452 1392
9c1a9547 1393 Int_t n = 2; // to be improved (add setter for harmonic)
77515452 1394
9c1a9547 1395 // fill non-weighted q_RPs
1396 fReqRP1nPtEta->Fill(dPt,dEta,TMath::Cos(1.*n*dPhi));
1397 fImqRP1nPtEta->Fill(dPt,dEta,TMath::Sin(1.*n*dPhi));
1398 fReqRP2nPtEta->Fill(dPt,dEta,TMath::Cos(2.*n*dPhi));
1399 fImqRP2nPtEta->Fill(dPt,dEta,TMath::Sin(2.*n*dPhi));
77515452 1400
9c1a9547 1401 // mRP:
1402 fmRPPtEta->Fill(dPt,dEta,1);
1403
1404 // fill weighted q_RPs
1405 if(fUseWeights)
3d824203 1406 {
9c1a9547 1407 n = 2; // to be improved (add setter for harmonic)
77515452 1408
9c1a9547 1409 // qRP_{n,k} (weighted qRP):
1410 fReqRP1n2kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,2.)*TMath::Cos(1.*n*dPhi));
1411 fImqRP1n2kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,2.)*TMath::Sin(1.*n*dPhi));
1412 fReqRP2n1kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,1.)*TMath::Cos(2.*n*dPhi));
1413 fImqRP2n1kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,1.)*TMath::Sin(2.*n*dPhi));
3d824203 1414
9c1a9547 1415 // S^{mRP}_{p,k}:
1416 fSmRP1p1kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,1.));
1417 fSmRP1p2kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,2.));
1418 fSmRP1p3kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,3.));
1419 }
1420
1421 // checking if RP particle is also POI particle:
1422 if(fTrack->InPOISelection())
1423 {
1424 n = 2; // to be improved (add setter for harmonic)
1425
1426 // q''_{n} (non-weighted q''):
1427 fReqPrimePrime1nPtEta->Fill(dPt,dEta,TMath::Cos(1.*n*dPhi));
1428 fImqPrimePrime1nPtEta->Fill(dPt,dEta,TMath::Sin(1.*n*dPhi));
1429 fReqPrimePrime2nPtEta->Fill(dPt,dEta,TMath::Cos(2.*n*dPhi));
1430 fImqPrimePrime2nPtEta->Fill(dPt,dEta,TMath::Sin(2.*n*dPhi));
1431
1432 // m'':
1433 fmPrimePrimePtEta->Fill(dPt,dEta,1);
3d824203 1434
9c1a9547 1435 if(fUseWeights)
1436 {
1437 // q''_{n,k} (weighted q''):
1438 fReqPrimePrime1n2kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,2.)*TMath::Cos(1.*n*dPhi));
1439 fImqPrimePrime1n2kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,2.)*TMath::Sin(1.*n*dPhi));
1440 fReqPrimePrime2n1kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,1.)*TMath::Cos(2.*n*dPhi));
1441 fImqPrimePrime2n1kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,1.)*TMath::Sin(2.*n*dPhi));
b7cb54d5 1442
9c1a9547 1443 // S^{m''}_{p,k}:
1444 fSmPrimePrime1p1kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,1.));
1445 fSmPrimePrime1p2kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,2.));
1446 fSmPrimePrime1p3kPtEta->Fill(dPt,dEta,pow(wPhi*wPt*wEta,3.));
1447 }
1448 } // end of if(fTrack->InPOISelection())
1449 } // end of if(pTrack->InRPSelection())
b7cb54d5 1450
9c1a9547 1451 // checking the POI condition:
1452 if(fTrack->InPOISelection())
1453 {
1454 Int_t n = 2; // to be improved (add setter for harmonic)
1455
1456 dPhi = fTrack->Phi();
1457 dPt = fTrack->Pt();
1458 dEta = fTrack->Eta();
b7cb54d5 1459
9c1a9547 1460 // q_n:
1461 fReqnPtEta->Fill(dPt,dEta,TMath::Cos(1.*n*dPhi));
1462 fImqnPtEta->Fill(dPt,dEta,TMath::Sin(1.*n*dPhi));
1463
1464 // m:
1465 fmPtEta->Fill(dPt,dEta,1);
3d824203 1466
9c1a9547 1467 } // end of if(pTrack->InPOISelection() )
1468 } // end of if(fTrack)
1469 else{
1470 cout<<endl;
1471 cout<<" WARNING: no particle! (i.e. fTrack is a NULL pointer in AFAWQC::Make().)"<<endl;
1472 cout<<endl;
1473 }
1474 } // end of for(Int_t i=0;i<nPrim;i++)
3d824203 1475
9c1a9547 1476 // calculate the final expressions for S^{M}_{p,k} = (sum_{i=1}^{M} w_{i}^{k})^{p}:
1477 for(Int_t p=0;p<8;p++)
1478 {
1479 for(Int_t k=0;k<9;k++)
77515452 1480 {
9c1a9547 1481 (*fSMpk)(p,k)=pow((*fSMpk)(p,k),p+1);
1482 }
1483 }
77515452 1484
1485
1486
77515452 1487
9c1a9547 1488 // *****************************
1489 // **** CALLING THE METHODS ****
1490 // *****************************
77515452 1491
9c1a9547 1492 // nested loops (needed for cross-checking the results):
1493 Bool_t evaluateNestedLoopsForIntegratedFlow = kFALSE; // to be improved / removed
1494 Bool_t evaluateNestedLoopsForDifferentialFlow = kFALSE; // to be improved / removed
77515452 1495
9c1a9547 1496 if(evaluateNestedLoopsForIntegratedFlow && nPrim>0 && nPrim<14) // to be improved / removed (eventually I would not need this if())
1497 {
1498 // calculate all correlations needed for 'no-name' integrated flow WITHOUT weights
1499 // (the results are stored in 1D profile fQCorrelations)
c365fe76 1500 if(!(fUseWeights))
1501 {
1502 this->CalculateCorrelationsForIntegratedFlow();
1503 this->CalculateCorrectionsForNonUniformAcceptanceCosTerms();
1504 this->CalculateCorrectionsForNonUniformAcceptanceSinTerms();
1505 }
9c1a9547 1506 // calculate all correlations needed for 'no-name' integrated flow WITH weights
1507 // (the results are stored in 1D profile fQCorrelationsW)
1508 if(fUseWeights) this->CalculateWeightedCorrelationsForIntegratedFlow();
1509 }
1510 else if (!evaluateNestedLoopsForIntegratedFlow)
1511 {
1512 this->CalculateCorrelationsForIntegratedFlow();
c365fe76 1513 this->CalculateCorrectionsForNonUniformAcceptanceCosTerms();
1514 this->CalculateCorrectionsForNonUniformAcceptanceSinTerms();
9c1a9547 1515 if(fUseWeights) this->CalculateWeightedCorrelationsForIntegratedFlow();
1516 }
77515452 1517
9c1a9547 1518 if(evaluateNestedLoopsForDifferentialFlow && nPrim>0 && nPrim<14 ) // to be improved / removed (eventually I would not need this if())
1519 {
1520 // calculate all correlations needed for differential flow WITHOUT weights
1521 // and store the results in 2D profiles (pt,eta):
1522 // a) POIs: f2pPtEtaPOI, f4pPtEtaPOI, f6pPtEtaPOI and f8pPtEtaPOI;
1523 // b) RPs: f2pPtEtaRP, f4pPtEtaRP, f6pPtEtaRP and f8pPtEtaRP.
1524 if(!(fUseWeights))
77515452 1525 {
9c1a9547 1526 this->CalculateCorrelationsForDifferentialFlow("POI");
1527 this->CalculateCorrelationsForDifferentialFlow("RP");
77515452 1528 }
9c1a9547 1529 // calculate all correlations needed for differential flow WITH weights
1530 // and store the results in 2D profiles (pt,eta):
1531 // a) POIs: f2pPtEtaPOIW, f4pPtEtaPOIW, f6pPtEtaPOIW and f8pPtEtaPOIW;
1532 // b) RPs: f2pPtEtaRPW, f4pPtEtaRPW, f6pPtEtaRPW and f8pPtEtaRPW.
1533 if(fUseWeights)
1534 {
1535 this->CalculateWeightedCorrelationsForDifferentialFlow("POI");
1536 this->CalculateWeightedCorrelationsForDifferentialFlow("RP");
1537 }
1538 }
1539 else if (!evaluateNestedLoopsForDifferentialFlow)
1540 {
1541 this->CalculateCorrelationsForDifferentialFlow("POI");
1542 this->CalculateCorrelationsForDifferentialFlow("RP");
3d824203 1543
9c1a9547 1544 if(fUseWeights)
77515452 1545 {
9c1a9547 1546 this->CalculateWeightedCorrelationsForDifferentialFlow("POI");
1547 this->CalculateWeightedCorrelationsForDifferentialFlow("RP");
77515452 1548 }
3d824203 1549
9c1a9547 1550 }
77515452 1551
9c1a9547 1552 if(evaluateNestedLoopsForIntegratedFlow && nPrim>0 && nPrim<14) // to be improved / removed (eventually I would not need this if())
1553 {
1554 this->EvaluateNestedLoopsForIntegratedFlow(anEvent);
1555 }
3d824203 1556
9c1a9547 1557 if(evaluateNestedLoopsForDifferentialFlow && nPrim>0 && nPrim<14) // to be improved / removed (eventually I would not need this if())
1558 {
1559 this->EvaluateNestedLoopsForDifferentialFlow(anEvent);
1560 }
3d824203 1561
3d824203 1562
9c1a9547 1563
1564
1565 // ********************************
1566 // **** RESET E-B-E QUANTITIES ****
1567 // ********************************
3d824203 1568
9c1a9547 1569 fReQ->Zero();
1570 fImQ->Zero();
1571 fSMpk->Zero();
1572 fReqnPtEta->Reset();
1573 fImqnPtEta->Reset();
1574 fmPtEta->Reset();
1575 fReqPrimePrime1nPtEta->Reset();
1576 fImqPrimePrime1nPtEta->Reset();
1577 fReqPrimePrime2nPtEta->Reset();
1578 fImqPrimePrime2nPtEta->Reset();
1579 fmPrimePrimePtEta->Reset();
1580 fReqPrimePrime1n2kPtEta->Reset();
1581 fImqPrimePrime1n2kPtEta->Reset();
1582 fReqPrimePrime2n1kPtEta->Reset();
1583 fImqPrimePrime2n1kPtEta->Reset();
1584 fSmPrimePrime1p1kPtEta->Reset();
1585 fSmPrimePrime1p2kPtEta->Reset();
1586 fSmPrimePrime1p3kPtEta->Reset();
1587 // qRPs (to be improved - notation)
1588 fReqRP1nPtEta->Reset();
1589 fImqRP1nPtEta->Reset();
1590 fReqRP2nPtEta->Reset();
1591 fImqRP2nPtEta->Reset();
1592 fmRPPtEta->Reset();
1593 fReqRP1n2kPtEta->Reset();
1594 fImqRP1n2kPtEta->Reset();
1595 fReqRP2n1kPtEta->Reset();
1596 fImqRP2n1kPtEta->Reset();
1597 fSmRP1p1kPtEta->Reset();
1598 fSmRP1p2kPtEta->Reset();
1599 fSmRP1p3kPtEta->Reset();
1600
1601} // end of AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
1602
1603
1604//================================================================================================================================
1605
1606
1607void AliFlowAnalysisWithQCumulants::CalculateCorrelationsForIntegratedFlow()
1608{
1609 // calculate all correlations needed for 'no-name' integrated flow // to be improved (name)
1610
1611 // multiplicity:
1612 Double_t dMult = (*fSMpk)(0,0);
1613
1614 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
1615 Double_t dReQ1n = (*fReQ)(0,0);
1616 Double_t dReQ2n = (*fReQ)(1,0);
1617 Double_t dReQ3n = (*fReQ)(2,0);
1618 Double_t dReQ4n = (*fReQ)(3,0);
1619 Double_t dImQ1n = (*fImQ)(0,0);
1620 Double_t dImQ2n = (*fImQ)(1,0);
1621 Double_t dImQ3n = (*fImQ)(2,0);
1622 Double_t dImQ4n = (*fImQ)(3,0);
3d824203 1623
9c1a9547 1624 // real and imaginary parts of some expressions involving various combinations of Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
1625 // (these expression appear in the Eqs. for the multi-particle correlations bellow)
77515452 1626
9c1a9547 1627 // Re[Q_{2n} Q_{n}^* Q_{n}^*]
1628 Double_t reQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dReQ2n + 2.*dReQ1n*dImQ1n*dImQ2n - pow(dImQ1n,2.)*dReQ2n;
77515452 1629
9c1a9547 1630 // Im[Q_{2n} Q_{n}^* Q_{n}^*]
1631 //Double_t imQ2nQ1nstarQ1nstar = pow(dReQ1n,2.)*dImQ2n-2.*dReQ1n*dImQ1n*dReQ2n-pow(dImQ1n,2.)*dImQ2n;
77515452 1632
9c1a9547 1633 // Re[Q_{n} Q_{n} Q_{2n}^*] = Re[Q_{2n} Q_{n}^* Q_{n}^*]
1634 Double_t reQ1nQ1nQ2nstar = reQ2nQ1nstarQ1nstar;
77515452 1635
9c1a9547 1636 // Re[Q_{3n} Q_{n} Q_{2n}^* Q_{2n}^*]
1637 Double_t reQ3nQ1nQ2nstarQ2nstar = (pow(dReQ2n,2.)-pow(dImQ2n,2.))*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)
1638 + 2.*dReQ2n*dImQ2n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
77515452 1639
9c1a9547 1640 // Im[Q_{3n} Q_{n} Q_{2n}^* Q_{2n}^*]
1641 //Double_t imQ3nQ1nQ2nstarQ2nstar = calculate and implement this (deleteMe)
1642
1643 // Re[Q_{2n} Q_{2n} Q_{3n}^* Q_{1n}^*] = Re[Q_{3n} Q_{n} Q_{2n}^* Q_{2n}^*]
1644 Double_t reQ2nQ2nQ3nstarQ1nstar = reQ3nQ1nQ2nstarQ2nstar;
1645
1646 // Re[Q_{4n} Q_{2n}^* Q_{2n}^*]
1647 Double_t reQ4nQ2nstarQ2nstar = pow(dReQ2n,2.)*dReQ4n+2.*dReQ2n*dImQ2n*dImQ4n-pow(dImQ2n,2.)*dReQ4n;
77515452 1648
9c1a9547 1649 // Im[Q_{4n} Q_{2n}^* Q_{2n}^*]
1650 //Double_t imQ4nQ2nstarQ2nstar = calculate and implement this (deleteMe)
77515452 1651
9c1a9547 1652 // Re[Q_{2n} Q_{2n} Q_{4n}^*] = Re[Q_{4n} Q_{2n}^* Q_{2n}^*]
1653 Double_t reQ2nQ2nQ4nstar = reQ4nQ2nstarQ2nstar;
77515452 1654
9c1a9547 1655 // Re[Q_{4n} Q_{3n}^* Q_{n}^*]
1656 Double_t reQ4nQ3nstarQ1nstar = dReQ4n*(dReQ3n*dReQ1n-dImQ3n*dImQ1n)+dImQ4n*(dReQ3n*dImQ1n+dImQ3n*dReQ1n);
77515452 1657
9c1a9547 1658 // Re[Q_{3n} Q_{n} Q_{4n}^*] = Re[Q_{4n} Q_{3n}^* Q_{n}^*]
1659 Double_t reQ3nQ1nQ4nstar = reQ4nQ3nstarQ1nstar;
77515452 1660
9c1a9547 1661 // Im[Q_{4n} Q_{3n}^* Q_{n}^*]
1662 //Double_t imQ4nQ3nstarQ1nstar = calculate and implement this (deleteMe)
6f366058 1663
9c1a9547 1664 // Re[Q_{3n} Q_{2n}^* Q_{n}^*]
1665 Double_t reQ3nQ2nstarQ1nstar = dReQ3n*dReQ2n*dReQ1n-dReQ3n*dImQ2n*dImQ1n+dImQ3n*dReQ2n*dImQ1n
1666 + dImQ3n*dImQ2n*dReQ1n;
1667
1668 // Re[Q_{2n} Q_{n} Q_{3n}^*] = Re[Q_{3n} Q_{2n}^* Q_{n}^*]
1669 Double_t reQ2nQ1nQ3nstar = reQ3nQ2nstarQ1nstar;
3d824203 1670
9c1a9547 1671 // Im[Q_{3n} Q_{2n}^* Q_{n}^*]
1672 //Double_t imQ3nQ2nstarQ1nstar; //calculate and implement this (deleteMe)
3d824203 1673
9c1a9547 1674 // Re[Q_{3n} Q_{n}^* Q_{n}^* Q_{n}^*]
1675 Double_t reQ3nQ1nstarQ1nstarQ1nstar = dReQ3n*pow(dReQ1n,3)-3.*dReQ1n*dReQ3n*pow(dImQ1n,2)
1676 + 3.*dImQ1n*dImQ3n*pow(dReQ1n,2)-dImQ3n*pow(dImQ1n,3);
1677
1678 // Im[Q_{3n} Q_{n}^* Q_{n}^* Q_{n}^*]
1679 //Double_t imQ3nQ1nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
3d824203 1680
9c1a9547 1681 // |Q_{2n}|^2 |Q_{n}|^2
1682 Double_t dQ2nQ1nQ2nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.));
3d824203 1683
9c1a9547 1684 // Re[Q_{4n} Q_{2n}^* Q_{n}^* Q_{n}^*]
1685 Double_t reQ4nQ2nstarQ1nstarQ1nstar = (dReQ4n*dReQ2n+dImQ4n*dImQ2n)*(pow(dReQ1n,2)-pow(dImQ1n,2))
1686 + 2.*dReQ1n*dImQ1n*(dImQ4n*dReQ2n-dReQ4n*dImQ2n);
3d824203 1687
9c1a9547 1688 // Im[Q_{4n} Q_{2n}^* Q_{n}^* Q_{n}^*]
1689 //Double_t imQ4nQ2nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
3d824203 1690
9c1a9547 1691 // Re[Q_{2n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^*]
1692 Double_t reQ2nQ1nQ1nstarQ1nstarQ1nstar = (dReQ2n*dReQ1n-dImQ2n*dImQ1n)*(pow(dReQ1n,3)-3.*dReQ1n*pow(dImQ1n,2))
1693 + (dReQ2n*dImQ1n+dReQ1n*dImQ2n)*(3.*dImQ1n*pow(dReQ1n,2)-pow(dImQ1n,3));
1694
1695 // Im[Q_{2n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^*]
1696 //Double_t imQ2nQ1nQ1nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
1dfa3c16 1697
9c1a9547 1698 // Re[Q_{2n} Q_{2n} Q_{2n}^* Q_{n}^* Q_{n}^*]
1699 Double_t reQ2nQ2nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
1700 * (dReQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) + 2.*dImQ2n*dReQ1n*dImQ1n);
1701
1702 // Im[Q_{2n} Q_{2n} Q_{2n}^* Q_{n}^* Q_{n}^*]
1703 //Double_t imQ2nQ2nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))
1704 // * (dImQ2n*(pow(dReQ1n,2.)-pow(dImQ1n,2.)) - 2.*dReQ2n*dReQ1n*dImQ1n);
1705
1706 // Re[Q_{4n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
1707 Double_t reQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,4.)*dReQ4n-6.*pow(dReQ1n,2.)*dReQ4n*pow(dImQ1n,2.)
1708 + pow(dImQ1n,4.)*dReQ4n+4.*pow(dReQ1n,3.)*dImQ1n*dImQ4n
1709 - 4.*pow(dImQ1n,3.)*dReQ1n*dImQ4n;
1710
1711 // Im[Q_{4n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
1712 //Double_t imQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(dReQ1n,4.)*dImQ4n-6.*pow(dReQ1n,2.)*dImQ4n*pow(dImQ1n,2.)
1713 // + pow(dImQ1n,4.)*dImQ4n+4.*pow(dImQ1n,3.)*dReQ1n*dReQ4n
1714 // - 4.*pow(dReQ1n,3.)*dImQ1n*dReQ4n;
1715
1716 // Re[Q_{3n} Q_{n} Q_{2n}^* Q_{n}^* Q_{n}^*]
1717 Double_t reQ3nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
1718 * (dReQ1n*dReQ2n*dReQ3n-dReQ3n*dImQ1n*dImQ2n+dReQ2n*dImQ1n*dImQ3n+dReQ1n*dImQ2n*dImQ3n);
1719
1720 // Im[Q_{3n} Q_{n} Q_{2n}^* Q_{n}^* Q_{n}^*]
1721 //Double_t imQ3nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
1722 // * (-dReQ2n*dReQ3n*dImQ1n-dReQ1n*dReQ3n*dImQ2n+dReQ1n*dReQ2n*dImQ3n-dImQ1n*dImQ2n*dImQ3n);
1723
1724
1725 // Re[Q_{2n} Q_{2n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
1726 Double_t reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)*dReQ2n-2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
1727 + dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n-pow(dImQ1n,2.)*dImQ2n)
1728 * (pow(dReQ1n,2.)*dReQ2n+2.*dReQ1n*dReQ2n*dImQ1n-dReQ2n*pow(dImQ1n,2.)
1729 - dImQ2n*pow(dReQ1n,2.)+2.*dReQ1n*dImQ1n*dImQ2n+pow(dImQ1n,2.)*dImQ2n);
1730
1731 // Im[Q_{2n} Q_{2n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
1732 //Double_t imQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = 2.*(pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.)
1733 // + 2.*dReQ1n*dImQ1n*dImQ2n)*(pow(dReQ1n,2.)*dImQ2n
1734 // - 2.*dReQ1n*dImQ1n*dReQ2n-pow(dImQ1n,2.)*dImQ2n);
1735
1736 // Re[Q_{3n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
1737 Double_t reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
1738 * (pow(dReQ1n,3.)*dReQ3n-3.*dReQ1n*dReQ3n*pow(dImQ1n,2.)
1739 + 3.*pow(dReQ1n,2.)*dImQ1n*dImQ3n-pow(dImQ1n,3.)*dImQ3n);
1740
1741 // Im[Q_{3n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
1742 //Double_t imQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(dReQ1n,2.)+pow(dImQ1n,2.))
1743 // * (pow(dImQ1n,3.)*dReQ3n-3.*dImQ1n*dReQ3n*pow(dReQ1n,2.)
1744 // - 3.*pow(dImQ1n,2.)*dReQ1n*dImQ3n+pow(dReQ1n,3.)*dImQ3n);
1745
1746 // |Q_{2n}|^2 |Q_{n}|^4
1747 Double_t dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar = (pow(dReQ2n,2.)+pow(dImQ2n,2.))*pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.);
1748
1749 // Re[Q_{2n} Q_{n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
1750 Double_t reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
1751 * (pow(dReQ1n,2.)*dReQ2n-dReQ2n*pow(dImQ1n,2.)
1752 + 2.*dReQ1n*dImQ1n*dImQ2n);
1753
1754 // Im[Q_{2n} Q_{n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
1755 //Double_t imQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
1756 // * (pow(dReQ1n,2.)*dImQ2n-dImQ2n*pow(dImQ1n,2.)
1757 // - 2.*dReQ1n*dReQ2n*dImQ1n);
ae733b3b 1758
9c1a9547 1759
1dfa3c16 1760
9c1a9547 1761
1762 // **************************************
1763 // **** multi-particle correlations: ****
1764 // **************************************
1765 //
1766 // Remark 1: multi-particle correlations calculated with non-weighted Q-vectors are stored in 1D profile fQCorrelations.
1767 // Remark 2: binning of fQCorrelations is organized as follows:
1768 // --------------------------------------------------------------------------------------------------------------------
1769 // 1st bin: <2>_{1n|1n} = two1n1n = cos(n*(phi1-phi2))>
1770 // 2nd bin: <2>_{2n|2n} = two2n2n = cos(2n*(phi1-phi2))>
1771 // 3rd bin: <2>_{3n|3n} = two3n3n = cos(3n*(phi1-phi2))>
1772 // 4th bin: <2>_{4n|4n} = two4n4n = cos(4n*(phi1-phi2))>
1773 // 5th bin: ---- EMPTY ----
1774 // 6th bin: <3>_{2n|1n,1n} = three2n1n1n = <cos(n*(2.*phi1-phi2-phi3))>
1775 // 7th bin: <3>_{3n|2n,1n} = three3n2n1n = <cos(n*(3.*phi1-2.*phi2-phi3))>
1776 // 8th bin: <3>_{4n|2n,2n} = three4n2n2n = <cos(n*(4.*phi1-2.*phi2-2.*phi3))>
1777 // 9th bin: <3>_{4n|3n,1n} = three4n3n1n = <cos(n*(4.*phi1-3.*phi2-phi3))>
1778 // 10th bin: ---- EMPTY ----
1779 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1n = <cos(n*(phi1+phi2-phi3-phi4))>
1780 // 12th bin: <4>_{2n,1n|2n,1n} = four2n1n2n1n = <cos(2.*n*(phi1+phi2-phi3-phi4))>
1781 // 13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n = <cos(n*(2.*phi1+phi2-2.*phi3-phi4))>
1782 // 14th bin: <4>_{3n|1n,1n,1n} = four3n1n1n1n = <cos(n*(3.*phi1-phi2-phi3-phi4))>
1783 // 15th bin: <4>_{3n,1n|3n,1n} = four3n1n3n1n = <cos(n*(4.*phi1-2.*phi2-phi3-phi4))>
1784 // 16th bin: <4>_{3n,1n|2n,2n} = four3n1n2n2n = <cos(n*(3.*phi1+phi2-2.*phi3-2.*phi4))>
1785 // 17th bin: <4>_{4n|2n,1n,1n} = four4n2n1n1n = <cos(n*(3.*phi1+phi2-3.*phi3-phi4))>
1786 // 18th bin: ---- EMPTY ----
1787 // 19th bin: <5>_{2n|1n,1n,1n,1n} = five2n1n1n1n1n = <cos(n*(2.*phi1+phi2-phi3-phi4-phi5))>
1788 // 20th bin: <5>_{2n,2n|2n,1n,1n} = five2n2n2n1n1n = <cos(n*(2.*phi1+2.*phi2-2.*phi3-phi4-phi5))>
1789 // 21st bin: <5>_{3n,1n|2n,1n,1n} = five3n1n2n1n1n = <cos(n*(3.*phi1+phi2-2.*phi3-phi4-phi5))>
1790 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = five4n1n1n1n1n = <cos(n*(4.*phi1-phi2-phi3-phi4-phi5))>
1791 // 23rd bin: ---- EMPTY ----
1792 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = six1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3-phi4-phi5-phi6))>
1793 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = six2n1n1n2n1n1n = <cos(n*(2.*phi1+2.*phi2-phi3-phi4-phi5-phi6))>
1794 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = six2n2n1n1n1n1n = <cos(n*(3.*phi1+phi2-phi3-phi4-phi5-phi6))>
1795 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = six3n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-2.*phi4-phi5-phi6))>
1796 // 28th bin: ---- EMPTY ----
1797 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = seven2n1n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
1798 // 30th bin: ---- EMPTY ----
1799 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = eight1n1n1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
1800 // --------------------------------------------------------------------------------------------------------------------
1801
1802 // 2-particle:
1803 Double_t two1n1n = 0.; // <cos(n*(phi1-phi2))>
1804 Double_t two2n2n = 0.; // <cos(2n*(phi1-phi2))>
1805 Double_t two3n3n = 0.; // <cos(3n*(phi1-phi2))>
1806 Double_t two4n4n = 0.; // <cos(4n*(phi1-phi2))>
1dfa3c16 1807
9c1a9547 1808 if(dMult>1)
1809 {
1810 two1n1n = (pow(dReQ1n,2.)+pow(dImQ1n,2.)-dMult)/(dMult*(dMult-1.));
1811 two2n2n = (pow(dReQ2n,2.)+pow(dImQ2n,2.)-dMult)/(dMult*(dMult-1.));
1812 two3n3n = (pow(dReQ3n,2.)+pow(dImQ3n,2.)-dMult)/(dMult*(dMult-1.));
1813 two4n4n = (pow(dReQ4n,2.)+pow(dImQ4n,2.)-dMult)/(dMult*(dMult-1.));
1814
1815 fQCorrelations->Fill(0.,two1n1n,dMult*(dMult-1.));
1816 fQCorrelations->Fill(1.,two2n2n,dMult*(dMult-1.));
1817 fQCorrelations->Fill(2.,two3n3n,dMult*(dMult-1.));
1818 fQCorrelations->Fill(3.,two4n4n,dMult*(dMult-1.));
1819
1820 // distribution of <cos(n*(phi1-phi2))>:
1821 f2pDistribution->Fill(two1n1n,dMult*(dMult-1.));
1822 } // end of if(dMult>1)
ae733b3b 1823
9c1a9547 1824 // 3-particle:
1825 Double_t three2n1n1n = 0.; // <cos(n*(2.*phi1-phi2-phi3))>
1826 Double_t three3n2n1n = 0.; // <cos(n*(3.*phi1-2.*phi2-phi3))>
1827 Double_t three4n2n2n = 0.; // <cos(n*(4.*phi1-2.*phi2-2.*phi3))>
1828 Double_t three4n3n1n = 0.; // <cos(n*(4.*phi1-3.*phi2-phi3))>
ae733b3b 1829
9c1a9547 1830 if(dMult>2)
1831 {
1832 three2n1n1n = (reQ2nQ1nstarQ1nstar-2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
1833 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))+2.*dMult)
1834 / (dMult*(dMult-1.)*(dMult-2.));
1835 three3n2n1n = (reQ3nQ2nstarQ1nstar-(pow(dReQ3n,2.)+pow(dImQ3n,2.))
1836 - (pow(dReQ2n,2.)+pow(dImQ2n,2.))
1837 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
1838 / (dMult*(dMult-1.)*(dMult-2.));
1839 three4n2n2n = (reQ4nQ2nstarQ2nstar-2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
1840 - (pow(dReQ4n,2.)+pow(dImQ4n,2.))+2.*dMult)
1841 / (dMult*(dMult-1.)*(dMult-2.));
1842 three4n3n1n = (reQ4nQ3nstarQ1nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))
1843 - (pow(dReQ3n,2.)+pow(dImQ3n,2.))
1844 - (pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult)
1845 / (dMult*(dMult-1.)*(dMult-2.));
1846
1847 fQCorrelations->Fill(5.,three2n1n1n,dMult*(dMult-1.)*(dMult-2.));
1848 fQCorrelations->Fill(6.,three3n2n1n,dMult*(dMult-1.)*(dMult-2.));
1849 fQCorrelations->Fill(7.,three4n2n2n,dMult*(dMult-1.)*(dMult-2.));
1850 fQCorrelations->Fill(8.,three4n3n1n,dMult*(dMult-1.)*(dMult-2.));
1851 } // end of if(dMult>2)
ae733b3b 1852
9c1a9547 1853 // 4-particle:
1854 Double_t four1n1n1n1n = 0.; // <cos(n*(phi1+phi2-phi3-phi4))>
1855 Double_t four2n2n2n2n = 0.; // <cos(2.*n*(phi1+phi2-phi3-phi4))>
1856 Double_t four2n1n2n1n = 0.; // <cos(n*(2.*phi1+phi2-2.*phi3-phi4))>
1857 Double_t four3n1n1n1n = 0.; // <cos(n*(3.*phi1-phi2-phi3-phi4))>
1858 Double_t four4n2n1n1n = 0.; // <cos(n*(4.*phi1-2.*phi2-phi3-phi4))>
1859 Double_t four3n1n2n2n = 0.; // <cos(n*(3.*phi1+phi2-2.*phi3-2.*phi4))>
1860 Double_t four3n1n3n1n = 0.; // <cos(n*(3.*phi1+phi2-3.*phi3-phi4))>
1dfa3c16 1861
9c1a9547 1862 if(dMult>3)
1863 {
1864 four1n1n1n1n = (2.*dMult*(dMult-3.)+pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ1n,2.)
1865 + pow(dImQ1n,2.))-2.*reQ2nQ1nstarQ1nstar+(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
1866 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
1867 four2n2n2n2n = (2.*dMult*(dMult-3.)+pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)-4.*(dMult-2.)*(pow(dReQ2n,2.)
1868 + pow(dImQ2n,2.))-2.*reQ4nQ2nstarQ2nstar+(pow(dReQ4n,2.)+pow(dImQ4n,2.)))
1869 / (dMult*(dMult-1)*(dMult-2.)*(dMult-3.));
1870 four2n1n2n1n = (dQ2nQ1nQ2nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar-2.*reQ2nQ1nstarQ1nstar)
1871 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
1872 - ((dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
1873 + (dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-(pow(dReQ3n,2.)+pow(dImQ3n,2.)))
1874 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
1875 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
1876 four3n1n1n1n = (reQ3nQ1nstarQ1nstarQ1nstar-3.*reQ3nQ2nstarQ1nstar-3.*reQ2nQ1nstarQ1nstar)
1877 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
1878 + (2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
1879 + 6.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-6.*dMult)
1880 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
1881 four4n2n1n1n = (reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ4nQ3nstarQ1nstar-reQ4nQ2nstarQ2nstar-2.*reQ3nQ2nstarQ1nstar)
1882 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
1883 - (reQ2nQ1nstarQ1nstar-2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
1884 - 3.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
1885 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
1886 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
1887 four3n1n2n2n = (reQ3nQ1nQ2nstarQ2nstar-reQ4nQ2nstarQ2nstar-reQ3nQ1nQ4nstar-2.*reQ3nQ2nstarQ1nstar)
1888 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
1889 - (2.*reQ1nQ1nQ2nstar-(pow(dReQ4n,2.)+pow(dImQ4n,2.))-2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
1890 - 4.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))-4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
1891 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
1892 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
1893 four3n1n3n1n = ((pow(dReQ3n,2.)+pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
1894 - 2.*reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar)
1895 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
1896 + ((pow(dReQ4n,2.)+pow(dImQ4n,2.))-(dMult-4.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
1897 + (pow(dReQ2n,2.)+pow(dImQ2n,2.))-(dMult-4.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
1898 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))
1899 + (dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));
1900
1901 fQCorrelations->Fill(10.,four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
1902 fQCorrelations->Fill(11.,four2n1n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
1903 fQCorrelations->Fill(12.,four2n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
1904 fQCorrelations->Fill(13.,four3n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
1905 fQCorrelations->Fill(14.,four3n1n3n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
1906 fQCorrelations->Fill(15.,four3n1n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
1907 fQCorrelations->Fill(16.,four4n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
1908
1909 // distribution of <cos(n*(phi1+phi2-phi3-phi4))>
1910 f4pDistribution->Fill(four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
1911
1912 // fQProduct->Fill(0.,two1n1n*four1n1n1n1n,dMult*(dMult-1.)*dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
1913 } // end of if(dMult>3)
1914
1915 // 5-particle:
1916 Double_t five2n1n1n1n1n = 0.; // <cos(n*(2.*phi1+phi2-phi3-phi4-phi5))>
1917 Double_t five2n2n2n1n1n = 0.; // <cos(n*(2.*phi1+2.*phi2-2.*phi3-phi4-phi5))>
1918 Double_t five3n1n2n1n1n = 0.; // <cos(n*(3.*phi1+phi2-2.*phi3-phi4-phi5))>
1919 Double_t five4n1n1n1n1n = 0.; // <cos(n*(4.*phi1-phi2-phi3-phi4-phi5))>
4057ba99 1920
9c1a9547 1921 if(dMult>4)
1922 {
1923 five2n1n1n1n1n = (reQ2nQ1nQ1nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar+6.*reQ3nQ2nstarQ1nstar)
1924 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
1925 - (reQ2nQ1nQ3nstar+3.*(dMult-6.)*reQ2nQ1nstarQ1nstar+3.*reQ1nQ1nQ2nstar)
1926 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
1927 - (2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
1928 + 3.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
1929 - 3.*(dMult-4.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
1930 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
1931 - 3.*(pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
1932 - 2.*(2*dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+2.*dMult*(dMult-4.))
1933 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
1934
1935 five2n2n2n1n1n = (reQ2nQ2nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ2nQ2nQ3nstarQ1nstar)
1936 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
1937 + 2.*(reQ4nQ2nstarQ2nstar+4.*reQ3nQ2nstarQ1nstar+reQ3nQ1nQ4nstar)
1938 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
1939 + (reQ2nQ2nQ4nstar-2.*(dMult-5.)*reQ2nQ1nstarQ1nstar+2.*reQ1nQ1nQ2nstar)
1940 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
1941 - (2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+4.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
1942 + 1.*pow((pow(dReQ2n,2.)+pow(dImQ2n,2.)),2.)
1943 - 2.*(3.*dMult-10.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
1944 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
1945 - (4.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
1946 - 4.*(dMult-5.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.))+4.*dMult*(dMult-6.))
1947 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
1948
1949 five4n1n1n1n1n = (reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ4nQ2nstarQ1nstarQ1nstar-4.*reQ3nQ1nstarQ1nstarQ1nstar)
1950 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
1951 + (8.*reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar+12.*reQ3nQ2nstarQ1nstar+12.*reQ2nQ1nstarQ1nstar)
1952 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
1953 - (6.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))+8.*(pow(dReQ3n,2.)+pow(dImQ3n,2.))
1954 + 12.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))+24.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))-24.*dMult)
1955 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
1956
1957 five3n1n2n1n1n = (reQ3nQ1nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar)
1958 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
1959 - (reQ3nQ1nQ2nstarQ2nstar-3.*reQ4nQ3nstarQ1nstar-reQ4nQ2nstarQ2nstar)
1960 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
1961 - ((2.*dMult-13.)*reQ3nQ2nstarQ1nstar-reQ3nQ1nQ4nstar-9.*reQ2nQ1nstarQ1nstar)
1962 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
1963 - (2.*reQ1nQ1nQ2nstar+2.*(pow(dReQ4n,2.)+pow(dImQ4n,2.))
1964 - 2.*(dMult-5.)*(pow(dReQ3n,2.)+pow(dImQ3n,2.))+2.*(pow(dReQ3n,2.)
1965 + pow(dImQ3n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
1966 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
1967 + (2.*(dMult-6.)*(pow(dReQ2n,2.)+pow(dImQ2n,2.))
1968 - 2.*(pow(dReQ2n,2.)+pow(dImQ2n,2.))*(pow(dReQ1n,2.)+pow(dImQ1n,2.))
1969 - pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)
1970 + 2.*(3.*dMult-11.)*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
1971 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))
1972 - 4.*(dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
1973
1974 fQCorrelations->Fill(18.,five2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
1975 fQCorrelations->Fill(19.,five2n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
1976 fQCorrelations->Fill(20.,five3n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
1977 fQCorrelations->Fill(21.,five4n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
1978 } // end of if(dMult>4)
1979
1980 // 6-particle:
1981 Double_t six1n1n1n1n1n1n = 0.; // <cos(n*(phi1+phi2+phi3-phi4-phi5-phi6))>
1982 Double_t six2n2n1n1n1n1n = 0.; // <cos(n*(2.*phi1+2.*phi2-phi3-phi4-phi5-phi6))>
1983 Double_t six3n1n1n1n1n1n = 0.; // <cos(n*(3.*phi1+phi2-phi3-phi4-phi5-phi6))>
1984 Double_t six2n1n1n2n1n1n = 0.; // <cos(n*(2.*phi1+phi2+phi3-2.*phi4-phi5-phi6))>
ae733b3b 1985
9c1a9547 1986 if(dMult>5)
1987 {
1988 six1n1n1n1n1n1n = (pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),3.)+9.*dQ2nQ1nQ2nstarQ1nstar-6.*reQ2nQ1nQ1nstarQ1nstarQ1nstar)
1989 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.))
1990 + 4.*(reQ3nQ1nstarQ1nstarQ1nstar-3.*reQ3nQ2nstarQ1nstar)
1991 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.))
1992 + 2.*(9.*(dMult-4.)*reQ2nQ1nstarQ1nstar+2.*(pow(dReQ3n,2.)+pow(dImQ3n,2.)))
1993 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.))
1994 - 9.*(pow((pow(dReQ1n,2.)+pow(dImQ1n,2.)),2.)+(pow(dReQ2n,2.)+pow(dImQ2n,2.)))
1995 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-5.))
1996 + (18.*(pow(dReQ1n,2.)+pow(dImQ1n,2.)))
1997 / (dMult*(dMult-1)*(dMult-3)*(dMult-4))
1998 - 6./((dMult-1.)*(dMult-2.)*(dMult-3.));
1999
2000 six2n1n1n2n1n1n = (dQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)
2001 * (2.*five2n2n2n1n1n+4.*five2n1n1n1n1n+4.*five3n1n2n1n1n+4.*four2n1n2n1n+1.*four1n1n1n1n)
2002 - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(4.*four1n1n1n1n+4.*two1n1n
2003 + 2.*three2n1n1n+2.*three2n1n1n+4.*four3n1n1n1n+8.*three2n1n1n+2.*four4n2n1n1n
2004 + 4.*four2n1n2n1n+2.*two2n2n+8.*four2n1n2n1n+4.*four3n1n3n1n+8.*three3n2n1n
2005 + 4.*four3n1n2n2n+4.*four1n1n1n1n+4.*four2n1n2n1n+1.*four2n2n2n2n)
2006 - dMult*(dMult-1.)*(dMult-2.)*(2.*three2n1n1n+8.*two1n1n+4.*two1n1n+2.
2007 + 4.*two1n1n+4.*three2n1n1n+2.*two2n2n+4.*three2n1n1n+8.*three3n2n1n
2008 + 8.*two2n2n+4.*three4n3n1n+4.*two3n3n+4.*three3n2n1n+4.*two1n1n
2009 + 8.*three2n1n1n+4.*two1n1n+4.*three3n2n1n+4.*three2n1n1n+2.*two2n2n
2010 + 4.*three3n2n1n+2.*three4n2n2n)-dMult*(dMult-1.)
2011 * (4.*two1n1n+4.+4.*two1n1n+2.*two2n2n+1.+4.*two1n1n+4.*two2n2n+4.*two3n3n
2012 + 1.+2.*two2n2n+1.*two4n4n)-dMult)
2013 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)); // to be improved (direct formula needed)
2014
2015 six2n2n1n1n1n1n = (reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)
2016 * (five4n1n1n1n1n+8.*five2n1n1n1n1n+6.*five2n2n2n1n1n)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
2017 * (4.*four3n1n1n1n+6.*four4n2n1n1n+12.*three2n1n1n+12.*four1n1n1n1n+24.*four2n1n2n1n
2018 + 4.*four3n1n2n2n+3.*four2n2n2n2n)-dMult*(dMult-1.)*(dMult-2.)*(6.*three2n1n1n+12.*three3n2n1n
2019 + 4.*three4n3n1n+3.*three4n2n2n+8.*three2n1n1n+24.*two1n1n+12.*two2n2n+12.*three2n1n1n+8.*three3n2n1n
2020 + 1.*three4n2n2n)-dMult*(dMult-1.)*(4.*two1n1n+6.*two2n2n+4.*two3n3n+1.*two4n4n+2.*two2n2n+8.*two1n1n+6.)-dMult)
2021 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)); // to be improved (direct formula needed)
2022
2023 six3n1n1n1n1n1n = (reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)
2024 * (five4n1n1n1n1n+4.*five2n1n1n1n1n+6.*five3n1n2n1n1n+4.*four3n1n1n1n)
2025 - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(4.*four3n1n1n1n+6.*four4n2n1n1n+6.*four1n1n1n1n
2026 + 12.*three2n1n1n+12.*four2n1n2n1n+6.*four3n1n1n1n+12.*three3n2n1n+4.*four3n1n3n1n+3.*four3n1n2n2n)
2027 - dMult*(dMult-1.)*(dMult-2.)*(6.*three2n1n1n+12.*three3n2n1n+4.*three4n3n1n+3.*three4n2n2n+4.*two1n1n
2028 + 12.*two1n1n+6.*three2n1n1n+12.*three2n1n1n+4.*three3n2n1n+12.*two2n2n+4.*three3n2n1n+4.*two3n3n+1.*three4n3n1n
2029 + 6.*three3n2n1n)-dMult*(dMult-1.)*(4.*two1n1n+6.*two2n2n+4.*two3n3n+1.*two4n4n+1.*two1n1n+4.+6.*two1n1n+4.*two2n2n
2030 + 1.*two3n3n)-dMult)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)); // to be improved (direct formula needed)
2031
2032 fQCorrelations->Fill(23.,six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
2033 fQCorrelations->Fill(24.,six2n1n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
2034 fQCorrelations->Fill(25.,six2n2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
2035 fQCorrelations->Fill(26.,six3n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
2036
2037 // distribution of <cos(n*(phi1+phi2+phi3-phi4-phi5-phi6))>
2038 f6pDistribution->Fill(six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
2039
2040 //fQProduct->Fill(1.,two1n1n*six1n1n1n1n1n1n,dMult*(dMult-1.)*dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
2041 //fQProduct->Fill(3.,four1n1n1n1n*six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
2042 } // end of if(dMult>5)
4057ba99 2043
9c1a9547 2044 // 7-particle:
2045 Double_t seven2n1n1n1n1n1n1n = 0.; // <cos(n*(2.*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
1dfa3c16 2046
9c1a9547 2047 if(dMult>6)
2048 {
2049 seven2n1n1n1n1n1n1n = (reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)
2050 * (2.*six3n1n1n1n1n1n+4.*six1n1n1n1n1n1n+1.*six2n2n1n1n1n1n+6.*six2n1n1n2n1n1n+8.*five2n1n1n1n1n)
2051 - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(1.*five4n1n1n1n1n +8.*five2n1n1n1n1n+8.*four3n1n1n1n
2052 + 12.*five3n1n2n1n1n+4.*five2n1n1n1n1n+3.*five2n2n2n1n1n+6.*five2n2n2n1n1n+6.*four1n1n1n1n+24.*four1n1n1n1n
2053 + 12.*five2n1n1n1n1n+12.*five2n1n1n1n1n+12.*three2n1n1n+24.*four2n1n2n1n+4.*five3n1n2n1n1n+4.*five2n1n1n1n1n)
2054 - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(4.*four3n1n1n1n+6.*four4n2n1n1n+12.*four1n1n1n1n+24.*three2n1n1n
2055 + 24.*four2n1n2n1n+12.*four3n1n1n1n+24.*three3n2n1n+8.*four3n1n3n1n+6.*four3n1n2n2n+6.*three2n1n1n+12.*four1n1n1n1n
2056 + 12.*four2n1n2n1n+6.*three2n1n1n+12.*four2n1n2n1n+4.*four3n1n2n2n+3.*four2n2n2n2n+4.*four1n1n1n1n+6.*three2n1n1n
2057 + 24.*two1n1n+24.*four1n1n1n1n+4.*four3n1n1n1n+24.*two1n1n+24.*three2n1n1n+12.*two2n2n+24.*three2n1n1n+12.*four2n1n2n1n
2058 + 8.*three3n2n1n+8.*four2n1n2n1n+1.*four4n2n1n1n)-dMult*(dMult-1.)*(dMult-2.)*(6.*three2n1n1n+1.*three2n1n1n+8.*two1n1n
2059 + 12.*three3n2n1n+24.*two1n1n+12.*three2n1n1n+4.*three2n1n1n+8.*two1n1n+4.*three4n3n1n+24.*three2n1n1n+8.*three3n2n1n
2060 + 12.*two1n1n+12.*two1n1n+3.*three4n2n2n+24.*two2n2n+6.*two2n2n+12.+12.*three3n2n1n+8.*two3n3n+12.*three2n1n1n+24.*two1n1n
2061 + 4.*three3n2n1n+8.*three3n2n1n+2.*three4n3n1n+12.*two1n1n+8.*three2n1n1n+4.*three2n1n1n+2.*three3n2n1n+6.*two2n2n+8.*two2n2n
2062 + 1.*three4n2n2n+4.*three3n2n1n+6.*three2n1n1n)-dMult*(dMult-1.)*(4.*two1n1n+2.*two1n1n+6.*two2n2n+8.+1.*two2n2n+4.*two3n3n
2063 + 12.*two1n1n+4.*two1n1n+1.*two4n4n+8.*two2n2n+6.+2.*two3n3n+4.*two1n1n+1.*two2n2n)-dMult)
2064 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)); // to be improved (direct formula needed)
2065
2066 fQCorrelations->Fill(28.,seven2n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.));
2067 } // end of if(dMult>6)
ae733b3b 2068
9c1a9547 2069 // 8-particle:
2070 Double_t eight1n1n1n1n1n1n1n1n = 0.; // <cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
2071 if(dMult>7)
2072 {
2073 eight1n1n1n1n1n1n1n1n = (pow(pow(dReQ1n,2.)+pow(dImQ1n,2.),4.)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)
2074 * (12.*seven2n1n1n1n1n1n1n+16.*six1n1n1n1n1n1n)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)
2075 * (8.*six3n1n1n1n1n1n+48.*six1n1n1n1n1n1n+6.*six2n2n1n1n1n1n+96.*five2n1n1n1n1n+72.*four1n1n1n1n+36.*six2n1n1n2n1n1n)
2076 - dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(2.*five4n1n1n1n1n+32.*five2n1n1n1n1n+36.*four1n1n1n1n
2077 + 32.*four3n1n1n1n+48.*five2n1n1n1n1n+48.*five3n1n2n1n1n+144.*five2n1n1n1n1n+288.*four1n1n1n1n+36.*five2n2n2n1n1n
2078 + 144.*three2n1n1n+96.*two1n1n+144.*four2n1n2n1n)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)
2079 * (8.*four3n1n1n1n+48.*four1n1n1n1n+12.*four4n2n1n1n+96.*four2n1n2n1n+96.*three2n1n1n+72.*three2n1n1n+144.*two1n1n
2080 + 16.*four3n1n3n1n+48.*four3n1n1n1n+144.*four1n1n1n1n+72.*four1n1n1n1n+96.*three3n2n1n+24.*four3n1n2n2n+144.*four2n1n2n1n
2081 + 288.*two1n1n+288.*three2n1n1n+9.*four2n2n2n2n+72.*two2n2n+24.)-dMult*(dMult-1.)*(dMult-2.)*(12.*three2n1n1n+16.*two1n1n
2082 + 24.*three3n2n1n+48.*three2n1n1n+96.*two1n1n+8.*three4n3n1n+32.*three3n2n1n+96.*three2n1n1n+144.*two1n1n+6.*three4n2n2n
2083 + 96.*two2n2n+36.*two2n2n+72.+48.*three3n2n1n+16.*two3n3n+72.*three2n1n1n+144.*two1n1n)-dMult*(dMult-1.)*(8.*two1n1n
2084 + 12.*two2n2n+16.+8.*two3n3n+48.*two1n1n+1.*two4n4n+16.*two2n2n+18.)-dMult)
2085 / (dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.)); // to be improved (direct formula needed)
2086
2087 fQCorrelations->Fill(30.,eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
ae733b3b 2088
9c1a9547 2089 // distribution of <cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
2090 f8pDistribution->Fill(eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
2091
2092 } // end of if(dMult>7)
1dfa3c16 2093
9c1a9547 2094} // end of AliFlowAnalysisWithQCumulants::CalculateCorrelationsForIntegratedFlow()
bc92c0cb 2095
2096
9c1a9547 2097//================================================================================================================================
bc92c0cb 2098
2099
9c1a9547 2100void AliFlowAnalysisWithQCumulants::CalculateWeightedCorrelationsForIntegratedFlow()
2101{
2102 // calculate all weighted correlations needed for 'no-name' integrated flow and store them in 1D profile fQCorrelationsW
2103
2104 // Remark 1: binning of fQCorrelationsW is organized as follows:
2105 //..............................................................................................
2106 // ---- bins 1-20: 2-particle correlations ----
2107 // 1st bin: two1n1nW1W1 = <w1 w2 cos(n*(phi1-phi2))>
2108 // 2nd bin: two2n2nW2W2 = <w1^2 w2^2 cos(2n*(phi1-phi2))>
2109 // 3rd bin: two3n3nW3W3 = <w1^3 w2^3 cos(3n*(phi1-phi2))>
2110 // 4th bin: two4n4nW4W4 = <w1^4 w2^4 cos(4n*(phi1-phi2))>
2111 // 5th bin: two1n1nW3W1 = <w1^3 w2 cos(n*(phi1-phi2))>
2112 // 6th bin: two1n1nW1W1W2 = <w1 w2 w3^2 cos(n*(phi1-phi2))>
2113 // ---- bins 21-40: 3-particle correlations ----
2114 // 21st bin: three2n1n1nW2W1W1 = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
2115 // ---- bins 41-60: 4-particle correlations ----
2116 // 41st bin: four1n1n1n1nW1W1W1W1 = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
2117 // ---- bins 61-80: 5-particle correlations ----
2118 // ---- bins 81-100: 6-particle correlations ----
2119 // ---- bins 101-120: 7-particle correlations ----
2120 // ---- bins 121-140: 8-particle correlations ----
2121 //..............................................................................................
2122
2123 // multiplicity (number of particles used to determine the reaction plane)
2124 Double_t dMult = (*fSMpk)(0,0);
2125
2126 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
2127 Double_t dReQ1n1k = (*fReQ)(0,1);
2128 Double_t dReQ2n2k = (*fReQ)(1,2);
2129 Double_t dReQ3n3k = (*fReQ)(2,3);
2130 Double_t dReQ4n4k = (*fReQ)(3,4);
2131 Double_t dReQ1n3k = (*fReQ)(0,3);
2132 Double_t dImQ1n1k = (*fImQ)(0,1);
2133 Double_t dImQ2n2k = (*fImQ)(1,2);
2134 Double_t dImQ3n3k = (*fImQ)(2,3);
2135 Double_t dImQ4n4k = (*fImQ)(3,4);
2136 Double_t dImQ1n3k = (*fImQ)(0,3);
2137
2138 // dMs are variables introduced in order to simplify some Eqs. bellow:
2139 //..............................................................................................
2140 Double_t dM11 = (*fSMpk)(1,1)-(*fSMpk)(0,2); // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
2141 Double_t dM22 = (*fSMpk)(1,2)-(*fSMpk)(0,4); // dM22 = sum_{i,j=1,i!=j}^M w_i^2 w_j^2
2142 Double_t dM33 = (*fSMpk)(1,3)-(*fSMpk)(0,6); // dM33 = sum_{i,j=1,i!=j}^M w_i^3 w_j^3
2143 Double_t dM44 = (*fSMpk)(1,4)-(*fSMpk)(0,8); // dM44 = sum_{i,j=1,i!=j}^M w_i^4 w_j^4
2144 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
2145 Double_t dM211 = (*fSMpk)(0,2)*(*fSMpk)(1,1)-2.*(*fSMpk)(0,3)*(*fSMpk)(0,1)
2146 - (*fSMpk)(1,2)+2.*(*fSMpk)(0,4); // dM211 = sum_{i,j,k=1,i!=j!=k}^M w_i^2 w_j w_k
2147 Double_t dM1111 = (*fSMpk)(3,1)-6.*(*fSMpk)(0,2)*(*fSMpk)(1,1)
2148 + 8.*(*fSMpk)(0,3)*(*fSMpk)(0,1)
2149 + 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
2150 //..............................................................................................
bc92c0cb 2151
2152
9c1a9547 2153
bc92c0cb 2154
9c1a9547 2155 // ***********************************************
2156 // **** weighted multi-particle correlations: ****
2157 // ***********************************************
2158 //..............................................................................................
2159 // weighted 2-particle correlations:
2160 Double_t two1n1nW1W1 = 0.; // <w1 w2 cos(n*(phi1-phi2))>
2161 Double_t two2n2nW2W2 = 0.; // <w1^2 w2^2 cos(2n*(phi1-phi2))>
2162 Double_t two3n3nW3W3 = 0.; // <w1^3 w2^3 cos(3n*(phi1-phi2))>
2163 Double_t two4n4nW4W4 = 0.; // <w1^4 w2^4 cos(4n*(phi1-phi2))>
2164 Double_t two1n1nW3W1 = 0.; // <w1^3 w2 cos(n*(phi1-phi2))>
2165 Double_t two1n1nW1W1W2 = 0.; // <w1 w2 w3^2 cos(n*(phi1-phi2))>
2166
2167 if(dMult>1)
2168 {
2169 if(dM11)
2170 {
2171 two1n1nW1W1 = (pow(dReQ1n1k,2)+pow(dImQ1n1k,2)-(*fSMpk)(0,2))/dM11;
2172 fQCorrelationsW->Fill(0.,two1n1nW1W1,dM11);
2173 }
2174 if(dM22)
2175 {
2176 two2n2nW2W2 = (pow(dReQ2n2k,2)+pow(dImQ2n2k,2)-(*fSMpk)(0,4))/dM22;
2177 fQCorrelationsW->Fill(1.,two2n2nW2W2,dM22);
2178 }
2179 if(dM33)
2180 {
2181 two3n3nW3W3 = (pow(dReQ3n3k,2)+pow(dImQ3n3k,2)-(*fSMpk)(0,6))/dM33;
2182 fQCorrelationsW->Fill(2.,two3n3nW3W3,dM33);
2183 }
2184 if(dM44)
2185 {
2186 two4n4nW4W4 = (pow(dReQ4n4k,2)+pow(dImQ4n4k,2)-(*fSMpk)(0,8))/dM44;
2187 fQCorrelationsW->Fill(3.,two4n4nW4W4,dM44);
2188 }
2189 if(dM31)
2190 {
2191 two1n1nW3W1 = (dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k-(*fSMpk)(0,4))/dM31;
2192 fQCorrelationsW->Fill(4.,two1n1nW3W1,dM31);
2193 }
2194 if(dM211)
2195 {
2196 two1n1nW1W1W2 = ((*fSMpk)(0,2)*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2)-(*fSMpk)(0,2))
2197 - 2.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k
2198 - (*fSMpk)(0,4)))/dM211;
2199 fQCorrelationsW->Fill(5.,two1n1nW1W1W2,dM211);
2200 }
2201 } // end of if(dMult>1)
2202 //..............................................................................................
2203
2204 //..............................................................................................
2205 // weighted 3-particle correlations:
2206 Double_t three2n1n1nW2W1W1 = 0.; // <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
2207
2208 if(dMult>2)
2209 {
2210 if(dM211)
2211 {
2212 three2n1n1nW2W1W1 = (pow(dReQ1n1k,2.)*dReQ2n2k+2.*dReQ1n1k*dImQ1n1k*dImQ2n2k-pow(dImQ1n1k,2.)*dReQ2n2k
2213 - 2.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k)
2214 - pow(dReQ2n2k,2)-pow(dImQ2n2k,2)
2215 + 2.*(*fSMpk)(0,4))/dM211;
2216 fQCorrelationsW->Fill(20.,three2n1n1nW2W1W1,dM211);
2217 }
2218 } // end of if(dMult>2)
2219 //..............................................................................................
2220
2221 //..............................................................................................
2222 // weighted 4-particle correlations:
2223 Double_t four1n1n1n1nW1W1W1W1 = 0.; // <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
2224 if(dMult>3)
2225 {
2226 if(dM1111)
2227 {
2228 four1n1n1n1nW1W1W1W1 = (pow(pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.),2)
2229 - 2.*(pow(dReQ1n1k,2.)*dReQ2n2k+2.*dReQ1n1k*dImQ1n1k*dImQ2n2k-pow(dImQ1n1k,2.)*dReQ2n2k)
2230 + 8.*(dReQ1n3k*dReQ1n1k+dImQ1n3k*dImQ1n1k)
2231 + (pow(dReQ2n2k,2)+pow(dImQ2n2k,2))
2232 - 4.*(*fSMpk)(0,2)*(pow(dReQ1n1k,2)+pow(dImQ1n1k,2))
2233 - 6.*(*fSMpk)(0,4)+2.*(*fSMpk)(1,2))/dM1111;
2234 fQCorrelationsW->Fill(40.,four1n1n1n1nW1W1W1W1,dM1111);
2235 }
2236 } // end of if(dMult>3)
2237 //..............................................................................................
2238
2239} // end of AliFlowAnalysisWithQCumulants::CalculateWeightedCorrelationsForIntegratedFlow()
bc92c0cb 2240
2241
9c1a9547 2242//================================================================================================================================
bc92c0cb 2243
2244
9c1a9547 2245void AliFlowAnalysisWithQCumulants::CalculateCorrelationsForDifferentialFlow(TString type)
2246{
2247 // calculate all correlations needed for differential flow for each (pt,eta) bin:
2248
2249 // pt and eta bin width:
2250 Double_t dBinWidthPt = 0.; // to be improved (should I promote this variable to data members?)
2251 Double_t dBinWidthEta = 0.; // to be improved (should I promote this variable to data members?)
2252
2253 if(fnBinsPt) dBinWidthPt=(fPtMax-fPtMin)/fnBinsPt;
2254 if(fnBinsEta) dBinWidthEta=(fEtaMax-fEtaMin)/fnBinsEta;
2255
2256 // multiplicity:
2257 Double_t dMult = (*fSMpk)(0,0);
2258
2259 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
2260 Double_t dReQ1n = (*fReQ)(0,0);
2261 Double_t dReQ2n = (*fReQ)(1,0);
2262 //Double_t dReQ3n = (*fReQ)(2,0);
2263 //Double_t dReQ4n = (*fReQ)(3,0);
2264 Double_t dImQ1n = (*fImQ)(0,0);
2265 Double_t dImQ2n = (*fImQ)(1,0);
2266 //Double_t dImQ3n = (*fImQ)(2,0);
2267 //Double_t dImQ4n = (*fImQ)(3,0);
2268
2269 // looping over all (pt,eta) bins and calculating correlations needed for differential flow:
2270 for(Int_t p=1;p<=fnBinsPt;p++)
2271 {
2272 for(Int_t e=1;e<=fnBinsEta;e++)
2273 {
2274 // real and imaginary parts of q_n (non-weighted Q-vector evaluated only for POIs in harmonic n for each (pt,eta) bin):
2275 Double_t dReqnPtEta = 0.;
2276 Double_t dImqnPtEta = 0.;
2277
2278 // number of POIs in each (pt,eta) bin:
2279 Double_t dmPtEta = 0.;
2280
2281 // real and imaginary parts of q''_{n}, q''_{2n}, ...
2282 // (non-weighted Q-vectors evaluated only for particles which are both RPs and POIs in harmonic n, 2n, ... for each (pt,eta) bin):
2283 Double_t dReqPrimePrime1nPtEta = 0.;
2284 Double_t dImqPrimePrime1nPtEta = 0.;
2285 Double_t dReqPrimePrime2nPtEta = 0.;
2286 Double_t dImqPrimePrime2nPtEta = 0.;
2287
2288 // number of particles which are both RPs and POIs in each (pt,eta) bin:
2289 Double_t dmPrimePrimePtEta = 0.;
2290
2291 if(type == "POI")
2292 {
2293 // q''_{n}, q''_{2n}:
2294 //...............................................................................................
2295 dReqPrimePrime1nPtEta = fReqPrimePrime1nPtEta->GetBinContent(fReqPrimePrime1nPtEta->GetBin(p,e));
2296 dImqPrimePrime1nPtEta = fImqPrimePrime1nPtEta->GetBinContent(fImqPrimePrime1nPtEta->GetBin(p,e));
2297 dReqPrimePrime2nPtEta = fReqPrimePrime2nPtEta->GetBinContent(fReqPrimePrime2nPtEta->GetBin(p,e));
2298 dImqPrimePrime2nPtEta = fImqPrimePrime2nPtEta->GetBinContent(fImqPrimePrime2nPtEta->GetBin(p,e));
2299 //...............................................................................................
2300
2301 // m'':
2302 dmPrimePrimePtEta = fmPrimePrimePtEta->GetBinContent(fmPrimePrimePtEta->GetBin(p,e));
2303
2304 // q'_{n}:
2305 dReqnPtEta = fReqnPtEta->GetBinContent(fReqnPtEta->GetBin(p,e));
2306 dImqnPtEta = fImqnPtEta->GetBinContent(fImqnPtEta->GetBin(p,e));
2307 dmPtEta = fmPtEta->GetBinContent(fmPtEta->GetBin(p,e));
2308 }
2309 else if(type == "RP")
2310 {
2311 // q_RP{n}, q_RP{2n}:
2312 //...............................................................................................
2313 dReqPrimePrime1nPtEta = fReqRP1nPtEta->GetBinContent(fReqRP1nPtEta->GetBin(p,e));
2314 dImqPrimePrime1nPtEta = fImqRP1nPtEta->GetBinContent(fImqRP1nPtEta->GetBin(p,e));
2315 dReqPrimePrime2nPtEta = fReqRP2nPtEta->GetBinContent(fReqRP2nPtEta->GetBin(p,e));
2316 dImqPrimePrime2nPtEta = fImqRP2nPtEta->GetBinContent(fImqRP2nPtEta->GetBin(p,e));
2317 //...............................................................................................
2318
2319 // m'':
2320 dmPrimePrimePtEta = fmRPPtEta->GetBinContent(fmRPPtEta->GetBin(p,e));
2321
2322 dReqnPtEta = fReqRP1nPtEta->GetBinContent(fReqRP1nPtEta->GetBin(p,e)); // not a bug ;-)
2323 dImqnPtEta = fImqRP1nPtEta->GetBinContent(fImqRP1nPtEta->GetBin(p,e)); // not a bug ;-)
2324 dmPtEta = fmRPPtEta->GetBinContent(fmRPPtEta->GetBin(p,e)); // not a bug ;-)
2325 }
2326
2327 // 2'-particle correlation:
2328 Double_t two1n1nPtEta = 0.;
2329 if(dmPtEta*dMult-dmPrimePrimePtEta)
2330 {
2331 two1n1nPtEta = (dReqnPtEta*dReQ1n+dImqnPtEta*dImQ1n-dmPrimePrimePtEta)
2332 / (dmPtEta*dMult-dmPrimePrimePtEta);
2333
2334 // fill the 2D profile to get the average correlation for each (pt, eta) bin:
2335 if(type == "POI")
2336 {
2337 f2pPtEtaPOI->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,two1n1nPtEta,dmPtEta*dMult-dmPrimePrimePtEta);
2338 }
2339 else if(type == "RP")
2340 {
2341 f2pPtEtaRP->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,two1n1nPtEta,dmPtEta*dMult-dmPrimePrimePtEta);
2342 }
2343 } // end of if(dmPtEta*dMult-dmPrimePrimePtEta)
2344
2345 // 4'-particle correlation:
2346 Double_t four1n1n1n1nPtEta = 0.;
2347 if((dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
2348 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.)) // to be improved (introduce a new variable for this expression)
2349 {
2350 four1n1n1n1nPtEta = ((pow(dReQ1n,2.)+pow(dImQ1n,2.))*(dReqnPtEta*dReQ1n+dImqnPtEta*dImQ1n)
2351 - dReqPrimePrime2nPtEta*(pow(dReQ1n,2.)-pow(dImQ1n,2.))
2352 - 2.*dImqPrimePrime2nPtEta*dReQ1n*dImQ1n
2353 - dReqnPtEta*(dReQ1n*dReQ2n+dImQ1n*dImQ2n)
2354 + dImqnPtEta*(dImQ1n*dReQ2n-dReQ1n*dImQ2n)
2355 - 2.*dMult*(dReqnPtEta*dReQ1n+dImqnPtEta*dImQ1n)
2356 - 2.*(pow(dReQ1n,2.)+pow(dImQ1n,2.))*dmPrimePrimePtEta
2357 + 6.*(dReqPrimePrime1nPtEta*dReQ1n+dImqPrimePrime1nPtEta*dImQ1n)
2358 + 1.*(dReqPrimePrime2nPtEta*dReQ2n+dImqPrimePrime2nPtEta*dImQ2n)
2359 + 2.*(dReqnPtEta*dReQ1n+dImqnPtEta*dImQ1n)
2360 + 2.*dmPrimePrimePtEta*dMult
2361 - 6.*dmPrimePrimePtEta)
2362 / ((dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
2363 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.));
2364
2365 // fill the 2D profile to get the average correlation for each (pt, eta) bin:
2366 if(type == "POI")
2367 {
2368 f4pPtEtaPOI->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,four1n1n1n1nPtEta,
2369 (dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
2370 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.));
2371 }
2372 else if(type == "RP")
2373 {
2374 f4pPtEtaRP->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,four1n1n1n1nPtEta,
2375 (dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
2376 + dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.));
2377 }
2378 } // end of if((dmPtEta-dmPrimePrimePtEta)*dMult*(dMult-1.)*(dMult-2.)
2379 // +dmPrimePrimePtEta*(dMult-1.)*(dMult-2.)*(dMult-3.))
2380
2381 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
2382 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
2383
2384} // end of AliFlowAnalysisWithQCumulants::CalculateCorrelationsForDifferentialFlow()
bc92c0cb 2385
bc92c0cb 2386
9c1a9547 2387//================================================================================================================================
bc92c0cb 2388
2389
9c1a9547 2390void AliFlowAnalysisWithQCumulants::CalculateWeightedCorrelationsForDifferentialFlow(TString type)
2391{
2392 // calculate all weighted correlations needed for differential flow
2393
2394 // pt and eta bin width:
2395 Double_t dBinWidthPt = 0.; // to be improved (should I promote this variable to data members?)
2396 Double_t dBinWidthEta = 0.; // to be improved (should I promote this variable to data members?)
2397
2398 if(fnBinsPt) dBinWidthPt=(fPtMax-fPtMin)/fnBinsPt;
2399 if(fnBinsEta) dBinWidthEta=(fEtaMax-fEtaMin)/fnBinsEta;
2400
2401 // real and imaginary parts of weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
2402 Double_t dReQ1n1k = (*fReQ)(0,1);
2403 Double_t dReQ2n2k = (*fReQ)(1,2);
2404 Double_t dReQ1n3k = (*fReQ)(0,3);
2405 //Double_t dReQ4n4k = (*fReQ)(3,4);
2406 Double_t dImQ1n1k = (*fImQ)(0,1);
2407 Double_t dImQ2n2k = (*fImQ)(1,2);
2408 Double_t dImQ1n3k = (*fImQ)(0,3);
2409 //Double_t dImQ4n4k = (*fImQ)(3,4);
2410
2411 // S^M_{p,k} (see .h file for the definition of fSMpk):
2412 Double_t dSM1p1k = (*fSMpk)(0,1);
2413 Double_t dSM1p2k = (*fSMpk)(0,2);
2414 Double_t dSM1p3k = (*fSMpk)(0,3);
2415 Double_t dSM2p1k = (*fSMpk)(1,1);
2416 Double_t dSM3p1k = (*fSMpk)(2,1);
2417
2418 // looping over all (pt,eta) bins and calculating weighted correlations needed for differential flow:
2419 for(Int_t p=1;p<=fnBinsPt;p++)
2420 {
2421 for(Int_t e=1;e<=fnBinsEta;e++)
2422 {
2423 // real and imaginary parts of q_n (non-weighted Q-vector evaluated only for POIs in harmonic n for each (pt,eta) bin):
2424 Double_t dReqnPtEta = 0.;
2425 Double_t dImqnPtEta = 0.;
2426
2427 // number of POIs in each (pt,eta) bin:
2428 Double_t dmPtEta = 0.;
2429
2430 // real and imaginary parts of q''_{n,2k}, q''_{2n,1k}, ...
2431 // (weighted Q-vectors evaluated only for particles which are both RPs and POIs in harmonic n, 2n, ... for each (pt,eta) bin):
2432 Double_t dReqPrimePrime1n2kPtEta = 0.;
2433 Double_t dImqPrimePrime1n2kPtEta = 0.;
2434 Double_t dReqPrimePrime2n1kPtEta = 0.;
2435 Double_t dImqPrimePrime2n1kPtEta = 0.;
2436
2437 // S^{m''}_{1,1}, S^{m''}_{1,2}, S^{m''}_{1,3}... (see .h file for the definition):
2438 Double_t dSmPrimePrime1p1kPtEta = 0.;
2439 Double_t dSmPrimePrime1p2kPtEta = 0.;
2440 Double_t dSmPrimePrime1p3kPtEta = 0.;
2441
2442 // M0111 from Eq. (118) in QC2c (to be improved (notation))
2443 Double_t dM0111 = 0.;
2444
2445 // qPOI_{n}: // to be improved (notation)
2446 if(type == "POI")
2447 {
2448 dReqnPtEta = fReqnPtEta->GetBinContent(fReqnPtEta->GetBin(p,e));
2449 dImqnPtEta = fImqnPtEta->GetBinContent(fImqnPtEta->GetBin(p,e));
2450 dmPtEta = fmPtEta->GetBinContent(fmPtEta->GetBin(p,e));
2451
2452 //...............................................................................................
2453 // q''_{n,2k}, q''_{2n,1k}:
2454 dReqPrimePrime1n2kPtEta = fReqPrimePrime1n2kPtEta->GetBinContent(fReqPrimePrime1n2kPtEta->GetBin(p,e));
2455 dImqPrimePrime1n2kPtEta = fImqPrimePrime1n2kPtEta->GetBinContent(fImqPrimePrime1n2kPtEta->GetBin(p,e));
2456 dReqPrimePrime2n1kPtEta = fReqPrimePrime2n1kPtEta->GetBinContent(fReqPrimePrime2n1kPtEta->GetBin(p,e));
2457 dImqPrimePrime2n1kPtEta = fImqPrimePrime2n1kPtEta->GetBinContent(fImqPrimePrime2n1kPtEta->GetBin(p,e));
2458
2459 // S^{m''}_{1,1}, S^{m''}_{1,2}, S^{m''}_{1,3}...:
2460 dSmPrimePrime1p1kPtEta = fSmPrimePrime1p1kPtEta->GetBinContent(fSmPrimePrime1p1kPtEta->GetBin(p,e));
2461 dSmPrimePrime1p2kPtEta = fSmPrimePrime1p2kPtEta->GetBinContent(fSmPrimePrime1p2kPtEta->GetBin(p,e));
2462 dSmPrimePrime1p3kPtEta = fSmPrimePrime1p3kPtEta->GetBinContent(fSmPrimePrime1p3kPtEta->GetBin(p,e));
2463
2464 // M0111 from Eq. (118) in QC2c (to be improved (notation)):
2465 dM0111 = dmPtEta*(dSM3p1k-3.*dSM1p1k*dSM1p2k+2.*dSM1p3k)
2466 - 3.*(dSmPrimePrime1p1kPtEta*(dSM2p1k-dSM1p2k)
2467 + 2.*(dSmPrimePrime1p3kPtEta-dSmPrimePrime1p2kPtEta*dSM1p1k));
2468 //...............................................................................................
2469 }
2470 else if(type == "RP")
2471 {
2472 dReqnPtEta = fReqRP1nPtEta->GetBinContent(fReqRP1nPtEta->GetBin(p,e)); // not a bug ;-)
2473 dImqnPtEta = fImqRP1nPtEta->GetBinContent(fImqRP1nPtEta->GetBin(p,e)); // not a bug ;-)
2474 dmPtEta = fmRPPtEta->GetBinContent(fmRPPtEta->GetBin(p,e)); // not a bug ;-)
2475
2476 //...............................................................................................
2477 // q''_{n,2k}, q''_{2n,1k}: (to be improved (notation)):
2478 dReqPrimePrime1n2kPtEta = fReqRP1n2kPtEta->GetBinContent(fReqRP1n2kPtEta->GetBin(p,e));
2479 dImqPrimePrime1n2kPtEta = fImqRP1n2kPtEta->GetBinContent(fImqRP1n2kPtEta->GetBin(p,e));
2480 dReqPrimePrime2n1kPtEta = fReqRP2n1kPtEta->GetBinContent(fReqRP2n1kPtEta->GetBin(p,e));
2481 dImqPrimePrime2n1kPtEta = fImqRP2n1kPtEta->GetBinContent(fImqRP2n1kPtEta->GetBin(p,e));
2482
2483 // S^{m''}_{1,1}, S^{m''}_{1,2}, S^{m''}_{1,3}...: (to be improved (notation)):
2484 dSmPrimePrime1p1kPtEta = fSmRP1p1kPtEta->GetBinContent(fSmRP1p1kPtEta->GetBin(p,e));
2485 dSmPrimePrime1p2kPtEta = fSmRP1p2kPtEta->GetBinContent(fSmRP1p2kPtEta->GetBin(p,e));
2486 dSmPrimePrime1p3kPtEta = fSmRP1p3kPtEta->GetBinContent(fSmRP1p3kPtEta->GetBin(p,e));
2487
2488 // M0111 from Eq. (118) in QC2c (to be improved (notation)):
2489 dM0111 = dmPtEta*(dSM3p1k-3.*dSM1p1k*dSM1p2k+2.*dSM1p3k)
2490 - 3.*(dSmPrimePrime1p1kPtEta*(dSM2p1k-dSM1p2k)
2491 + 2.*(dSmPrimePrime1p3kPtEta-dSmPrimePrime1p2kPtEta*dSM1p1k));
2492 //...............................................................................................
2493 }
2494
2495 // 2'-particle correlation:
2496 Double_t two1n1nW0W1PtEta = 0.;
2497 if(dmPtEta*dSM1p1k-dSmPrimePrime1p1kPtEta)
2498 {
2499 two1n1nW0W1PtEta = (dReqnPtEta*dReQ1n1k+dImqnPtEta*dImQ1n1k-dSmPrimePrime1p1kPtEta)
2500 / (dmPtEta*dSM1p1k-dSmPrimePrime1p1kPtEta);
2501
2502 // fill the 2D profile to get the average correlation for each (pt, eta) bin:
2503 if(type == "POI")
2504 {
2505 f2pPtEtaPOIW->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,two1n1nW0W1PtEta,
2506 dmPtEta*dSM1p1k-dSmPrimePrime1p1kPtEta);
2507 }
2508 else if(type == "RP")
2509 {
2510 f2pPtEtaRPW->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,two1n1nW0W1PtEta,
2511 dmPtEta*dSM1p1k-dSmPrimePrime1p1kPtEta);
2512 }
2513 } // end of if(dmPtEta*dMult-dmPrimePrimePtEta)
2514
2515 // 4'-particle correlation:
2516 Double_t four1n1n1n1nW0W1W1W1PtEta = 0.;
2517 if(dM0111)
2518 {
2519 four1n1n1n1nW0W1W1W1PtEta = ((pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.))*(dReqnPtEta*dReQ1n1k+dImqnPtEta*dImQ1n1k)
2520 - dReqPrimePrime2n1kPtEta*(pow(dReQ1n1k,2.)-pow(dImQ1n1k,2.))
2521 - 2.*dImqPrimePrime2n1kPtEta*dReQ1n1k*dImQ1n1k
2522 - dReqnPtEta*(dReQ1n1k*dReQ2n2k+dImQ1n1k*dImQ2n2k)
2523 + dImqnPtEta*(dImQ1n1k*dReQ2n2k-dReQ1n1k*dImQ2n2k)
2524 - 2.*dSM1p2k*(dReqnPtEta*dReQ1n1k+dImqnPtEta*dImQ1n1k)
2525 - 2.*(pow(dReQ1n1k,2.)+pow(dImQ1n1k,2.))*dSmPrimePrime1p1kPtEta
2526 + 6.*(dReqPrimePrime1n2kPtEta*dReQ1n1k+dImqPrimePrime1n2kPtEta*dImQ1n1k)
2527 + 1.*(dReqPrimePrime2n1kPtEta*dReQ2n2k+dImqPrimePrime2n1kPtEta*dImQ2n2k)
2528 + 2.*(dReqnPtEta*dReQ1n3k+dImqnPtEta*dImQ1n3k)
2529 + 2.*dSmPrimePrime1p1kPtEta*dSM1p2k
2530 - 6.*dSmPrimePrime1p3kPtEta)
2531 / dM0111; // to be imropoved (notation of dM0111)
2532
2533 // fill the 2D profile to get the average correlation for each (pt, eta) bin:
2534 if(type == "POI")
2535 {
2536 f4pPtEtaPOIW->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,four1n1n1n1nW0W1W1W1PtEta,dM0111);
2537 }
2538 else if(type == "RP")
2539 {
2540 f4pPtEtaRPW->Fill(fPtMin+(p-1)*dBinWidthPt,fEtaMin+(e-1)*dBinWidthEta,four1n1n1n1nW0W1W1W1PtEta,dM0111);
2541 }
2542 } // end of if(dM0111)
2543
2544 } // end of for(Int_t e=1;e<=fnBinsEta;e++)
2545 } // end of for(Int_t p=1;p<=fnBinsPt;p++)
2546
2547} // end of AliFlowAnalysisWithQCumulants::CalculateWeightedCorrelationsForDifferentialFlow(TString type)
bc92c0cb 2548
2549
9c1a9547 2550//================================================================================================================================
bc92c0cb 2551
2552
c365fe76 2553void AliFlowAnalysisWithQCumulants::CalculateCorrectionsForNonUniformAcceptanceCosTerms()
2554{
2555 // calculate corrections for non-uniform acceptance of the detector (cos terms)
2556
2557 // multiplicity:
2558 Double_t dMult = (*fSMpk)(0,0);
2559
2560 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
2561 Double_t dReQ1n = (*fReQ)(0,0);
2562 Double_t dReQ2n = (*fReQ)(1,0);
2563 //Double_t dReQ3n = (*fReQ)(2,0);
2564 //Double_t dReQ4n = (*fReQ)(3,0);
2565 Double_t dImQ1n = (*fImQ)(0,0);
2566 Double_t dImQ2n = (*fImQ)(1,0);
2567 //Double_t dImQ3n = (*fImQ)(2,0);
2568 //Double_t dImQ4n = (*fImQ)(3,0);
2569
2570 // *************************************************************
2571 // **** corrections for non-uniform acceptance (cos terms): ****
2572 // *************************************************************
2573 //
2574 // Remark 1: corrections for non-uniform acceptance (cos terms) calculated with non-weighted Q-vectors
2575 // are stored in 1D profile fQCorrectionsCos.
2576 // Remark 2: binning of fQCorrectionsCos is organized as follows:
2577 // --------------------------------------------------------------------------------------------------------------------
2578 // 1st bin: <<cos(n*(phi1))>> = cosP1n
2579 // 2nd bin: <<cos(n*(phi1+phi2))>> = cosP1nP1n
2580 // 3rd bin: <<cos(n*(phi1-phi2-phi3))>> = cosP1nM1nM1n
2581 // ...
2582 // --------------------------------------------------------------------------------------------------------------------
2583
2584 // 1-particle:
2585 Double_t cosP1n = 0.; // <<cos(n*(phi1))>>
2586
2587 if(dMult>0)
2588 {
2589 cosP1n = dReQ1n/dMult;
2590
2591 fQCorrectionsCos->Fill(0.,cosP1n,dMult);
2592 }
2593
2594 // 2-particle:
2595 Double_t cosP1nP1n = 0.; // <<cos(n*(phi1+phi2))>>
2596
2597 if(dMult>1)
2598 {
2599 cosP1nP1n = (pow(dReQ1n,2)-pow(dImQ1n,2)-dReQ2n)/(dMult*(dMult-1));
2600
2601 fQCorrectionsCos->Fill(1.,cosP1nP1n,dMult*(dMult-1));
2602 }
2603
2604 // 3-particle:
2605 Double_t cosP1nM1nM1n = 0.; // <<cos(n*(phi1-phi2-phi3))>>
2606
2607 if(dMult>2)
2608 {
2609 cosP1nM1nM1n = ( dReQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2)) - dReQ1n*dReQ2n - dImQ1n*dImQ2n - 2.*(dMult-1)*dReQ1n ) /(dMult*(dMult-1)*(dMult-2));
2610
2611 fQCorrectionsCos->Fill(2.,cosP1nM1nM1n,dMult*(dMult-1)*(dMult-2));
2612 }
2613
2614} // end of AliFlowAnalysisWithQCumulants::CalculateCorrectionsForNonUniformAcceptanceCosTerms()
2615
2616
2617//================================================================================================================================
2618
2619
2620void AliFlowAnalysisWithQCumulants::CalculateCorrectionsForNonUniformAcceptanceSinTerms()
2621{
2622 // calculate corrections for non-uniform acceptance of the detector (sin terms)
2623
2624 // multiplicity:
2625 Double_t dMult = (*fSMpk)(0,0);
2626
2627 // real and imaginary parts of non-weighted Q-vectors evaluated in harmonics n, 2n, 3n and 4n:
2628 Double_t dReQ1n = (*fReQ)(0,0);
2629 Double_t dReQ2n = (*fReQ)(1,0);
2630 //Double_t dReQ3n = (*fReQ)(2,0);
2631 //Double_t dReQ4n = (*fReQ)(3,0);
2632 Double_t dImQ1n = (*fImQ)(0,0);
2633 Double_t dImQ2n = (*fImQ)(1,0);
2634 //Double_t dImQ3n = (*fImQ)(2,0);
2635 //Double_t dImQ4n = (*fImQ)(3,0);
2636
2637 // *************************************************************
2638 // **** corrections for non-uniform acceptance (sin terms): ****
2639 // *************************************************************
2640 //
2641 // Remark 1: corrections for non-uniform acceptance (sin terms) calculated with non-weighted Q-vectors
2642 // are stored in 1D profile fQCorrectionsSin.
2643 // Remark 2: binning of fQCorrectionsSin is organized as follows:
2644 // --------------------------------------------------------------------------------------------------------------------
2645 // 1st bin: <<sin(n*(phi1))>> = sinP1n
2646 // 2nd bin: <<sin(n*(phi1+phi2))>> = sinP1nP1n
2647 // 3rd bin: <<sin(n*(phi1-phi2-phi3))>> = sinP1nM1nM1n
2648 // ...
2649 // --------------------------------------------------------------------------------------------------------------------
2650
2651 // 1-particle:
2652 Double_t sinP1n = 0.; // <sin(n*(phi1))>
2653
2654 if(dMult>0)
2655 {
2656 sinP1n = dImQ1n/dMult;
2657
2658 fQCorrectionsSin->Fill(0.,sinP1n,dMult);
2659 }
2660
2661 // 2-particle:
2662 Double_t sinP1nP1n = 0.; // <<sin(n*(phi1+phi2))>>
2663
2664 if(dMult>1)
2665 {
2666 sinP1nP1n = (2.*dReQ1n*dImQ1n-dImQ2n)/(dMult*(dMult-1));
2667
2668 fQCorrectionsSin->Fill(1.,sinP1nP1n,dMult*(dMult-1));
2669 }
2670
2671 // 3-particle:
2672 Double_t sinP1nM1nM1n = 0.; // <<sin(n*(phi1-phi2-phi3))>>
2673
2674 if(dMult>2)
2675 {
2676 sinP1nM1nM1n = ( -dImQ1n*(pow(dReQ1n,2)+pow(dImQ1n,2)) + dReQ1n*dImQ2n - dImQ1n*dReQ2n + 2.*(dMult-1)*dImQ1n ) /(dMult*(dMult-1)*(dMult-2));
2677
2678 fQCorrectionsSin->Fill(2.,sinP1nM1nM1n,dMult*(dMult-1)*(dMult-2));
2679 }
2680
2681} // end of AliFlowAnalysisWithQCumulants::CalculateCorrectionsForNonUniformAcceptanceSinTerms()
2682
2683
2684//================================================================================================================================
2685
2686
9c1a9547 2687void AliFlowAnalysisWithQCumulants::EvaluateNestedLoopsForIntegratedFlow(AliFlowEventSimple* anEvent)
2688{
2689 // evaluate the nested loops relevant for integrated flow (needed for cross-checking the results)
3d824203 2690
9c1a9547 2691 Int_t nPrim = anEvent->NumberOfTracks();
dee1e0e0 2692
9c1a9547 2693 TH1F *phiWeights = NULL; // histogram with phi weights
2694 Int_t nBinsPhi = 0;
3d824203 2695
9c1a9547 2696 if(fUsePhiWeights)
2697 {
2698 if(!fWeightsList)
2699 {
2700 cout<<" WARNING: fWeightsList is NULL pointer in AFAWQC::ENLFIF(). "<<endl;
2701 exit(0);
2702 }
2703 phiWeights = dynamic_cast<TH1F *>(fWeightsList->FindObject("phi_weights"));
2704 if(!phiWeights)
2705 {
2706 cout<<" WARNING: couldn't access the histogram with phi weights in AFAWQC::ENLFIF(). "<<endl;
2707 exit(0);
2708 }
2709 nBinsPhi = phiWeights->GetNbinsX();
2710 }
77515452 2711
9c1a9547 2712 Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
2713 Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1., wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
77515452 2714
9c1a9547 2715 Int_t n=2; // to be improved
77515452 2716
9c1a9547 2717 // ******************************************
2718 // **** NESTED LOOPS FOR INTEGRATED FLOW ****
2719 // ******************************************
2720 //
2721 // Remark 1: multi-particle correlations calculated with nested loops without weights are stored in 1D profile fDirectCorrelations;
2722 // Remark 2: multi-particle correlations calculated with nested loops with weights are stored in 1D profile fDirectCorrelationsW;
2723
2724 // Remark 3: binning of fDirectCorrelations is organized as follows:
2725 // --------------------------------------------------------------------------------------------------------------------
2726 // 1st bin: <2>_{1n|1n} = two1n1n = cos(n*(phi1-phi2))>
2727 // 2nd bin: <2>_{2n|2n} = two2n2n = cos(2n*(phi1-phi2))>
2728 // 3rd bin: <2>_{3n|3n} = two3n3n = cos(3n*(phi1-phi2))>
2729 // 4th bin: <2>_{4n|4n} = two4n4n = cos(4n*(phi1-phi2))>
2730 // 5th bin: ---- EMPTY ----
2731 // 6th bin: <3>_{2n|1n,1n} = three2n1n1n = <cos(n*(2.*phi1-phi2-phi3))>
2732 // 7th bin: <3>_{3n|2n,1n} = three3n2n1n = <cos(n*(3.*phi1-2.*phi2-phi3))>
2733 // 8th bin: <3>_{4n|2n,2n} = three4n2n2n = <cos(n*(4.*phi1-2.*phi2-2.*phi3))>
2734 // 9th bin: <3>_{4n|3n,1n} = three4n3n1n = <cos(n*(4.*phi1-3.*phi2-phi3))>
2735 // 10th bin: ---- EMPTY ----
2736 // 11th bin: <4>_{1n,1n|1n,1n} = four1n1n1n1n = <cos(n*(phi1+phi2-phi3-phi4))>
2737 // 12th bin: <4>_{2n,1n|2n,1n} = four2n1n2n1n = <cos(2.*n*(phi1+phi2-phi3-phi4))>
2738 // 13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n = <cos(n*(2.*phi1+phi2-2.*phi3-phi4))>
2739 // 14th bin: <4>_{3n|1n,1n,1n} = four3n1n1n1n = <cos(n*(3.*phi1-phi2-phi3-phi4))>
2740 // 15th bin: <4>_{3n,1n|3n,1n} = four3n1n3n1n = <cos(n*(4.*phi1-2.*phi2-phi3-phi4))>
2741 // 16th bin: <4>_{3n,1n|2n,2n} = four3n1n2n2n = <cos(n*(3.*phi1+phi2-2.*phi3-2.*phi4))>
2742 // 17th bin: <4>_{4n|2n,1n,1n} = four4n2n1n1n = <cos(n*(3.*phi1+phi2-3.*phi3-phi4))>
2743 // 18th bin: ---- EMPTY ----
2744 // 19th bin: <5>_{2n|1n,1n,1n,1n} = five2n1n1n1n1n = <cos(n*(2.*phi1+phi2-phi3-phi4-phi5))>
2745 // 20th bin: <5>_{2n,2n|2n,1n,1n} = five2n2n2n1n1n = <cos(n*(2.*phi1+2.*phi2-2.*phi3-phi4-phi5))>
2746 // 21st bin: <5>_{3n,1n|2n,1n,1n} = five3n1n2n1n1n = <cos(n*(3.*phi1+phi2-2.*phi3-phi4-phi5))>
2747 // 22nd bin: <5>_{4n|1n,1n,1n,1n} = five4n1n1n1n1n = <cos(n*(4.*phi1-phi2-phi3-phi4-phi5))>
2748 // 23rd bin: ---- EMPTY ----
2749 // 24th bin: <6>_{1n,1n,1n|1n,1n,1n} = six1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3-phi4-phi5-phi6))>
2750 // 25th bin: <6>_{2n,1n,1n|2n,1n,1n} = six2n1n1n2n1n1n = <cos(n*(2.*phi1+2.*phi2-phi3-phi4-phi5-phi6))>
2751 // 26th bin: <6>_{2n,2n|1n,1n,1n,1n} = six2n2n1n1n1n1n = <cos(n*(3.*phi1+phi2-phi3-phi4-phi5-phi6))>
2752 // 27th bin: <6>_{3n,1n|1n,1n,1n,1n} = six3n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-2.*phi4-phi5-phi6))>
2753 // 28th bin: ---- EMPTY ----
2754 // 29th bin: <7>_{2n,1n,1n|1n,1n,1n,1n} = seven2n1n1n1n1n1n1n = <cos(n*(2.*phi1+phi2+phi3-phi4-phi5-phi6-phi7))>
2755 // 30th bin: ---- EMPTY ----
2756 // 31st bin: <8>_{1n,1n,1n,1n|1n,1n,1n,1n} = eight1n1n1n1n1n1n1n1n = <cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8))>
2757 // --------------------------------------------------------------------------------------------------------------------
2758
2759 // Remark 4: binning of fDirectCorrelationsW is organized as follows:
2760 //..............................................................................................
2761 // ---- bins 1-20: 2-particle correlations ----
2762 // 1st bin: two1n1nW1W1 = <w1 w2 cos(n*(phi1-phi2))>
2763 // 2nd bin: two2n2nW2W2 = <w1^2 w2^2 cos(2n*(phi1-phi2))>
2764 // 3rd bin: two3n3nW3W3 = <w1^3 w2^3 cos(3n*(phi1-phi2))>
2765 // 4th bin: two4n4nW4W4 = <w1^4 w2^4 cos(4n*(phi1-phi2))>
2766 // 5th bin: two1n1nW3W1 = <w1^3 w2 cos(n*(phi1-phi2))>
2767 // 6th bin: two1n1nW1W1W2 = <w1 w2 w3^2 cos(n*(phi1-phi2))>
2768 // ---- bins 21-40: 3-particle correlations ----
2769 // 21st bin: three2n1n1nW2W1W1 = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
2770 // ---- bins 41-60: 4-particle correlations ----
2771 // 41st bin: four1n1n1n1nW1W1W1W1 = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
2772 // ---- bins 61-80: 5-particle correlations ----
2773 // ---- bins 81-100: 6-particle correlations ----
2774 // ---- bins 101-120: 7-particle correlations ----
2775 // ---- bins 121-140: 8-particle correlations ----
2776 //..............................................................................................
77515452 2777
c365fe76 2778 // Remark 5: corrections for non-uniform acceptance (cos terms) calculated with nested loops are stored
2779 // in 1D profile fDirectCorrectionsCos (binning is the same as in fQCorrectionsCos - see above);
2780 // Remark 6: corrections for non-uniform acceptance (sin terms) calculated with nested loops are stored
2781 // in 1D profile fDirectCorrectionsSin (binning is the same as in fQCorrectionsSin - see above);
77515452 2782
9c1a9547 2783 // 2-particle correlations:
2784 for(Int_t i1=0;i1<nPrim;i1++)
bc92c0cb 2785 {
dee1e0e0 2786 fTrack=anEvent->GetTrack(i1);
9c1a9547 2787 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 2788 phi1=fTrack->Phi();
3d824203 2789 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
c365fe76 2790 // corrections for non-uniform acceptance (cos terms)
2791 fDirectCorrectionsCos->Fill(0.,cos(n*phi1),1.); // <cos(n*phi1)>
2792 // corrections for non-uniform acceptance (sin terms)
2793 fDirectCorrectionsSin->Fill(0.,sin(n*phi1),1.); // <sin(n*phi1)>
9c1a9547 2794 for(Int_t i2=0;i2<nPrim;i2++)
bc92c0cb 2795 {
dee1e0e0 2796 if(i2==i1)continue;
2797 fTrack=anEvent->GetTrack(i2);
9c1a9547 2798 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 2799 phi2=fTrack->Phi();
3d824203 2800 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
9c1a9547 2801
2802 // non-weighted:
2803 //------------------------------------------------------------------------------
2804 fDirectCorrelations->Fill(0.,cos(n*(phi1-phi2)),1.); // <cos(n*(phi1-phi2))>
2805 fDirectCorrelations->Fill(1.,cos(2.*n*(phi1-phi2)),1.); // <cos(2n*(phi1-phi2))>
2806 fDirectCorrelations->Fill(2.,cos(3.*n*(phi1-phi2)),1.); // <cos(3n*(phi1-phi2))>
2807 fDirectCorrelations->Fill(3.,cos(4.*n*(phi1-phi2)),1.); // <cos(4n*(phi1-phi2))>
2808 //------------------------------------------------------------------------------
2809
2810 // weighted:
2811 //................................................................................................................
2812 fDirectCorrelationsW->Fill(0.,cos(n*(phi1-phi2)),wPhi1*wPhi2); // <w1 w2 cos( n*(phi1-phi2))>
2813 fDirectCorrelationsW->Fill(1.,cos(2.*n*(phi1-phi2)),pow(wPhi1,2)*pow(wPhi2,2)); // <w1^2 w2^2 cos(2n*(phi1-phi2))>
2814 fDirectCorrelationsW->Fill(2.,cos(3.*n*(phi1-phi2)),pow(wPhi1,3)*pow(wPhi2,3)); // <w1^3 w2^3 cos(3n*(phi1-phi2))>
2815 fDirectCorrelationsW->Fill(3.,cos(4.*n*(phi1-phi2)),pow(wPhi1,4)*pow(wPhi2,4)); // <w1^4 w2^4 cos(4n*(phi1-phi2))>
2816 fDirectCorrelationsW->Fill(4.,cos(n*(phi1-phi2)),pow(wPhi1,3)*wPhi2); // <w1^3 w2 cos(n*(phi1-phi2))>
2817 //................................................................................................................
c365fe76 2818
2819 // corrections for non-uniform acceptance (cos terms)
2820 //................................................................................................................
2821 fDirectCorrectionsCos->Fill(1.,cos(n*(phi1+phi2)),1.); // <<cos(n*(phi1+phi2))>>
2822 //................................................................................................................
2823
2824 // corrections for non-uniform acceptance (sin terms)
2825 //................................................................................................................
2826 fDirectCorrectionsSin->Fill(1.,sin(n*(phi1+phi2)),1.); // <<sin(n*(phi1+phi2))>>
2827 //................................................................................................................
2828
bc92c0cb 2829 }
2830 }
c365fe76 2831
9c1a9547 2832 // 3-particle correlations:
2833 for(Int_t i1=0;i1<nPrim;i1++)
bc92c0cb 2834 {
dee1e0e0 2835 fTrack=anEvent->GetTrack(i1);
9c1a9547 2836 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 2837 phi1=fTrack->Phi();
3d824203 2838 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
9c1a9547 2839 for(Int_t i2=0;i2<nPrim;i2++)
bc92c0cb 2840 {
dee1e0e0 2841 if(i2==i1)continue;
2842 fTrack=anEvent->GetTrack(i2);
9c1a9547 2843 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 2844 phi2=fTrack->Phi();
3d824203 2845 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
9c1a9547 2846 for(Int_t i3=0;i3<nPrim;i3++)
bc92c0cb 2847 {
dee1e0e0 2848 if(i3==i1||i3==i2)continue;
2849 fTrack=anEvent->GetTrack(i3);
9c1a9547 2850 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 2851 phi3=fTrack->Phi();
3d824203 2852 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
3d824203 2853
9c1a9547 2854 // non-weighted:
2855 //-----------------------------------------------------------------------------------
2856 fDirectCorrelations->Fill(5.,cos(2.*n*phi1-n*(phi2+phi3)),1.); //<3>_{2n|nn,n}
2857 fDirectCorrelations->Fill(6.,cos(3.*n*phi1-2.*n*phi2-n*phi3),1.); //<3>_{3n|2n,n}
2858 fDirectCorrelations->Fill(7.,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1.); //<3>_{4n|2n,2n}
2859 fDirectCorrelations->Fill(8.,cos(4.*n*phi1-3.*n*phi2-n*phi3),1.); //<3>_{4n|3n,n}
2860 //-----------------------------------------------------------------------------------
3d824203 2861
9c1a9547 2862 // weighted:
2863 //..............................................................................................................................
2864 // 2-p:
2865 fDirectCorrelationsW->Fill(5.,cos(n*(phi1-phi2)),wPhi1*wPhi2*pow(wPhi3,2)); // <w1 w2 w3^2 cos(n*(phi1-phi2))>
3d824203 2866
9c1a9547 2867 // 3-p:
2868 fDirectCorrelationsW->Fill(20.,cos(2.*n*phi1-n*(phi2+phi3)),pow(wPhi1,2)*wPhi2*wPhi3); // <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
2869 //..............................................................................................................................
3d824203 2870
c365fe76 2871
2872 // corrections for non-uniform acceptance (cos terms)
2873 //................................................................................................................
2874 fDirectCorrectionsCos->Fill(2.,cos(n*(phi1-phi2-phi3)),1.); // <<cos(n*(phi1-phi2-phi3))>>
2875 //................................................................................................................
2876
2877 // corrections for non-uniform acceptance (sin terms)
2878 //................................................................................................................
2879 fDirectCorrectionsSin->Fill(2.,sin(n*(phi1-phi2-phi3)),1.); // <<sin(n*(phi1-phi2-phi3))>>
2880 //................................................................................................................
2881
bc92c0cb 2882 }
2883 }
2884 }
3d824203 2885
9c1a9547 2886 // 4-particle correlations:
2887 for(Int_t i1=0;i1<nPrim;i1++)
bc92c0cb 2888 {
dee1e0e0 2889 fTrack=anEvent->GetTrack(i1);
9c1a9547 2890 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 2891 phi1=fTrack->Phi();
3d824203 2892 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
9c1a9547 2893 for(Int_t i2=0;i2<nPrim;i2++)
bc92c0cb 2894 {
dee1e0e0 2895 if(i2==i1)continue;
2896 fTrack=anEvent->GetTrack(i2);
9c1a9547 2897 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 2898 phi2=fTrack->Phi();
3d824203 2899 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
9c1a9547 2900 for(Int_t i3=0;i3<nPrim;i3++)
bc92c0cb 2901 {
dee1e0e0 2902 if(i3==i1||i3==i2)continue;
2903 fTrack=anEvent->GetTrack(i3);
9c1a9547 2904 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 2905 phi3=fTrack->Phi();
3d824203 2906 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
9c1a9547 2907 for(Int_t i4=0;i4<nPrim;i4++)
bc92c0cb 2908 {
dee1e0e0 2909 if(i4==i1||i4==i2||i4==i3)continue;
2910 fTrack=anEvent->GetTrack(i4);
9c1a9547 2911 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 2912 phi4=fTrack->Phi();
3d824203 2913 if(phiWeights) wPhi4 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*nBinsPhi/TMath::TwoPi())));
3d824203 2914
9c1a9547 2915 // non-weighted:
2916 //-------------------------------------------------------------------------------------------------
2917 fDirectCorrelations->Fill(10.,cos(n*phi1+n*phi2-n*phi3-n*phi4),1.); // <4>_{n,n|n,n}
2918 fDirectCorrelations->Fill(11.,cos(2.*n*phi1+n*phi2-2.*n*phi3-n*phi4),1.); // <4>_{2n,n|2n,n}
2919 fDirectCorrelations->Fill(12.,cos(2.*n*phi1+2*n*phi2-2.*n*phi3-2.*n*phi4),1.); // <4>_{2n,2n|2n,2n}
2920 fDirectCorrelations->Fill(13.,cos(3.*n*phi1-n*phi2-n*phi3-n*phi4),1.); // <4>_{3n|n,n,n}
2921 fDirectCorrelations->Fill(14.,cos(3.*n*phi1+n*phi2-3.*n*phi3-n*phi4),1.); // <4>_{3n,n|3n,n}
2922 fDirectCorrelations->Fill(15.,cos(3.*n*phi1+n*phi2-2.*n*phi3-2.*n*phi4),1.); // <4>_{3n,n|2n,2n}
2923 fDirectCorrelations->Fill(16.,cos(4.*n*phi1-2.*n*phi2-n*phi3-n*phi4),1.); // <4>_{4n|2n,n,n}
2924 //-------------------------------------------------------------------------------------------------
2925
2926 // weighted:
2927 //.......................................................................................
2928 // 4-p:
2929 fDirectCorrelationsW->Fill(40.,cos(n*phi1+n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4);
2930 //.......................................................................................
2931
bc92c0cb 2932 }
2933 }
2934 }
2935 }
9c1a9547 2936
2937 // 5-particle correlations:
2938 for(Int_t i1=0;i1<nPrim;i1++)
bc92c0cb 2939 {
dee1e0e0 2940 //cout<<"i1 = "<<i1<<endl;
2941 fTrack=anEvent->GetTrack(i1);
9c1a9547 2942 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 2943 phi1=fTrack->Phi();
3d824203 2944 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
9c1a9547 2945 for(Int_t i2=0;i2<nPrim;i2++)
bc92c0cb 2946 {
dee1e0e0 2947 if(i2==i1)continue;
2948 fTrack=anEvent->GetTrack(i2);
9c1a9547 2949 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 2950 phi2=fTrack->Phi();
3d824203 2951 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
9c1a9547 2952 for(Int_t i3=0;i3<nPrim;i3++)
bc92c0cb 2953 {
dee1e0e0 2954 if(i3==i1||i3==i2)continue;
2955 fTrack=anEvent->GetTrack(i3);
9c1a9547 2956 if(!(fTrack->InRPSelection())) continue;
bc92c0cb 2957 phi3=fTrack->Phi();
3d824203 2958 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
9c1a9547 2959 for(Int_t i4=0;i4<nPrim;i4++)
bc92c0cb 2960 {
dee1e0e0<