1 /*************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
16 /**********************************
17 * flow analysis with Q-cumulants *
19 * author: Ante Bilandzic *
21 *********************************/
23 #define AliFlowAnalysisWithQCumulants_cxx
25 #include "Riostream.h"
26 #include "AliFlowCommonConstants.h"
27 #include "AliFlowCommonHist.h"
28 #include "AliFlowCommonHistResults.h"
33 #include "TParticle.h"
37 #include "TProfile2D.h"
38 #include "TProfile3D.h"
41 #include "TPaveLabel.h"
43 #include "AliFlowEventSimple.h"
44 #include "AliFlowTrackSimple.h"
45 #include "AliFlowAnalysisWithQCumulants.h"
63 //================================================================================================================
65 ClassImp(AliFlowAnalysisWithQCumulants)
67 AliFlowAnalysisWithQCumulants::AliFlowAnalysisWithQCumulants():
72 fAvMultIntFlowQC(NULL),
73 fQvectorComponents(NULL),
74 fIntFlowResultsQC(NULL),
75 fDiffFlowResults2ndOrderQC(NULL),
76 fDiffFlowResults4thOrderQC(NULL),
78 fQvectorForEachEventX(NULL),//to be removed
79 fQvectorForEachEventY(NULL),//to be removed
81 fWeightedQCorrelations(NULL),
83 fDirectCorrelations(NULL),
84 f2PerPtBin1n1nPOI(NULL),
85 f4PerPtBin1n1n1n1nPOI(NULL),
86 f2PerEtaBin1n1nPOI(NULL),
87 f4PerEtaBin1n1n1n1nPOI(NULL),
88 f2WPerPtBin1n1nPOI(NULL),
89 f4WPerPtBin1n1n1n1nPOI(NULL),
90 f2WPerEtaBin1n1nPOI(NULL),
91 f4WPerEtaBin1n1n1n1nPOI(NULL),
92 f2PerPtBin1n1nRP(NULL),
93 f4PerPtBin1n1n1n1nRP(NULL),
94 f2PerEtaBin1n1nRP(NULL),
95 f4PerEtaBin1n1n1n1nRP(NULL),
96 f2WPerPtBin1n1nRP(NULL),
97 f4WPerPtBin1n1n1n1nRP(NULL),
98 f2WPerEtaBin1n1nRP(NULL),
99 f4WPerEtaBin1n1n1n1nRP(NULL),
100 fCommonHists2nd(NULL),
101 fCommonHists4th(NULL),
102 fCommonHists6th(NULL),
103 fCommonHists8th(NULL),
104 fCommonHistsResults2nd(NULL),
105 fCommonHistsResults4th(NULL),
106 fCommonHistsResults6th(NULL),
107 fCommonHistsResults8th(NULL),
108 f2pDistribution(NULL),
109 f4pDistribution(NULL),
110 f6pDistribution(NULL),
111 f8pDistribution(NULL),
119 fUsePhiWeights(kFALSE),
120 fUsePtWeights(kFALSE),
121 fUseEtaWeights(kFALSE)
124 fHistList = new TList();
125 fDiffFlowList = new TList();
126 fDiffFlowList->SetName("DifferentialFlow");
127 fWeightsList = new TList();
128 fWeightsList->SetName("Weights");
130 fnBinsPt = AliFlowCommonConstants::GetNbinsPt();
131 fPtMin = AliFlowCommonConstants::GetPtMin();
132 fPtMax = AliFlowCommonConstants::GetPtMax();
134 fnBinsEta = AliFlowCommonConstants::GetNbinsEta();
135 fEtaMin = AliFlowCommonConstants::GetEtaMin();
136 fEtaMax = AliFlowCommonConstants::GetEtaMax();
139 AliFlowAnalysisWithQCumulants::~AliFlowAnalysisWithQCumulants()
143 delete fDiffFlowList;
147 //================================================================================================================
149 void AliFlowAnalysisWithQCumulants::Init()
151 //various output histograms
152 //avarage multiplicity
153 fAvMultIntFlowQC = new TProfile("fAvMultIntFlowQC","Average Multiplicity",1,0,1,"s");
154 fAvMultIntFlowQC->SetXTitle("");
155 fAvMultIntFlowQC->SetYTitle("");
156 fAvMultIntFlowQC->SetLabelSize(0.06);
157 fAvMultIntFlowQC->SetMarkerStyle(25);
158 fAvMultIntFlowQC->SetLabelOffset(0.01);
159 (fAvMultIntFlowQC->GetXaxis())->SetBinLabel(1,"Average Multiplicity");
160 fHistList->Add(fAvMultIntFlowQC);
163 fQvectorComponents = new TProfile("fQvectorComponents","Avarage of Q-vector components",44,0.,44.,"s");
164 fQvectorComponents->SetXTitle("");
165 fQvectorComponents->SetYTitle("");
166 //fHistList->Add(fQvectorComponents);
168 //final results for integrated flow from Q-cumulants
169 fIntFlowResultsQC = new TH1D("fIntFlowResultsQC","Integrated Flow from Q-cumulants",4,0,4);
170 //fIntFlowResults->SetXTitle("");
171 //fIntFlowResultsQC->SetYTitle("IntegFALSrated Flow");
172 fIntFlowResultsQC->SetLabelSize(0.06);
173 //fIntFlowResultsQC->SetTickLength(1);
174 fIntFlowResultsQC->SetMarkerStyle(25);
175 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
176 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
177 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
178 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
179 fHistList->Add(fIntFlowResultsQC);
181 //final results for differential flow from 2nd order Q-cumulant
182 fDiffFlowResults2ndOrderQC = new TH1D("fDiffFlowResults2ndOrderQC","Differential Flow from 2nd Order Q-cumulant",fnBinsPt,fPtMin,fPtMax);
183 fDiffFlowResults2ndOrderQC->SetXTitle("p_{t} [GeV]");
184 //fDiffFlowResults2ndOrderQC->SetYTitle("Differential Flow");
185 fHistList->Add(fDiffFlowResults2ndOrderQC);
187 //final results for differential flow from 4th order Q-cumulant
188 fDiffFlowResults4thOrderQC = new TH1D("fDiffFlowResults4thOrderQC","Differential Flow from 4th Order Q-cumulant",fnBinsPt,fPtMin,fPtMax);
189 fDiffFlowResults4thOrderQC->SetXTitle("p_{t} [GeV]");
190 //fDiffFlowResults4thOrderQC->SetYTitle("Differential Flow");
191 fHistList->Add(fDiffFlowResults4thOrderQC);
193 //final results for covariances (1st bin: <2*4>-<2>*<4>, 2nd bin: <2*6>-<2>*<6>, ...)
194 fCovariances = new TH1D("fCovariances","Covariances",6,0,6);
195 //fCovariances->SetXTitle("");
196 //fCovariances->SetYTitle("<covariance>");
197 fCovariances->SetLabelSize(0.04);
198 fCovariances->SetTickLength(1);
199 fCovariances->SetMarkerStyle(25);
200 (fCovariances->GetXaxis())->SetBinLabel(1,"Cov(2,4)");
201 (fCovariances->GetXaxis())->SetBinLabel(2,"Cov(2,6)");
202 (fCovariances->GetXaxis())->SetBinLabel(3,"Cov(2,8)");
203 (fCovariances->GetXaxis())->SetBinLabel(4,"Cov(4,6)");
204 (fCovariances->GetXaxis())->SetBinLabel(5,"Cov(4,8)");
205 (fCovariances->GetXaxis())->SetBinLabel(6,"Cov(6,8)");
206 fHistList->Add(fCovariances);
208 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
209 // !!!! to be removed !!!!
210 //profile containing the x-components of Q-vectors from all events
211 fQvectorForEachEventX = new TProfile("fQvectorForEachEventX","x-components of Q-vectors",44000,1,44000,"s");
212 fHistList->Add(fQvectorForEachEventX);
214 //profile containing the y-components of Q-vectors from all events
215 fQvectorForEachEventY = new TProfile("fQvectorForEachEventY","y-components of Q-vectors",44000,1,44000,"s");
216 fHistList->Add(fQvectorForEachEventY);
217 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
219 //multi-particle correlations calculated from Q-vectors
220 fQCorrelations = new TProfile("fQCorrelations","multi-particle correlations from Q-vectors",32,0,32,"s");
221 //fQCorrelations->SetXTitle("correlations");
222 //fQCorrelations->SetYTitle("");
223 fQCorrelations->SetTickLength(-0.01,"Y");
224 fQCorrelations->SetMarkerStyle(25);
225 fQCorrelations->SetLabelSize(0.03);
226 fQCorrelations->SetLabelOffset(0.01,"Y");
228 (fQCorrelations->GetXaxis())->SetBinLabel(1,"<<2>>_{n|n}");
229 (fQCorrelations->GetXaxis())->SetBinLabel(2,"<<2>>_{2n|2n}");
230 (fQCorrelations->GetXaxis())->SetBinLabel(3,"<<2>>_{3n|3n}");
231 (fQCorrelations->GetXaxis())->SetBinLabel(4,"<<2>>_{4n|4n}");
233 (fQCorrelations->GetXaxis())->SetBinLabel(6,"<<3>>_{2n|n,n}");
234 (fQCorrelations->GetXaxis())->SetBinLabel(7,"<<3>>_{3n|2n,n}");
235 (fQCorrelations->GetXaxis())->SetBinLabel(8,"<<3>>_{4n|2n,2n}");
236 (fQCorrelations->GetXaxis())->SetBinLabel(9,"<<3>>_{4n|3n,n}");
238 (fQCorrelations->GetXaxis())->SetBinLabel(11,"<<4>>_{n,n|n,n}");
239 (fQCorrelations->GetXaxis())->SetBinLabel(12,"<<4>>_{2n,n|2n,n}");
240 (fQCorrelations->GetXaxis())->SetBinLabel(13,"<<4>>_{2n,2n|2n,2n}");
241 (fQCorrelations->GetXaxis())->SetBinLabel(14,"<<4>>_{3n|n,n,n}");
242 (fQCorrelations->GetXaxis())->SetBinLabel(15,"<<4>>_{3n,n|3n,n}");
243 (fQCorrelations->GetXaxis())->SetBinLabel(16,"<<4>>_{3n,n|2n,2n}");
244 (fQCorrelations->GetXaxis())->SetBinLabel(17,"<<4>>_{4n|2n,n,n}");
246 (fQCorrelations->GetXaxis())->SetBinLabel(19,"<<5>>_{2n|n,n,n,n}");
247 (fQCorrelations->GetXaxis())->SetBinLabel(20,"<<5>>_{2n,2n|2n,n,n}");
248 (fQCorrelations->GetXaxis())->SetBinLabel(21,"<<5>>_{3n,n|2n,n,n}");
249 (fQCorrelations->GetXaxis())->SetBinLabel(22,"<<5>>_{4n|n,n,n,n}");
251 (fQCorrelations->GetXaxis())->SetBinLabel(24,"<<6>>_{n,n,n|n,n,n}");
252 (fQCorrelations->GetXaxis())->SetBinLabel(25,"<<6>>_{2n,n,n|2n,n,n}");
253 (fQCorrelations->GetXaxis())->SetBinLabel(26,"<<6>>_{2n,2n|n,n,n,n}");
254 (fQCorrelations->GetXaxis())->SetBinLabel(27,"<<6>>_{3n,n|n,n,n,n}");
256 (fQCorrelations->GetXaxis())->SetBinLabel(29,"<<7>>_{2n,n,n|n,n,n,n}");
258 (fQCorrelations->GetXaxis())->SetBinLabel(31,"<<8>>_{n,n,n,n|n,n,n,n}");
260 fHistList->Add(fQCorrelations);
265 //weighted multi-particle correlations calculated from Q-vectors
266 fWeightedQCorrelations = new TProfile("fWeightedQCorrelations","weighted multi-particle correlations from Q-vectors",100,0,100,"s");
267 //fWeightedQCorrelations->SetXTitle("correlations");
268 //fWeightedQCorrelations->SetYTitle("");
269 fWeightedQCorrelations->SetTickLength(-0.01,"Y");
270 fWeightedQCorrelations->SetMarkerStyle(25);
271 fWeightedQCorrelations->SetLabelSize(0.03);
272 fWeightedQCorrelations->SetLabelOffset(0.01,"Y");
274 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(1,"<w_{1}w_{2}cos(n(#phi_{1}-#phi_{2}))>");
275 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(2,"<w_{1}^{2}w_{2}^{2}cos(2n(#phi_{1}-#phi_{2}))>");
276 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(3,"<w_{1}^{3}w_{2}^{3}cos(3n(#phi_{1}-#phi_{2}))>");
277 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(4,"<w_{1}^{4}w_{2}^{4}cos(4n(#phi_{1}-#phi_{2}))>");
278 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(5,"<w_{1}^{3}w_{2}cos(n(#phi_{1}-#phi_{2}))>");
279 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(6,"<w_{1}^{2}w_{2}w_{3}cos(n(#phi_{1}-#phi_{2}))>");
281 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(11,"<w_{1}w_{2}w_{3}^{2}cos(n(2#phi_{1}-#phi_{2}-#phi_{3}))>");
283 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(21,"<w_{1}w_{2}w_{3}w_{4}cos(n(#phi_{1}+#phi_{2}-#phi_{3}-#phi_{4}))>");
286 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(7,"<<3>>_{3n|2n,n}");
287 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(8,"<<3>>_{4n|2n,2n}");
288 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(9,"<<3>>_{4n|3n,n}");
290 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(11,"<<4>>_{n,n|n,n}");
291 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(12,"<<4>>_{2n,n|2n,n}");
292 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(13,"<<4>>_{2n,2n|2n,2n}");
293 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(14,"<<4>>_{3n|n,n,n}");
294 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(15,"<<4>>_{3n,n|3n,n}");
295 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(16,"<<4>>_{3n,n|2n,2n}");
296 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(17,"<<4>>_{4n|2n,n,n}");
298 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(19,"<<5>>_{2n|n,n,n,n}");
299 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(20,"<<5>>_{2n,2n|2n,n,n}");
300 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(21,"<<5>>_{3n,n|2n,n,n}");
301 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(22,"<<5>>_{4n|n,n,n,n}");
303 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(24,"<<6>>_{n,n,n|n,n,n}");
304 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(25,"<<6>>_{2n,n,n|2n,n,n}");
305 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(26,"<<6>>_{2n,2n|n,n,n,n}");
306 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(27,"<<6>>_{3n,n|n,n,n,n}");
308 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(29,"<<7>>_{2n,n,n|n,n,n,n}");
310 (fWeightedQCorrelations->GetXaxis())->SetBinLabel(31,"<<8>>_{n,n,n,n|n,n,n,n}");
313 fHistList->Add(fWeightedQCorrelations);
319 fQProduct = new TProfile("fQProduct","average of products",6,0,6,"s");
320 fQProduct->SetTickLength(-0.01,"Y");
321 fQProduct->SetMarkerStyle(25);
322 fQProduct->SetLabelSize(0.03);
323 fQProduct->SetLabelOffset(0.01,"Y");
324 (fQProduct->GetXaxis())->SetBinLabel(1,"<<2*4>>");
325 (fQProduct->GetXaxis())->SetBinLabel(2,"<<2*6>>");
326 (fQProduct->GetXaxis())->SetBinLabel(3,"<<2*8>>");
327 (fQProduct->GetXaxis())->SetBinLabel(4,"<<4*6>>");
328 (fQProduct->GetXaxis())->SetBinLabel(5,"<<4*8>>");
329 (fQProduct->GetXaxis())->SetBinLabel(6,"<<6*8>>");
330 fQProduct->SetXTitle("");
331 fQProduct->SetYTitle("");
332 fHistList->Add(fQProduct);
334 //weighted multi-particle correlations calculated with nested loops (0..100 integrated flow; 100..200 differential flow)
335 fDirectCorrelations = new TProfile("fDirectCorrelations","multi-particle correlations with nested loops",200,0,200,"s");
336 fDirectCorrelations->SetXTitle("");
337 fDirectCorrelations->SetYTitle("correlations");
338 fHistList->Add(fDirectCorrelations);
341 f2PerPtBin1n1nRP = new TProfile("f2PerPtBin1n1nRP","<2'>_{n|n}",fnBinsPt,fPtMin,fPtMax,"s");
342 f2PerPtBin1n1nRP->SetXTitle("p_{t} [GeV]");
343 fDiffFlowList->Add(f2PerPtBin1n1nRP);
345 //f4PerPtBin1n1n1n1nRP
346 f4PerPtBin1n1n1n1nRP = new TProfile("f4PerPtBin1n1n1n1nRP","<4'>_{n,n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
347 f4PerPtBin1n1n1n1nRP->SetXTitle("p_{t} [GeV]");
348 fDiffFlowList->Add(f4PerPtBin1n1n1n1nRP);
351 f2PerEtaBin1n1nRP = new TProfile("f2PerEtaBin1n1nRP","<2'>_{n|n}",fnBinsEta,fEtaMin,fEtaMax,"s");
352 f2PerEtaBin1n1nRP->SetXTitle("#eta");
353 fDiffFlowList->Add(f2PerEtaBin1n1nRP);
355 //f4PerEtaBin1n1n1n1nRP
356 f4PerEtaBin1n1n1n1nRP = new TProfile("f4PerEtaBin1n1n1n1nRP","<4'>_{n,n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
357 f4PerEtaBin1n1n1n1nRP->SetXTitle("#eta");
358 fDiffFlowList->Add(f4PerEtaBin1n1n1n1nRP);
361 f2PerPtBin1n1nPOI = new TProfile("f2PerPtBin1n1nPOI","<2'>_{n|n}",fnBinsPt,fPtMin,fPtMax,"s");
362 f2PerPtBin1n1nPOI->SetXTitle("#eta");
363 fDiffFlowList->Add(f2PerPtBin1n1nPOI);
365 //f4PerPtBin1n1n1n1nPOI
366 f4PerPtBin1n1n1n1nPOI = new TProfile("f4PerPtBin1n1n1n1nPOI","<4'>_{n,n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
367 f4PerPtBin1n1n1n1nPOI->SetXTitle("p_{t} [GeV]");
368 fDiffFlowList->Add(f4PerPtBin1n1n1n1nPOI);
371 f2PerEtaBin1n1nPOI = new TProfile("f2PerEtaBin1n1nPOI","<2'>_{n|n}",fnBinsEta,fEtaMin,fEtaMax,"s");
372 f2PerEtaBin1n1nPOI->SetXTitle("#eta");
373 fDiffFlowList->Add(f2PerEtaBin1n1nPOI);
375 //f4PerEtaBin1n1n1n1nPOI
376 f4PerEtaBin1n1n1n1nPOI = new TProfile("f4PerEtaBin1n1n1n1nPOI","<4'>_{n,n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
377 f4PerEtaBin1n1n1n1nPOI->SetXTitle("#eta");
378 fDiffFlowList->Add(f4PerEtaBin1n1n1n1nPOI);
381 f2WPerPtBin1n1nPOI = new TProfile("f2WPerPtBin1n1nPOI","<2'>_{n|n}",fnBinsPt,fPtMin,fPtMax,"s");
382 f2WPerPtBin1n1nPOI->SetXTitle("#pt");
383 fDiffFlowList->Add(f2WPerPtBin1n1nPOI);
385 //f4WPerPtBin1n1n1n1nPOI
386 f4WPerPtBin1n1n1n1nPOI = new TProfile("f4WPerPtBin1n1n1n1nPOI","<4'>_{n,n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
387 f4WPerPtBin1n1n1n1nPOI->SetXTitle("#Pt");
388 fDiffFlowList->Add(f4WPerPtBin1n1n1n1nPOI);
390 //f2WPerEtaBin1n1nPOI
391 f2WPerEtaBin1n1nPOI = new TProfile("f2WPerEtaBin1n1nPOI","<2'>_{n|n}",fnBinsEta,fEtaMin,fEtaMax,"s");
392 f2WPerEtaBin1n1nPOI->SetXTitle("#eta");
393 fDiffFlowList->Add(f2WPerEtaBin1n1nPOI);
395 //f4WPerEtaBin1n1n1n1nPOI
396 f4WPerEtaBin1n1n1n1nPOI = new TProfile("f4WPerEtaBin1n1n1n1nPOI","<4'>_{n,n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
397 f4WPerEtaBin1n1n1n1nPOI->SetXTitle("#eta");
398 fDiffFlowList->Add(f4WPerEtaBin1n1n1n1nPOI);
401 f2WPerPtBin1n1nRP = new TProfile("f2WPerPtBin1n1nRP","<2'>_{n|n}",fnBinsPt,fPtMin,fPtMax,"s");
402 f2WPerPtBin1n1nRP->SetXTitle("#pt");
403 fDiffFlowList->Add(f2WPerPtBin1n1nRP);
405 //f4WPerPtBin1n1n1n1nRP
406 f4WPerPtBin1n1n1n1nRP = new TProfile("f4WPerPtBin1n1n1n1nRP","<4'>_{n,n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
407 f4WPerPtBin1n1n1n1nRP->SetXTitle("#Pt");
408 fDiffFlowList->Add(f4WPerPtBin1n1n1n1nRP);
411 f2WPerEtaBin1n1nRP = new TProfile("f2WPerEtaBin1n1nRP","<2'>_{n|n}",fnBinsEta,fEtaMin,fEtaMax,"s");
412 f2WPerEtaBin1n1nRP->SetXTitle("#eta");
413 fDiffFlowList->Add(f2WPerEtaBin1n1nRP);
415 //f4WPerEtaBin1n1n1n1nRP
416 f4WPerEtaBin1n1n1n1nRP = new TProfile("f4WPerEtaBin1n1n1n1nRP","<4'>_{n,n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
417 f4WPerEtaBin1n1n1n1nRP->SetXTitle("#eta");
418 fDiffFlowList->Add(f4WPerEtaBin1n1n1n1nRP);
420 //common control histogram (2nd order)
421 fCommonHists2nd = new AliFlowCommonHist("AliFlowCommonHist2ndOrderQC");
422 fHistList->Add(fCommonHists2nd);
424 //common control histogram (4th order)
425 fCommonHists4th = new AliFlowCommonHist("AliFlowCommonHist4thOrderQC");
426 fHistList->Add(fCommonHists4th);
428 //common control histogram (6th order)
429 fCommonHists6th = new AliFlowCommonHist("AliFlowCommonHist6thOrderQC");
430 fHistList->Add(fCommonHists6th);
432 //common control histogram (8th order)
433 fCommonHists8th = new AliFlowCommonHist("AliFlowCommonHist8thOrderQC");
434 fHistList->Add(fCommonHists8th);
436 //common histograms for final results (2nd order)
437 fCommonHistsResults2nd = new AliFlowCommonHistResults("AliFlowCommonHistResults2ndOrderQC");
438 fHistList->Add(fCommonHistsResults2nd);
440 //common histograms for final results (4th order)
441 fCommonHistsResults4th = new AliFlowCommonHistResults("AliFlowCommonHistResults4thOrderQC");
442 fHistList->Add(fCommonHistsResults4th);
444 //common histograms for final results (6th order)
445 fCommonHistsResults6th = new AliFlowCommonHistResults("AliFlowCommonHistResults6thOrderQC");
446 fHistList->Add(fCommonHistsResults6th);
448 //common histograms for final results (8th order)
449 fCommonHistsResults8th = new AliFlowCommonHistResults("AliFlowCommonHistResults8thOrderQC");
450 fHistList->Add(fCommonHistsResults8th);
452 //weighted <2>_{n|n} distribution
453 f2pDistribution = new TH1D("f2pDistribution","<2>_{n|n} distribution",100000,-0.02,0.1);
454 f2pDistribution->SetXTitle("<2>_{n|n}");
455 f2pDistribution->SetYTitle("Counts");
456 fHistList->Add(f2pDistribution);
458 //weighted <4>_{n,n|n,n} distribution
459 f4pDistribution = new TH1D("f4pDistribution","<4>_{n,n|n,n} distribution",100000,-0.00025,0.002);
460 f4pDistribution->SetXTitle("<4>_{n,n|n,n}");
461 f4pDistribution->SetYTitle("Counts");
462 fHistList->Add(f4pDistribution);
464 //weighted <6>_{n,n,n|n,n,n} distribution
465 f6pDistribution = new TH1D("f6pDistribution","<6>_{n,n,n|n,n,n} distribution",100000,-0.000005,0.000025);
466 f6pDistribution->SetXTitle("<6>_{n,n,n|n,n,n}");
467 f6pDistribution->SetYTitle("Counts");
468 fHistList->Add(f6pDistribution);
470 //weighted <8>_{n,n,n,n|n,n,n,n} distribution
471 f8pDistribution = new TH1D("f8pDistribution","<8>_{n,n,n,n|n,n,n,n} distribution",100000,-0.000000001,0.00000001);
472 f8pDistribution->SetXTitle("<8>_{n,n,n,n|n,n,n,n}");
473 f8pDistribution->SetYTitle("Counts");
474 fHistList->Add(f8pDistribution);
476 // add list fWeightsList with weights to the main list
477 fHistList->Add(fWeightsList);
479 // add list fDiffFlowList with histograms and profiles needed for differential flow to the main list
480 fHistList->Add(fDiffFlowList);
483 //================================================================================================================
485 void AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
489 Int_t nPrim = anEvent->NumberOfTracks(); // nPrim = nRP + nPOI + rest
490 Int_t nRP = anEvent->GetEventNSelTracksRP(); // nRP = number of particles used to determine the reaction plane
492 Int_t n = 2; // int flow harmonic (to be improved)
494 //needed for debugging: (to be improved - add explanation here)
495 //Bool_t bNestedLoops=kFALSE;
496 //if(!(bNestedLoops)||(nPrim>0&&nPrim<12))
498 //if(nPrim>0&&nPrim<10)
503 //---------------------------------------------------------------------------------------------------------
504 // non-weighted and weighted Q-vectors of an event built-up from RP particles evaluated in harmonics n, 2n, 3n and 4n:
505 AliFlowVector afvQvector1n, afvQvector2n, afvQvector3n, afvQvector4n;
507 // non-weighted Q-vector in harmonic n:
508 afvQvector1n.Set(0.,0.);
509 afvQvector1n.SetMult(0);
510 afvQvector1n = anEvent->GetQ(1*n);
512 // non-weighted Q-vector in harmonic 2n:
513 afvQvector2n.Set(0.,0.);
514 afvQvector2n.SetMult(0);
515 afvQvector2n = anEvent->GetQ(2*n); // to be improved: weights
517 // non-weighted Q-vector in harmonic 3n:
518 afvQvector3n.Set(0.,0.);
519 afvQvector3n.SetMult(0);
520 afvQvector3n = anEvent->GetQ(3*n); // to be improved: weights
522 // non-weighted Q-vector in harmonic 4n:
523 afvQvector4n.Set(0.,0.);
524 afvQvector4n.SetMult(0);
525 afvQvector4n = anEvent->GetQ(4*n); // to be improved: weights
528 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
529 // !!!! to be removed !!!!
530 fQvectorForEachEventX->Fill(1.*(++fEventCounter),afvQvector1n.X());
531 fQvectorForEachEventY->Fill(1.*(fEventCounter),afvQvector1n.Y());
532 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
536 //---------------------------------------------------------------------------------------------------------
538 //multiplicity of RP particles:
539 Double_t dMult = afvQvector1n.GetMult(); // to be improved (name, this is actually weighted multiplicity)
541 fAvMultIntFlowQC->Fill(0.,dMult,1.); // to be removed (this info is also stored in one of control histograms)
543 //---------------------------------------------------------------------------------------------------------
545 // *******************
546 // **** Q-vectors ****
547 // *******************
549 Double_t reQ2nQ1nstarQ1nstar = pow(afvQvector1n.X(),2.)*afvQvector2n.X()+2.*afvQvector1n.X()*afvQvector1n.Y()*afvQvector2n.Y()-pow(afvQvector1n.Y(),2.)*afvQvector2n.X();//Re[Q_{2n} Q_{n}^* Q_{n}^*]
550 //Double_t imQ2nQ1nstarQ1nstar = pow(Qvector1n.X(),2.)*Qvector2n.Y()-2.*Qvector1n.X()*Qvector1n.Y()*Qvector2n.X()-pow(Qvector1n.Y(),2.)*Qvector2n.Y();//Im[Q_{2n} Q_{n}^* Q_{n}^*]
551 Double_t reQ1nQ1nQ2nstar = reQ2nQ1nstarQ1nstar;//Re[Q_{n} Q_{n} Q_{2n}^*] = Re[Q_{2n} Q_{n}^* Q_{n}^*]
552 Double_t reQ3nQ1nQ2nstarQ2nstar = (pow(afvQvector2n.X(),2.)-pow(afvQvector2n.Y(),2.))*(afvQvector3n.X()*afvQvector1n.X()-afvQvector3n.Y()*afvQvector1n.Y())+2.*afvQvector2n.X()*afvQvector2n.Y()*(afvQvector3n.X()*afvQvector1n.Y()+afvQvector3n.Y()*afvQvector1n.X());
553 //Double_t imQ3nQ1nQ2nstarQ2nstar = calculate and implement this (deleteMe)
554 Double_t reQ2nQ2nQ3nstarQ1nstar = reQ3nQ1nQ2nstarQ2nstar;
555 Double_t reQ4nQ2nstarQ2nstar = pow(afvQvector2n.X(),2.)*afvQvector4n.X()+2.*afvQvector2n.X()*afvQvector2n.Y()*afvQvector4n.Y()-pow(afvQvector2n.Y(),2.)*afvQvector4n.X();//Re[Q_{4n} Q_{2n}^* Q_{2n}^*]
556 //Double_t imQ4nQ2nstarQ2nstar = calculate and implement this (deleteMe)
557 Double_t reQ2nQ2nQ4nstar = reQ4nQ2nstarQ2nstar;
558 Double_t reQ4nQ3nstarQ1nstar = afvQvector4n.X()*(afvQvector3n.X()*afvQvector1n.X()-afvQvector3n.Y()*afvQvector1n.Y())+afvQvector4n.Y()*(afvQvector3n.X()*afvQvector1n.Y()+afvQvector3n.Y()*afvQvector1n.X());//Re[Q_{4n} Q_{3n}^* Q_{n}^*]
559 Double_t reQ3nQ1nQ4nstar = reQ4nQ3nstarQ1nstar;//Re[Q_{3n} Q_{n} Q_{4n}^*] = Re[Q_{4n} Q_{3n}^* Q_{n}^*]
560 //Double_t imQ4nQ3nstarQ1nstar = calculate and implement this (deleteMe)
561 Double_t reQ3nQ2nstarQ1nstar = afvQvector3n.X()*afvQvector2n.X()*afvQvector1n.X()-afvQvector3n.X()*afvQvector2n.Y()*afvQvector1n.Y()+afvQvector3n.Y()*afvQvector2n.X()*afvQvector1n.Y()+afvQvector3n.Y()*afvQvector2n.Y()*afvQvector1n.X();//Re[Q_{3n} Q_{2n}^* Q_{n}^*]
562 Double_t reQ2nQ1nQ3nstar = reQ3nQ2nstarQ1nstar;//Re[Q_{2n} Q_{n} Q_{3n}^*] = Re[Q_{3n} Q_{2n}^* Q_{n}^*]
563 //Double_t imQ3nQ2nstarQ1nstar; //calculate and implement this (deleteMe)
564 Double_t reQ3nQ1nstarQ1nstarQ1nstar = afvQvector3n.X()*pow(afvQvector1n.X(),3)-3.*afvQvector1n.X()*afvQvector3n.X()*pow(afvQvector1n.Y(),2)+3.*afvQvector1n.Y()*afvQvector3n.Y()*pow(afvQvector1n.X(),2)-afvQvector3n.Y()*pow(afvQvector1n.Y(),3);//Re[Q_{3n} Q_{n}^* Q_{n}^* Q_{n}^*]
565 //Double_t imQ3nQ1nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
566 Double_t xQ2nQ1nQ2nstarQ1nstar = pow(afvQvector2n.Mod()*afvQvector1n.Mod(),2);//|Q_{2n}|^2 |Q_{n}|^2
567 Double_t reQ4nQ2nstarQ1nstarQ1nstar = (afvQvector4n.X()*afvQvector2n.X()+afvQvector4n.Y()*afvQvector2n.Y())*(pow(afvQvector1n.X(),2)-pow(afvQvector1n.Y(),2))+2.*afvQvector1n.X()*afvQvector1n.Y()*(afvQvector4n.Y()*afvQvector2n.X()-afvQvector4n.X()*afvQvector2n.Y());//Re[Q_{4n} Q_{2n}^* Q_{n}^* Q_{n}^*]
568 //Double_t imQ4nQ2nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
569 Double_t reQ2nQ1nQ1nstarQ1nstarQ1nstar = (afvQvector2n.X()*afvQvector1n.X()-afvQvector2n.Y()*afvQvector1n.Y())*(pow(afvQvector1n.X(),3)-3.*afvQvector1n.X()*pow(afvQvector1n.Y(),2))+(afvQvector2n.X()*afvQvector1n.Y()+afvQvector1n.X()*afvQvector2n.Y())*(3.*afvQvector1n.Y()*pow(afvQvector1n.X(),2)-pow(afvQvector1n.Y(),3));//Re[Q_{2n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^*]
570 //Double_t imQ2nQ1nQ1nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
571 Double_t reQ2nQ2nQ2nstarQ1nstarQ1nstar = pow(afvQvector2n.Mod(),2.)*(afvQvector2n.X()*(pow(afvQvector1n.X(),2.)-pow(afvQvector1n.Y(),2.))+2.*afvQvector2n.Y()*afvQvector1n.X()*afvQvector1n.Y());//Re[Q_{2n} Q_{2n} Q_{2n}^* Q_{n}^* Q_{n}^*]
572 //Double_t imQ2nQ2nQ2nstarQ1nstarQ1nstar = pow(Qvector2n.Mod(),2.)*(Qvector2n.Y()*(pow(Qvector1n.X(),2.)-pow(Qvector1n.Y(),2.))-2.*Qvector2n.X()*Qvector1n.X()*Qvector1n.Y());//Im[Q_{2n} Q_{2n} Q_{2n}^* Q_{n}^* Q_{n}^*]
573 Double_t reQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(afvQvector1n.X(),4.)*afvQvector4n.X()-6.*pow(afvQvector1n.X(),2.)*afvQvector4n.X()*pow(afvQvector1n.Y(),2.)+pow(afvQvector1n.Y(),4.)*afvQvector4n.X()+4.*pow(afvQvector1n.X(),3.)*afvQvector1n.Y()*afvQvector4n.Y()-4.*pow(afvQvector1n.Y(),3.)*afvQvector1n.X()*afvQvector4n.Y();//Re[Q_{4n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
574 //Double_t imQ4nQ1nstarQ1nstarQ1nstarQ1nstar = pow(Qvector1n.X(),4.)*Qvector4n.Y()-6.*pow(Qvector1n.X(),2.)*Qvector4n.Y()*pow(Qvector1n.Y(),2.)+pow(Qvector1n.Y(),4.)*Qvector4n.Y()+4.*pow(Qvector1n.Y(),3.)*Qvector1n.X()*Qvector4n.X()-4.*pow(Qvector1n.X(),3.)*Qvector1n.Y()*Qvector4n.X();//Im[Q_{4n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
575 Double_t reQ3nQ1nQ2nstarQ1nstarQ1nstar = pow(afvQvector1n.Mod(),2.)*(afvQvector1n.X()*afvQvector2n.X()*afvQvector3n.X()-afvQvector3n.X()*afvQvector1n.Y()*afvQvector2n.Y()+afvQvector2n.X()*afvQvector1n.Y()*afvQvector3n.Y()+afvQvector1n.X()*afvQvector2n.Y()*afvQvector3n.Y());//Re[Q_{3n} Q_{n} Q_{2n}^* Q_{n}^* Q_{n}^*]
576 //Double_t imQ3nQ1nQ2nstarQ1nstarQ1nstar = pow(afvQvector1n.Mod(),2.)*(-afvQvector2n.X()*afvQvector3n.X()*afvQvector1n.Y()-afvQvector1n.X()*afvQvector3n.X()*afvQvector2n.Y()+afvQvector1n.X()*afvQvector2n.X()*afvQvector3n.Y()-afvQvector1n.Y()*afvQvector2n.Y()*afvQvector3n.Y());//Im[Q_{3n} Q_{n} Q_{2n}^* Q_{n}^* Q_{n}^*]
577 Double_t reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = (pow(afvQvector1n.X(),2.)*afvQvector2n.X()-2.*afvQvector1n.X()*afvQvector2n.X()*afvQvector1n.Y()-afvQvector2n.X()*pow(afvQvector1n.Y(),2.)+afvQvector2n.Y()*pow(afvQvector1n.X(),2.)+2.*afvQvector1n.X()*afvQvector1n.Y()*afvQvector2n.Y()-pow(afvQvector1n.Y(),2.)*afvQvector2n.Y())*(pow(afvQvector1n.X(),2.)*afvQvector2n.X()+2.*afvQvector1n.X()*afvQvector2n.X()*afvQvector1n.Y()-afvQvector2n.X()*pow(afvQvector1n.Y(),2.)-afvQvector2n.Y()*pow(afvQvector1n.X(),2.)+2.*afvQvector1n.X()*afvQvector1n.Y()*afvQvector2n.Y()+pow(afvQvector1n.Y(),2.)*afvQvector2n.Y());//Re[Q_{2n} Q_{2n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
578 //Double_t imQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar = 2.*(pow(afvQvector1n.X(),2.)*afvQvector2n.X()-afvQvector2n.X()*pow(afvQvector1n.Y(),2.)+2.*afvQvector1n.X()*afvQvector1n.Y()*afvQvector2n.Y())*(pow(afvQvector1n.X(),2.)*afvQvector2n.Y()-2.*afvQvector1n.X()*afvQvector1n.Y()*afvQvector2n.X()-pow(afvQvector1n.Y(),2.)*afvQvector2n.Y());//Im[Q_{2n} Q_{2n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
579 Double_t reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow(afvQvector1n.Mod(),2.)*(pow(afvQvector1n.X(),3.)*afvQvector3n.X()-3.*afvQvector1n.X()*afvQvector3n.X()*pow(afvQvector1n.Y(),2.)+3.*pow(afvQvector1n.X(),2.)*afvQvector1n.Y()*afvQvector3n.Y()-pow(afvQvector1n.Y(),3.)*afvQvector3n.Y());//Re[Q_{3n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
580 //Double_t imQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow(afvQvector1n.Mod(),2.)*(pow(afvQvector1n.Y(),3.)*afvQvector3n.X()-3.*afvQvector1n.Y()*afvQvector3n.X()*pow(afvQvector1n.X(),2.)-3.*pow(afvQvector1n.Y(),2.)*afvQvector1n.X()*afvQvector3n.Y()+pow(afvQvector1n.X(),3.)*afvQvector3n.Y());//Im[Q_{3n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
581 Double_t xQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar = pow(afvQvector2n.Mod(),2.)*pow(afvQvector1n.Mod(),4.);//|Q_{2n}|^2 |Q_{n}|^4
582 Double_t reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow(afvQvector1n.Mod(),4.)*(pow(afvQvector1n.X(),2.)*afvQvector2n.X()-afvQvector2n.X()*pow(afvQvector1n.Y(),2.)+2.*afvQvector1n.X()*afvQvector1n.Y()*afvQvector2n.Y());//Re[Q_{2n} Q_{n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
583 //Double_t imQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar = pow(afvQvector1n.Mod(),4.)*(pow(afvQvector1n.X(),2.)*afvQvector2n.Y()-afvQvector2n.Y()*pow(afvQvector1n.Y(),2.)-2.*afvQvector1n.X()*afvQvector2n.X()*afvQvector1n.Y());//Re[Q_{2n} Q_{n} Q_{n} Q_{n}^* Q_{n}^* Q_{n}^* Q_{n}^*]
584 //---------------------------------------------------------------------------------------------------------
586 //---------------------------------------------------------------------------------------------------------
588 // **************************************
589 // **** multi-particle correlations: ****
590 // **************************************
592 // Remark 1: multi-particle correlations calculated with Q-vectors are stored in fQCorrelations.
593 // Remark 2: binning of fQCorrelations is organized as follows:
595 // 1st bin: <2>_{n|n} = two1n1n
596 // 2nd bin: <2>_{2n|2n} = two2n2n
597 // 3rd bin: <2>_{3n|3n} = two3n3n
598 // 4th bin: <2>_{4n|4n} = two4n4n
599 // 5th bin: -- EMPTY --
600 // 6th bin: <3>_{2n|n,n} = three2n1n1n
601 // 7th bin: <3>_{3n|2n,n} = three3n2n1n
602 // 8th bin: <3>_{4n|2n,2n} = three4n2n2n
603 // 9th bin: <3>_{4n|3n,n} = three4n3n1n
604 //10th bin: -- EMPTY --
605 //11th bin: <4>_{n,n|n,n} = four1n1n1n1n
606 //12th bin: <4>_{2n,n|2n,n} = four2n1n2n1n
607 //13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n
608 //14th bin: <4>_{3n|n,n,n} = four3n1n1n1n
609 //15th bin: <4>_{3n,n|3n,n} = four3n1n3n1n
610 //16th bin: <4>_{3n,n|2n,2n} = four3n1n2n2n
611 //17th bin: <4>_{4n|2n,n,n} = four4n2n1n1n
612 //18th bin: -- EMPTY --
613 //19th bin: <5>_{2n|n,n,n,n} = five2n1n1n1n1n
614 //20th bin: <5>_{2n,2n|2n,n,n} = five2n2n2n1n1n
615 //21st bin: <5>_{3n,n|2n,n,n} = five3n1n2n1n1n
616 //22nd bin: <5>_{4n|n,n,n,n} = five4n1n1n1n1n
617 //23rd bin: -- EMPTY --
618 //24th bin: <6>_{n,n,n|n,n,n} = six1n1n1n1n1n1n
619 //25th bin: <6>_{2n,n,n|2n,n,n} = six2n1n1n2n1n1n
620 //26th bin: <6>_{2n,2n|n,n,n,n} = six2n2n1n1n1n1n
621 //27th bin: <6>_{3n,n|n,n,n,n} = six3n1n1n1n1n1n
622 //28th bin: -- EMPTY --
623 //29th bin: <7>_{2n,n,n|n,n,n,n} = seven2n1n1n1n1n1n1n
624 //30th bin: -- EMPTY --
625 //31st bin: <8>_{n,n,n,n|n,n,n,n} = eight1n1n1n1n1n1n1n1n
628 // binning of fQProduct (all correlations are evaluated in harmonic n):
637 Double_t two1n1n = 0., two2n2n = 0., two3n3n = 0., two4n4n = 0.;
641 //fill the common control histogram (2nd order):
642 fCommonHists2nd->FillControlHistograms(anEvent);
644 two1n1n = (pow(afvQvector1n.Mod(),2.)-dMult)/(dMult*(dMult-1.)); // <2>_{n|n} = <cos(n*(phi1-phi2))>
645 two2n2n = (pow(afvQvector2n.Mod(),2.)-dMult)/(dMult*(dMult-1.)); // <2>_{2n|2n} = <cos(2n*(phi1-phi2))>
646 two3n3n = (pow(afvQvector3n.Mod(),2.)-dMult)/(dMult*(dMult-1.)); // <2>_{3n|3n} = <cos(3n*(phi1-phi2))>
647 two4n4n = (pow(afvQvector4n.Mod(),2.)-dMult)/(dMult*(dMult-1.)); // <2>_{4n|4n} = <cos(4n*(phi1-phi2))>
649 fQCorrelations->Fill(0.,two1n1n,dMult*(dMult-1.));
650 fQCorrelations->Fill(1.,two2n2n,dMult*(dMult-1.));
651 fQCorrelations->Fill(2.,two3n3n,dMult*(dMult-1.));
652 fQCorrelations->Fill(3.,two4n4n,dMult*(dMult-1.));
654 f2pDistribution->Fill(two1n1n,dMult*(dMult-1.));
658 Double_t three2n1n1n=0., three3n2n1n=0., three4n2n2n=0., three4n3n1n=0.;
661 three2n1n1n = (reQ2nQ1nstarQ1nstar-2.*pow(afvQvector1n.Mod(),2.)-pow(afvQvector2n.Mod(),2.)+2.*dMult)/(dMult*(dMult-1.)*(dMult-2.)); //Re[<3>_{2n|n,n}] = Re[<3>_{n,n|2n}] = <cos(n*(2.*phi1-phi2-phi3))>
662 three3n2n1n = (reQ3nQ2nstarQ1nstar-pow(afvQvector3n.Mod(),2.)-pow(afvQvector2n.Mod(),2.)-pow(afvQvector1n.Mod(),2.)+2.*dMult)/(dMult*(dMult-1.)*(dMult-2.)); //Re[<3>_{3n|2n,n}] = Re[<3>_{2n,n|3n}] = <cos(n*(3.*phi1-2.*phi2-phi3))>
663 three4n2n2n = (reQ4nQ2nstarQ2nstar-2.*pow(afvQvector2n.Mod(),2.)-pow(afvQvector4n.Mod(),2.)+2.*dMult)/(dMult*(dMult-1.)*(dMult-2.)); //Re[<3>_{4n|2n,2n}] = Re[<3>_{2n,2n|4n}] = <cos(n*(4.*phi1-2.*phi2-2.*phi3))>
664 three4n3n1n = (reQ4nQ3nstarQ1nstar-pow(afvQvector4n.Mod(),2.)-pow(afvQvector3n.Mod(),2.)-pow(afvQvector1n.Mod(),2.)+2.*dMult)/(dMult*(dMult-1.)*(dMult-2.)); //Re[<3>_{4n|3n,n}] = Re[<3>_{3n,n|4n}] = <cos(n*(4.*phi1-3.*phi2-phi3))>
666 fQCorrelations->Fill(5.,three2n1n1n,dMult*(dMult-1.)*(dMult-2.));
667 fQCorrelations->Fill(6.,three3n2n1n,dMult*(dMult-1.)*(dMult-2.));
668 fQCorrelations->Fill(7.,three4n2n2n,dMult*(dMult-1.)*(dMult-2.));
669 fQCorrelations->Fill(8.,three4n3n1n,dMult*(dMult-1.)*(dMult-2.));
673 Double_t four1n1n1n1n=0., four2n2n2n2n=0., four2n1n2n1n=0., four3n1n1n1n=0., four4n2n1n1n=0., four3n1n2n2n=0., four3n1n3n1n=0.;
676 //fill the common control histogram (4th order):
677 fCommonHists4th->FillControlHistograms(anEvent);
679 four1n1n1n1n = (2.*dMult*(dMult-3.)+pow(afvQvector1n.Mod(),4.)-4.*(dMult-2.)*pow(afvQvector1n.Mod(),2.)-2.*reQ2nQ1nstarQ1nstar+pow(afvQvector2n.Mod(),2.))/(dMult*(dMult-1)*(dMult-2.)*(dMult-3.));//<4>_{n,n|n,n}
680 four2n2n2n2n = (2.*dMult*(dMult-3.)+pow(afvQvector2n.Mod(),4.)-4.*(dMult-2.)*pow(afvQvector2n.Mod(),2.)-2.*reQ4nQ2nstarQ2nstar+pow(afvQvector4n.Mod(),2.))/(dMult*(dMult-1)*(dMult-2.)*(dMult-3.));//<4>_{2n,2n|2n,2n}
681 four2n1n2n1n = (xQ2nQ1nQ2nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar-2.*reQ2nQ1nstarQ1nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))-((dMult-5.)*pow(afvQvector1n.Mod(),2.)+(dMult-4.)*pow(afvQvector2n.Mod(),2.)-pow(afvQvector3n.Mod(),2.))/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))+(dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));//Re[<4>_{2n,n|2n,n}]
682 four3n1n1n1n = (reQ3nQ1nstarQ1nstarQ1nstar-3.*reQ3nQ2nstarQ1nstar-3.*reQ2nQ1nstarQ1nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))+(2.*pow(afvQvector3n.Mod(),2.)+3.*pow(afvQvector2n.Mod(),2.)+6.*pow(afvQvector1n.Mod(),2.)-6.*dMult)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));//Re[<4>_{3n|n,n,n}]
683 four4n2n1n1n = (reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ4nQ3nstarQ1nstar-reQ4nQ2nstarQ2nstar-2.*reQ3nQ2nstarQ1nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))-(reQ2nQ1nstarQ1nstar-2.*pow(afvQvector4n.Mod(),2.)-2.*pow(afvQvector3n.Mod(),2.)-3.*pow(afvQvector2n.Mod(),2.)-4.*pow(afvQvector1n.Mod(),2.))/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))-(6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));//Re[<4>_{4n|2n,n,n}]
684 four3n1n2n2n = (reQ3nQ1nQ2nstarQ2nstar-reQ4nQ2nstarQ2nstar-reQ3nQ1nQ4nstar-2.*reQ3nQ2nstarQ1nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))-(2.*reQ1nQ1nQ2nstar-pow(afvQvector4n.Mod(),2.)-2.*pow(afvQvector3n.Mod(),2.)-4.*pow(afvQvector2n.Mod(),2.)-4.*pow(afvQvector1n.Mod(),2.))/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))-(6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));//Re[<4>_{3n,n|2n,2n}]
685 four3n1n3n1n = (pow(afvQvector3n.Mod(),2.)*pow(afvQvector1n.Mod(),2.)-2.*reQ4nQ3nstarQ1nstar-2.*reQ3nQ2nstarQ1nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))+(pow(afvQvector4n.Mod(),2.)-(dMult-4.)*pow(afvQvector3n.Mod(),2.)+pow(afvQvector2n.Mod(),2.)-(dMult-4.)*pow(afvQvector1n.Mod(),2.))/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.))+(dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.));//<4>_{3n,n|3n,n}
686 //four_3n1n3n1n = Q3nQ1nQ3nstarQ1nstar/(M*(M-1.)*(M-2.)*(M-3.))-(2.*three_3n2n1n+2.*three_4n3n1n)/(M-3.)-(two_4n4n+M*two_3n3n+two_2n2n+M*two_1n1n)/((M-2.)*(M-3.))-M/((M-1.)*(M-2.)*(M-3.));//<4>_{3n,n|3n,n}
688 fQCorrelations->Fill(10.,four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
689 fQCorrelations->Fill(11.,four2n1n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
690 fQCorrelations->Fill(12.,four2n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
691 fQCorrelations->Fill(13.,four3n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
692 fQCorrelations->Fill(14.,four3n1n3n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
693 fQCorrelations->Fill(15.,four3n1n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
694 fQCorrelations->Fill(16.,four4n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
696 f4pDistribution->Fill(four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
698 fQProduct->Fill(0.,two1n1n*four1n1n1n1n,dMult*(dMult-1.)*dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
702 Double_t five2n1n1n1n1n=0., five2n2n2n1n1n=0., five3n1n2n1n1n=0., five4n1n1n1n1n=0.;
705 five2n1n1n1n1n = (reQ2nQ1nQ1nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar+6.*reQ3nQ2nstarQ1nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))-(reQ2nQ1nQ3nstar+3.*(dMult-6.)*reQ2nQ1nstarQ1nstar+3.*reQ1nQ1nQ2nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))-(2.*pow(afvQvector3n.Mod(),2.)+3.*pow(afvQvector2n.Mod()*afvQvector1n.Mod(),2.)-3.*(dMult-4.)*pow(afvQvector2n.Mod(),2.))/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))-3.*(pow(afvQvector1n.Mod(),4.)-2.*(2*dMult-5.)*pow(afvQvector1n.Mod(),2.)+2.*dMult*(dMult-4.))/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));//Re[<5>_{2n,n|n,n,n}]
707 five2n2n2n1n1n = (reQ2nQ2nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-2.*reQ2nQ2nQ3nstarQ1nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))+2.*(reQ4nQ2nstarQ2nstar+4.*reQ3nQ2nstarQ1nstar+reQ3nQ1nQ4nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))+(reQ2nQ2nQ4nstar-2.*(dMult-5.)*reQ2nQ1nstarQ1nstar+2.*reQ1nQ1nQ2nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))-(2.*pow(afvQvector4n.Mod(),2.)+4.*pow(afvQvector3n.Mod(),2.)+1.*pow(afvQvector2n.Mod(),4.)-2.*(3.*dMult-10.)*pow(afvQvector2n.Mod(),2.))/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))-(4.*pow(afvQvector1n.Mod(),2.)*pow(afvQvector2n.Mod(),2.)-4.*(dMult-5.)*pow(afvQvector1n.Mod(),2.)+4.*dMult*(dMult-6.))/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));//Re[<5>_{2n,2n|2n,n,n}]
709 //five_2n2n2n1n1n = reQ2nQ2nQ2nstarQ1nstarQ1nstar/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.))-(4.*four_2n1n2n1n+2.*four_3n1n2n2n+1.*four_2n2n2n2n+four_4n2n1n1n)/(M-4.)-(2.*three_4n3n1n+three_4n2n2n+three_4n2n2n+2.*three_3n2n1n)/((M-3.)*(M-4.))-(4.*three_3n2n1n+(2.*M-1.)*three_2n1n1n+2.*three_2n1n1n)/((M-3.)*(M-4.))-(two_4n4n+2.*two_3n3n+4.*(M-1.)*two_2n2n+2.*(2.*M-1.)*two_1n1n)/((M-2.)*(M-3.)*(M-4.))-(2.*M-1.)/((M-1.)*(M-2.)*(M-3.)*(M-4.)); //OK!
711 five4n1n1n1n1n = (reQ4nQ1nstarQ1nstarQ1nstarQ1nstar-6.*reQ4nQ2nstarQ1nstarQ1nstar-4.*reQ3nQ1nstarQ1nstarQ1nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))+(8.*reQ4nQ3nstarQ1nstar+3.*reQ4nQ2nstarQ2nstar+12.*reQ3nQ2nstarQ1nstar+12.*reQ2nQ1nstarQ1nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))-(6.*pow(afvQvector4n.Mod(),2.)+8.*pow(afvQvector3n.Mod(),2.)+12.*pow(afvQvector2n.Mod(),2.)+24.*pow(afvQvector1n.Mod(),2.)-24.*dMult)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));//Re[<5>_{4n|n,n,n,n}]
713 //five_4n1n1n1n1n = reQ4nQ1nstarQ1nstarQ1nstarQ1nstar/(M*(M-1.)*(M-2.)*(M-3.)*(M-4.)) - (4.*four_3n1n1n1n+6.*four_4n2n1n1n)/(M-4.) - (6.*three_2n1n1n + 12.*three_3n2n1n + 4.*three_4n3n1n + 3.*three_4n2n2n)/((M-3.)*(M-4.)) - (4.*two_1n1n + 6.*two_2n2n + 4.*two_3n3n + 1.*two_4n4n)/((M-2.)*(M-3.)*(M-4.)) - 1./((M-1.)*(M-2.)*(M-3.)*(M-4.)); //OK!
715 five3n1n2n1n1n = (reQ3nQ1nQ2nstarQ1nstarQ1nstar-reQ4nQ2nstarQ1nstarQ1nstar-reQ3nQ1nstarQ1nstarQ1nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))-(reQ3nQ1nQ2nstarQ2nstar-3.*reQ4nQ3nstarQ1nstar-reQ4nQ2nstarQ2nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))-((2.*dMult-13.)*reQ3nQ2nstarQ1nstar-reQ3nQ1nQ4nstar-9.*reQ2nQ1nstarQ1nstar)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))-(2.*reQ1nQ1nQ2nstar+2.*pow(afvQvector4n.Mod(),2.)-2.*(dMult-5.)*pow(afvQvector3n.Mod(),2.)+2.*pow(afvQvector3n.Mod(),2.)*pow(afvQvector1n.Mod(),2.))/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))+(2.*(dMult-6.)*pow(afvQvector2n.Mod(),2.)-2.*pow(afvQvector2n.Mod(),2.)*pow(afvQvector1n.Mod(),2.)-pow(afvQvector1n.Mod(),4.)+2.*(3.*dMult-11.)*pow(afvQvector1n.Mod(),2.))/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.))-4.*(dMult-6.)/((dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));//Re[<5>_{3n,n|2n,n,n}]
717 //five3n1n2n1n1n = reQ3nQ1nQ2nstarQ1nstarQ1nstar/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)) - (four4n2n1n1n+four1n1n1n1n+four3n1n1n1n+2.*four2n1n2n1n+2.*three3n2n1n+2.*four3n1n3n1n+four3n1n2n2n)/(dMult-4.) - (2.*three4n3n1n+three4n2n2n+6.*three3n2n1n+three4n3n1n+2.*three3n2n1n+3.*three2n1n1n+2.*three2n1n1n+4.*two1n1n+2.*two2n2n+2.*two3n3n)/((dMult-3.)*(dMult-4.)) - (5.*two1n1n + 4.*two2n2n + 3.*two3n3n + 1.*two4n4n + 2.)/((dMult-2.)*(dMult-3.)*(dMult-4.)) - 1./((dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)) ;//Re[<5>_{3n,n|2n,n,n}] //OK!
719 //five3n1n2n1n1n = reQ3nQ1nQ2nstarQ1nstarQ1nstar/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)) - (four4n2n1n1n+four1n1n1n1n+four3n1n1n1n+2.*four2n1n2n1n+2.*four3n1n3n1n+four3n1n2n2n)/(dMult-4.) - (2.*three4n3n1n+three4n2n2n+2.*dMult*three3n2n1n+three4n3n1n+2.*three3n2n1n+3.*three2n1n1n+2.*three2n1n1n)/((dMult-3.)*(dMult-4.)) - ((4.*dMult-3.)*two1n1n + 2.*dMult*two2n2n + (2.*dMult-1.)*two3n3n + two4n4n)/((dMult-2.)*(dMult-3.)*(dMult-4.)) - (2.*dMult-1.)/((dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)) ;//Re[<5>_{3n,n|2n,n,n}] //OK!
721 fQCorrelations->Fill(18.,five2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
722 fQCorrelations->Fill(19.,five2n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
723 fQCorrelations->Fill(20.,five3n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
724 fQCorrelations->Fill(21.,five4n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
727 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
728 // !!!! to be removed: temporary fix !!!!
731 two1n1n = (pow(afvQvector1n.Mod(),2.)-dMult)/(dMult*(dMult-1.));
733 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
736 Double_t six1n1n1n1n1n1n=0., six2n2n1n1n1n1n=0., six3n1n1n1n1n1n=0., six2n1n1n2n1n1n=0.;
739 //fill the common control histogram (6th order):
740 fCommonHists6th->FillControlHistograms(anEvent);
742 six1n1n1n1n1n1n = (pow(afvQvector1n.Mod(),6.)+9.*xQ2nQ1nQ2nstarQ1nstar-6.*reQ2nQ1nQ1nstarQ1nstarQ1nstar)/(dMult*(dMult-1)*(dMult-2)*(dMult-3)*(dMult-4)*(dMult-5))+4.*(reQ3nQ1nstarQ1nstarQ1nstar-3.*reQ3nQ2nstarQ1nstar)/(dMult*(dMult-1)*(dMult-2)*(dMult-3)*(dMult-4)*(dMult-5))+2.*(9.*(dMult-4.)*reQ2nQ1nstarQ1nstar+2.*pow(afvQvector3n.Mod(),2.))/(dMult*(dMult-1)*(dMult-2)*(dMult-3)*(dMult-4)*(dMult-5))-9.*(pow(afvQvector1n.Mod(),4.)+pow(afvQvector2n.Mod(),2.))/(dMult*(dMult-1)*(dMult-2)*(dMult-3)*(dMult-5))+(18.*pow(afvQvector1n.Mod(),2.))/(dMult*(dMult-1)*(dMult-3)*(dMult-4))-(6.)/((dMult-1)*(dMult-2)*(dMult-3));//<6>_{n,n,n|n,n,n}
744 six2n1n1n2n1n1n = (xQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(2.*five2n2n2n1n1n+4.*five2n1n1n1n1n+4.*five3n1n2n1n1n+4.*four2n1n2n1n+1.*four1n1n1n1n)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(4.*four1n1n1n1n+4.*two1n1n+2.*three2n1n1n+2.*three2n1n1n+4.*four3n1n1n1n+8.*three2n1n1n+2.*four4n2n1n1n+4.*four2n1n2n1n+2.*two2n2n+8.*four2n1n2n1n+4.*four3n1n3n1n+8.*three3n2n1n+4.*four3n1n2n2n+4.*four1n1n1n1n+4.*four2n1n2n1n+1.*four2n2n2n2n)-dMult*(dMult-1.)*(dMult-2.)*(2.*three2n1n1n+8.*two1n1n+4.*two1n1n+2.+4.*two1n1n+4.*three2n1n1n+2.*two2n2n+4.*three2n1n1n+8.*three3n2n1n+8.*two2n2n+4.*three4n3n1n+4.*two3n3n+4.*three3n2n1n+4.*two1n1n+8.*three2n1n1n+4.*two1n1n+4.*three3n2n1n+4.*three2n1n1n+2.*two2n2n+4.*three3n2n1n+2.*three4n2n2n)-dMult*(dMult-1.)*(4.*two1n1n+4.+4.*two1n1n+2.*two2n2n+1.+4.*two1n1n+4.*two2n2n+4.*two3n3n+ 1.+2.*two2n2n+1.*two4n4n)-dMult)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));//<6>_{2n,n,n|2n,n,n}
746 six2n2n1n1n1n1n = (reQ2nQ2nQ1nstarQ1nstarQ1nstarQ1nstar-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(five4n1n1n1n1n+8.*five2n1n1n1n1n+6.*five2n2n2n1n1n)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(4.*four3n1n1n1n+6.*four4n2n1n1n+12.*three2n1n1n+12.*four1n1n1n1n+24.*four2n1n2n1n+4.*four3n1n2n2n+3.*four2n2n2n2n)-dMult*(dMult-1.)*(dMult-2.)*(6.*three2n1n1n+12.*three3n2n1n+4.*three4n3n1n+3.*three4n2n2n+8.*three2n1n1n+24.*two1n1n+12.*two2n2n+12.*three2n1n1n+8.*three3n2n1n+1.*three4n2n2n)-dMult*(dMult-1.)*(4.*two1n1n+6.*two2n2n+4.*two3n3n+1.*two4n4n+2.*two2n2n+8.*two1n1n+6.)-dMult)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));//<6>_{2n,2n,n|n,n,n}
748 six3n1n1n1n1n1n = (reQ3nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(five4n1n1n1n1n+4.*five2n1n1n1n1n+6.*five3n1n2n1n1n+4.*four3n1n1n1n)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(4.*four3n1n1n1n+6.*four4n2n1n1n+6.*four1n1n1n1n+12.*three2n1n1n+12.*four2n1n2n1n+6.*four3n1n1n1n+12.*three3n2n1n+4.*four3n1n3n1n+3.*four3n1n2n2n)-dMult*(dMult-1.)*(dMult-2.)*(6.*three2n1n1n+12.*three3n2n1n+4.*three4n3n1n+3.*three4n2n2n+4.*two1n1n+12.*two1n1n+6.*three2n1n1n+12.*three2n1n1n+4.*three3n2n1n+12.*two2n2n+4.*three3n2n1n+4.*two3n3n+1.*three4n3n1n+6.*three3n2n1n)-dMult*(dMult-1.)*(4.*two1n1n+6.*two2n2n+4.*two3n3n+1.*two4n4n+1.*two1n1n+4.+6.*two1n1n+4.*two2n2n+1.*two3n3n)-dMult)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));//<6>_{3n,n|n,n,n,n}
750 fQCorrelations->Fill(23.,six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
751 fQCorrelations->Fill(24.,six2n1n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
752 fQCorrelations->Fill(25.,six2n2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
753 fQCorrelations->Fill(26.,six3n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
755 f6pDistribution->Fill(six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
757 fQProduct->Fill(1.,two1n1n*six1n1n1n1n1n1n,dMult*(dMult-1.)*dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
758 fQProduct->Fill(3.,four1n1n1n1n*six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
762 Double_t seven2n1n1n1n1n1n1n=0.;
765 seven2n1n1n1n1n1n1n = (reQ2nQ1nQ1nQ1nstarQ1nstarQ1nstarQ1nstar-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(2.*six3n1n1n1n1n1n+4.*six1n1n1n1n1n1n+1.*six2n2n1n1n1n1n+6.*six2n1n1n2n1n1n+8.*five2n1n1n1n1n)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(1.*five4n1n1n1n1n +8.*five2n1n1n1n1n+8.*four3n1n1n1n+12.*five3n1n2n1n1n+4.*five2n1n1n1n1n+3.*five2n2n2n1n1n+6.*five2n2n2n1n1n+6.*four1n1n1n1n+24.*four1n1n1n1n+12.*five2n1n1n1n1n+12.*five2n1n1n1n1n+12.*three2n1n1n+24.*four2n1n2n1n+4.*five3n1n2n1n1n+4.*five2n1n1n1n1n)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(4.*four3n1n1n1n+6.*four4n2n1n1n+12.*four1n1n1n1n+24.*three2n1n1n+24.*four2n1n2n1n+12.*four3n1n1n1n+24.*three3n2n1n+8.*four3n1n3n1n+6.*four3n1n2n2n+6.*three2n1n1n+12.*four1n1n1n1n+12.*four2n1n2n1n+6.*three2n1n1n+12.*four2n1n2n1n+4.*four3n1n2n2n+3.*four2n2n2n2n+4.*four1n1n1n1n+6.*three2n1n1n+24.*two1n1n+24.*four1n1n1n1n+4.*four3n1n1n1n+24.*two1n1n+24.*three2n1n1n+12.*two2n2n+24.*three2n1n1n+12.*four2n1n2n1n+8.*three3n2n1n+8.*four2n1n2n1n+1.*four4n2n1n1n)-dMult*(dMult-1.)*(dMult-2.)*(6.*three2n1n1n+1.*three2n1n1n+8.*two1n1n+12.*three3n2n1n+24.*two1n1n+12.*three2n1n1n+4.*three2n1n1n+8.*two1n1n+4.*three4n3n1n+24.*three2n1n1n+8.*three3n2n1n+12.*two1n1n+12.*two1n1n+3.*three4n2n2n+24.*two2n2n+6.*two2n2n+12.+12.*three3n2n1n+8.*two3n3n+12.*three2n1n1n+24.*two1n1n+4.*three3n2n1n+8.*three3n2n1n+2.*three4n3n1n+12.*two1n1n+8.*three2n1n1n+4.*three2n1n1n+2.*three3n2n1n+6.*two2n2n+8.*two2n2n+1.*three4n2n2n+4.*three3n2n1n+6.*three2n1n1n)-dMult*(dMult-1.)*(4.*two1n1n+2.*two1n1n+6.*two2n2n+8.+1.*two2n2n+4.*two3n3n+12.*two1n1n+4.*two1n1n+1.*two4n4n+8.*two2n2n+6.+2.*two3n3n+4.*two1n1n+1.*two2n2n)-dMult)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.));
767 fQCorrelations->Fill(28.,seven2n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.));
771 Double_t eight1n1n1n1n1n1n1n1n=0.;
774 //fill the common control histogram (8th order):
775 fCommonHists8th->FillControlHistograms(anEvent);
777 eight1n1n1n1n1n1n1n1n = (pow(afvQvector1n.Mod(),8)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(12.*seven2n1n1n1n1n1n1n+16.*six1n1n1n1n1n1n)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(8.*six3n1n1n1n1n1n+48.*six1n1n1n1n1n1n+6.*six2n2n1n1n1n1n+96.*five2n1n1n1n1n+72.*four1n1n1n1n+36.*six2n1n1n2n1n1n)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(2.*five4n1n1n1n1n+32.*five2n1n1n1n1n+36.*four1n1n1n1n+32.*four3n1n1n1n+48.*five2n1n1n1n1n+48.*five3n1n2n1n1n+144.*five2n1n1n1n1n+288.*four1n1n1n1n+36.*five2n2n2n1n1n+144.*three2n1n1n+96.*two1n1n+144.*four2n1n2n1n)-dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(8.*four3n1n1n1n+48.*four1n1n1n1n+12.*four4n2n1n1n+96.*four2n1n2n1n+96.*three2n1n1n+72.*three2n1n1n+144.*two1n1n+16.*four3n1n3n1n+48.*four3n1n1n1n+144.*four1n1n1n1n+72.*four1n1n1n1n+96.*three3n2n1n+24.*four3n1n2n2n+144.*four2n1n2n1n+288.*two1n1n+288.*three2n1n1n+9.*four2n2n2n2n+72.*two2n2n+24.)-dMult*(dMult-1.)*(dMult-2.)*(12.*three2n1n1n+16.*two1n1n+24.*three3n2n1n+48.*three2n1n1n+96.*two1n1n+8.*three4n3n1n+32.*three3n2n1n+96.*three2n1n1n+144.*two1n1n+6.*three4n2n2n+96.*two2n2n+36.*two2n2n+72.+48.*three3n2n1n+16.*two3n3n+72.*three2n1n1n+144.*two1n1n)-dMult*(dMult-1.)*(8.*two1n1n+12.*two2n2n+16.+8.*two3n3n+48.*two1n1n+1.*two4n4n+16.*two2n2n+18.)-dMult)/(dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
779 fQCorrelations->Fill(30.,eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
781 f8pDistribution->Fill(eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
783 //---------------------------------------------------------------------------------------------------------
788 //---------------------------------------------------------------------------------------------------------
790 Bool_t useWeights = fUsePhiWeights||fUsePtWeights||fUseEtaWeights;
792 TH1F *phiWeights = NULL; // histogram with phi weights
793 TH1D *ptWeights = NULL; // histogram with pt weights
794 TH1D *etaWeights = NULL; // histogram with eta weights
800 cout<<" WARNING: fWeightsList is NULL pointer. "<<endl;
805 phiWeights = dynamic_cast<TH1F *>(fWeightsList->FindObject("phi_weights"));
808 cout<<" WARNING: couldn't access the histogram with phi weights. "<<endl;
814 ptWeights = dynamic_cast<TH1D *>(fWeightsList->FindObject("pt_weights"));
817 cout<<" WARNING: couldn't access the histogram with pt weights. "<<endl;
823 etaWeights = dynamic_cast<TH1D *>(fWeightsList->FindObject("eta_weights"));
826 cout<<" WARNING: couldn't access the histogram with eta weights. "<<endl;
833 Double_t dBinWidthPt=0.;
834 Double_t dBinWidthEta=0.;
838 dBinWidthPt=(fPtMax-fPtMin)/fnBinsPt;
842 dBinWidthEta=(fEtaMax-fEtaMin)/fnBinsEta;
849 if(phiWeights) nBinsPhi = phiWeights->GetNbinsX();
855 Double_t dBinWidthPtW = ptWeights->GetBinWidth(1); // assuming that all bins have the same width
856 if(dBinWidthPtW != dBinWidthPt)
858 cout<<" WARNING: dBinWidthPtW != dBinWidthPt in AFAWQC::Make()"<<endl;
861 Double_t dPtMinW = (ptWeights->GetXaxis())->GetXmin();
862 if(dPtMinW != fPtMin)
864 cout<<" WARNING: dPtMinW != fPtMin in AFAWQC::Make()"<<endl;
873 Double_t dBinWidthEtaW = etaWeights->GetBinWidth(1); // assuming that all bins have the same width
874 if(dBinWidthEtaW != dBinWidthEta)
876 cout<<" WARNING: dBinWidthEtaW != dBinWidthEta in AFAWQC::Make()"<<endl;
879 Double_t dEtaMinW = (etaWeights->GetXaxis())->GetXmin();
880 if(dEtaMinW != fEtaMin)
882 cout<<" WARNING: dEtaMinW != fEtaMin in AFAWQC::Make()"<<endl;
887 } // end of if(weightsList)
889 Double_t wPhi = 1.; // phi weight
890 Double_t wPt = 1.; // pt weight
891 Double_t wEta = 1.; // eta weight
897 Double_t dQnkX[4][8] = {{0.}}; // sum_{i=1}^{M} w_i^k cos(n phi_i)
898 Double_t dQnkY[4][8] = {{0.}}; // sum_{i=1}^{M} w_i^k sin(n phi_i)
899 Double_t dSnk[4][8] = {{0.}}; //(sum_{i=1}^{M} w_i^k)^n
901 for(Int_t i=0;i<nPrim;i++) // loop over all particles
903 fTrack=anEvent->GetTrack(i);
906 if(fTrack->InRPSelection())
908 dPhi = fTrack->Phi();
910 dEta = fTrack->Eta();
912 // determine Phi weight:
913 if(phiWeights && nBinsPhi)
915 wPhi = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*nBinsPhi/TMath::TwoPi())));
917 // determine pt weight:
918 if(ptWeights && dBinWidthPt)
920 wPt = ptWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-fPtMin)/dBinWidthPt)));
922 // determine eta weight:
923 if(etaWeights && dBinWidthEta)
925 wEta = etaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-fEtaMin)/dBinWidthEta)));
928 // (Q_{n,k})_x, (Q_{n,k})_y and S_{n,k}
929 for(Int_t nn=0;nn<4;nn++)
931 for(Int_t k=0;k<8;k++)
933 dQnkX[nn][k]+=pow(wPhi*wPt*wEta,k+1)*TMath::Cos(2*(nn+1)*dPhi);
934 dQnkY[nn][k]+=pow(wPhi*wPt*wEta,k+1)*TMath::Sin(2*(nn+1)*dPhi);
935 dSnk[nn][k]+=pow(wPhi*wPt*wEta,k+1);
939 } // end of if (pTrack->InRPSelection())
940 } // end of if (pTrack)
941 else {cerr << "no particle!!!"<<endl;}
942 } // loop over particles
944 for(Int_t nn=0;nn<4;nn++)
946 for(Int_t k=0;k<8;k++)
948 dSnk[nn][k]=pow(dSnk[nn][k],nn+1);
952 //..............................................................................................
953 // Ms (introduced in order to simplify some Eqs. bellow)
954 Double_t dM11 = dSnk[1][0]-dSnk[0][1]; // dM11 = sum_{i,j=1,i!=j}^M w_i w_j
955 Double_t dM22 = dSnk[1][1]-dSnk[0][3]; // dM22 = sum_{i,j=1,i!=j}^M w_i^2 w_j^2
956 Double_t dM33 = dSnk[1][2]-dSnk[0][5]; // dM33 = sum_{i,j=1,i!=j}^M w_i^3 w_j^3
957 Double_t dM44 = dSnk[1][3]-dSnk[0][7]; // dM44 = sum_{i,j=1,i!=j}^M w_i^4 w_j^4
958 Double_t dM31 = dSnk[0][2]*dSnk[0][0]-dSnk[0][3]; // dM31 = sum_{i,j=1,i!=j}^M w_i^3 w_j
959 Double_t dM211 = dSnk[0][1]*dSnk[1][0]-2.*dSnk[0][2]*dSnk[0][0]-dSnk[1][1]+2.*dSnk[0][3]; // dM211 = sum_{i,j,k=1,i!=j!=k}^M w_i^2 w_j w_k
960 Double_t dM1111 = dSnk[3][0]-6.*dM211-4.*dM31-3.*dM22-dSnk[0][3]; // dM1111 = sum_{i,j,k,l=1,i!=j!=k!=l}^M w_i w_j w_k w_l
961 //..............................................................................................
963 //---------------------------------------------------------------------------------------------------------
965 // ***********************************************
966 // **** weighted multi-particle correlations: ****
967 // ***********************************************
969 // Remark 1: weighted multi-particle correlations calculated with Q-vectors are stored in fWeightedQCorrelations.
970 // Remark 2: binning of fWeightedQCorrelations is organized as follows:
973 //..............................................................................................
974 // 1st bin: weighted <2>_{n|n} = <w1 w2 cos( n*(phi1-phi2))>
975 // 2nd bin: weighted <2>_{2n|2n} = <w1^2 w2^2 cos(2n*(phi1-phi2))>
976 // 3rd bin: weighted <2>_{3n|3n} = <w1^3 w2^3 cos(3n*(phi1-phi2))>
977 // 4th bin: weighted <2>_{4n|4n} = <w1^4 w2^4 cos(4n*(phi1-phi2))>
978 // 5th bin: weighted <2>_{n|n} = <w1^3 w2 cos(n*(phi1-phi2))>
979 // 6th bin: weighted <2>_{n|n} = <w1 w2 w3^2 cos(n*(phi1-phi2))>
981 // 11th bin: weighted <3>_{2n|n,n} = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
983 // 21st bin: weighted <4>_{n,n|n,n} = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
984 //..............................................................................................
986 //..............................................................................................
987 // weighted 2-particle correlations:
988 Double_t two1n1nW1W1=0., two2n2nW2W2=0., two3n3nW3W3=0., two4n4nW4W4=0., two1n1nW3W1=0., two1n1nW2W1W1=0.;
990 if(nRP>1) // nRP = number of particles used to determine the reaction plane
994 two1n1nW1W1 = (pow(dQnkX[0][0],2)+pow(dQnkY[0][0],2)-dSnk[0][1])/dM11; // <2>_{n|n}=<w1 w2 cos(n*(phi1-phi2))>
995 fWeightedQCorrelations->Fill(0.,two1n1nW1W1,dM11);
999 two2n2nW2W2 = (pow(dQnkX[1][1],2)+pow(dQnkY[1][1],2)-dSnk[0][3])/dM22; // <2>_{2n|2n}=<w1^2 w2^2 cos(2n*(phi1-phi2))>
1000 fWeightedQCorrelations->Fill(1.,two2n2nW2W2,dM22);
1004 two3n3nW3W3 = (pow(dQnkX[2][2],2)+pow(dQnkY[2][2],2)-dSnk[0][5])/dM33; // <2>_{2n|2n}=<w1^3 w2^3 cos(3n*(phi1-phi2))>
1005 fWeightedQCorrelations->Fill(2.,two3n3nW3W3,dM33);
1009 two4n4nW4W4 = (pow(dQnkX[3][3],2)+pow(dQnkY[3][3],2)-dSnk[0][7])/dM44; // <2>_{2n|2n}=<w1^4 w2^4 cos(4n*(phi1-phi2))>
1010 fWeightedQCorrelations->Fill(3.,two4n4nW4W4,dM44);
1014 two1n1nW3W1 = (dQnkX[0][2]*dQnkX[0][0]+dQnkY[0][2]*dQnkY[0][0]-dSnk[0][3])/dM31; // <2>_{n|n}=<w1^3 w2 cos(n*(phi1-phi2))>
1015 fWeightedQCorrelations->Fill(4.,two1n1nW3W1,dM31);
1019 two1n1nW2W1W1 = (dSnk[0][1]*dM11*two1n1nW1W1-2.*dM31*two1n1nW3W1)/dM211; // <2>_{n|n}=<w1^2 w2 w3 cos(n*(phi1-phi2))>
1020 fWeightedQCorrelations->Fill(5.,two1n1nW2W1W1,dM211);
1022 } // end of if(nRP>1)
1023 //..............................................................................................
1025 //..............................................................................................
1026 // weighted 3-particle correlations:
1027 Double_t three2n1n1nW2W1W1=0.;
1029 if(nRP>2) // nRP = number of particles used to determine the reaction plane
1033 three2n1n1nW2W1W1 = (pow(dQnkX[0][0],2.)*dQnkX[1][1]+2.*dQnkX[0][0]*dQnkY[0][0]*dQnkY[1][1]-pow(dQnkY[0][0],2.)*dQnkX[1][1]-2.*dM31*two1n1nW3W1-dM22*two2n2nW2W2-dSnk[0][3])/dM211;
1034 fWeightedQCorrelations->Fill(10.,three2n1n1nW2W1W1,dM211);
1036 } // end of if(nRP>2)
1037 //..............................................................................................
1039 //..............................................................................................
1040 // weighted 4-particle correlations:
1041 Double_t four1n1n1n1nW1W1W1W1=0.;
1043 if(nRP>3) // nRP = number of particles used to determine the reaction plane
1047 four1n1n1n1nW1W1W1W1 = (pow(pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.),2)-2.*dM211*three2n1n1nW2W1W1-4.*dM211*two1n1nW2W1W1-4.*dM31*two1n1nW3W1-dM22*two2n2nW2W2-2.*dM22-dSnk[0][3])/dM1111;
1048 fWeightedQCorrelations->Fill(20.,four1n1n1n1nW1W1W1W1,dM1111);
1050 } // end of if(nRP>3)
1051 //..............................................................................................
1056 //---------------------------------------------------------------------------------------------------------
1058 // *******************************************************
1059 // **** weighted reduced multi-particle correlations: ****
1060 // *******************************************************
1063 TProfile *ptReq1nPrime = new TProfile("ptReq1nPrime","Re[q_{n}^{''}]",fnBinsPt,fPtMin,fPtMax,"s");
1064 TProfile *ptImq1nPrime = new TProfile("ptImq1nPrime","Im[q_{n}^{''}]",fnBinsPt,fPtMin,fPtMax,"s");
1065 TProfile *ptReq2nPrime = new TProfile("ptReq2nPrime","Re[q_{2n}^{''}]",fnBinsPt,fPtMin,fPtMax,"s");
1066 TProfile *ptImq2nPrime = new TProfile("ptImq2nPrime","Im[q_{2n}^{''}]",fnBinsPt,fPtMin,fPtMax,"s");
1068 TProfile *ptReq1nPrimePrime = new TProfile("ptReq1nPrimePrime","Re[q_{n}^{''}]",fnBinsPt,fPtMin,fPtMax,"s");
1069 TProfile *ptImq1nPrimePrime = new TProfile("ptImq1nPrimePrime","Im[q_{n}^{''}]",fnBinsPt,fPtMin,fPtMax,"s");
1070 TProfile *ptReq2nPrimePrime = new TProfile("ptReq2nPrimePrime","Re[q_{2n}^{''}]",fnBinsPt,fPtMin,fPtMax,"s");
1071 TProfile *ptImq2nPrimePrime = new TProfile("ptImq2nPrimePrime","Im[q_{2n}^{''}]",fnBinsPt,fPtMin,fPtMax,"s");
1073 TProfile *req1nW2PrimePrimePt = new TProfile("req1nW2PrimePrimePt","#sum_{i=1}^{m''} w_{i}^{2} cos(n(#phi_{i}))''",fnBinsPt,fPtMin,fPtMax,"s");
1074 TProfile *imq1nW2PrimePrimePt = new TProfile("imq1nW2PrimePrimePt","#sum_{i=1}^{m''} w_{i}^{2} sin(n(#phi_{i}))''",fnBinsPt,fPtMin,fPtMax,"s");
1075 TProfile *req2nW1PrimePrimePt = new TProfile("req2nW1PrimePrimePt","#sum_{i=1}^{m''} w_{i} cos(2n(#phi_{i}))''",fnBinsPt,fPtMin,fPtMax,"s");
1076 TProfile *imq2nW1PrimePrimePt = new TProfile("imq2nW1PrimePrimePt","#sum_{i=1}^{m''} w_{i} sin(2n(#phi_{i}))''",fnBinsPt,fPtMin,fPtMax,"s");
1078 TProfile *sumOfW1upTomPrimePrimePt = new TProfile("sumOfW1upTomPrimePrimePt","#sum_{i=1}^{m''} w_{i}''",fnBinsPt,fPtMin,fPtMax,"s");
1079 TProfile *sumOfW2upTomPrimePrimePt = new TProfile("sumOfW2upTomPrimePrimePt","#sum_{i=1}^{m''} w_{i}^{2}''",fnBinsPt,fPtMin,fPtMax,"s");
1080 TProfile *sumOfW3upTomPrimePrimePt = new TProfile("sumOfW3upTomPrimePrimePt","#sum_{i=1}^{m''} w_{i}^{3}''",fnBinsPt,fPtMin,fPtMax,"s");
1083 TProfile *etaReq1nPrime = new TProfile("etaReq1nPrime","Re[q_{n}^{''}]",fnBinsEta,fEtaMin,fEtaMax,"s");
1084 TProfile *etaImq1nPrime = new TProfile("etaImq1nPrime","Im[q_{n}^{''}]",fnBinsEta,fEtaMin,fEtaMax,"s");
1085 TProfile *etaReq2nPrime = new TProfile("etaReq2nPrime","Re[q_{2n}^{''}]",fnBinsEta,fEtaMin,fEtaMax,"s");
1086 TProfile *etaImq2nPrime = new TProfile("etaImq2nPrime","Im[q_{2n}^{''}]",fnBinsEta,fEtaMin,fEtaMax,"s");
1088 TProfile *etaReq1nPrimePrime = new TProfile("etaReq1nPrimePrime","Re[q_{n}^{''}]",fnBinsEta,fEtaMin,fEtaMax,"s");
1089 TProfile *etaImq1nPrimePrime = new TProfile("etaImq1nPrimePrime","Im[q_{n}^{''}]",fnBinsEta,fEtaMin,fEtaMax,"s");
1090 TProfile *etaReq2nPrimePrime = new TProfile("etaReq2nPrimePrime","Re[q_{2n}^{''}]",fnBinsEta,fEtaMin,fEtaMax,"s");
1091 TProfile *etaImq2nPrimePrime = new TProfile("etaImq2nPrimePrime","Im[q_{2n}^{''}]",fnBinsEta,fEtaMin,fEtaMax,"s");
1093 TProfile *req1nW2PrimePrimeEta = new TProfile("req1nW2PrimePrimeEta","#sum_{i=1}^{m''} w_{i}^{2} cos(n(#phi_{i}))''",fnBinsEta,fEtaMin,fEtaMax,"s");
1094 TProfile *imq1nW2PrimePrimeEta = new TProfile("imq1nW2PrimePrimeEta","#sum_{i=1}^{m''} w_{i}^{2} sin(n(#phi_{i}))''",fnBinsEta,fEtaMin,fEtaMax,"s");
1095 TProfile *req2nW1PrimePrimeEta = new TProfile("req2nW1PrimePrimeEta","#sum_{i=1}^{m''} w_{i} cos(2n(#phi_{i}))''",fnBinsEta,fEtaMin,fEtaMax,"s");
1096 TProfile *imq2nW1PrimePrimeEta = new TProfile("imq2nW1PrimePrimeEta","#sum_{i=1}^{m''} w_{i} sin(2n(#phi_{i}))''",fnBinsEta,fEtaMin,fEtaMax,"s");
1098 TProfile *sumOfW1upTomPrimePrimeEta = new TProfile("sumOfW1upTomPrimePrimeEta","#sum_{i=1}^{m''} w_{i}''",fnBinsEta,fEtaMin,fEtaMax,"s");
1099 TProfile *sumOfW2upTomPrimePrimeEta = new TProfile("sumOfW2upTomPrimePrimeEta","#sum_{i=1}^{m''} w_{i}^{2}''",fnBinsEta,fEtaMin,fEtaMax,"s");
1100 TProfile *sumOfW3upTomPrimePrimeEta = new TProfile("sumOfW3upTomPrimePrimeEta","#sum_{i=1}^{m''} w_{i}^{3}''",fnBinsEta,fEtaMin,fEtaMax,"s");
1103 TProfile *ptReq1n = new TProfile("ptReq1n","Re[q_{n}]",fnBinsPt,fPtMin,fPtMax,"s");
1104 TProfile *ptImq1n = new TProfile("ptImq1n","Im[q_{n}]",fnBinsPt,fPtMin,fPtMax,"s");
1105 TProfile *ptReq2n = new TProfile("ptReq2n","Re[q_{2n}]",fnBinsPt,fPtMin,fPtMax,"s");
1106 TProfile *ptImq2n = new TProfile("ptImq2n","Im[q_{2n}]",fnBinsPt,fPtMin,fPtMax,"s");
1108 TProfile *req1nW2Pt = new TProfile("req1nW2Pt","#sum_{i=1}^{m} w_{i}^{2} cos(n(#phi_{i}))''",fnBinsPt,fPtMin,fPtMax,"s");
1109 TProfile *imq1nW2Pt = new TProfile("imq1nW2Pt","#sum_{i=1}^{m} w_{i}^{2} sin(n(#phi_{i}))''",fnBinsPt,fPtMin,fPtMax,"s");
1110 TProfile *req2nW1Pt = new TProfile("req2nW1Pt","#sum_{i=1}^{m} w_{i} cos(2n(#phi_{i}))''",fnBinsPt,fPtMin,fPtMax,"s");
1111 TProfile *imq2nW1Pt = new TProfile("imq2nW1Pt","#sum_{i=1}^{m} w_{i} sin(2n(#phi_{i}))''",fnBinsPt,fPtMin,fPtMax,"s");
1113 TProfile *sumOfW1upTomPt = new TProfile("sumOfW1upTomPt","#sum_{i=1}^{m} w_{i}''",fnBinsPt,fPtMin,fPtMax,"s");
1114 TProfile *sumOfW2upTomPt = new TProfile("sumOfW2upTomPt","#sum_{i=1}^{m} w_{i}^{2}''",fnBinsPt,fPtMin,fPtMax,"s");
1115 TProfile *sumOfW3upTomPt = new TProfile("sumOfW3upTomPt","#sum_{i=1}^{m} w_{i}^{3}''",fnBinsPt,fPtMin,fPtMax,"s");
1118 TProfile *etaReq1n = new TProfile("etaReq1n","Re[q_{n}]",fnBinsEta,fEtaMin,fEtaMax,"s");
1119 TProfile *etaImq1n = new TProfile("etaImq1n","Im[q_{n}]",fnBinsEta,fEtaMin,fEtaMax,"s");
1120 TProfile *etaReq2n = new TProfile("etaReq2n","Re[q_{2n}]",fnBinsEta,fEtaMin,fEtaMax,"s");
1121 TProfile *etaImq2n = new TProfile("etaImq2n","Im[q_{2n}]",fnBinsEta,fEtaMin,fEtaMax,"s");
1123 TProfile *req1nW2Eta = new TProfile("req1nW2Eta","#sum_{i=1}^{m} w_{i}^{2} cos(n(#phi_{i}))''",fnBinsEta,fEtaMin,fEtaMax,"s");
1124 TProfile *imq1nW2Eta = new TProfile("imq1nW2Eta","#sum_{i=1}^{m} w_{i}^{2} sin(n(#phi_{i}))''",fnBinsEta,fEtaMin,fEtaMax,"s");
1125 TProfile *req2nW1Eta = new TProfile("req2nW1Eta","#sum_{i=1}^{m} w_{i} cos(2n(#phi_{i}))''",fnBinsEta,fEtaMin,fEtaMax,"s");
1126 TProfile *imq2nW1Eta = new TProfile("imq2nW1Eta","#sum_{i=1}^{m} w_{i} sin(2n(#phi_{i}))''",fnBinsEta,fEtaMin,fEtaMax,"s");
1128 TProfile *sumOfW1upTomEta = new TProfile("sumOfW1upTomEta","#sum_{i=1}^{m} w_{i}''",fnBinsEta,fEtaMin,fEtaMax,"s");
1129 TProfile *sumOfW2upTomEta = new TProfile("sumOfW2upTomEta","#sum_{i=1}^{m} w_{i}^{2}''",fnBinsEta,fEtaMin,fEtaMax,"s");
1130 TProfile *sumOfW3upTomEta = new TProfile("sumOfW3upTomEta","#sum_{i=1}^{m} w_{i}^{3}''",fnBinsEta,fEtaMin,fEtaMax,"s");
1132 for(Int_t i=0;i<nPrim;i++) // loop over all particles
1134 fTrack=anEvent->GetTrack(i);
1137 if(fTrack->InPOISelection()) // checking if particle is POI
1139 if(fTrack->InRPSelection()) // checking if particle is both POI and RP
1141 // get azimuthal angle, momentum and pseudorapidity of a particle:
1142 dPhi = fTrack->Phi();
1144 dEta = fTrack->Eta();
1148 nBinsPhi = phiWeights->GetNbinsX();
1151 wPhi = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*nBinsPhi/TMath::TwoPi())));
1159 wPt = ptWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-fPtMin)/dBinWidthPt)));
1167 wEta = etaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-fEtaMin)/dBinWidthEta)));
1171 ptReq1nPrimePrime->Fill(dPt,cos(n*dPhi),1.);
1172 ptImq1nPrimePrime->Fill(dPt,sin(n*dPhi),1.);
1173 ptReq2nPrimePrime->Fill(dPt,cos(2.*n*dPhi),1.);
1174 ptImq2nPrimePrime->Fill(dPt,sin(2.*n*dPhi),1.);
1176 req1nW2PrimePrimePt->Fill(dPt,cos(n*dPhi),pow(wPhi*wPt*wEta,2.));
1177 imq1nW2PrimePrimePt->Fill(dPt,sin(n*dPhi),pow(wPhi*wPt*wEta,2.));
1178 req2nW1PrimePrimePt->Fill(dPt,cos(2.*n*dPhi),wPhi*wPt*wEta);
1179 imq2nW1PrimePrimePt->Fill(dPt,sin(2.*n*dPhi),wPhi*wPt*wEta);
1180 sumOfW1upTomPrimePrimePt->Fill(dPt,wPhi*wPt*wEta,1.);
1181 sumOfW2upTomPrimePrimePt->Fill(dPt,pow(wPhi*wPt*wEta,2),1.);
1182 sumOfW3upTomPrimePrimePt->Fill(dPt,pow(wPhi*wPt*wEta,3),1.);
1185 etaReq1nPrimePrime->Fill(dEta,cos(n*dPhi),1.);
1186 etaImq1nPrimePrime->Fill(dEta,sin(n*dPhi),1.);
1187 etaReq2nPrimePrime->Fill(dEta,cos(2.*n*dPhi),1.);
1188 etaImq2nPrimePrime->Fill(dEta,sin(2.*n*dPhi),1.);
1190 req1nW2PrimePrimeEta->Fill(dEta,cos(n*dPhi),pow(wPhi*wPt*wEta,2.));
1191 imq1nW2PrimePrimeEta->Fill(dEta,sin(n*dPhi),pow(wPhi*wPt*wEta,2.));
1192 req2nW1PrimePrimeEta->Fill(dEta,cos(2.*n*dPhi),wPhi*wPt*wEta);
1193 imq2nW1PrimePrimeEta->Fill(dEta,sin(2.*n*dPhi),wPhi*wPt*wEta);
1194 sumOfW1upTomPrimePrimeEta->Fill(dEta,wPhi*wPt*wEta,1.);
1195 sumOfW2upTomPrimePrimeEta->Fill(dEta,pow(wPhi*wPt*wEta,2),1.);
1196 sumOfW3upTomPrimePrimeEta->Fill(dEta,pow(wPhi*wPt*wEta,3),1.);
1198 }else if(!(fTrack->InRPSelection())) // checking if particles is POI and not RP
1200 // get azimuthal angle, momentum and pseudorapidity of a particle:
1201 dPhi = fTrack->Phi();
1203 dEta = fTrack->Eta();
1205 ptReq1nPrime->Fill(dPt,cos(n*dPhi),1.);
1206 ptImq1nPrime->Fill(dPt,sin(n*dPhi),1.);
1207 ptReq2nPrime->Fill(dPt,cos(2.*n*dPhi),1.);
1208 ptImq2nPrime->Fill(dPt,sin(2.*n*dPhi),1.);
1211 etaReq1nPrime->Fill(dEta,cos(n*dPhi),1.);
1212 etaImq1nPrime->Fill(dEta,sin(n*dPhi),1.);
1213 etaReq2nPrime->Fill(dEta,cos(2.*n*dPhi),1.);
1214 etaImq2nPrime->Fill(dEta,sin(2.*n*dPhi),1.);
1216 } // end of else if(!(fTrack->InRPSelection())) // checking if particles is POI and not RP
1217 } // end of if(fTrack->InPOISelection()) // checking if particle is POI
1219 if(fTrack->InRPSelection()) // checking if particles is only RP:
1221 dPhi = fTrack->Phi();
1223 dEta = fTrack->Eta();
1228 nBinsPhi = phiWeights->GetNbinsX();
1231 wPhi = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*nBinsPhi/TMath::TwoPi())));
1239 wPt = ptWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-fPtMin)/dBinWidthPt)));
1247 wEta = etaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-fEtaMin)/dBinWidthEta)));
1251 ptReq1n->Fill(dPt,cos(n*dPhi),1.);
1252 ptImq1n->Fill(dPt,sin(n*dPhi),1.);
1253 ptReq2n->Fill(dPt,cos(2.*n*dPhi),1.);
1254 ptImq2n->Fill(dPt,sin(2.*n*dPhi),1.);
1256 req1nW2Pt->Fill(dPt,cos(n*dPhi),pow(wPhi*wPt*wEta,2.));
1257 imq1nW2Pt->Fill(dPt,sin(n*dPhi),pow(wPhi*wPt*wEta,2.));
1258 req2nW1Pt->Fill(dPt,cos(2.*n*dPhi),wPhi*wPt*wEta);
1259 imq2nW1Pt->Fill(dPt,sin(2.*n*dPhi),wPhi*wPt*wEta);
1260 sumOfW1upTomPt->Fill(dPt,wPhi*wPt*wEta,1.);
1261 sumOfW2upTomPt->Fill(dPt,pow(wPhi*wPt*wEta,2),1.);
1262 sumOfW3upTomPt->Fill(dPt,pow(wPhi*wPt*wEta,3),1.);
1265 etaReq1n->Fill(dEta,cos(n*dPhi),1.);
1266 etaImq1n->Fill(dEta,sin(n*dPhi),1.);
1267 etaReq2n->Fill(dEta,cos(2.*n*dPhi),1.);
1268 etaImq2n->Fill(dEta,sin(2.*n*dPhi),1.);
1270 req1nW2Eta->Fill(dEta,cos(n*dPhi),pow(wPhi*wPt*wEta,2.));
1271 imq1nW2Eta->Fill(dEta,sin(n*dPhi),pow(wPhi*wPt*wEta,2.));
1272 req2nW1Eta->Fill(dEta,cos(2.*n*dPhi),wPhi*wPt*wEta);
1273 imq2nW1Eta->Fill(dEta,sin(2.*n*dPhi),wPhi*wPt*wEta);
1274 sumOfW1upTomEta->Fill(dEta,wPhi*wPt*wEta,1.);
1275 sumOfW2upTomEta->Fill(dEta,pow(wPhi*wPt*wEta,2),1.);
1276 sumOfW3upTomEta->Fill(dEta,pow(wPhi*wPt*wEta,3),1.);
1277 } // end of if(fTrack->InRPSelection()) // checking if particles is only RP:
1278 } // end of if(fTrack}
1279 } // end of for(Int_t i=0;i<nPrim;i++)
1281 //...........................................................................................................
1282 // PrimePrime Pt POI
1283 Double_t qxPrimePrimePtPOI=0.,qyPrimePrimePtPOI=0.,q2xPrimePrimePtPOIHere=0.,q2yPrimePrimePtPOIHere=0.;//add comments for these variable
1284 Double_t qxW2PrimePrimePtPOI=0.,qyW2PrimePrimePtPOI=0.,q2xW1PrimePrimePtPOI=0.,q2yW1PrimePrimePtPOI=0.;//add comments for these variable
1285 Double_t dS11mPrimePrimePtPOI=0.; // to be improved (name)
1286 Double_t dS12mPrimePrimePtPOI=0.; // to be improved (name)
1287 Double_t dS13mPrimePrimePtPOI=0.; // to be improved (name)
1288 Double_t mPrimePrimePtPOI=0.; // to be improved (name)
1290 Double_t dM1pp11PtPOI=0.; // to be improved (name)
1291 Double_t dM0pp111PtPOI=0.; // to be improved (name)
1292 Double_t dM0pp12PtPOI=0.;
1293 Double_t dM2pp1PtPOI=0.;
1294 Double_t dM1pp2PtPOI=0.;
1295 Double_t dM0pp3PtPOI=0.;
1298 Double_t qxPrimePtPOI=0.,qyPrimePtPOI=0.;
1299 Double_t mPrimePtPOI=0.;
1300 Double_t dM0p111PtPOI=0.; // to be improved (name)
1302 for(Int_t bin=1;bin<(fnBinsPt+1);bin++) // loop over pt-bins
1305 qxPrimePrimePtPOI = (ptReq1nPrimePrime->GetBinContent(bin))*(ptReq1nPrimePrime->GetBinEntries(bin));
1306 qyPrimePrimePtPOI = (ptImq1nPrimePrime->GetBinContent(bin))*(ptImq1nPrimePrime->GetBinEntries(bin));
1307 q2xPrimePrimePtPOIHere = (ptReq2nPrimePrime->GetBinContent(bin))*(ptReq2nPrimePrime->GetBinEntries(bin));
1308 q2yPrimePrimePtPOIHere = (ptImq2nPrimePrime->GetBinContent(bin))*(ptImq2nPrimePrime->GetBinEntries(bin));
1310 qxW2PrimePrimePtPOI = (req1nW2PrimePrimePt->GetBinContent(bin))*(req1nW2PrimePrimePt->GetBinEntries(bin));
1311 qyW2PrimePrimePtPOI = (imq1nW2PrimePrimePt->GetBinContent(bin))*(imq1nW2PrimePrimePt->GetBinEntries(bin));
1313 q2xW1PrimePrimePtPOI = (req2nW1PrimePrimePt->GetBinContent(bin))*(req2nW1PrimePrimePt->GetBinEntries(bin));
1314 q2yW1PrimePrimePtPOI = (imq2nW1PrimePrimePt->GetBinContent(bin))*(imq2nW1PrimePrimePt->GetBinEntries(bin));
1316 dS11mPrimePrimePtPOI = (sumOfW1upTomPrimePrimePt->GetBinContent(bin))*(sumOfW1upTomPrimePrimePt->GetBinEntries(bin));
1317 dS12mPrimePrimePtPOI = (sumOfW2upTomPrimePrimePt->GetBinContent(bin))*(sumOfW2upTomPrimePrimePt->GetBinEntries(bin));
1318 dS13mPrimePrimePtPOI = (sumOfW3upTomPrimePrimePt->GetBinContent(bin))*(sumOfW3upTomPrimePrimePt->GetBinEntries(bin));
1320 mPrimePrimePtPOI = sumOfW1upTomPrimePrimePt->GetBinEntries(bin); // to be improved
1322 dM1pp11PtPOI=dS11mPrimePrimePtPOI*(dSnk[1][0]-dSnk[0][1])-2.*dS12mPrimePrimePtPOI*dSnk[0][0]+2.*dS13mPrimePrimePtPOI;
1323 dM1pp2PtPOI=dS11mPrimePrimePtPOI*dSnk[0][1]-dS13mPrimePrimePtPOI;
1324 dM2pp1PtPOI=dS12mPrimePrimePtPOI*dSnk[0][0]-dS13mPrimePrimePtPOI;
1325 dM0pp3PtPOI=mPrimePrimePtPOI*dSnk[0][2]-dS13mPrimePrimePtPOI;
1326 dM0pp12PtPOI=mPrimePrimePtPOI*dSnk[0][0]*dSnk[0][1]-dM2pp1PtPOI-dM1pp2PtPOI-dM0pp3PtPOI-dS13mPrimePrimePtPOI;
1328 // recursive formula (OK)
1329 // dM0pp111PtPOI=mPrimePrimePtPOI*dSnk[2][0]-3.*dM1pp11PtPOI-3.*dM0pp12PtPOI-3.*dM2pp1PtPOI-3.*dM1pp2PtPOI-dM0pp3PtPOI-dS13mPrimePrimePtPOI;
1331 // direct formula (OK)
1332 dM0pp111PtPOI = mPrimePrimePtPOI*(dSnk[2][0]-3.*dSnk[0][0]*dSnk[0][1]+2.*dSnk[0][2])-3.*(dS11mPrimePrimePtPOI*(dSnk[1][0]-dSnk[0][1])+2.*(dS13mPrimePrimePtPOI-dS12mPrimePrimePtPOI*dSnk[0][0]));
1335 qxPrimePtPOI = (ptReq1nPrime->GetBinContent(bin))*(ptReq1nPrime->GetBinEntries(bin));
1336 qyPrimePtPOI = (ptImq1nPrime->GetBinContent(bin))*(ptImq1nPrime->GetBinEntries(bin));
1338 mPrimePtPOI = ptReq1nPrime->GetBinEntries(bin); // to be improved
1339 dM0p111PtPOI=mPrimePtPOI*(dSnk[2][0]-3.*dSnk[0][1]*dSnk[0][0]+2.*dSnk[0][2]);
1341 // 2-p the needed one
1342 Double_t two1n1nWPerPtBinPOI=0.;
1343 if((mPrimePrimePtPOI+mPrimePtPOI)*dSnk[0][0]-dS11mPrimePrimePtPOI>0)
1345 two1n1nWPerPtBinPOI = (qxPrimePrimePtPOI*dQnkX[0][0]+qyPrimePrimePtPOI*dQnkY[0][0]+qxPrimePtPOI*dQnkX[0][0]+qyPrimePtPOI*dQnkY[0][0]-dS11mPrimePrimePtPOI)/((mPrimePrimePtPOI+mPrimePtPOI)*dSnk[0][0]-dS11mPrimePrimePtPOI);
1347 f2WPerPtBin1n1nPOI->Fill(fPtMin+(bin-1)*dBinWidthPt,two1n1nWPerPtBinPOI,(mPrimePrimePtPOI+mPrimePtPOI)*dSnk[0][0]-dS11mPrimePrimePtPOI);
1350 // 2-p temporary one
1351 Double_t two1n1nW1ppW1W1PtPOI=0.; // <w1 w2 w3 cos(n(phi2-phi3))> // OK!!!
1354 two1n1nW1ppW1W1PtPOI = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*dS11mPrimePrimePtPOI-2.*(qxW2PrimePrimePtPOI*dQnkX[0][0]+qyW2PrimePrimePtPOI*dQnkY[0][0]) - dS11mPrimePrimePtPOI*dSnk[0][1]+2.*dS13mPrimePrimePtPOI)/dM1pp11PtPOI; // CORRECT !!! <w1 w2 w3 cos(n(phi2-phi3))>
1357 // 2-p temporary one
1358 Double_t two1npp1nW1W2PtPOI=0.; // <w2 w3^2 cos(n(psi1-phi2))> // OK !!!
1361 two1npp1nW1W2PtPOI = (dSnk[0][1]*(qxPrimePrimePtPOI*dQnkX[0][0]+qyPrimePrimePtPOI*dQnkY[0][0])-(qxW2PrimePrimePtPOI*dQnkX[0][0]+qyW2PrimePrimePtPOI*dQnkY[0][0])-dM1pp2PtPOI-(qxPrimePrimePtPOI*dQnkX[0][2]+qyPrimePrimePtPOI*dQnkY[0][2])+dS13mPrimePrimePtPOI)/dM0pp12PtPOI; // CORRECT !!! <w2 w3^2 cos(n(psi1-phi2))>
1364 // 2-p temporary one
1365 Double_t two1npp1nW2ppW1PtPOI=0.; // <w1^2 w2 cos(n(psi1-phi2))> // OK !!!
1368 two1npp1nW2ppW1PtPOI = ((qxW2PrimePrimePtPOI*dQnkX[0][0]+qyW2PrimePrimePtPOI*dQnkY[0][0])-dS13mPrimePrimePtPOI)/dM2pp1PtPOI; // CORRECT !!! <w1^2 w2 cos(n(psi1-phi2))>
1371 // 2-p temporary one
1372 Double_t two2npp2nW1ppW2PtPOI=0.; // <w1 w2^2 cos(2n(psi1-phi2))> OK !!!
1375 two2npp2nW1ppW2PtPOI = ((q2xW1PrimePrimePtPOI*dQnkX[1][1]+q2yW1PrimePrimePtPOI*dQnkY[1][1])-dS13mPrimePrimePtPOI)/dM1pp2PtPOI; // CORRECT !!! <w1 w2^2 cos(2n(psi1-phi2))>
1378 // 2-p temporary one
1379 Double_t two1npp1nW3PtPOI=0.; // <w2^3 cos(n(psi1-phi2))> // OK !!!
1382 two1npp1nW3PtPOI = (qxPrimePrimePtPOI*dQnkX[0][2]+qyPrimePrimePtPOI*dQnkY[0][2]-dS13mPrimePrimePtPOI)/dM0pp3PtPOI; // CORRECT !!! <w2^3 cos(n(psi1-phi2))>
1385 // 3-p temporary one
1386 Double_t three2npp1n1nW1ppW1W1PtPOI=0.; // <w1 w2 w3 cos(n(2psi1-phi2-phi3))> // OK!!!
1389 three2npp1n1nW1ppW1W1PtPOI = (q2xW1PrimePrimePtPOI*(dQnkX[0][0]*dQnkX[0][0]-dQnkY[0][0]*dQnkY[0][0])+2.*q2yW1PrimePrimePtPOI*dQnkX[0][0]*dQnkY[0][0]-2.*(qxW2PrimePrimePtPOI*dQnkX[0][0]+qyW2PrimePrimePtPOI*dQnkY[0][0])-(q2xW1PrimePrimePtPOI*dQnkX[1][1]+q2yW1PrimePrimePtPOI*dQnkY[1][1])+2.*dS13mPrimePrimePtPOI)/dM1pp11PtPOI; // CORRECT !!! <w1 w2 w3 cos(n(2psi1-phi2-phi3))>
1392 // 3-p temporary one
1393 Double_t three1npp1n2nW0ppW1W2PtPOI=0.; // <w2 w3^2 cos(n(psi1+phi2-2*phi3))> // OK!!!
1396 three1npp1n2nW0ppW1W2PtPOI = (qxPrimePrimePtPOI*(dQnkX[0][0]*dQnkX[1][1]+dQnkY[0][0]*dQnkY[1][1])-qyPrimePrimePtPOI*(dQnkY[0][0]*dQnkX[1][1]-dQnkX[0][0]*dQnkY[1][1])-(qxW2PrimePrimePtPOI*dQnkX[0][0]+qyW2PrimePrimePtPOI*dQnkY[0][0])-(q2xW1PrimePrimePtPOI*dQnkX[1][1]+q2yW1PrimePrimePtPOI*dQnkY[1][1])-(qxPrimePrimePtPOI*dQnkX[0][2]+qyPrimePrimePtPOI*dQnkY[0][2])+2.*dS13mPrimePrimePtPOI)/dM0pp12PtPOI; // CORRECT !!! <w2 w3^2 cos(n(psi1+phi2-2.*phi3))>
1401 Double_t four1npp1n1n1nW1W1W1=0.; // <w1 w2 w3 cos(n(psi1+phi1-phi2-phi3))>
1404 four1npp1n1n1nW1W1W1 = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPrimePrimePtPOI*dQnkX[0][0]+qyPrimePrimePtPOI*dQnkY[0][0])-2.*dM1pp11PtPOI*two1n1nW1ppW1W1PtPOI-dM1pp11PtPOI*three2npp1n1nW1ppW1W1PtPOI-dM0pp12PtPOI*three1npp1n2nW0ppW1W2PtPOI-2.*dM0pp12PtPOI*two1npp1nW1W2PtPOI-3.*dM2pp1PtPOI*two1npp1nW2ppW1PtPOI-2.*dM1pp2PtPOI-dM1pp2PtPOI*two2npp2nW1ppW2PtPOI-dM0pp3PtPOI*two1npp1nW3PtPOI-dS13mPrimePrimePtPOI)/(dM0pp111PtPOI);
1410 Double_t four1npp1n1n1nW1W1W1POI=0.;
1411 if(dM0p111PtPOI>0&&mPrimePtPOI>0&&nRP>0)
1413 four1npp1n1n1nW1W1W1POI = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPrimePtPOI*dQnkX[0][0]+qyPrimePtPOI*dQnkY[0][0])-2.*dSnk[0][1]* (qxPrimePtPOI*dQnkX[0][0]+qyPrimePtPOI*dQnkY[0][0])+2.*(qxPrimePtPOI*dQnkX[0][2]+qyPrimePtPOI*dQnkY[0][2])-qxPrimePtPOI*(dQnkX[0][0]*dQnkX[1][1]+dQnkY[0][0]*dQnkY[1][1])+qyPrimePtPOI*(dQnkY[0][0]*dQnkX[1][1]-dQnkX[0][0]*dQnkY[1][1]))/dM0p111PtPOI;
1417 // recursive formula for 4-p RP and POI in all combinations (full, partial and no overlap) (OK)
1418 Double_t four1npp1n1n1nW1W1W1PtPOI=0.;
1419 if(dM0pp111PtPOI+dM0p111PtPOI)
1421 four1npp1n1n1nW1W1W1PtPOI = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPrimePrimePtPOI*dQnkX[0][0]+qyPrimePrimePtPOI*dQnkY[0][0])-2.*dM1pp11PtPOI*two1n1nW1ppW1W1PtPOI-dM1pp11PtPOI*three2npp1n1nW1ppW1W1PtPOI-dM0pp12PtPOI*three1npp1n2nW0ppW1W2PtPOI-2.*dM0pp12PtPOI*two1npp1nW1W2PtPOI-3.*dM2pp1PtPOI*two1npp1nW2ppW1PtPOI-2.*dM1pp2PtPOI-dM1pp2PtPOI*two2npp2nW1ppW2PtPOI-dM0pp3PtPOI*two1npp1nW3PtPOI-dS13mPrimePrimePtPOI+(pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPrimePtPOI*dQnkX[0][0]+qyPrimePtPOI*dQnkY[0][0])-2.*dSnk[0][1]* (qxPrimePtPOI*dQnkX[0][0]+qyPrimePtPOI*dQnkY[0][0])+2.*(qxPrimePtPOI*dQnkX[0][2]+qyPrimePtPOI*dQnkY[0][2])-qxPrimePtPOI*(dQnkX[0][0]*dQnkX[1][1]+dQnkY[0][0]*dQnkY[1][1])+qyPrimePtPOI*(dQnkY[0][0]*dQnkX[1][1]-dQnkX[0][0]*dQnkY[1][1]))/(dM0pp111PtPOI+dM0p111PtPOI);
1425 Double_t four1npp1n1n1nW1W1W1PtPOIb =
1426 ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPrimePrimePtPOI*dQnkX[0][0]+qyPrimePrimePtPOI*dQnkY[0][0])
1427 - q2xW1PrimePrimePtPOI*(dQnkX[0][0]*dQnkX[0][0]-dQnkY[0][0]*dQnkY[0][0])+2.*q2yW1PrimePrimePtPOI*dQnkX[0][0]*dQnkY[0][0]
1428 - qxPrimePrimePtPOI*(dQnkX[0][0]*dQnkX[1][1]+dQnkY[0][0]*dQnkY[1][1])-qyPrimePrimePtPOI*(dQnkY[0][0]*dQnkX[1][1]-dQnkX[0][0]*dQnkY[1][1])
1429 - 2.*dSnk[0][1]*(qxPrimePrimePtPOI*dQnkX[0][0]+qyPrimePrimePtPOI*dQnkY[0][0])
1430 - 2.*(pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*dS11mPrimePrimePtPOI
1431 + 7.*(qxW2PrimePrimePtPOI*dQnkX[0][0]+qyW2PrimePrimePtPOI*dQnkY[0][0])
1432 - 1.*(qxW2PrimePrimePtPOI*dQnkX[0][0]+qyW2PrimePrimePtPOI*dQnkY[0][0])
1433 + 1.*(q2xW1PrimePrimePtPOI*dQnkX[1][1]+q2yW1PrimePrimePtPOI*dQnkY[1][1])
1434 + 2.*(qxPrimePrimePtPOI*dQnkX[0][2]+qyPrimePrimePtPOI*dQnkY[0][2])
1435 + 2.*dS11mPrimePrimePtPOI*dSnk[0][1]
1436 - 6.*dS13mPrimePrimePtPOI
1437 + (pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPrimePtPOI*dQnkX[0][0]+qyPrimePtPOI*dQnkY[0][0])
1438 - 2.*dSnk[0][1]*(qxPrimePtPOI*dQnkX[0][0]+qyPrimePtPOI*dQnkY[0][0])
1439 - qxPrimePtPOI*(dQnkX[0][0]*dQnkX[1][1]+dQnkY[0][0]*dQnkY[1][1])-qyPrimePtPOI*(dQnkY[0][0]*dQnkX[1][1]-dQnkX[0][0]*dQnkY[1][1])
1440 + 2.*(qxPrimePrimePtPOI*dQnkX[0][2]+qyPrimePrimePtPOI*dQnkY[0][2]))/(dM0pp111PtPOI+dM0p111PtPOI);
1450 cout<<four1npp1n1n1nW1W1W1PtPOI<<endl;
1451 cout<<four1npp1n1n1nW1W1W1PtPOIb<<endl;
1456 f4WPerPtBin1n1n1n1nPOI->Fill(fPtMin+(bin-1)*dBinWidthPt,four1npp1n1n1nW1W1W1PtPOI,dM0pp111PtPOI+dM0p111PtPOI);
1457 } // end of if(dM0pp111PtPOI+dM0p111PtPOI)
1458 } // for(Int_t bin=1;bin<(fnBinsPt+1);bin++) // loop over pt-bins
1459 //...........................................................................................................
1461 //...........................................................................................................
1462 // PrimePrime Eta POI
1463 Double_t qxPrimePrimeEtaPOI=0.,qyPrimePrimeEtaPOI=0.,q2xPrimePrimeEtaPOIHere=0.,q2yPrimePrimeEtaPOIHere=0.;//add comments for these variable
1464 Double_t qxW2PrimePrimeEtaPOI=0.,qyW2PrimePrimeEtaPOI=0.,q2xW1PrimePrimeEtaPOI=0.,q2yW1PrimePrimeEtaPOI=0.;//add comments for these variable
1465 Double_t dS11mPrimePrimeEtaPOI=0.; // to be improved (name)
1466 Double_t dS12mPrimePrimeEtaPOI=0.; // to be improved (name)
1467 Double_t dS13mPrimePrimeEtaPOI=0.; // to be improved (name)
1468 Double_t mPrimePrimeEtaPOIHere=0.; // to be improved (name)
1470 Double_t dM1pp11EtaPOI=0.; // to be improved (name)
1471 Double_t dM0pp111EtaPOI=0.; // to be improved (name)
1472 Double_t dM0pp12EtaPOI=0.;
1473 Double_t dM2pp1EtaPOI=0.;
1474 Double_t dM1pp2EtaPOI=0.;
1475 Double_t dM0pp3EtaPOI=0.;
1478 Double_t qxPrimeEtaPOI=0.,qyPrimeEtaPOI=0.;
1479 Double_t mPrimeEtaPOI=0.;
1480 Double_t dM0p111EtaPOI=0.; // to be improved (name)
1482 for(Int_t bin=1;bin<(fnBinsEta+1);bin++) // loop over eta-bins
1485 qxPrimePrimeEtaPOI = (etaReq1nPrimePrime->GetBinContent(bin))*(etaReq1nPrimePrime->GetBinEntries(bin));
1486 qyPrimePrimeEtaPOI = (etaImq1nPrimePrime->GetBinContent(bin))*(etaImq1nPrimePrime->GetBinEntries(bin));
1487 q2xPrimePrimeEtaPOIHere = (etaReq2nPrimePrime->GetBinContent(bin))*(etaReq2nPrimePrime->GetBinEntries(bin));
1488 q2yPrimePrimeEtaPOIHere = (etaImq2nPrimePrime->GetBinContent(bin))*(etaImq2nPrimePrime->GetBinEntries(bin));
1490 qxW2PrimePrimeEtaPOI = (req1nW2PrimePrimeEta->GetBinContent(bin))*(req1nW2PrimePrimeEta->GetBinEntries(bin));
1491 qyW2PrimePrimeEtaPOI = (imq1nW2PrimePrimeEta->GetBinContent(bin))*(imq1nW2PrimePrimeEta->GetBinEntries(bin));
1493 q2xW1PrimePrimeEtaPOI = (req2nW1PrimePrimeEta->GetBinContent(bin))*(req2nW1PrimePrimeEta->GetBinEntries(bin));
1494 q2yW1PrimePrimeEtaPOI = (imq2nW1PrimePrimeEta->GetBinContent(bin))*(imq2nW1PrimePrimeEta->GetBinEntries(bin));
1496 dS11mPrimePrimeEtaPOI = (sumOfW1upTomPrimePrimeEta->GetBinContent(bin))*(sumOfW1upTomPrimePrimeEta->GetBinEntries(bin));
1497 dS12mPrimePrimeEtaPOI = (sumOfW2upTomPrimePrimeEta->GetBinContent(bin))*(sumOfW2upTomPrimePrimeEta->GetBinEntries(bin));
1498 dS13mPrimePrimeEtaPOI = (sumOfW3upTomPrimePrimeEta->GetBinContent(bin))*(sumOfW3upTomPrimePrimeEta->GetBinEntries(bin));
1500 mPrimePrimeEtaPOIHere = sumOfW1upTomPrimePrimeEta->GetBinEntries(bin); // to be improved
1502 dM1pp11EtaPOI=dS11mPrimePrimeEtaPOI*(dSnk[1][0]-dSnk[0][1])-2.*dS12mPrimePrimeEtaPOI*dSnk[0][0]+2.*dS13mPrimePrimeEtaPOI;
1503 dM1pp2EtaPOI=dS11mPrimePrimeEtaPOI*dSnk[0][1]-dS13mPrimePrimeEtaPOI;
1504 dM2pp1EtaPOI=dS12mPrimePrimeEtaPOI*dSnk[0][0]-dS13mPrimePrimeEtaPOI;
1505 dM0pp3EtaPOI=mPrimePrimeEtaPOIHere*dSnk[0][2]-dS13mPrimePrimeEtaPOI;
1506 dM0pp12EtaPOI=mPrimePrimeEtaPOIHere*dSnk[0][0]*dSnk[0][1]-dM2pp1EtaPOI-dM1pp2EtaPOI-dM0pp3EtaPOI-dS13mPrimePrimeEtaPOI;
1507 dM0pp111EtaPOI=mPrimePrimeEtaPOIHere*dSnk[2][0]-3.*dM1pp11EtaPOI-3.*dM0pp12EtaPOI-3.*dM2pp1EtaPOI-3.*dM1pp2EtaPOI-dM0pp3EtaPOI-dS13mPrimePrimeEtaPOI;
1510 qxPrimeEtaPOI = (etaReq1nPrime->GetBinContent(bin))*(etaReq1nPrime->GetBinEntries(bin));
1511 qyPrimeEtaPOI = (etaImq1nPrime->GetBinContent(bin))*(etaImq1nPrime->GetBinEntries(bin));
1513 mPrimeEtaPOI = etaReq1nPrime->GetBinEntries(bin); // to be improved
1514 dM0p111EtaPOI=mPrimeEtaPOI*(dSnk[2][0]-3.*dSnk[0][1]*dSnk[0][0]+2.*dSnk[0][2]);
1516 // 2-p the needed one
1517 Double_t two1n1nWPerEtaBinPOI=0.;
1518 if((mPrimePrimeEtaPOIHere+mPrimeEtaPOI)*dSnk[0][0]-dS11mPrimePrimeEtaPOI>0)
1520 two1n1nWPerEtaBinPOI = (qxPrimePrimeEtaPOI*dQnkX[0][0]+qyPrimePrimeEtaPOI*dQnkY[0][0]+qxPrimeEtaPOI*dQnkX[0][0]+qyPrimeEtaPOI*dQnkY[0][0]-dS11mPrimePrimeEtaPOI)/((mPrimePrimeEtaPOIHere+mPrimeEtaPOI)*dSnk[0][0]-dS11mPrimePrimeEtaPOI);
1522 f2WPerEtaBin1n1nPOI->Fill(fEtaMin+(bin-1)*dBinWidthEta,two1n1nWPerEtaBinPOI,(mPrimePrimeEtaPOIHere+mPrimeEtaPOI)*dSnk[0][0]-dS11mPrimePrimeEtaPOI); // <2'>_{n|n}
1525 // 2-p the temporary one
1526 Double_t two1n1nW1ppW1W1EtaPOI=0.; // <w1 w2 w3 cos(n(phi2-phi3))> // OK!!!
1529 two1n1nW1ppW1W1EtaPOI = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*dS11mPrimePrimeEtaPOI-2.*(qxW2PrimePrimeEtaPOI*dQnkX[0][0]+qyW2PrimePrimeEtaPOI*dQnkY[0][0])-dS11mPrimePrimeEtaPOI*dSnk[0][1]+2.*dS13mPrimePrimeEtaPOI)/dM1pp11EtaPOI; // CORRECT !!! <w1 w2 w3 cos(n(phi2-phi3))>
1532 // 2-p the temporary one
1533 Double_t two1npp1nW1W2EtaPOI=0.; // <w2 w3^2 cos(n(psi1-phi2))> // OK !!!
1536 two1npp1nW1W2EtaPOI = (dSnk[0][1]*(qxPrimePrimeEtaPOI*dQnkX[0][0]+qyPrimePrimeEtaPOI*dQnkY[0][0])-(qxW2PrimePrimeEtaPOI*dQnkX[0][0]+qyW2PrimePrimeEtaPOI*dQnkY[0][0])-dM1pp2EtaPOI-(qxPrimePrimeEtaPOI*dQnkX[0][2]+qyPrimePrimeEtaPOI*dQnkY[0][2])+dS13mPrimePrimeEtaPOI)/dM0pp12EtaPOI; // CORRECT !!! <w2 w3^2 cos(n(psi1-phi2))>
1539 // 2-p the temporary one
1540 Double_t two1npp1nW2ppW1EtaPOI=0.; // <w1^2 w2 cos(n(psi1-phi2))> // OK !!!
1543 two1npp1nW2ppW1EtaPOI = ((qxW2PrimePrimeEtaPOI*dQnkX[0][0]+qyW2PrimePrimeEtaPOI*dQnkY[0][0])-dS13mPrimePrimeEtaPOI)/dM2pp1EtaPOI; // CORRECT !!! <w1^2 w2 cos(n(psi1-phi2))>
1546 // 2-p the temporary one
1547 Double_t two2npp2nW1ppW2EtaPOI=0.; // <w1 w2^2 cos(2n(psi1-phi2))> OK !!!
1550 two2npp2nW1ppW2EtaPOI = ((q2xW1PrimePrimeEtaPOI*dQnkX[1][1]+q2yW1PrimePrimeEtaPOI*dQnkY[1][1])-dS13mPrimePrimeEtaPOI)/dM1pp2EtaPOI; // CORRECT !!! <w1 w2^2 cos(2n(psi1-phi2))>
1553 // 2-p the temporary one
1554 Double_t two1npp1nW3EtaPOI=0.; // <w2^3 cos(n(psi1-phi2))> // OK !!!
1557 two1npp1nW3EtaPOI = (qxPrimePrimeEtaPOI*dQnkX[0][2]+qyPrimePrimeEtaPOI*dQnkY[0][2]-dS13mPrimePrimeEtaPOI)/dM0pp3EtaPOI; // CORRECT !!! <w2^3 cos(n(psi1-phi2))>
1560 // 3-p the temporary one
1561 Double_t three2npp1n1nW1ppW1W1EtaPOI=0.; // <w1 w2 w3 cos(n(2psi1-phi2-phi3))> // OK!!!
1564 three2npp1n1nW1ppW1W1EtaPOI = (q2xW1PrimePrimeEtaPOI*(dQnkX[0][0]*dQnkX[0][0]-dQnkY[0][0]*dQnkY[0][0])+2.*q2yW1PrimePrimeEtaPOI*dQnkX[0][0]*dQnkY[0][0]-2.*(qxW2PrimePrimeEtaPOI*dQnkX[0][0]+qyW2PrimePrimeEtaPOI*dQnkY[0][0])-(q2xW1PrimePrimeEtaPOI*dQnkX[1][1]+q2yW1PrimePrimeEtaPOI*dQnkY[1][1])+2.*dS13mPrimePrimeEtaPOI)/dM1pp11EtaPOI; // CORRECT !!! <w1 w2 w3 cos(n(2psi1-phi2-phi3))>
1567 // 3-p the temporary one
1568 Double_t three1npp1n2nW0ppW1W2EtaPOI=0.; // <w2 w3^2 cos(n(psi1+phi2-2*phi3))> // OK!!!
1571 three1npp1n2nW0ppW1W2EtaPOI = (qxPrimePrimeEtaPOI*(dQnkX[0][0]*dQnkX[1][1]+dQnkY[0][0]*dQnkY[1][1])-qyPrimePrimeEtaPOI*(dQnkY[0][0]*dQnkX[1][1]-dQnkX[0][0]*dQnkY[1][1])-(qxW2PrimePrimeEtaPOI*dQnkX[0][0]+qyW2PrimePrimeEtaPOI*dQnkY[0][0])-(q2xW1PrimePrimeEtaPOI*dQnkX[1][1]+q2yW1PrimePrimeEtaPOI*dQnkY[1][1])-(qxPrimePrimeEtaPOI*dQnkX[0][2]+qyPrimePrimeEtaPOI*dQnkY[0][2])+2.*dS13mPrimePrimeEtaPOI)/dM0pp12EtaPOI; // CORRECT !!! <w2 w3^2 cos(n(psi1+phi2-2.*phi3))>
1576 Double_t four1npp1n1n1nW1W1W1=0.; // <w1 w2 w3 cos(n(psi1+phi1-phi2-phi3))>
1579 four1npp1n1n1nW1W1W1 = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPrimePrimeEtaPOI*dQnkX[0][0]+qyPrimePrimeEtaPOI*dQnkY[0][0])-2.*dM1pp11EtaPOI*two1n1nW1ppW1W1EtaPOI-dM1pp11EtaPOI*three2npp1n1nW1ppW1W1EtaPOI-dM0pp12EtaPOI*three1npp1n2nW0ppW1W2EtaPOI-2.*dM0pp12EtaPOI*two1npp1nW1W2EtaPOI-3.*dM2pp1EtaPOI*two1npp1nW2ppW1EtaPOI-2.*dM1pp2EtaPOI-dM1pp2EtaPOI*two2npp2nW1ppW2EtaPOI-dM0pp3EtaPOI*two1npp1nW3EtaPOI-dS13mPrimePrimeEtaPOI)/(dM0pp111EtaPOI);
1584 Double_t four1npp1n1n1nW1W1W1POI=0.;
1585 if(dM0p111EtaPOI>0&&mPrimeEtaPOI>0&&nRP>0)
1587 four1npp1n1n1nW1W1W1POI = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPrimeEtaPOI*dQnkX[0][0]+qyPrimeEtaPOI*dQnkY[0][0])-2.*dSnk[0][1]* (qxPrimeEtaPOI*dQnkX[0][0]+qyPrimeEtaPOI*dQnkY[0][0])+2.*(qxPrimeEtaPOI*dQnkX[0][2]+qyPrimeEtaPOI*dQnkY[0][2])-qxPrimeEtaPOI*(dQnkX[0][0]*dQnkX[1][1]+dQnkY[0][0]*dQnkY[1][1])+qyPrimeEtaPOI*(dQnkY[0][0]*dQnkX[1][1]-dQnkX[0][0]*dQnkY[1][1]))/dM0p111EtaPOI;
1591 // 4-p RP and POI in all combinations (full, partial and no overlap)
1592 Double_t four1npp1n1n1nW1W1W1EtaPOI=0.;
1594 if(dM0pp111EtaPOI+dM0p111EtaPOI)
1596 four1npp1n1n1nW1W1W1EtaPOI = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPrimePrimeEtaPOI*dQnkX[0][0]+qyPrimePrimeEtaPOI*dQnkY[0][0])-2.*dM1pp11EtaPOI*two1n1nW1ppW1W1EtaPOI-dM1pp11EtaPOI*three2npp1n1nW1ppW1W1EtaPOI-dM0pp12EtaPOI*three1npp1n2nW0ppW1W2EtaPOI-2.*dM0pp12EtaPOI*two1npp1nW1W2EtaPOI-3.*dM2pp1EtaPOI*two1npp1nW2ppW1EtaPOI-2.*dM1pp2EtaPOI-dM1pp2EtaPOI*two2npp2nW1ppW2EtaPOI-dM0pp3EtaPOI*two1npp1nW3EtaPOI-dS13mPrimePrimeEtaPOI+(pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPrimeEtaPOI*dQnkX[0][0]+qyPrimeEtaPOI*dQnkY[0][0])-2.*dSnk[0][1]*(qxPrimeEtaPOI*dQnkX[0][0]+qyPrimeEtaPOI*dQnkY[0][0])+2.*(qxPrimeEtaPOI*dQnkX[0][2]+qyPrimeEtaPOI*dQnkY[0][2])-qxPrimeEtaPOI*(dQnkX[0][0]*dQnkX[1][1]+dQnkY[0][0]*dQnkY[1][1])+qyPrimeEtaPOI*(dQnkY[0][0]*dQnkX[1][1]-dQnkX[0][0]*dQnkY[1][1]))/(dM0pp111EtaPOI+dM0p111EtaPOI);
1598 f4WPerEtaBin1n1n1n1nPOI->Fill(fEtaMin+(bin-1)*dBinWidthEta,four1npp1n1n1nW1W1W1EtaPOI,dM0pp111EtaPOI+dM0p111EtaPOI);
1601 //...........................................................................................................
1617 ptReq1nPrime->Reset(); // to be improved
1618 ptImq1nPrime->Reset(); // to be improved
1619 ptReq2nPrime->Reset(); // to be improved
1620 ptImq2nPrime->Reset(); // to be improved
1622 etaReq1nPrime->Reset(); // to be improved
1623 etaImq1nPrime->Reset(); // to be improved
1624 etaReq2nPrime->Reset(); // to be improved
1625 etaImq2nPrime->Reset(); // to be improved
1628 //...........................................................................................................
1630 Double_t qxPtRP=0.,qyPtRP=0.,q2xPtRP=0.,q2yPtRP=0.;//add comments for these variable
1631 Double_t qxW2PtRP=0.,qyW2PtRP=0.,q2xW1PtRP=0.,q2yW1PtRP=0.;//add comments for these variable
1632 Double_t dS11mPtRP=0.; // to be improved (name)
1633 Double_t dS12mPtRP=0.; // to be improved (name)
1634 Double_t dS13mPtRP=0.; // to be improved (name)
1635 Double_t mPtRP=0.; // to be improved (name)
1637 Double_t dM1pp11PtRP=0.; // to be improved (name)
1638 Double_t dM0pp111PtRP=0.; // to be improved (name)
1639 Double_t dM0pp12PtRP=0.;
1640 Double_t dM2pp1PtRP=0.;
1641 Double_t dM1pp2PtRP=0.;
1642 Double_t dM0pp3PtRP=0.;
1645 Double_t qxPrimePtRP=0.,qyPrimePtRP=0.;
1646 Double_t mPrimePtRP=0.;
1647 Double_t dM0p111PtRP=0.; // to be improved (name)
1649 for(Int_t bin=1;bin<(fnBinsPt+1);bin++) // loop over pt-bins
1652 qxPtRP = (ptReq1n->GetBinContent(bin))*(ptReq1n->GetBinEntries(bin));
1653 qyPtRP = (ptImq1n->GetBinContent(bin))*(ptImq1n->GetBinEntries(bin));
1654 q2xPtRP = (ptReq2n->GetBinContent(bin))*(ptReq2n->GetBinEntries(bin));
1655 q2yPtRP = (ptImq2n->GetBinContent(bin))*(ptImq2n->GetBinEntries(bin));
1657 qxW2PtRP = (req1nW2Pt->GetBinContent(bin))*(req1nW2Pt->GetBinEntries(bin));
1658 qyW2PtRP = (imq1nW2Pt->GetBinContent(bin))*(imq1nW2Pt->GetBinEntries(bin));
1660 q2xW1PtRP = (req2nW1Pt->GetBinContent(bin))*(req2nW1Pt->GetBinEntries(bin));
1661 q2yW1PtRP = (imq2nW1Pt->GetBinContent(bin))*(imq2nW1Pt->GetBinEntries(bin));
1663 dS11mPtRP = (sumOfW1upTomPt->GetBinContent(bin))*(sumOfW1upTomPt->GetBinEntries(bin));
1664 dS12mPtRP = (sumOfW2upTomPt->GetBinContent(bin))*(sumOfW2upTomPt->GetBinEntries(bin));
1665 dS13mPtRP = (sumOfW3upTomPt->GetBinContent(bin))*(sumOfW3upTomPt->GetBinEntries(bin));
1667 mPtRP = sumOfW1upTomPt->GetBinEntries(bin); // to be improved
1669 dM1pp11PtRP=dS11mPtRP*(dSnk[1][0]-dSnk[0][1])-2.*dS12mPtRP*dSnk[0][0]+2.*dS13mPtRP;
1670 dM1pp2PtRP=dS11mPtRP*dSnk[0][1]-dS13mPtRP;
1671 dM2pp1PtRP=dS12mPtRP*dSnk[0][0]-dS13mPtRP;
1672 dM0pp3PtRP=mPtRP*dSnk[0][2]-dS13mPtRP;
1673 dM0pp12PtRP=mPtRP*dSnk[0][0]*dSnk[0][1]-dM2pp1PtRP-dM1pp2PtRP-dM0pp3PtRP-dS13mPtRP;
1674 dM0pp111PtRP=mPtRP*dSnk[2][0]-3.*dM1pp11PtRP-3.*dM0pp12PtRP-3.*dM2pp1PtRP-3.*dM1pp2PtRP-dM0pp3PtRP-dS13mPtRP;
1677 qxPrimePtRP = (ptReq1nPrime->GetBinContent(bin))*(ptReq1nPrime->GetBinEntries(bin));
1678 qyPrimePtRP = (ptImq1nPrime->GetBinContent(bin))*(ptImq1nPrime->GetBinEntries(bin));
1680 mPrimePtRP = ptReq1nPrime->GetBinEntries(bin); // to be improved
1681 dM0p111PtRP=mPrimePtRP*(dSnk[2][0]-3.*dSnk[0][1]*dSnk[0][0]+2.*dSnk[0][2]);
1683 // 2-p the needed one
1684 Double_t two1n1nWPerPtBinRP=0.;
1685 if((mPtRP+mPrimePtRP)*dSnk[0][0]-dS11mPtRP>0)
1687 two1n1nWPerPtBinRP = (qxPtRP*dQnkX[0][0]+qyPtRP*dQnkY[0][0]+qxPrimePtRP*dQnkX[0][0]+qyPrimePtRP*dQnkY[0][0]-dS11mPtRP)/((mPtRP+mPrimePtRP)*dSnk[0][0]-dS11mPtRP);
1688 f2WPerPtBin1n1nRP->Fill(fPtMin+(bin-1)*dBinWidthPt,two1n1nWPerPtBinRP,(mPtRP+mPrimePtRP)*dSnk[0][0]-dS11mPtRP);
1691 // 2-p temporary one
1692 Double_t two1n1nW1ppW1W1PtRP=0.; // <w1 w2 w3 cos(n(phi2-phi3))> // OK!!!
1695 two1n1nW1ppW1W1PtRP = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*dS11mPtRP-2.*(qxW2PtRP*dQnkX[0][0]+qyW2PtRP*dQnkY[0][0])-dS11mPtRP*dSnk[0][1]+2.*dS13mPtRP)/dM1pp11PtRP; // CORRECT !!! <w1 w2 w3 cos(n(phi2-phi3))>
1698 // 2-p temporary one
1699 Double_t two1npp1nW1W2PtRP=0.; // <w2 w3^2 cos(n(psi1-phi2))> // OK !!!
1702 two1npp1nW1W2PtRP = (dSnk[0][1]*(qxPtRP*dQnkX[0][0]+qyPtRP*dQnkY[0][0])-(qxW2PtRP*dQnkX[0][0]+qyW2PtRP*dQnkY[0][0])-dM1pp2PtRP-(qxPtRP*dQnkX[0][2]+qyPtRP*dQnkY[0][2])+dS13mPtRP)/dM0pp12PtRP; // CORRECT !!! <w2 w3^2 cos(n(psi1-phi2))>
1705 // 2-p temporary one
1706 Double_t two1npp1nW2ppW1PtRP=0.; // <w1^2 w2 cos(n(psi1-phi2))> // OK !!!
1709 two1npp1nW2ppW1PtRP = ((qxW2PtRP*dQnkX[0][0]+qyW2PtRP*dQnkY[0][0])-dS13mPtRP)/dM2pp1PtRP; // CORRECT !!! <w1^2 w2 cos(n(psi1-phi2))>
1712 // 2-p temporary one
1713 Double_t two2npp2nW1ppW2PtRP=0.; // <w1 w2^2 cos(2n(psi1-phi2))> OK !!!
1716 two2npp2nW1ppW2PtRP = ((q2xW1PtRP*dQnkX[1][1]+q2yW1PtRP*dQnkY[1][1])-dS13mPtRP)/dM1pp2PtRP; // CORRECT !!! <w1 w2^2 cos(2n(psi1-phi2))>
1719 // 2-p temporary one
1720 Double_t two1npp1nW3PtRP=0.; // <w2^3 cos(n(psi1-phi2))> // OK !!!
1723 two1npp1nW3PtRP = (qxPtRP*dQnkX[0][2]+qyPtRP*dQnkY[0][2]-dS13mPtRP)/dM0pp3PtRP; // CORRECT !!! <w2^3 cos(n(psi1-phi2))>
1726 // 3-p temporary one
1727 Double_t three2npp1n1nW1ppW1W1PtRP=0.; // <w1 w2 w3 cos(n(2psi1-phi2-phi3))> // OK!!!
1730 three2npp1n1nW1ppW1W1PtRP = (q2xW1PtRP*(dQnkX[0][0]*dQnkX[0][0]-dQnkY[0][0]*dQnkY[0][0])+2.*q2yW1PtRP*dQnkX[0][0]*dQnkY[0][0]-2.*(qxW2PtRP*dQnkX[0][0]+qyW2PtRP*dQnkY[0][0])-(q2xW1PtRP*dQnkX[1][1]+q2yW1PtRP*dQnkY[1][1])+2.*dS13mPtRP)/dM1pp11PtRP; // CORRECT !!! <w1 w2 w3 cos(n(2psi1-phi2-phi3))>
1733 // 3-p temporary one
1734 Double_t three1npp1n2nW0ppW1W2PtRP=0.; // <w2 w3^2 cos(n(psi1+phi2-2*phi3))> // OK!!!
1737 three1npp1n2nW0ppW1W2PtRP = (qxPtRP*(dQnkX[0][0]*dQnkX[1][1]+dQnkY[0][0]*dQnkY[1][1])-qyPtRP*(dQnkY[0][0]*dQnkX[1][1]-dQnkX[0][0]*dQnkY[1][1])-(qxW2PtRP*dQnkX[0][0]+qyW2PtRP*dQnkY[0][0])-(q2xW1PtRP*dQnkX[1][1]+q2yW1PtRP*dQnkY[1][1])-(qxPtRP*dQnkX[0][2]+qyPtRP*dQnkY[0][2])+2.*dS13mPtRP)/dM0pp12PtRP; // CORRECT !!! <w2 w3^2 cos(n(psi1+phi2-2.*phi3))>
1742 Double_t four1npp1n1n1nW1W1W1=0.; // <w1 w2 w3 cos(n(psi1+phi1-phi2-phi3))>
1745 four1npp1n1n1nW1W1W1 = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPtRP*dQnkX[0][0]+qyPtRP*dQnkY[0][0])-2.*dM1pp11PtRP*two1n1nW1ppW1W1PtRP-dM1pp11PtRP*three2npp1n1nW1ppW1W1PtRP-dM0pp12PtRP*three1npp1n2nW0ppW1W2PtRP-2.*dM0pp12PtRP*two1npp1nW1W2PtRP-3.*dM2pp1PtRP*two1npp1nW2ppW1PtRP-2.*dM1pp2PtRP-dM1pp2PtRP*two2npp2nW1ppW2PtRP-dM0pp3PtRP*two1npp1nW3PtRP-dS13mPtRP)/(dM0pp111PtRP);
1751 Double_t four1npp1n1n1nW1W1W1RP=0.;
1752 if(dM0p111PtRP>0&&mPrimePtRP>0&&nRP>0)
1754 four1npp1n1n1nW1W1W1RP = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPrimePtRP*dQnkX[0][0]+qyPrimePtRP*dQnkY[0][0])-2.*dSnk[0][1]* (qxPrimePtRP*dQnkX[0][0]+qyPrimePtRP*dQnkY[0][0])+2.*(qxPrimePtRP*dQnkX[0][2]+qyPrimePtRP*dQnkY[0][2])-qxPrimePtRP*(dQnkX[0][0]*dQnkX[1][1]+dQnkY[0][0]*dQnkY[1][1])+qyPrimePtRP*(dQnkY[0][0]*dQnkX[1][1]-dQnkX[0][0]*dQnkY[1][1]))/dM0p111PtRP;
1758 // 4-p RP and POI in all combinations (full, partial and no overlap)
1759 Double_t four1npp1n1n1nW1W1W1PtRP=0.;
1760 if(dM0pp111PtRP+dM0p111PtRP)
1762 four1npp1n1n1nW1W1W1PtRP = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPtRP*dQnkX[0][0]+qyPtRP*dQnkY[0][0])-2.*dM1pp11PtRP*two1n1nW1ppW1W1PtRP-dM1pp11PtRP*three2npp1n1nW1ppW1W1PtRP-dM0pp12PtRP*three1npp1n2nW0ppW1W2PtRP-2.*dM0pp12PtRP*two1npp1nW1W2PtRP-3.*dM2pp1PtRP*two1npp1nW2ppW1PtRP-2.*dM1pp2PtRP-dM1pp2PtRP*two2npp2nW1ppW2PtRP-dM0pp3PtRP*two1npp1nW3PtRP-dS13mPtRP+(pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPrimePtRP*dQnkX[0][0]+qyPrimePtRP*dQnkY[0][0])-2.*dSnk[0][1]* (qxPrimePtRP*dQnkX[0][0]+qyPrimePtRP*dQnkY[0][0])+2.*(qxPrimePtRP*dQnkX[0][2]+qyPrimePtRP*dQnkY[0][2])-qxPrimePtRP*(dQnkX[0][0]*dQnkX[1][1]+dQnkY[0][0]*dQnkY[1][1])+qyPrimePtRP*(dQnkY[0][0]*dQnkX[1][1]-dQnkX[0][0]*dQnkY[1][1]))/(dM0pp111PtRP+dM0p111PtRP);
1764 f4WPerPtBin1n1n1n1nRP->Fill(fPtMin+(bin-1)*dBinWidthPt,four1npp1n1n1nW1W1W1PtRP,dM0pp111PtRP+dM0p111PtRP);
1765 } // end of if(dM0pp111PtRP+dM0p111PtRP)
1766 } // for(Int_t bin=1;bin<(fnBinsPt+1);bin++) // loop over pt-bins
1768 delete ptReq1nPrime;
1769 delete ptImq1nPrime;
1770 delete ptReq2nPrime;
1771 delete ptImq2nPrime;
1781 delete sumOfW1upTomPt;
1782 delete sumOfW2upTomPt;
1783 delete sumOfW3upTomPt;
1784 //...........................................................................................................
1786 //...........................................................................................................
1787 // PrimePrime Eta RP
1788 Double_t qxEtaRP=0.,qyEtaRP=0.,q2xEtaRP=0.,q2yEtaRP=0.;//add comments for these variable
1789 Double_t qxW2EtaRP=0.,qyW2EtaRP=0.,q2xW1EtaRP=0.,q2yW1EtaRP=0.;//add comments for these variable
1790 Double_t dS11mEtaRP=0.; // to be improved (name)
1791 Double_t dS12mEtaRP=0.; // to be improved (name)
1792 Double_t dS13mEtaRP=0.; // to be improved (name)
1793 Double_t mEtaRPHere=0.; // to be improved (name)
1795 Double_t dM1pp11EtaRP=0.; // to be improved (name)
1796 Double_t dM0pp111EtaRP=0.; // to be improved (name)
1797 Double_t dM0pp12EtaRP=0.;
1798 Double_t dM2pp1EtaRP=0.;
1799 Double_t dM1pp2EtaRP=0.;
1800 Double_t dM0pp3EtaRP=0.;
1803 Double_t qxPrimeEtaRPHere=0.,qyPrimeEtaRPHere=0.;
1804 Double_t mPrimeEtaRPHere=0.;
1805 Double_t dM0p111EtaRP=0.; // to be improved (name)
1807 for(Int_t bin=1;bin<(fnBinsEta+1);bin++) // loop over eta-bins
1810 qxEtaRP = (etaReq1n->GetBinContent(bin))*(etaReq1n->GetBinEntries(bin));
1811 qyEtaRP = (etaImq1n->GetBinContent(bin))*(etaImq1n->GetBinEntries(bin));
1812 q2xEtaRP = (etaReq2n->GetBinContent(bin))*(etaReq2n->GetBinEntries(bin));
1813 q2yEtaRP = (etaImq2n->GetBinContent(bin))*(etaImq2n->GetBinEntries(bin));
1815 qxW2EtaRP = (req1nW2Eta->GetBinContent(bin))*(req1nW2Eta->GetBinEntries(bin));
1816 qyW2EtaRP = (imq1nW2Eta->GetBinContent(bin))*(imq1nW2Eta->GetBinEntries(bin));
1818 q2xW1EtaRP = (req2nW1Eta->GetBinContent(bin))*(req2nW1Eta->GetBinEntries(bin));
1819 q2yW1EtaRP = (imq2nW1Eta->GetBinContent(bin))*(imq2nW1Eta->GetBinEntries(bin));
1821 dS11mEtaRP = (sumOfW1upTomEta->GetBinContent(bin))*(sumOfW1upTomEta->GetBinEntries(bin));
1822 dS12mEtaRP = (sumOfW2upTomEta->GetBinContent(bin))*(sumOfW2upTomEta->GetBinEntries(bin));
1823 dS13mEtaRP = (sumOfW3upTomEta->GetBinContent(bin))*(sumOfW3upTomEta->GetBinEntries(bin));
1825 mEtaRPHere = sumOfW1upTomEta->GetBinEntries(bin); // to be improved
1827 dM1pp11EtaRP=dS11mEtaRP*(dSnk[1][0]-dSnk[0][1])-2.*dS12mEtaRP*dSnk[0][0]+2.*dS13mEtaRP;
1828 dM1pp2EtaRP=dS11mEtaRP*dSnk[0][1]-dS13mEtaRP;
1829 dM2pp1EtaRP=dS12mEtaRP*dSnk[0][0]-dS13mEtaRP;
1830 dM0pp3EtaRP=mEtaRPHere*dSnk[0][2]-dS13mEtaRP;
1831 dM0pp12EtaRP=mEtaRPHere*dSnk[0][0]*dSnk[0][1]-dM2pp1EtaRP-dM1pp2EtaRP-dM0pp3EtaRP-dS13mEtaRP;
1832 dM0pp111EtaRP=mEtaRPHere*dSnk[2][0]-3.*dM1pp11EtaRP-3.*dM0pp12EtaRP-3.*dM2pp1EtaRP-3.*dM1pp2EtaRP-dM0pp3EtaRP-dS13mEtaRP;
1835 qxPrimeEtaRPHere = (etaReq1nPrime->GetBinContent(bin))*(etaReq1nPrime->GetBinEntries(bin));
1836 qyPrimeEtaRPHere = (etaImq1nPrime->GetBinContent(bin))*(etaImq1nPrime->GetBinEntries(bin));
1838 mPrimeEtaRPHere = etaReq1nPrime->GetBinEntries(bin); // to be improved
1839 dM0p111EtaRP=mPrimeEtaRPHere*(dSnk[2][0]-3.*dSnk[0][1]*dSnk[0][0]+2.*dSnk[0][2]);
1841 // 2-p the needed one
1842 Double_t two1n1nWPerEtaBinRP=0.;
1843 if((mEtaRPHere+mPrimeEtaRPHere)*dSnk[0][0]-dS11mEtaRP>0)
1845 two1n1nWPerEtaBinRP = (qxEtaRP*dQnkX[0][0]+qyEtaRP*dQnkY[0][0]+qxPrimeEtaRPHere*dQnkX[0][0]+qyPrimeEtaRPHere*dQnkY[0][0]-dS11mEtaRP)/((mEtaRPHere+mPrimeEtaRPHere)*dSnk[0][0]-dS11mEtaRP);
1847 f2WPerEtaBin1n1nRP->Fill(fEtaMin+(bin-1)*dBinWidthEta,two1n1nWPerEtaBinRP,(mEtaRPHere+mPrimeEtaRPHere)*dSnk[0][0]-dS11mEtaRP); // <2'>_{n|n}
1850 // 2-p the temporary one
1851 Double_t two1n1nW1ppW1W1EtaRP=0.; // <w1 w2 w3 cos(n(phi2-phi3))> // OK!!!
1854 two1n1nW1ppW1W1EtaRP = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*dS11mEtaRP-2.*(qxW2EtaRP*dQnkX[0][0]+qyW2EtaRP*dQnkY[0][0])-dS11mEtaRP*dSnk[0][1]+2.*dS13mEtaRP)/dM1pp11EtaRP; // CORRECT !!! <w1 w2 w3 cos(n(phi2-phi3))>
1857 // 2-p the temporary one
1858 Double_t two1npp1nW1W2EtaRP=0.; // <w2 w3^2 cos(n(psi1-phi2))> // OK !!!
1861 two1npp1nW1W2EtaRP = (dSnk[0][1]*(qxEtaRP*dQnkX[0][0]+qyEtaRP*dQnkY[0][0])-(qxW2EtaRP*dQnkX[0][0]+qyW2EtaRP*dQnkY[0][0])-dM1pp2EtaRP-(qxEtaRP*dQnkX[0][2]+qyEtaRP*dQnkY[0][2])+dS13mEtaRP)/dM0pp12EtaRP; // CORRECT !!! <w2 w3^2 cos(n(psi1-phi2))>
1864 // 2-p the temporary one
1865 Double_t two1npp1nW2ppW1EtaRP=0.; // <w1^2 w2 cos(n(psi1-phi2))> // OK !!!
1868 two1npp1nW2ppW1EtaRP = ((qxW2EtaRP*dQnkX[0][0]+qyW2EtaRP*dQnkY[0][0])-dS13mEtaRP)/dM2pp1EtaRP; // CORRECT !!! <w1^2 w2 cos(n(psi1-phi2))>
1871 // 2-p the temporary one
1872 Double_t two2npp2nW1ppW2EtaRP=0.; // <w1 w2^2 cos(2n(psi1-phi2))> OK !!!
1875 two2npp2nW1ppW2EtaRP = ((q2xW1EtaRP*dQnkX[1][1]+q2yW1EtaRP*dQnkY[1][1])-dS13mEtaRP)/dM1pp2EtaRP; // CORRECT !!! <w1 w2^2 cos(2n(psi1-phi2))>
1878 // 2-p the temporary one
1879 Double_t two1npp1nW3EtaRP=0.; // <w2^3 cos(n(psi1-phi2))> // OK !!!
1882 two1npp1nW3EtaRP = (qxEtaRP*dQnkX[0][2]+qyEtaRP*dQnkY[0][2]-dS13mEtaRP)/dM0pp3EtaRP; // CORRECT !!! <w2^3 cos(n(psi1-phi2))>
1885 // 3-p the temporary one
1886 Double_t three2npp1n1nW1ppW1W1EtaRP=0.; // <w1 w2 w3 cos(n(2psi1-phi2-phi3))> // OK!!!
1889 three2npp1n1nW1ppW1W1EtaRP = (q2xW1EtaRP*(dQnkX[0][0]*dQnkX[0][0]-dQnkY[0][0]*dQnkY[0][0])+2.*q2yW1EtaRP*dQnkX[0][0]*dQnkY[0][0]-2.*(qxW2EtaRP*dQnkX[0][0]+qyW2EtaRP*dQnkY[0][0])-(q2xW1EtaRP*dQnkX[1][1]+q2yW1EtaRP*dQnkY[1][1])+2.*dS13mEtaRP)/dM1pp11EtaRP; // CORRECT !!! <w1 w2 w3 cos(n(2psi1-phi2-phi3))>
1892 // 3-p the temporary one
1893 Double_t three1npp1n2nW0ppW1W2EtaRP=0.; // <w2 w3^2 cos(n(psi1+phi2-2*phi3))> // OK!!!
1896 three1npp1n2nW0ppW1W2EtaRP = (qxEtaRP*(dQnkX[0][0]*dQnkX[1][1]+dQnkY[0][0]*dQnkY[1][1])-qyEtaRP*(dQnkY[0][0]*dQnkX[1][1]-dQnkX[0][0]*dQnkY[1][1])-(qxW2EtaRP*dQnkX[0][0]+qyW2EtaRP*dQnkY[0][0])-(q2xW1EtaRP*dQnkX[1][1]+q2yW1EtaRP*dQnkY[1][1])-(qxEtaRP*dQnkX[0][2]+qyEtaRP*dQnkY[0][2])+2.*dS13mEtaRP)/dM0pp12EtaRP; // CORRECT !!! <w2 w3^2 cos(n(psi1+phi2-2.*phi3))>
1901 Double_t four1npp1n1n1nW1W1W1=0.; // <w1 w2 w3 cos(n(psi1+phi1-phi2-phi3))>
1904 four1npp1n1n1nW1W1W1 = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxEtaRP*dQnkX[0][0]+qyEtaRP*dQnkY[0][0])-2.*dM1pp11EtaRP*two1n1nW1ppW1W1EtaRP-dM1pp11EtaRP*three2npp1n1nW1ppW1W1EtaRP-dM0pp12EtaRP*three1npp1n2nW0ppW1W2EtaRP-2.*dM0pp12EtaRP*two1npp1nW1W2EtaRP-3.*dM2pp1EtaRP*two1npp1nW2ppW1EtaRP-2.*dM1pp2EtaRP-dM1pp2EtaRP*two2npp2nW1ppW2EtaRP-dM0pp3EtaRP*two1npp1nW3EtaRP-dS13mEtaRP)/(dM0pp111EtaRP);
1909 Double_t four1npp1n1n1nW1W1W1RP=0.;
1910 if(dM0p111EtaRP>0&&mPrimeEtaRPHere>0&&nRP>0)
1912 four1npp1n1n1nW1W1W1RP = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPrimeEtaRPHere*dQnkX[0][0]+qyPrimeEtaRPHere*dQnkY[0][0])-2.*dSnk[0][1]* (qxPrimeEtaRPHere*dQnkX[0][0]+qyPrimeEtaRPHere*dQnkY[0][0])+2.*(qxPrimeEtaRPHere*dQnkX[0][2]+qyPrimeEtaRPHere*dQnkY[0][2])-qxPrimeEtaRPHere*(dQnkX[0][0]*dQnkX[1][1]+dQnkY[0][0]*dQnkY[1][1])+qyPrimeEtaRPHere*(dQnkY[0][0]*dQnkX[1][1]-dQnkX[0][0]*dQnkY[1][1]))/dM0p111EtaRP;
1916 // 4-p RP and POI in all combinations (full, partial and no overlap)
1917 Double_t four1npp1n1n1nW1W1W1EtaRP=0.;
1919 if(dM0pp111EtaRP+dM0p111EtaRP)
1921 four1npp1n1n1nW1W1W1EtaRP = ((pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxEtaRP*dQnkX[0][0]+qyEtaRP*dQnkY[0][0])-2.*dM1pp11EtaRP*two1n1nW1ppW1W1EtaRP-dM1pp11EtaRP*three2npp1n1nW1ppW1W1EtaRP-dM0pp12EtaRP*three1npp1n2nW0ppW1W2EtaRP-2.*dM0pp12EtaRP*two1npp1nW1W2EtaRP-3.*dM2pp1EtaRP*two1npp1nW2ppW1EtaRP-2.*dM1pp2EtaRP-dM1pp2EtaRP*two2npp2nW1ppW2EtaRP-dM0pp3EtaRP*two1npp1nW3EtaRP-dS13mEtaRP+(pow(dQnkX[0][0],2.)+pow(dQnkY[0][0],2.))*(qxPrimeEtaRPHere*dQnkX[0][0]+qyPrimeEtaRPHere*dQnkY[0][0])-2.*dSnk[0][1]*(qxPrimeEtaRPHere*dQnkX[0][0]+qyPrimeEtaRPHere*dQnkY[0][0])+2.*(qxPrimeEtaRPHere*dQnkX[0][2]+qyPrimeEtaRPHere*dQnkY[0][2])-qxPrimeEtaRPHere*(dQnkX[0][0]*dQnkX[1][1]+dQnkY[0][0]*dQnkY[1][1])+qyPrimeEtaRPHere*(dQnkY[0][0]*dQnkX[1][1]-dQnkX[0][0]*dQnkY[1][1]))/(dM0pp111EtaRP+dM0p111EtaRP);
1923 f4WPerEtaBin1n1n1n1nRP->Fill(fEtaMin+(bin-1)*dBinWidthEta,four1npp1n1n1nW1W1W1EtaRP,dM0pp111EtaRP+dM0p111EtaRP);
1927 delete etaReq1nPrime;
1928 delete etaImq1nPrime;
1929 delete etaReq2nPrime;
1930 delete etaImq2nPrime;
1940 delete sumOfW1upTomEta;
1941 delete sumOfW2upTomEta;
1942 delete sumOfW3upTomEta;
1943 //...........................................................................................................
1968 delete ptReq1nPrimePrime;
1969 delete ptImq1nPrimePrime;
1970 delete ptReq2nPrimePrime;
1971 delete ptImq2nPrimePrime;
1973 delete req1nW2PrimePrimePt;
1974 delete imq1nW2PrimePrimePt;
1975 delete req2nW1PrimePrimePt;
1976 delete imq2nW1PrimePrimePt;
1978 delete sumOfW1upTomPrimePrimePt;
1979 delete sumOfW2upTomPrimePrimePt;
1980 delete sumOfW3upTomPrimePrimePt;
1982 delete etaReq1nPrimePrime;
1983 delete etaImq1nPrimePrime;
1984 delete etaReq2nPrimePrime;
1985 delete etaImq2nPrimePrime;
1987 delete req1nW2PrimePrimeEta;
1988 delete imq1nW2PrimePrimeEta;
1989 delete req2nW1PrimePrimeEta;
1990 delete imq2nW1PrimePrimeEta;
1992 delete sumOfW1upTomPrimePrimeEta;
1993 delete sumOfW2upTomPrimePrimeEta;
1994 delete sumOfW3upTomPrimePrimeEta;
2140 Bool_t nestedLoops = kFALSE;
2145 if(nestedLoops) // to be improved
2147 //--------------------------------------------------------------------------------------------------------------------------------
2149 // **********************
2150 // **** NESTED LOOPS ****
2151 // **********************
2153 // Remark 1: multi-particle correlations calculated with nested loops are stored in fDirectCorrelations.
2154 // Remark 2: binning of fDirectCorrelations: bins 0..100 - correlations needed for integrated flow; bins 100..200 - correlations needed for differential flow (taking as an example bin 0.5 < pt < 0.6)
2156 // binning details of fDirectCorrelations (integrated flow):
2157 //..........................................................................
2158 // 1st bin: weighted <2>_{n|n} = <w1 w2 cos( n*(phi1-phi2))>
2159 // 2nd bin: weighted <2>_{2n|2n} = <w1^2 w2^2 cos(2n*(phi1-phi2))>
2160 // 3rd bin: weighted <2>_{3n|3n} = <w1^3 w2^3 cos(3n*(phi1-phi2))>
2161 // 4th bin: weighted <2>_{4n|4n} = <w1^4 w2^4 cos(4n*(phi1-phi2))>
2162 // 5th bin: weighted <2>_{n|n} = <w1^3 w2 cos(n*(phi1-phi2))>
2164 // 11th bin: weighted <3>_{2n|n,n} = <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
2165 //..........................................................................
2168 Double_t phi1=0., phi2=0., phi3=0., phi4=0.;
2169 // phi5=0., phi6=0., phi7=0., phi8=0.;
2170 Double_t wPhi1=1., wPhi2=1., wPhi3=1., wPhi4=1.;
2171 // wPhi5=1., wPhi6=1., wPhi7=1., wPhi8=1.;
2178 Double_t tempLoop = 0.;
2179 Int_t tempCounter = 0;
2185 for(Int_t i1=0;i1<dMult;i1++)
2187 fTrack=anEvent->GetTrack(i1);
2189 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
2190 for(Int_t i2=0;i2<dMult;i2++)
2193 fTrack=anEvent->GetTrack(i2);
2195 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
2197 fDirectCorrelations->Fill(0.,cos(n*(phi1-phi2)),wPhi1*wPhi2); // <w1 w2 cos( n*(phi1-phi2))>
2198 fDirectCorrelations->Fill(1.,cos(2.*n*(phi1-phi2)),pow(wPhi1,2)*pow(wPhi2,2)); // <w1^2 w2^2 cos(2n*(phi1-phi2))>
2199 fDirectCorrelations->Fill(2.,cos(3.*n*(phi1-phi2)),pow(wPhi1,3)*pow(wPhi2,3)); // <w1^3 w2^3 cos(3n*(phi1-phi2))>
2200 fDirectCorrelations->Fill(3.,cos(4.*n*(phi1-phi2)),pow(wPhi1,4)*pow(wPhi2,4)); // <w1^4 w2^4 cos(4n*(phi1-phi2))>
2201 fDirectCorrelations->Fill(4.,cos(n*(phi1-phi2)),pow(wPhi1,3)*wPhi2); // <w1^3 w2 cos(n*(phi1-phi2))>
2210 for(Int_t i1=0;i1<dMult;i1++)
2212 fTrack=anEvent->GetTrack(i1);
2214 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
2215 for(Int_t i2=0;i2<dMult;i2++)
2218 fTrack=anEvent->GetTrack(i2);
2220 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
2221 for(Int_t i3=0;i3<dMult;i3++)
2223 if(i3==i1||i3==i2)continue;
2224 fTrack=anEvent->GetTrack(i3);
2226 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
2228 fDirectCorrelations->Fill(5.,cos(n*(phi1-phi2)),wPhi1*wPhi2*pow(wPhi3,2)); // <w1 w2 w3^2 cos(n*(phi1-phi2))>
2231 fDirectCorrelations->Fill(10.,cos(2.*n*phi1-n*(phi2+phi3)),pow(wPhi1,2)*wPhi2*wPhi3); // <w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))>
2234 fDirectCorrelations->Fill(6.,cos(3.*n*phi1-2.*n*phi2-n*phi3),pow(wPhi1,3)*pow(wPhi2,2)*wPhi3); //<3>_{3n|2n,n}
2235 fDirectCorrelations->Fill(7.,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),pow(wPhi1,4)*pow(wPhi2,2)*pow(wPhi3,2)); //<3>_{4n|2n,2n}
2236 fDirectCorrelations->Fill(8.,cos(4.*n*phi1-3.*n*phi2-n*phi3),pow(wPhi1,4)*pow(wPhi2,3)*wPhi3); //<3>_{4n|3n,n}
2249 //<4>_{n,n|n,n}, <4>_{2n,n|2n,n}, <4>_{2n,2n|2n,2n}, <4>_{3n|n,n,n}, <4>_{3n,n|3n,n}, <4>_{3n,n|2n,2n} and <4>_{4n|2n,n,n}
2250 for(Int_t i1=0;i1<dMult;i1++)
2252 fTrack=anEvent->GetTrack(i1);
2254 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
2255 for(Int_t i2=0;i2<dMult;i2++)
2258 fTrack=anEvent->GetTrack(i2);
2260 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
2261 for(Int_t i3=0;i3<dMult;i3++)
2263 if(i3==i1||i3==i2)continue;
2264 fTrack=anEvent->GetTrack(i3);
2266 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
2267 for(Int_t i4=0;i4<dMult;i4++)
2269 if(i4==i1||i4==i2||i4==i3)continue;
2270 fTrack=anEvent->GetTrack(i4);
2272 if(phiWeights) wPhi4 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*nBinsPhi/TMath::TwoPi())));
2273 fDirectCorrelations->Fill(20.,cos(n*phi1+n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4); // <4>_{n,n|n,n} = <w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))>
2276 fDirectCorrelations->Fill(11.,cos(2.*n*phi1+n*phi2-2.*n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4); //<4>_{2n,n|2n,n}
2277 fDirectCorrelations->Fill(12.,cos(2.*n*phi1+2*n*phi2-2.*n*phi3-2.*n*phi4),wPhi1*wPhi2*wPhi3*wPhi4); //<4>_{2n,2n|2n,2n}
2278 fDirectCorrelations->Fill(13.,cos(3.*n*phi1-n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4); //<4>_{3n|n,n,n}
2279 fDirectCorrelations->Fill(14.,cos(3.*n*phi1+n*phi2-3.*n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4); //<4>_{3n,n|3n,n}
2280 fDirectCorrelations->Fill(15.,cos(3.*n*phi1+n*phi2-2.*n*phi3-2.*n*phi4),wPhi1*wPhi2*wPhi3*wPhi4); //<4>_{3n,n|2n,2n}
2281 fDirectCorrelations->Fill(16.,cos(4.*n*phi1-2.*n*phi2-n*phi3-n*phi4),wPhi1*wPhi2*wPhi3*wPhi4); //<4>_{4n|2n,n,n}
2292 //<5>_{2n,n,n,n,n}, //<5>_{2n,2n|2n,n,n}, <5>_{3n,n|2n,n,n} and <5>_{4n|n,n,n,n}
2293 for(Int_t i1=0;i1<dMult;i1++)
2295 //cout<<"i1 = "<<i1<<endl;
2296 fTrack=anEvent->GetTrack(i1);
2298 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
2299 for(Int_t i2=0;i2<dMult;i2++)
2302 fTrack=anEvent->GetTrack(i2);
2304 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
2305 for(Int_t i3=0;i3<dMult;i3++)
2307 if(i3==i1||i3==i2)continue;
2308 fTrack=anEvent->GetTrack(i3);
2310 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
2311 for(Int_t i4=0;i4<dMult;i4++)
2313 if(i4==i1||i4==i2||i4==i3)continue;
2314 fTrack=anEvent->GetTrack(i4);
2316 if(phiWeights) wPhi4 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*nBinsPhi/TMath::TwoPi())));
2317 for(Int_t i5=0;i5<dMult;i5++)
2319 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
2320 fTrack=anEvent->GetTrack(i5);
2322 if(phiWeights) wPhi5 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi5*nBinsPhi/TMath::TwoPi())));
2323 fDirectCorrelations->Fill(18.,cos(2.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5); //<5>_{2n,n|n,n,n}
2324 fDirectCorrelations->Fill(19.,cos(2.*n*phi1+2.*n*phi2-2.*n*phi3-n*phi4-n*phi5),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5); //<5>_{2n,2n|2n,n,n}
2325 fDirectCorrelations->Fill(20.,cos(3.*n*phi1+n*phi2-2.*n*phi3-n*phi4-n*phi5),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5); //<5>_{3n,n|2n,n,n}
2326 fDirectCorrelations->Fill(21.,cos(4.*n*phi1-n*phi2-n*phi3-n*phi4-n*phi5),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5); //<5>_{4n|n,n,n,n}
2334 //<6>_{n,n,n,n,n,n}, <6>_{2n,n,n|2n,n,n}, <6>_{2n,2n|n,n,n,n} and <6>_{3n,n|n,n,n,n}
2335 for(Int_t i1=0;i1<dMult;i1++)
2337 //cout<<"i1 = "<<i1<<endl;
2338 fTrack=anEvent->GetTrack(i1);
2340 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
2341 for(Int_t i2=0;i2<dMult;i2++)
2344 fTrack=anEvent->GetTrack(i2);
2346 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
2347 for(Int_t i3=0;i3<dMult;i3++)
2349 if(i3==i1||i3==i2)continue;
2350 fTrack=anEvent->GetTrack(i3);
2352 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
2353 for(Int_t i4=0;i4<dMult;i4++)
2355 if(i4==i1||i4==i2||i4==i3)continue;
2356 fTrack=anEvent->GetTrack(i4);
2358 if(phiWeights) wPhi4 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*nBinsPhi/TMath::TwoPi())));
2359 for(Int_t i5=0;i5<dMult;i5++)
2361 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
2362 fTrack=anEvent->GetTrack(i5);
2364 if(phiWeights) wPhi5 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi5*nBinsPhi/TMath::TwoPi())));
2365 for(Int_t i6=0;i6<dMult;i6++)
2367 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
2368 fTrack=anEvent->GetTrack(i6);
2370 if(phiWeights) wPhi6 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi6*nBinsPhi/TMath::TwoPi())));
2371 fDirectCorrelations->Fill(23.,cos(n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6); //<6>_{n,n,n|n,n,n}
2372 fDirectCorrelations->Fill(24.,cos(2.*n*phi1+n*phi2+n*phi3-2.*n*phi4-n*phi5-n*phi6),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6); //<6>_{2n,n,n|2n,n,n}
2373 fDirectCorrelations->Fill(25.,cos(2.*n*phi1+2.*n*phi2-n*phi3-n*phi4-n*phi5-n*phi6),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6); //<6>_{2n,2n|n,n,n,n}
2374 fDirectCorrelations->Fill(26.,cos(3.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5-n*phi6),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6); //<6>_{3n,n|n,n,n,n}
2384 //<7>_{2n,n,n|n,n,n,n}
2385 for(Int_t i1=0;i1<dMult;i1++)
2387 //cout<<"i1 = "<<i1<<endl;
2388 fTrack=anEvent->GetTrack(i1);
2390 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
2391 for(Int_t i2=0;i2<dMult;i2++)
2394 fTrack=anEvent->GetTrack(i2);
2396 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
2397 for(Int_t i3=0;i3<dMult;i3++)
2399 if(i3==i1||i3==i2)continue;
2400 fTrack=anEvent->GetTrack(i3);
2402 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
2403 for(Int_t i4=0;i4<dMult;i4++)
2405 if(i4==i1||i4==i2||i4==i3)continue;
2406 fTrack=anEvent->GetTrack(i4);
2408 if(phiWeights) wPhi4 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*nBinsPhi/TMath::TwoPi())));
2409 for(Int_t i5=0;i5<dMult;i5++)
2411 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
2412 fTrack=anEvent->GetTrack(i5);
2414 if(phiWeights) wPhi5 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi5*nBinsPhi/TMath::TwoPi())));
2415 for(Int_t i6=0;i6<dMult;i6++)
2417 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
2418 fTrack=anEvent->GetTrack(i6);
2420 if(phiWeights) wPhi6 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi6*nBinsPhi/TMath::TwoPi())));
2421 for(Int_t i7=0;i7<dMult;i7++)
2423 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
2424 fTrack=anEvent->GetTrack(i7);
2426 if(phiWeights) wPhi7 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi7*nBinsPhi/TMath::TwoPi())));
2427 fDirectCorrelations->Fill(28.,cos(2.*n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6-n*phi7),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6*wPhi7);//<7>_{2n,n,n|n,n,n,n}
2438 //<8>_{n,n,n,n|n,n,n,n}
2439 for(Int_t i1=0;i1<dMult;i1++)
2441 cout<<"i1 = "<<i1<<endl;
2442 fTrack=anEvent->GetTrack(i1);
2444 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
2445 for(Int_t i2=0;i2<dMult;i2++)
2448 fTrack=anEvent->GetTrack(i2);
2450 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
2451 for(Int_t i3=0;i3<dMult;i3++)
2453 if(i3==i1||i3==i2)continue;
2454 fTrack=anEvent->GetTrack(i3);
2456 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
2457 for(Int_t i4=0;i4<dMult;i4++)
2459 if(i4==i1||i4==i2||i4==i3)continue;
2460 fTrack=anEvent->GetTrack(i4);
2462 if(phiWeights) wPhi4 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*nBinsPhi/TMath::TwoPi())));
2463 for(Int_t i5=0;i5<dMult;i5++)
2465 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
2466 fTrack=anEvent->GetTrack(i5);
2468 if(phiWeights) wPhi5 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi5*nBinsPhi/TMath::TwoPi())));
2469 for(Int_t i6=0;i6<dMult;i6++)
2471 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
2472 fTrack=anEvent->GetTrack(i6);
2474 if(phiWeights) wPhi6 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi6*nBinsPhi/TMath::TwoPi())));
2475 for(Int_t i7=0;i7<dMult;i7++)
2477 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
2478 fTrack=anEvent->GetTrack(i7);
2480 if(phiWeights) wPhi7 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi7*nBinsPhi/TMath::TwoPi())));
2481 for(Int_t i8=0;i8<dMult;i8++)
2483 if(i8==i1||i8==i2||i8==i3||i8==i4||i8==i5||i8==i6||i8==i7)continue;
2484 fTrack=anEvent->GetTrack(i8);
2486 if(phiWeights) wPhi8 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi8*nBinsPhi/TMath::TwoPi())));
2487 fDirectCorrelations->Fill(30.,cos(n*phi1+n*phi2+n*phi3+n*phi4-n*phi5-n*phi6-n*phi7-n*phi8),wPhi1*wPhi2*wPhi3*wPhi4*wPhi5*wPhi6*wPhi7*wPhi8);//<8>_{n,n,n,n|n,n,n,n}
2501 // binning details of fDirectCorrelations (differential flow):
2503 //101st bin: <2'>_{n|n}
2509 for(Int_t i1=0;i1<nPrim;i1++)
2511 fTrack=anEvent->GetTrack(i1);
2512 if(!((fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)&&(fTrack->InPOISelection())))continue;//POI condition
2514 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
2515 for(Int_t i2=0;i2<nPrim;i2++)
2518 fTrack=anEvent->GetTrack(i2);
2519 if(!(fTrack->InRPSelection()))continue;//RP condition
2521 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
2522 //cout<<"1st = "<<i1<<" "<< (anEvent->GetTrack(i1))->Eta() << " " << (anEvent->GetTrack(i1))->Pt()<<endl;
2523 //cout<<"2nd = "<<i2<<" "<< (anEvent->GetTrack(i2))->Eta() << " " << (anEvent->GetTrack(i2))->Pt()<<endl;
2524 //fill the fDirectCorrelations:
2525 fDirectCorrelations->Fill(100.,cos(1.*n*(phi1-phi2)),wPhi2);//<2'>_{n,n}
2526 fDirectCorrelations->Fill(103.,cos(1.*n*(phi1-phi2)),pow(wPhi1,2)*wPhi2);//<2'>_{n,n}
2527 fDirectCorrelations->Fill(104.,cos(2.*n*(phi1-phi2)),wPhi1*pow(wPhi2,2));//<2'>_{n,n}
2528 fDirectCorrelations->Fill(105.,cos(1.*n*(phi1-phi2)),pow(wPhi2,3));//<2'>_{n,n}
2532 fDirectCorrelations->Fill(41.,cos(2.*n*(phi1-phi2)),1);//<2'>_{2n,2n}
2533 fDirectCorrelations->Fill(42.,cos(3.*n*(phi1-phi2)),1);//<2'>_{3n,3n}
2534 fDirectCorrelations->Fill(43.,cos(4.*n*(phi1-phi2)),1);//<2'>_{4n,4n}
2536 }//end of for(Int_t i2=0;i2<nPrim;i2++)
2537 }//end of for(Int_t i1=0;i1<nPrim;i1++)
2546 for(Int_t i1=0;i1<nPrim;i1++)
2548 fTrack=anEvent->GetTrack(i1);
2549 if(!((fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)&&(fTrack->InPOISelection())))continue;//POI condition
2551 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
2552 for(Int_t i2=0;i2<nPrim;i2++)
2555 fTrack=anEvent->GetTrack(i2);
2556 if(!(fTrack->InRPSelection()))continue;//RP condition
2558 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
2559 for(Int_t i3=0;i3<nPrim;i3++)
2561 if(i3==i1||i3==i2)continue;
2562 fTrack=anEvent->GetTrack(i3);
2563 if(!(fTrack->InRPSelection()))continue;//RP condition
2565 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
2566 //fill the fDirectCorrelations:
2569 fDirectCorrelations->Fill(101.,cos(n*(phi2-phi3)),wPhi1*wPhi2*wPhi3); // <w1 w2 w3 cos(n(phi2-phi3))>
2570 fDirectCorrelations->Fill(102.,cos(n*(phi1-phi3)),pow(wPhi2,2.)*wPhi3); // <w2^2 w3 cos(n(psi1-phi2))>
2573 fDirectCorrelations->Fill(110.,cos(n*(2.*phi1-phi2-phi3)),wPhi1*wPhi2*wPhi3); // <w1 w2 w3 cos(n(2psi1-phi2-phi3))>
2574 fDirectCorrelations->Fill(111.,cos(n*(phi1+phi2-2.*phi3)),wPhi2*pow(wPhi3,2.)); // <w2 w3^2 cos(n(psi1+phi2-2.*phi3))>
2577 //fDirectCorrelations->Fill(46.,cos(n*(phi1+phi2-2.*phi3)),1);//<3'>_{n,n|2n}
2578 }//end of for(Int_t i3=0;i3<nPrim;i3++)
2579 }//end of for(Int_t i2=0;i2<nPrim;i2++)
2580 }//end of for(Int_t i1=0;i1<nPrim;i1++)
2589 for(Int_t i1=0;i1<nPrim;i1++)
2591 fTrack=anEvent->GetTrack(i1);
2592 if(!((fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)&&(fTrack->InPOISelection())))continue;//POI condition
2595 if(phiWeights) wPhi1 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi1*nBinsPhi/TMath::TwoPi())));
2596 for(Int_t i2=0;i2<nPrim;i2++)
2599 fTrack=anEvent->GetTrack(i2);
2600 if(!(fTrack->InRPSelection()))continue;//RP condition
2602 if(phiWeights) wPhi2 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi2*nBinsPhi/TMath::TwoPi())));
2603 for(Int_t i3=0;i3<nPrim;i3++)
2605 if(i3==i1||i3==i2)continue;
2606 fTrack=anEvent->GetTrack(i3);
2607 if(!(fTrack->InRPSelection()))continue;//RP condition
2609 if(phiWeights) wPhi3 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi3*nBinsPhi/TMath::TwoPi())));
2610 for(Int_t i4=0;i4<nPrim;i4++)
2612 if(i4==i1||i4==i2||i4==i3)continue;
2613 fTrack=anEvent->GetTrack(i4);
2614 if(!(fTrack->InRPSelection()))continue;//RP condition
2616 if(phiWeights) wPhi4 = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(phi4*nBinsPhi/TMath::TwoPi())));
2617 //fill the fDirectCorrelations:
2619 fDirectCorrelations->Fill(120.,cos(n*(phi1+phi2-phi3-phi4)),wPhi2*wPhi3*wPhi4); // <w1 w2 w3 cos(n(psi1+phi1-phi2-phi3))>
2621 tempLoop+=wPhi2*wPhi3*wPhi4;
2623 }//end of for(Int_t i4=0;i4<nPrim;i4++)
2624 }//end of for(Int_t i3=0;i3<nPrim;i3++)
2625 }//end of for(Int_t i2=0;i2<nPrim;i2++)
2626 }//end of for(Int_t i1=0;i1<nPrim;i1++)
2654 for(Int_t i1=0;i1<nPrim;i1++)
2656 fTrack=anEvent->GetTrack(i1);
2657 if(!((fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)&&(fTrack->InPOISelection())))continue;//POI condition
2659 for(Int_t i2=0;i2<nPrim;i2++)
2662 fTrack=anEvent->GetTrack(i2);
2663 if(!(fTrack->InRPSelection()))continue;//RP condition
2665 for(Int_t i3=0;i3<nPrim;i3++)
2667 if(i3==i1||i3==i2)continue;
2668 fTrack=anEvent->GetTrack(i3);
2669 if(!(fTrack->InRPSelection()))continue;//RP condition
2671 for(Int_t i4=0;i4<nPrim;i4++)
2673 if(i4==i1||i4==i2||i4==i3)continue;
2674 fTrack=anEvent->GetTrack(i4);
2675 if(!(fTrack->InRPSelection()))continue;//RP condition
2676 phi4=fTrack->Phi();//
2677 for(Int_t i5=0;i5<nPrim;i5++)
2679 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
2680 fTrack=anEvent->GetTrack(i5);
2681 if(!(fTrack->InRPSelection()))continue;//RP condition
2683 //fill the fDirectCorrelations:if(bNestedLoops)
2684 fDirectCorrelations->Fill(55.,cos(2.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5),1);//<5'>_{2n,n|n,n,n}
2685 }//end of for(Int_t i5=0;i5<nPrim;i5++)
2686 }//end of for(Int_t i4=0;i4<nPrim;i4++)
2687 }//end of for(Int_t i3=0;i3<nPrim;i3++)
2688 }//end of for(Int_t i2=0;i2<nPrim;i2++)
2689 }//end of for(Int_t i1=0;i1<nPrim;i1++)
2691 //<6'>_{n,n,n|n,n,n}
2692 for(Int_t i1=0;i1<nPrim;i1++)
2694 fTrack=anEvent->GetTrack(i1);
2695 if(!((fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)&&(fTrack->InPOISelection())))continue;//POI condition
2697 for(Int_t i2=0;i2<nPrim;i2++)
2700 fTrack=anEvent->GetTrack(i2);
2701 if(!(fTrack->InRPSelection()))continue;//RP condition
2703 for(Int_t i3=0;i3<nPrim;i3++)
2705 if(i3==i1||i3==i2)continue;
2706 fTrack=anEvent->GetTrack(i3);
2707 if(!(fTrack->InRPSelection()))continue;//RP condition
2709 for(Int_t i4=0;i4<nPrim;i4++)
2711 if(i4==i1||i4==i2||i4==i3)continue;
2712 fTrack=anEvent->GetTrack(i4);
2713 if(!(fTrack->InRPSelection()))continue;//RP condition
2715 for(Int_t i5=0;i5<nPrim;i5++)
2717 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
2718 fTrack=anEvent->GetTrack(i5);
2719 if(!(fTrack->InRPSelection()))continue;//RP condition
2721 for(Int_t i6=0;i6<nPrim;i6++)
2723 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
2724 fTrack=anEvent->GetTrack(i6);
2725 if(!(fTrack->InRPSelection()))continue;//RP condition
2727 //fill the fDirectCorrelations:
2728 fDirectCorrelations->Fill(60.,cos(n*(phi1+phi2+phi3-phi4-phi5-phi6)),1);//<6'>_{n,n,n|n,n,n}
2729 }//end of for(Int_t i6=0;i6<nPrim;i6++)
2730 }//end of for(Int_t i5=0;i5<nPrim;i5++)
2731 }//end of for(Int_t i4=0;i4<nPrim;i4++)
2732 }//end of for(Int_t i3=0;i3<nPrim;i3++)
2733 }//end of for(Int_t i2=0;i2<nPrim;i2++)
2734 }//end of for(Int_t i1=0;i1<nPrim;i1++)
2736 //<7'>_{2n,n,n|n,n,n,n}
2737 for(Int_t i1=0;i1<nPrim;i1++)
2739 fTrack=anEvent->GetTrack(i1);
2740 if(!((fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)&&(fTrack->InPOISelection())))continue;//POI condition
2742 for(Int_t i2=0;i2<nPrim;i2++)
2745 fTrack=anEvent->GetTrack(i2);
2746 if(!(fTrack->InRPSelection()))continue;//RP condition
2748 for(Int_t i3=0;i3<nPrim;i3++)
2750 if(i3==i1||i3==i2)continue;
2751 fTrack=anEvent->GetTrack(i3);
2752 if(!(fTrack->InRPSelection()))continue;//RP condition
2754 for(Int_t i4=0;i4<nPrim;i4++)
2756 if(i4==i1||i4==i2||i4==i3)continue;
2757 fTrack=anEvent->GetTrack(i4);
2758 if(!(fTrack->InRPSelection()))continue;//RP condition
2760 for(Int_t i5=0;i5<nPrim;i5++)
2762 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
2763 fTrack=anEvent->GetTrack(i5);
2764 if(!(fTrack->InRPSelection()))continue;//RP condition
2766 for(Int_t i6=0;i6<nPrim;i6++)
2768 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
2769 fTrack=anEvent->GetTrack(i6);
2770 if(!(fTrack->InRPSelection()))continue;//RP condition
2772 for(Int_t i7=0;i7<nPrim;i7++)
2774 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
2775 fTrack=anEvent->GetTrack(i7);
2776 if(!(fTrack->InRPSelection()))continue;//RP condition
2778 //fill the fDirectCorrelations:
2779 fDirectCorrelations->Fill(65.,cos(2.*n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6-n*phi7),1);//<7'>_{2n,n,n|n,n,n,n}
2780 }//end of for(Int_t i7=0;i7<nPrim;i7++)
2781 }//end of for(Int_t i6=0;i6<nPrim;i6++)
2782 }//end of for(Int_t i5=0;i5<nPrim;i5++)
2783 }//end of for(Int_t i4=0;i4<nPrim;i4++)
2784 }//end of for(Int_t i3=0;i3<nPrim;i3++)
2785 }//end of for(Int_t i2=0;i2<nPrim;i2++)
2786 }//end of for(Int_t i1=0;i1<nPrim;i1++)
2788 //<8'>_{n,n,n,n|n,n,n,n}
2789 for(Int_t i1=0;i1<nPrim;i1++)
2791 fTrack=anEvent->GetTrack(i1);
2792 if(!((fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)&&(fTrack->InPOISelection())))continue;//POI condition
2794 for(Int_t i2=0;i2<nPrim;i2++)
2797 fTrack=anEvent->GetTrack(i2);
2798 if(!(fTrack->InRPSelection()))continue;//RP condition
2800 for(Int_t i3=0;i3<nPrim;i3++)
2802 if(i3==i1||i3==i2)continue;
2803 fTrack=anEvent->GetTrack(i3);
2804 if(!(fTrack->InRPSelection()))continue;//RP condition
2806 for(Int_t i4=0;i4<nPrim;i4++)
2808 if(i4==i1||i4==i2||i4==i3)continue;
2809 fTrack=anEvent->GetTrack(i4);
2810 if(!(fTrack->InRPSelection()))continue;//RP condition
2812 for(Int_t i5=0;i5<nPrim;i5++)
2814 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
2815 fTrack=anEvent->GetTrack(i5);
2816 if(!(fTrack->InRPSelection()))continue;//RP condition
2818 for(Int_t i6=0;i6<nPrim;i6++)
2820 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
2821 fTrack=anEvent->GetTrack(i6);
2822 if(!(fTrack->InRPSelection()))continue;//RP condition
2824 for(Int_t i7=0;i7<nPrim;i7++)
2826 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
2827 fTrack=anEvent->GetTrack(i7);
2828 if(!(fTrack->InRPSelection()))continue;//RP condition
2830 for(Int_t i8=0;i8<nPrim;i8++)
2832 if(i8==i1||i8==i2||i8==i3||i8==i4||i8==i5||i8==i6||i8==i7)continue;
2833 fTrack=anEvent->GetTrack(i8);
2834 if(!(fTrack->InRPSelection()))continue;//RP condition
2836 //fill the fDirectCorrelations:
2837 fDirectCorrelations->Fill(70.,cos(n*(phi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)),1);//<8'>_{n,n,n,n|n,n,n,n}
2838 }//end of for(Int_t i8=0;i8<nPrim;i8++)
2839 }//end of for(Int_t i7=0;i7<nPrim;i7++)
2840 }//end of for(Int_t i6=0;i6<nPrim;i6++)
2841 }//end of for(Int_t i5=0;i5<nPrim;i5++)
2842 }//end of for(Int_t i4=0;i4<nPrim;i4++)
2843 }//end of for(Int_t i3=0;i3<nPrim;i3++)
2844 }//end of for(Int_t i2=0;i2<nPrim;i2++)
2845 }//end of for(Int_t i1=0;i1<nPrim;i1++)
2860 }// end of if (nestedLoops)
2889 //--------------------------------------------------------------------------------------------------------------------------------
2891 //}//end of if(nPrim>0&&nPrim<12)
2894 //================================================================================================================
2896 void AliFlowAnalysisWithQCumulants::Finish()
2898 //calculate the final results
2901 Int_t n = 2; // to be improved
2903 //---------------------------------------------------------------------------------------------------------
2904 // avarage multiplicity
2905 Double_t AvMPOI = (fCommonHists2nd->GetHistMultPOI())->GetMean(); // to be improved
2906 Double_t AvMRP = (fCommonHists2nd->GetHistMultRP())->GetMean(); // to be improved
2909 Double_t nEvtsPOI = (fCommonHists2nd->GetHistMultPOI())->GetEntries(); // to be improved
2910 Double_t nEvtsRP = (fCommonHists2nd->GetHistMultRP())->GetEntries(); // to be improved
2911 //---------------------------------------------------------------------------------------------------------
2913 //---------------------------------------------------------------------------------------------------------
2914 // 2-, 4-, 6- and 8-particle azimuthal correlation:
2915 Double_t two = fQCorrelations->GetBinContent(1); //<<2>>_{n|n}
2916 Double_t four = fQCorrelations->GetBinContent(11); //<<4>>_{n,n|n,n}
2917 Double_t six = fQCorrelations->GetBinContent(24); //<<6>>_{n,n,n|n,n,n}
2918 Double_t eight = fQCorrelations->GetBinContent(31); //<<8>>_{n,n,n,n|n,n,n,n}
2920 // 2nd, 4th, 6th and 8th order Q-cumulant:
2921 Double_t secondOrderQCumulant = two; //c_n{2}
2922 Double_t fourthOrderQCumulant = four-2.*pow(two,2.); //c_n{4}
2923 Double_t sixthOrderQCumulant = six-9.*two*four+12.*pow(two,3.); //c_n{6}
2924 Double_t eightOrderQCumulant = eight-16.*two*six-18.*pow(four,2.)+144.*pow(two,2.)*four-144.*pow(two,4.); //c_n{8}
2926 // "no-name" integrated flow estimates from Q-cumulants:
2927 Double_t vn2=0.,vn4=0.,vn6=0.,vn8=0.;
2928 // Double_t sd2=0.,sd4=0.,sd6=0.,sd8=0.;
2929 Double_t sd6=0.,sd8=0.; // to be improved/removed
2930 if(secondOrderQCumulant>0.)
2932 vn2 = pow(secondOrderQCumulant,0.5); //v_n{2}
2934 if(fourthOrderQCumulant<0.)
2936 vn4 = pow(-fourthOrderQCumulant,1./4.); //v_n{4}
2938 if(sixthOrderQCumulant>0.)
2940 vn6 = pow((1./4.)*sixthOrderQCumulant,1./6.); //v_n{6}
2942 if(eightOrderQCumulant<0.)
2944 vn8 = pow((-1./33.)*eightOrderQCumulant,1./8.); //v_n{8}
2946 //---------------------------------------------------------------------------------------------------------
2948 //---------------------------------------------------------------------------------------------------------
2949 // weighted 2-, 4-, 6- and 8-particle azimuthal correlation:
2950 Double_t twoW = fWeightedQCorrelations->GetBinContent(1); //<<2>>_{n|n}
2951 Double_t fourW = fWeightedQCorrelations->GetBinContent(21); //<<4>>_{n,n|n,n}
2952 // Double_t sixW = fWeightedQCorrelations->GetBinContent(24); //<<6>>_{n,n,n|n,n,n}
2953 // Double_t eightW = fWeightedQCorrelations->GetBinContent(31); //<<8>>_{n,n,n,n|n,n,n,n}
2955 // 2nd, 4th, 6th and 8th order weighted Q-cumulant:
2956 Double_t secondOrderQCumulantW = twoW; //c_n{2}
2957 Double_t fourthOrderQCumulantW = fourW-2.*pow(twoW,2.); //c_n{4}
2958 // Double_t sixthOrderQCumulantW = sixW-9.*twoW*fourW+12.*pow(twoW,3.); //c_n{6}
2959 // Double_t eightOrderQCumulantW = eightW-16.*twoW*sixW-18.*pow(fourW,2.)+144.*pow(twoW,2.)*fourW-144.*pow(twoW,4.); //c_n{8}
2961 // "no-name" integrated flow estimates from weighted Q-cumulants:
2963 cout<<"**************************************"<<endl;
2964 cout<<"**************************************"<<endl;
2965 cout<<"flow estimates from Q-cumulants :"<<endl;
2968 Double_t vn2W=0.,vn4W=0.;
2969 Double_t sd2W=0.,sd4W=0.;
2970 if(secondOrderQCumulantW>0.){
2971 vn2W = pow(secondOrderQCumulantW,0.5); // weighted v_n{2}
2972 //sd2W = 0.5*pow(secondOrderQCumulantW,-0.5)*secondOrderQCumulantErrorW; // to be improved (correct treatment of errors needed)
2973 cout<<" v_"<<n<<"{2} = "<<vn2W<<" +/- "<<sd2W<<endl;
2974 fIntFlowResultsQC->SetBinContent(1,vn2W);
2975 //fIntFlowResultsQC->SetBinError(1,sd2W);
2976 //common histograms:
2977 fCommonHistsResults2nd->FillIntegratedFlow(vn2W,sd2W);
2978 //fCommonHistsResults2nd->FillChi(vn2W*pow(AvM,0.5)); // to be removed
2980 cout<<" v_"<<n<<"{2} = Im"<<endl;
2982 if(fourW!=0. && fourthOrderQCumulantW<0.){
2983 vn4W = pow(-fourthOrderQCumulantW,1./4.); //v_n{4}
2984 //sd4W = 0.25*pow(-fourthOrderQCumulantW,-3./4.)*fourthOrderQCumulantErrorW; // to be improved (correct treatment of errors needed)
2985 cout<<" v_"<<n<<"{4} = "<<vn4W<<" +/- "<<sd4W<<endl;
2986 fIntFlowResultsQC->SetBinContent(2,vn4W);
2987 //fIntFlowResultsQC->SetBinError(2,sd4W);
2988 //common histograms:
2989 fCommonHistsResults4th->FillIntegratedFlow(vn4W,sd4W);
2990 //fCommonHistsResults4th->FillChi(vn4W*pow(AvM,0.5)); // to be removed
2992 cout<<" v_"<<n<<"{4} = Im"<<endl;
2994 // !!! to be improved (6th and 8th order are without weights) !!!
2995 if(six!=0. && sixthOrderQCumulant>0.){
2996 vn6 = pow((1./4.)*sixthOrderQCumulant,1./6.); //v_n{6}
2997 //sd6 = (1./6.)*pow(2.,-1./3.)*pow(sixthOrderQCumulant,-5./6.)*sixthOrderQCumulantError;
2998 cout<<" v_"<<n<<"{6} = "<<vn6<<" +/- "<<sd6<<endl;
2999 fIntFlowResultsQC->SetBinContent(3,vn6);
3000 //fIntFlowResultsQC->SetBinError(3,sd6);
3001 //common histograms:
3002 fCommonHistsResults6th->FillIntegratedFlow(vn6,sd6);
3003 //fCommonHistsResults6th->FillChi(vn6*pow(AvM,0.5));//to be removed
3005 cout<<" v_"<<n<<"{6} = Im"<<endl;
3007 if(eight!=0. && eightOrderQCumulant<0.){
3008 vn8 = pow((-1./33.)*eightOrderQCumulant,1./8.); //v_n{8}
3009 cout<<" v_"<<n<<"{8} = "<<vn8<<" +/- "<<sd8<<endl;
3010 fIntFlowResultsQC->SetBinContent(4,vn8);
3011 //fIntFlowResultsQC->SetBinError(4,sd8);
3012 //common histograms:
3013 fCommonHistsResults8th->FillIntegratedFlow(vn8,sd8);
3014 //fCommonHistsResults8th->FillChi(vn8*pow(AvM,0.5));//to be removed
3016 cout<<" v_"<<n<<"{8} = Im"<<endl;
3019 cout<<" nEvts = "<<nEvtsRP<<", AvM = "<<AvMRP<<endl; // to be improved
3020 cout<<"**************************************"<<endl;
3021 cout<<"**************************************"<<endl;
3023 //---------------------------------------------------------------------------------------------------------
3025 //---------------------------------------------------------------------------------------------------------
3026 // differential flow (POI)
3027 Int_t nBinsPtPOI = f2WPerPtBin1n1nPOI->GetNbinsX();
3028 Int_t nBinsEtaPOI = f4WPerPtBin1n1n1n1nPOI->GetNbinsX();
3031 Double_t secondOrderQCumulantDiffFlowPtPOIW = 0.;
3032 Double_t fourthOrderQCumulantDiffFlowPtPOIW = 0.;
3034 Double_t dVn2ndPOIW=0.,dSd2ndPOIW=0.,dDiffvn2ndPOIW=0.,dYield2ndPOIW=0.,dSum2ndPOIW=0.;
3035 Double_t dVn4thPOIW=0.,dSd4thPOIW=0.,dDiffvn4thPOIW=0.,dYield4thPOIW=0.,dSum4thPOIW=0.;
3037 for(Int_t bb=1;bb<nBinsPtPOI+1;bb++)
3040 if(f2WPerPtBin1n1nPOI->GetBinEntries(bb)>0.&&vn2W!=0)
3042 secondOrderQCumulantDiffFlowPtPOIW = f2WPerPtBin1n1nPOI->GetBinContent(bb); // with weights
3043 fDiffFlowResults2ndOrderQC->SetBinContent(bb,secondOrderQCumulantDiffFlowPtPOIW/vn2W);
3044 // common histogram:
3045 fCommonHistsResults2nd->FillDifferentialFlowPtPOI(bb,secondOrderQCumulantDiffFlowPtPOIW/vn2W, 0.); //to be improved (errors && bb or bb+1 ?)
3046 // -------------------------------------------------------------------
3047 // integrated flow (weighted, POI, Pt, 2nd order):
3048 dDiffvn2ndPOIW=(fCommonHistsResults2nd->GetHistDiffFlowPtPOI())->GetBinContent(bb);
3049 dYield2ndPOIW=(fCommonHists2nd->GetHistPtPOI())->GetBinContent(bb);
3050 dVn2ndPOIW+=dDiffvn2ndPOIW*dYield2ndPOIW;
3051 dSum2ndPOIW+=dYield2ndPOIW;
3052 // -------------------------------------------------------------------
3055 if(f4WPerPtBin1n1n1n1nPOI->GetBinEntries(bb)>0.&&vn4W!=0.)
3057 fourthOrderQCumulantDiffFlowPtPOIW = f4WPerPtBin1n1n1n1nPOI->GetBinContent(bb)-2.*f2WPerPtBin1n1nPOI->GetBinContent(bb)*pow(vn2W,2.); // with weights
3058 fDiffFlowResults4thOrderQC->SetBinContent(bb,-1.*fourthOrderQCumulantDiffFlowPtPOIW/pow(vn4W,3.));
3060 fCommonHistsResults4th->FillDifferentialFlowPtPOI(bb,-1.*fourthOrderQCumulantDiffFlowPtPOIW/pow(vn4W,3.), 0.); //to be improved (errors)
3061 // -------------------------------------------------------------------
3062 //integrated flow (POI, Pt, 4th order):
3063 dDiffvn4thPOIW=(fCommonHistsResults4th->GetHistDiffFlowPtPOI())->GetBinContent(bb);
3064 dYield4thPOIW=(fCommonHists4th->GetHistPtPOI())->GetBinContent(bb);
3065 dVn4thPOIW+=dDiffvn4thPOIW*dYield4thPOIW;
3066 dSum4thPOIW+=dYield4thPOIW;
3067 // -------------------------------------------------------------------
3072 cout<<"**************************************"<<endl;
3073 cout<<"**************************************"<<endl;
3074 cout<<"flow estimates from Q-cumulants (POI):"<<endl;
3076 //storing the final results for integrated flow (POI):
3078 if(dSum2ndPOIW && fCommonHistsResults2nd)
3080 dVn2ndPOIW/=dSum2ndPOIW;
3081 fCommonHistsResults2nd->FillIntegratedFlowPOI(dVn2ndPOIW,0.); // to be improved (errors)
3082 cout<<" v_"<<n<<"{2} = "<<dVn2ndPOIW<<" +/- "<<dSd2ndPOIW<<endl;
3085 cout<<" v_"<<n<<"{2} = Im"<<endl;
3089 if(dSum4thPOIW && fCommonHistsResults4th)
3091 dVn4thPOIW/=dSum4thPOIW;
3092 fCommonHistsResults4th->FillIntegratedFlowPOI(dVn4thPOIW,0.); // to be improved (errors)
3093 cout<<" v_"<<n<<"{4} = "<<dVn4thPOIW<<" +/- "<<dSd4thPOIW<<endl;
3096 cout<<" v_"<<n<<"{4} = Im"<<endl;
3100 cout<<" nEvts = "<<nEvtsPOI<<", AvM = "<<AvMPOI<<endl;
3101 cout<<"**************************************"<<endl;
3102 cout<<"**************************************"<<endl;
3106 Double_t secondOrderQCumulantDiffFlowEtaPOIW = 0.;
3107 Double_t fourthOrderQCumulantDiffFlowEtaPOIW = 0.;
3109 for(Int_t bb=1;bb<nBinsEtaPOI+1;bb++)
3111 if(f2WPerEtaBin1n1nPOI->GetBinEntries(bb)>0.&&vn2W!=0)
3113 secondOrderQCumulantDiffFlowEtaPOIW = f2WPerEtaBin1n1nPOI->GetBinContent(bb); // with weights
3114 fDiffFlowResults2ndOrderQC->SetBinContent(bb,secondOrderQCumulantDiffFlowEtaPOIW/vn2W);
3116 fCommonHistsResults2nd->FillDifferentialFlowEtaPOI(bb,secondOrderQCumulantDiffFlowEtaPOIW/vn2W, 0.);//to be improved (errors)
3118 if(f4WPerEtaBin1n1n1n1nPOI->GetBinEntries(bb)>0.&&vn4W!=0.)
3120 fourthOrderQCumulantDiffFlowEtaPOIW = f4WPerEtaBin1n1n1n1nPOI->GetBinContent(bb)-2.*f2WPerEtaBin1n1nPOI->GetBinContent(bb)*pow(vn2W,2.); // with weights
3121 fDiffFlowResults4thOrderQC->SetBinContent(bb,-1.*fourthOrderQCumulantDiffFlowEtaPOIW/pow(vn4W,3.));
3123 fCommonHistsResults4th->FillDifferentialFlowEtaPOI(bb,-1.*fourthOrderQCumulantDiffFlowEtaPOIW/pow(vn4W,3.), 0.);//to be improved (errors)
3126 //------------------------------------------------------------
3132 //---------------------------------------------------------------------------------------------------------
3133 // differential flow (RP)
3134 Int_t nBinsPtRP = f2WPerPtBin1n1nRP->GetNbinsX();
3135 Int_t nBinsEtaRP = f4WPerPtBin1n1n1n1nRP->GetNbinsX();
3138 Double_t secondOrderQCumulantDiffFlowPtRPW = 0.;
3139 Double_t fourthOrderQCumulantDiffFlowPtRPW = 0.;
3141 Double_t dVn2ndRPW=0.,dSd2ndRPW=0.,dDiffvn2ndRPW=0.,dYield2ndRPW=0.,dSum2ndRPW=0.;
3142 Double_t dVn4thRPW=0.,dSd4thRPW=0.,dDiffvn4thRPW=0.,dYield4thRPW=0.,dSum4thRPW=0.;
3144 for(Int_t bb=1;bb<nBinsPtRP+1;bb++)
3147 if(f2WPerPtBin1n1nRP->GetBinEntries(bb)>0.&&vn2W!=0)
3149 secondOrderQCumulantDiffFlowPtRPW = f2WPerPtBin1n1nRP->GetBinContent(bb); // with weights
3150 fDiffFlowResults2ndOrderQC->SetBinContent(bb,secondOrderQCumulantDiffFlowPtRPW/vn2W);
3151 // common histogram:
3152 fCommonHistsResults2nd->FillDifferentialFlowPtRP(bb,secondOrderQCumulantDiffFlowPtRPW/vn2W, 0.); //to be improved (errors && bb or bb+1 ?)
3153 // -------------------------------------------------------------------
3154 // integrated flow (weighted, RP, Pt, 2nd order):
3155 dDiffvn2ndRPW=(fCommonHistsResults2nd->GetHistDiffFlowPtRP())->GetBinContent(bb);
3156 dYield2ndRPW=(fCommonHists2nd->GetHistPtRP())->GetBinContent(bb);
3157 dVn2ndRPW+=dDiffvn2ndRPW*dYield2ndRPW;
3158 dSum2ndRPW+=dYield2ndRPW;
3159 // -------------------------------------------------------------------
3162 if(f4WPerPtBin1n1n1n1nRP->GetBinEntries(bb)>0.&&vn4W!=0.)
3164 fourthOrderQCumulantDiffFlowPtRPW = f4WPerPtBin1n1n1n1nRP->GetBinContent(bb)-2.*f2WPerPtBin1n1nRP->GetBinContent(bb)*pow(vn2W,2.); // with weights
3165 fDiffFlowResults4thOrderQC->SetBinContent(bb,-1.*fourthOrderQCumulantDiffFlowPtRPW/pow(vn4W,3.));
3167 fCommonHistsResults4th->FillDifferentialFlowPtRP(bb,-1.*fourthOrderQCumulantDiffFlowPtRPW/pow(vn4W,3.), 0.); //to be improved (errors)
3168 // -------------------------------------------------------------------
3169 //integrated flow (RP, Pt, 4th order):
3170 dDiffvn4thRPW=(fCommonHistsResults4th->GetHistDiffFlowPtRP())->GetBinContent(bb);
3171 dYield4thRPW=(fCommonHists4th->GetHistPtRP())->GetBinContent(bb);
3172 dVn4thRPW+=dDiffvn4thRPW*dYield4thRPW;
3173 dSum4thRPW+=dYield4thRPW;
3174 // -------------------------------------------------------------------
3179 cout<<"**************************************"<<endl;
3180 cout<<"**************************************"<<endl;
3181 cout<<"flow estimates from Q-cumulants (RP):"<<endl;
3183 //storing the final results for integrated flow (RP):
3185 if(dSum2ndRPW && fCommonHistsResults2nd)
3187 dVn2ndRPW/=dSum2ndRPW;
3188 fCommonHistsResults2nd->FillIntegratedFlowRP(dVn2ndRPW,0.); // to be improved (errors)
3189 cout<<" v_"<<n<<"{2} = "<<dVn2ndRPW<<" +/- "<<dSd2ndRPW<<endl;
3192 cout<<" v_"<<n<<"{2} = Im"<<endl;
3196 if(dSum4thRPW && fCommonHistsResults4th)
3198 dVn4thRPW/=dSum4thRPW;
3199 fCommonHistsResults4th->FillIntegratedFlowRP(dVn4thRPW,0.); // to be improved (errors)
3200 cout<<" v_"<<n<<"{4} = "<<dVn4thRPW<<" +/- "<<dSd4thRPW<<endl;
3203 cout<<" v_"<<n<<"{4} = Im"<<endl;
3207 cout<<" nEvts = "<<nEvtsRP<<", AvM = "<<AvMRP<<endl;
3208 cout<<"**************************************"<<endl;
3209 cout<<"**************************************"<<endl;
3213 Double_t secondOrderQCumulantDiffFlowEtaRPW = 0.;
3214 Double_t fourthOrderQCumulantDiffFlowEtaRPW = 0.;
3216 for(Int_t bb=1;bb<nBinsEtaRP+1;bb++)
3218 if(f2WPerEtaBin1n1nRP->GetBinEntries(bb)>0.&&vn2W!=0)
3220 secondOrderQCumulantDiffFlowEtaRPW = f2WPerEtaBin1n1nRP->GetBinContent(bb); // with weights
3221 fDiffFlowResults2ndOrderQC->SetBinContent(bb,secondOrderQCumulantDiffFlowEtaRPW/vn2W);
3223 fCommonHistsResults2nd->FillDifferentialFlowEtaRP(bb,secondOrderQCumulantDiffFlowEtaRPW/vn2W, 0.);//to be improved (errors)
3225 if(f4WPerEtaBin1n1n1n1nRP->GetBinEntries(bb)>0.&&vn4W!=0.)
3227 fourthOrderQCumulantDiffFlowEtaRPW = f4WPerEtaBin1n1n1n1nRP->GetBinContent(bb)-2.*f2WPerEtaBin1n1nRP->GetBinContent(bb)*pow(vn2W,2.); // with weights
3228 fDiffFlowResults4thOrderQC->SetBinContent(bb,-1.*fourthOrderQCumulantDiffFlowEtaRPW/pow(vn4W,3.));
3230 fCommonHistsResults4th->FillDifferentialFlowEtaRP(bb,-1.*fourthOrderQCumulantDiffFlowEtaRPW/pow(vn4W,3.), 0.);//to be improved (errors)
3233 //------------------------------------------------------------
3244 Bool_t nestedLoops = kFALSE;
3247 //needed for direct correlations (obtained from nested loops)
3250 cout<<" **** cross-checking the formulas ****"<<endl;
3251 cout<<" **** for integrated flow ****"<<endl;
3252 cout<<"(selected only events for which 0 < M < 12 "<<endl;
3253 cout<<" from dataset in /data/alice2/ante/AOD) "<<endl;
3256 //cout<<" nEvts = "<<nEvts<<", AvM = "<<AvM<<endl;
3258 cout<<"<w1 w2 cos(n*(phi1-phi2))> from Q-vectors = "<<fWeightedQCorrelations->GetBinContent(1)<<endl;
3259 cout<<"<w1 w2 cos(n*(phi1-phi2))> from nested loops = "<<fDirectCorrelations->GetBinContent(1)<<endl;
3261 cout<<"<w1^2 w2^2 cos(2n*(phi1-phi2))> from Q-vectors = "<<fWeightedQCorrelations->GetBinContent(2)<<endl;
3262 cout<<"<w1^2 w2^2 cos(2n*(phi1-phi2))> from nested loops = "<<fDirectCorrelations->GetBinContent(2)<<endl;
3264 cout<<"<w1^3 w2^3 cos(3n*(phi1-phi2))> from Q-vectors = "<<fWeightedQCorrelations->GetBinContent(3)<<endl;
3265 cout<<"<w1^3 w2^3 cos(3n*(phi1-phi2))> from nested loops = "<<fDirectCorrelations->GetBinContent(3)<<endl;
3267 cout<<"<w1^4 w2^4 cos(4n*(phi1-phi2))> from Q-vectors = "<<fWeightedQCorrelations->GetBinContent(4)<<endl;
3268 cout<<"<w1^4 w2^4 cos(4n*(phi1-phi2))> from nested loops = "<<fDirectCorrelations->GetBinContent(4)<<endl;
3270 cout<<"<w1^3 w2 cos(n*(phi1-phi2))> from Q-vectors = "<<fWeightedQCorrelations->GetBinContent(5)<<endl;
3271 cout<<"<w1^3 w2 cos(n*(phi1-phi2))> from nested loops = "<<fDirectCorrelations->GetBinContent(5)<<endl;
3273 cout<<"<w1 w2 w3^2 cos(n*(phi1-phi2))> from Q-vectors = "<<fWeightedQCorrelations->GetBinContent(6)<<endl;
3274 cout<<"<w1 w2 w3^2 cos(n*(phi1-phi2))> from nested loops = "<<fDirectCorrelations->GetBinContent(6)<<endl;
3276 cout<<"<w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))> from Q-vectors = "<<fWeightedQCorrelations->GetBinContent(11)<<endl;
3277 cout<<"<w1^2 w2 w3 cos(n*(2phi1-phi2-phi3))> from nested loops = "<<fDirectCorrelations->GetBinContent(11)<<endl;
3280 cout<<"<w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> from Q-vectors = "<<fWeightedQCorrelations->GetBinContent(21)<<endl;
3281 cout<<"<w1 w2 w3 w4 cos(n*(phi1+phi2-phi3-phi4))> from nested loops = "<<fDirectCorrelations->GetBinContent(21)<<endl;
3286 cout<<"<3>_{4n,2n,2n} from Q-vectors = "<<fQCorrelations->GetBinContent(8)<<endl;
3287 cout<<"<3>_{4n,2n,2n} from nested loops = "<<fDirectCorrelations->GetBinContent(8)<<endl;
3289 cout<<"<3>_{4n,3n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(9)<<endl;
3290 cout<<"<3>_{4n,3n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(9)<<endl;
3293 cout<<"<4>_{2n,n|2n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(12)<<endl;
3294 cout<<"<4>_{2n,n|2n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(12)<<endl;
3296 cout<<"<4>_{2n,2n|2n,2n} from Q-vectors = "<<fQCorrelations->GetBinContent(13)<<endl;
3297 cout<<"<4>_{2n,2n|2n,2n} from nested loops = "<<fDirectCorrelations->GetBinContent(13)<<endl;
3299 cout<<"<4>_{3n|n,n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(14)<<endl;
3300 cout<<"<4>_{3n|n,n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(14)<<endl;
3302 cout<<"<4>_{3n,n|3n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(15)<<endl;
3303 cout<<"<4>_{3n,n|3n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(15)<<endl;
3305 cout<<"<4>_{3n,n|2n,2n} from Q-vectors = "<<fQCorrelations->GetBinContent(16)<<endl;
3306 cout<<"<4>_{3n,n|2n,2n} from nested loops = "<<fDirectCorrelations->GetBinContent(16)<<endl;
3308 cout<<"<4>_{4n|2n,n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(17)<<endl;
3309 cout<<"<4>_{4n|2n,n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(17)<<endl;
3311 cout<<"<5>_{2n,n|n,n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(19)<<endl;
3312 cout<<"<5>_{2n,n|n,n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(19)<<endl;
3314 cout<<"<5>_{2n,2n|2n,n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(20)<<endl;
3315 cout<<"<5>_{2n,2n|2n,n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(20)<<endl;
3317 cout<<"<5>_{3n,n|2n,n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(21)<<endl;
3318 cout<<"<5>_{3n,n|2n,n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(21)<<endl;
3320 cout<<"<5>_{4n|n,n,n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(22)<<endl;
3321 cout<<"<5>_{4n|n,n,n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(22)<<endl;
3323 cout<<"<6>_{n,n,n|n,n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(24)<<endl;
3324 cout<<"<6>_{n,n,n|n,n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(24)<<endl;
3326 cout<<"<6>_{2n,n,n|2n,n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(25)<<endl;
3327 cout<<"<6>_{2n,n,n|2n,n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(25)<<endl;
3329 cout<<"<6>_{2n,2n|n,n,n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(26)<<endl;
3330 cout<<"<6>_{2n,2n|n,n,n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(26)<<endl;
3332 cout<<"<6>_{3n,n|n,n,n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(27)<<endl;
3333 cout<<"<6>_{3n,n|n,n,n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(27)<<endl;
3335 cout<<"<7>_{2n,n,n|n,n,n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(29)<<endl;
3336 cout<<"<7>_{2n,n,n|n,n,n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(29)<<endl;
3338 cout<<"<8>_{n,n,n,n|n,n,n,n} from Q-vectors = "<<fQCorrelations->GetBinContent(31)<<endl;
3339 cout<<"<8>_{n,n,n,n|n,n,n,n} from nested loops = "<<fDirectCorrelations->GetBinContent(31)<<endl;
3358 cout<<"0.5 < Pt < 0.6 GeV"<<endl;
3360 cout<<"<w2 cos(n(psi1-phi2))> from Q-vectors = "<<f2WPerPtBin1n1nPOI->GetBinContent(6)<<endl;
3361 //cout<<"<w2 cos(n(psi1-phi2))> from Q-vectors = "<<f2WPerPtBin1n1nRP->GetName()<<endl;
3362 cout<<"<w2 cos(n(psi1-phi2))> from Q-vectors = "<<fDirectCorrelations->GetBinContent(101)<<endl;
3364 cout<<"<w2 w3 w4 cos(n(psi1+phi2-phi3-phi4))> from Q-vectors = "<<f4WPerPtBin1n1n1n1nPOI->GetBinContent(6)<<endl;
3365 //cout<<"<w2 w3 w4 cos(n(psi1+phi2-phi3-phi4))> from Q-vectors = "<<f4WPerPtBin1n1n1n1nRP->GetName()<<endl;
3366 cout<<"<w2 w3 w4 cos(n(psi1+phi2-phi3-phi4))> from nested loops = "<<fDirectCorrelations->GetBinContent(121)<<endl;
3369 }//end of if(nestedLoops)
3379 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
3380 // !!!! to be removed !!!!
3382 TCanvas* qvectorPlot = new TCanvas("qvectorPlot","Q-vector Plot",1000,1000);
3386 TH1D* style = new TH1D("style","Q-vectors",100,-244,244);
3387 (style->GetYaxis())->SetRangeUser(-244,244);
3391 Int_t nBins=fQvectorForEachEventX->GetNbinsX();
3392 Double_t qxxx=0.,qyyy=0.;
3393 //cout<<"nBins = "<<nBins<<endl;
3394 //cout<<fQvectorForEachEventX->GetBinEntries(4)<<endl;
3395 //cout<<fQvectorForEachEventY->GetBinEntries(4)<<endl;
3397 for(Int_t b=1;b<nBins+1;b++)
3399 if(fQvectorForEachEventX->GetBinEntries(b)==1 && fQvectorForEachEventY->GetBinEntries(b)==1)
3401 qxxx=fQvectorForEachEventX->GetBinContent(b);
3402 qyyy=fQvectorForEachEventY->GetBinContent(b);
3403 //cout<<qxxx<<" "<<qyyy<<endl;
3404 TArrow *qvector = new TArrow(0.0,0.0,qxxx,qyyy,0.0144,"|>");
3405 qvector->SetAngle(40);
3406 qvector->SetLineWidth(2);
3411 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
3416 //================================================================================================================
3418 void AliFlowAnalysisWithQCumulants::WriteHistograms(TString outputFileName)
3420 //store the final results in output .root file
3421 TFile *output = new TFile(outputFileName.Data(),"RECREATE");
3422 output->WriteObject(fHistList, "cobjQC","SingleKey");
3426 //================================================================================================================