]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FLOW/AliFlowAnalysisWithQCumulants.cxx
for local runs write histograms lists singlekey
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowAnalysisWithQCumulants.cxx
CommitLineData
bc92c0cb 1/*************************************************************************
2* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
3* *
4* Author: The ALICE Off-line Project. *
5* Contributors are mentioned in the code where appropriate. *
6* *
7* Permission to use, copy, modify and distribute this software and its *
8* documentation strictly for non-commercial purposes is hereby granted *
9* without fee, provided that the above copyright notice appears in all *
10* copies and that both the copyright notice and this permission notice *
11* appear in the supporting documentation. The authors make no claims *
12* about the suitability of this software for any purpose. It is *
13* provided "as is" without express or implied warranty. *
14**************************************************************************/
15
16/**********************************
17 * flow analysis with Q-cumulants *
18 * *
19 * author: Ante Bilandzic *
20 * (anteb@nikhef.nl) *
21 *********************************/
22
23#define AliFlowAnalysisWithQCumulants_cxx
24
25#include "Riostream.h"
26#include "AliFlowCommonConstants.h"
27#include "AliFlowCommonHist.h"
28#include "AliFlowCommonHistResults.h"
29#include "TChain.h"
30#include "TFile.h"
1315fe58 31#include "TList.h"
bc92c0cb 32#include "TParticle.h"
33#include "TRandom3.h"
1315fe58 34#include "TStyle.h"
bc92c0cb 35#include "TProfile.h"
36#include "TProfile2D.h"
37#include "TProfile3D.h"
1dfa3c16 38#include "TMath.h"
bc92c0cb 39#include "AliFlowEventSimple.h"
40#include "AliFlowTrackSimple.h"
41#include "AliFlowAnalysisWithQCumulants.h"
1315fe58 42#include "AliQCumulantsFunctions.h"
bc92c0cb 43
44#include "TRandom.h"
45
46class TH1;
47class TGraph;
48class TPave;
49class TLatex;
50class TMarker;
51class TRandom3;
52class TObjArray;
53class TList;
54class TCanvas;
55class TSystem;
56class TROOT;
57class AliFlowVector;
58class TVector;
59
60//================================================================================================================
61
62ClassImp(AliFlowAnalysisWithQCumulants)
63
64AliFlowAnalysisWithQCumulants::AliFlowAnalysisWithQCumulants():
65 fTrack(NULL),
66 fHistList(NULL),
1315fe58 67 fAvMultIntFlowQC(NULL),
bc92c0cb 68 fQvectorComponents(NULL),
1315fe58 69 fIntFlowResultsQC(NULL),
70 fDiffFlowResults2ndOrderQC(NULL),
71 fDiffFlowResults4thOrderQC(NULL),
72 fCovariances(NULL),
bc92c0cb 73 fQCorrelations(NULL),
8842fb2b 74 fQProduct(NULL),
bc92c0cb 75 fDirectCorrelations(NULL),
1dfa3c16 76 fPtReq1nRP(NULL),
77 fPtImq1nRP(NULL),
78 fPtReq2nRP(NULL),
79 fPtImq2nRP(NULL),
80 f2PerPtBin1n1nRP(NULL),
81 f2PerPtBin2n2nRP(NULL),
82 f3PerPtBin2n1n1nRP(NULL),
83 f3PerPtBin1n1n2nRP(NULL),
84 f4PerPtBin1n1n1n1nRP(NULL),
85 fEtaReq1nRP(NULL),
86 fEtaImq1nRP(NULL),
87 fEtaReq2nRP(NULL),
88 fEtaImq2nRP(NULL),
89 f2PerEtaBin1n1nRP(NULL),
90 f2PerEtaBin2n2nRP(NULL),
91 f3PerEtaBin2n1n1nRP(NULL),
92 f3PerEtaBin1n1n2nRP(NULL),
93 f4PerEtaBin1n1n1n1nRP(NULL),
94 fPtReq1nPOI(NULL),
95 fPtImq1nPOI(NULL),
96 fPtReq2nPOI(NULL),
97 fPtImq2nPOI(NULL),
98 f2PerPtBin1n1nPOI(NULL),
99 f2PerPtBin2n2nPOI(NULL),
100 f3PerPtBin2n1n1nPOI(NULL),
101 f3PerPtBin1n1n2nPOI(NULL),
102 f4PerPtBin1n1n1n1nPOI(NULL),
103 fEtaReq1nPOI(NULL),
104 fEtaImq1nPOI(NULL),
105 fEtaReq2nPOI(NULL),
106 fEtaImq2nPOI(NULL),
107 f2PerEtaBin1n1nPOI(NULL),
108 f2PerEtaBin2n2nPOI(NULL),
109 f3PerEtaBin2n1n1nPOI(NULL),
110 f3PerEtaBin1n1n2nPOI(NULL),
111 f4PerEtaBin1n1n1n1nPOI(NULL),
cb308e83 112 fCommonHists2nd(NULL),
113 fCommonHists4th(NULL),
114 fCommonHists6th(NULL),
115 fCommonHists8th(NULL),
8842fb2b 116 fCommonHistsResults2nd(NULL),
117 fCommonHistsResults4th(NULL),
118 fCommonHistsResults6th(NULL),
119 fCommonHistsResults8th(NULL),
52021ae2 120 f2pDistribution(NULL),
121 f4pDistribution(NULL),
122 f6pDistribution(NULL),
5e838eeb 123 f8pDistribution(NULL),
8842fb2b 124 fnBinsPt(0),
125 fPtMin(0),
1dfa3c16 126 fPtMax(0),
127 fnBinsEta(0),
128 fEtaMin(0),
129 fEtaMax(0)
bc92c0cb 130{
131 //constructor
132 fHistList = new TList();
8842fb2b 133
134 fnBinsPt = AliFlowCommonConstants::GetNbinsPt();
135 fPtMin = AliFlowCommonConstants::GetPtMin();
136 fPtMax = AliFlowCommonConstants::GetPtMax();
137
1dfa3c16 138 fnBinsEta = AliFlowCommonConstants::GetNbinsEta();
139 fEtaMin = AliFlowCommonConstants::GetEtaMin();
140 fEtaMax = AliFlowCommonConstants::GetEtaMax();
bc92c0cb 141}
142
143AliFlowAnalysisWithQCumulants::~AliFlowAnalysisWithQCumulants()
144{
145 //desctructor
146 delete fHistList;
147}
148
149//================================================================================================================
150
151void AliFlowAnalysisWithQCumulants::CreateOutputObjects()
152{
153 //various output histograms
1dfa3c16 154
bc92c0cb 155 //avarage multiplicity
1315fe58 156 fAvMultIntFlowQC = new TProfile("fAvMultIntFlowQC","Average Multiplicity",1,0,1,"s");
157 fAvMultIntFlowQC->SetXTitle("");
158 fAvMultIntFlowQC->SetYTitle("");
159 fAvMultIntFlowQC->SetLabelSize(0.06);
160 fAvMultIntFlowQC->SetMarkerStyle(25);
161 fAvMultIntFlowQC->SetLabelOffset(0.01);
162 (fAvMultIntFlowQC->GetXaxis())->SetBinLabel(1,"Average Multiplicity");
163 fHistList->Add(fAvMultIntFlowQC);
bc92c0cb 164
165 //Q-vector stuff
166 fQvectorComponents = new TProfile("fQvectorComponents","Avarage of Q-vector components",44,0.,44.,"s");
167 fQvectorComponents->SetXTitle("");
168 fQvectorComponents->SetYTitle("");
169 //fHistList->Add(fQvectorComponents);
170
171 //final results for integrated flow from Q-cumulants
1315fe58 172 fIntFlowResultsQC = new TH1D("fIntFlowResultsQC","Integrated Flow from Q-cumulants",4,0,4);
173 //fIntFlowResults->SetXTitle("");
174 //fIntFlowResultsQC->SetYTitle("Integrated Flow");
175 fIntFlowResultsQC->SetLabelSize(0.06);
52021ae2 176 //fIntFlowResultsQC->SetTickLength(1);
1315fe58 177 fIntFlowResultsQC->SetMarkerStyle(25);
178 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(1,"v_{n}{2}");
179 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(2,"v_{n}{4}");
180 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(3,"v_{n}{6}");
181 (fIntFlowResultsQC->GetXaxis())->SetBinLabel(4,"v_{n}{8}");
1315fe58 182 fHistList->Add(fIntFlowResultsQC);
183
bc92c0cb 184 //final results for differential flow from 2nd order Q-cumulant
8842fb2b 185 fDiffFlowResults2ndOrderQC = new TH1D("fDiffFlowResults2ndOrderQC","Differential Flow from 2nd Order Q-cumulant",fnBinsPt,fPtMin,fPtMax);
1315fe58 186 fDiffFlowResults2ndOrderQC->SetXTitle("p_{t} [GeV]");
187 //fDiffFlowResults2ndOrderQC->SetYTitle("Differential Flow");
188 fHistList->Add(fDiffFlowResults2ndOrderQC);
bc92c0cb 189
190 //final results for differential flow from 4th order Q-cumulant
8842fb2b 191 fDiffFlowResults4thOrderQC = new TH1D("fDiffFlowResults4thOrderQC","Differential Flow from 4th Order Q-cumulant",fnBinsPt,fPtMin,fPtMax);
1315fe58 192 fDiffFlowResults4thOrderQC->SetXTitle("p_{t} [GeV]");
193 //fDiffFlowResults4thOrderQC->SetYTitle("Differential Flow");
194 fHistList->Add(fDiffFlowResults4thOrderQC);
195
196 //final results for covariances (1st bin: <2*4>-<2>*<4>, 2nd bin: <2*6>-<2>*<6>, ...)
197 fCovariances = new TH1D("fCovariances","Covariances",6,0,6);
198 //fCovariances->SetXTitle("");
199 //fCovariances->SetYTitle("<covariance>");
200 fCovariances->SetLabelSize(0.04);
201 fCovariances->SetTickLength(1);
202 fCovariances->SetMarkerStyle(25);
203 (fCovariances->GetXaxis())->SetBinLabel(1,"Cov(2,4)");
204 (fCovariances->GetXaxis())->SetBinLabel(2,"Cov(2,6)");
205 (fCovariances->GetXaxis())->SetBinLabel(3,"Cov(2,8)");
206 (fCovariances->GetXaxis())->SetBinLabel(4,"Cov(4,6)");
207 (fCovariances->GetXaxis())->SetBinLabel(5,"Cov(4,8)");
208 (fCovariances->GetXaxis())->SetBinLabel(6,"Cov(6,8)");
209 fHistList->Add(fCovariances);
bc92c0cb 210
211 //multi-particle correlations calculated from Q-vectors
dee1e0e0 212 fQCorrelations = new TProfile("fQCorrelations","multi-particle correlations from Q-vectors",32,0,32,"s");
1315fe58 213 //fQCorrelations->SetXTitle("correlations");
214 //fQCorrelations->SetYTitle("");
215 fQCorrelations->SetTickLength(-0.01,"Y");
216 fQCorrelations->SetMarkerStyle(25);
217 fQCorrelations->SetLabelSize(0.03);
218 fQCorrelations->SetLabelOffset(0.01,"Y");
dee1e0e0 219
1315fe58 220 (fQCorrelations->GetXaxis())->SetBinLabel(1,"<<2>>_{n|n}");
221 (fQCorrelations->GetXaxis())->SetBinLabel(2,"<<2>>_{2n|2n}");
222 (fQCorrelations->GetXaxis())->SetBinLabel(3,"<<2>>_{3n|3n}");
223 (fQCorrelations->GetXaxis())->SetBinLabel(4,"<<2>>_{4n|4n}");
dee1e0e0 224
1315fe58 225 (fQCorrelations->GetXaxis())->SetBinLabel(6,"<<3>>_{2n|n,n}");
226 (fQCorrelations->GetXaxis())->SetBinLabel(7,"<<3>>_{3n|2n,n}");
227 (fQCorrelations->GetXaxis())->SetBinLabel(8,"<<3>>_{4n|2n,2n}");
228 (fQCorrelations->GetXaxis())->SetBinLabel(9,"<<3>>_{4n|3n,n}");
dee1e0e0 229
1315fe58 230 (fQCorrelations->GetXaxis())->SetBinLabel(11,"<<4>>_{n,n|n,n}");
231 (fQCorrelations->GetXaxis())->SetBinLabel(12,"<<4>>_{2n,n|2n,n}");
dee1e0e0 232 (fQCorrelations->GetXaxis())->SetBinLabel(13,"<<4>>_{2n,2n|2n,2n}");
233 (fQCorrelations->GetXaxis())->SetBinLabel(14,"<<4>>_{3n|n,n,n}");
234 (fQCorrelations->GetXaxis())->SetBinLabel(15,"<<4>>_{3n,n|3n,n}");
235 (fQCorrelations->GetXaxis())->SetBinLabel(16,"<<4>>_{3n,n|2n,2n}");
236 (fQCorrelations->GetXaxis())->SetBinLabel(17,"<<4>>_{4n|2n,n,n}");
237
238 (fQCorrelations->GetXaxis())->SetBinLabel(19,"<<5>>_{2n|n,n,n,n}");
239 (fQCorrelations->GetXaxis())->SetBinLabel(20,"<<5>>_{2n,2n|2n,n,n}");
240 (fQCorrelations->GetXaxis())->SetBinLabel(21,"<<5>>_{3n,n|2n,n,n}");
241 (fQCorrelations->GetXaxis())->SetBinLabel(22,"<<5>>_{4n|n,n,n,n}");
242
243 (fQCorrelations->GetXaxis())->SetBinLabel(24,"<<6>>_{n,n,n|n,n,n}");
244 (fQCorrelations->GetXaxis())->SetBinLabel(25,"<<6>>_{2n,n,n|2n,n,n}");
245 (fQCorrelations->GetXaxis())->SetBinLabel(26,"<<6>>_{2n,2n|n,n,n,n}");
246 (fQCorrelations->GetXaxis())->SetBinLabel(27,"<<6>>_{3n,n|n,n,n,n}");
247
248 (fQCorrelations->GetXaxis())->SetBinLabel(29,"<<7>>_{2n,n,n|n,n,n,n}");
249
250 (fQCorrelations->GetXaxis())->SetBinLabel(31,"<<8>>_{n,n,n,n|n,n,n,n}");
251
bc92c0cb 252 fHistList->Add(fQCorrelations);
253
8842fb2b 254 //average products
255 fQProduct = new TProfile("fQProduct","average of products",6,0,6,"s");
256 fQProduct->SetTickLength(-0.01,"Y");
257 fQProduct->SetMarkerStyle(25);
258 fQProduct->SetLabelSize(0.03);
259 fQProduct->SetLabelOffset(0.01,"Y");
260 (fQProduct->GetXaxis())->SetBinLabel(1,"<<2*4>>");
261 (fQProduct->GetXaxis())->SetBinLabel(2,"<<2*6>>");
262 (fQProduct->GetXaxis())->SetBinLabel(3,"<<2*8>>");
263 (fQProduct->GetXaxis())->SetBinLabel(4,"<<4*6>>");
264 (fQProduct->GetXaxis())->SetBinLabel(5,"<<4*8>>");
265 (fQProduct->GetXaxis())->SetBinLabel(6,"<<6*8>>");
266 fQProduct->SetXTitle("");
267 fQProduct->SetYTitle("");
268 fHistList->Add(fQProduct);
bc92c0cb 269
270 //multi-particle correlations calculated with nested loops (0..40 integrated flow; 40..80 differential flow)
271 fDirectCorrelations = new TProfile("fDirectCorrelations","multi-particle correlations with nested loops",80,0,80,"s");
272 fDirectCorrelations->SetXTitle("");
273 fDirectCorrelations->SetYTitle("correlations");
274 fHistList->Add(fDirectCorrelations);
275
1dfa3c16 276 //fPtReq1nRP
277 fPtReq1nRP = new TProfile("fPtReq1nRP","Re[q_n]",fnBinsPt,fPtMin,fPtMax,"s");
278 fPtReq1nRP->SetXTitle("p_{t} [GeV]");
279 fPtReq1nRP->SetYTitle("Re[q_n]");
280 //fHistList->Add(fPtReq1nRP);
281
282 //fPtImq1nRP
283 fPtImq1nRP = new TProfile("fPtImq1nRP","Im[q_n]",fnBinsPt,fPtMin,fPtMax,"s");
284 fPtImq1nRP->SetXTitle("p_{t} [GeV]");
285 fPtImq1nRP->SetYTitle("Im[q_n]");
286 //fHistList->Add(fPtImq1nRP);
287
288 //fPtReq2nRP
289 fPtReq2nRP = new TProfile("fPtReq2nRP","Re[q_2n]",fnBinsPt,fPtMin,fPtMax,"s");
290 fPtReq2nRP->SetXTitle("p_{t} [GeV]");
291 fPtReq2nRP->SetYTitle("Im[D]");
292 //fHistList->Add(fPtReq2nRP);
293
294 //fPtImq2nRP
295 fPtImq2nRP = new TProfile("fPtImq2nRP","Im[q_2n]",fnBinsPt,fPtMin,fPtMax,"s");
296 fPtImq2nRP->SetXTitle("p_{t} [GeV]");
297 fPtImq2nRP->SetYTitle("Im[q_2n]");
298 //fHistList->Add(fPtImq2nRP);
299
300 //f2PerPtBin1n1nRP
301 f2PerPtBin1n1nRP = new TProfile("f2PerPtBin1n1nRP","<2'>_{n|n}",fnBinsPt,fPtMin,fPtMax,"s");
302 f2PerPtBin1n1nRP->SetXTitle("p_{t} [GeV]");
303 //f2PerPtBin1n1n->SetYTitle("<2'>_{n|n}");
304 fHistList->Add(f2PerPtBin1n1nRP);
305
306 //f2PerPtBin2n2nRP
307 f2PerPtBin2n2nRP = new TProfile("f2PerPtBin2n2nRP","<2'>_{2n|2n}",fnBinsPt,fPtMin,fPtMax,"s");
308 f2PerPtBin2n2nRP->SetXTitle("p_{t} [GeV]");
309 //f2PerPtBin2n2nRP->SetYTitle("<2'>_{2n|2n}");
310 fHistList->Add(f2PerPtBin2n2nRP);
311
312 //f3PerPtBin2n1n1nRP
313 f3PerPtBin2n1n1nRP = new TProfile("f3PerPtBin2n1n1nRP","<3'>_{2n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
314 f3PerPtBin2n1n1nRP->SetXTitle("p_{t} [GeV]");
315 //f3PerPtBin2n1n1nRP->SetYTitle("<3'>_{2n|n,n}");
316 fHistList->Add(f3PerPtBin2n1n1nRP);
317
318 //f3PerPtBin1n1n2nRP
319 f3PerPtBin1n1n2nRP = new TProfile("f3PerPtBin1n1n2nRP","<3'>_{n,n|2n}",fnBinsPt,fPtMin,fPtMax,"s");
320 f3PerPtBin1n1n2nRP->SetXTitle("p_{t} [GeV]");
321 //f3PerPtBin1n1n2nRP->SetYTitle("<3'>_{n,n|2n}");
322 fHistList->Add(f3PerPtBin1n1n2nRP);
323
324 //f4PerPtBin1n1n1n1nRP
325 f4PerPtBin1n1n1n1nRP = new TProfile("f4PerPtBin1n1n1n1nRP","<4'>_{n,n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
326 f4PerPtBin1n1n1n1nRP->SetXTitle("p_{t} [GeV]");
327 //f4PerPtBin1n1n1n1nRP->SetYTitle("<4'>_{n,n|n,n}");
328 fHistList->Add(f4PerPtBin1n1n1n1nRP);
329
330 //fEtaReq1nRP
331 fEtaReq1nRP = new TProfile("fEtaReq1nRP","Re[q_n]",fnBinsEta,fEtaMin,fEtaMax,"s");
332 fEtaReq1nRP->SetXTitle("#eta");
333 fEtaReq1nRP->SetYTitle("Re[q_n]");
334 fHistList->Add(fEtaReq1nRP);
335
336 //fEtaImq1nRP
337 fEtaImq1nRP = new TProfile("fEtaImq1nRP","Im[q_n]",fnBinsEta,fEtaMin,fEtaMax,"s");
338 fEtaImq1nRP->SetXTitle("#eta");
339 fEtaImq1nRP->SetYTitle("Im[q_n]");
340 //fHistList->Add(fEtaImq1nRP);
341
342 //fEtaReq2nRP
343 fEtaReq2nRP = new TProfile("fEtaReq2nRP","Re[q_2n]",fnBinsEta,fEtaMin,fEtaMax,"s");
344 fEtaReq2nRP->SetXTitle("#eta");
345 fEtaReq2nRP->SetYTitle("Im[D]");
346 //fHistList->Add(fEtaReq2nRP);
347
348 //fEtaImq2nRP
349 fEtaImq2nRP = new TProfile("fEtaImq2nRP","Im[q_2n]",fnBinsEta,fEtaMin,fEtaMax,"s");
350 fEtaImq2nRP->SetXTitle("#eta");
351 fEtaImq2nRP->SetYTitle("Im[q_2n]");
352 //fHistList->Add(fEtaImq2nRP);
353
354 //f2PerEtaBin1n1nRP
355 f2PerEtaBin1n1nRP = new TProfile("f2PerEtaBin1n1nRP","<2'>_{n|n}",fnBinsEta,fEtaMin,fEtaMax,"s");
356 f2PerEtaBin1n1nRP->SetXTitle("#eta");
357 //f2PerEtaBin1n1nRP->SetYTitle("<2'>_{n|n}");
358 fHistList->Add(f2PerEtaBin1n1nRP);
359
360 //f2PerEtaBin2n2nRP
361 f2PerEtaBin2n2nRP = new TProfile("f2PerEtaBin2n2nRP","<2'>_{2n|2n}",fnBinsEta,fEtaMin,fEtaMax,"s");
362 f2PerEtaBin2n2nRP->SetXTitle("#eta");
363 //f2PerEtaBin2n2nRP->SetYTitle("<2'>_{2n|2n}");
364 fHistList->Add(f2PerEtaBin2n2nRP);
365
366 //f3PerEtaBin2n1n1nRP
367 f3PerEtaBin2n1n1nRP = new TProfile("f3PerEtaBin2n1n1nRP","<3'>_{2n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
368 f3PerEtaBin2n1n1nRP->SetXTitle("#eta");
369 //f3PerEtaBin2n1n1nRP->SetYTitle("<3'>_{2n|n,n}");
370 fHistList->Add(f3PerEtaBin2n1n1nRP);
371
372 //f3PerEtaBin1n1n2nRP
373 f3PerEtaBin1n1n2nRP = new TProfile("f3PerEtaBin1n1n2RP","<3'>_{n,n|2n}",fnBinsEta,fEtaMin,fEtaMax,"s");
374 f3PerEtaBin1n1n2nRP->SetXTitle("#eta");
375 //f3PerEtaBin1n1n2n->SetYTitle("<3'>_{n,n|2n}");
376 fHistList->Add(f3PerEtaBin1n1n2nRP);
377
378 //f4PerEtaBin1n1n1n1nRP
379 f4PerEtaBin1n1n1n1nRP = new TProfile("f4PerEtaBin1n1n1n1nRP","<4'>_{n,n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
380 f4PerEtaBin1n1n1n1nRP->SetXTitle("#eta");
381 //f4PerEtaBin1n1n1n1nRP->SetYTitle("<4'>_{n,n|n,n}");
382 fHistList->Add(f4PerEtaBin1n1n1n1nRP);
383
384 //fPtReq1nPOI
385 fPtReq1nPOI = new TProfile("fPtReq1nPOI","Re[q_n]",fnBinsPt,fPtMin,fPtMax,"s");
386 fPtReq1nPOI->SetXTitle("p_{t} [GeV]");
387 fPtReq1nPOI->SetYTitle("Re[q_n]");
388 //fHistList->Add(fPtReq1nPOI);
389
390 //fPtImq1nPOI
391 fPtImq1nPOI = new TProfile("fPtImq1nPOI","Im[q_n]",fnBinsPt,fPtMin,fPtMax,"s");
392 fPtImq1nPOI->SetXTitle("p_{t} [GeV]");
393 fPtImq1nPOI->SetYTitle("Im[q_n]");
394 //fHistList->Add(fPtImq1nPOI);
395
396 //fPtReq2nPOI
397 fPtReq2nPOI = new TProfile("fPtReq2nPOI","Re[q_2n]",fnBinsPt,fPtMin,fPtMax,"s");
398 fPtReq2nPOI->SetXTitle("p_{t} [GeV]");
399 fPtReq2nPOI->SetYTitle("Im[D]");
400 //fHistList->Add(fPtReq2nPOI);
401
402 //fPtImq2nPOI
403 fPtImq2nPOI = new TProfile("fPtImq2nPOI","Im[q_2n]",fnBinsPt,fPtMin,fPtMax,"s");
404 fPtImq2nPOI->SetXTitle("p_{t} [GeV]");
405 fPtImq2nPOI->SetYTitle("Im[q_2n]");
406 //fHistList->Add(fPtImq2nPOI);
407
408 //f2PerPtBin1n1nPOI
409 f2PerPtBin1n1nPOI = new TProfile("f2PerPtBin1n1nPOI","<2'>_{n|n}",fnBinsPt,fPtMin,fPtMax,"s");
410 f2PerPtBin1n1nPOI->SetXTitle("p_{t} [GeV]");
411 //f2PerPtBin1n1n->SetYTitle("<2'>_{n|n}");
412 fHistList->Add(f2PerPtBin1n1nPOI);
413
414 //f2PerPtBin2n2nPOI
415 f2PerPtBin2n2nPOI = new TProfile("f2PerPtBin2n2nPOI","<2'>_{2n|2n}",fnBinsPt,fPtMin,fPtMax,"s");
416 f2PerPtBin2n2nPOI->SetXTitle("p_{t} [GeV]");
417 //f2PerPtBin2n2nPOI->SetYTitle("<2'>_{2n|2n}");
418 fHistList->Add(f2PerPtBin2n2nPOI);
419
420 //f3PerPtBin2n1n1nPOI
421 f3PerPtBin2n1n1nPOI = new TProfile("f3PerPtBin2n1n1nPOI","<3'>_{2n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
422 f3PerPtBin2n1n1nPOI->SetXTitle("p_{t} [GeV]");
423 //f3PerPtBin2n1n1nPOI->SetYTitle("<3'>_{2n|n,n}");
424 fHistList->Add(f3PerPtBin2n1n1nPOI);
425
426 //f3PerPtBin1n1n2nPOI
427 f3PerPtBin1n1n2nPOI = new TProfile("f3PerPtBin1n1n2nPOI","<3'>_{n,n|2n}",fnBinsPt,fPtMin,fPtMax,"s");
428 f3PerPtBin1n1n2nPOI->SetXTitle("p_{t} [GeV]");
429 //f3PerPtBin1n1n2nPOI->SetYTitle("<3'>_{n,n|2n}");
430 fHistList->Add(f3PerPtBin1n1n2nPOI);
431
432 //f4PerPtBin1n1n1n1nPOI
433 f4PerPtBin1n1n1n1nPOI = new TProfile("f4PerPtBin1n1n1n1nPOI","<4'>_{n,n|n,n}",fnBinsPt,fPtMin,fPtMax,"s");
434 f4PerPtBin1n1n1n1nPOI->SetXTitle("p_{t} [GeV]");
435 //f4PerPtBin1n1n1n1nPOI->SetYTitle("<4'>_{n,n|n,n}");
436 fHistList->Add(f4PerPtBin1n1n1n1nPOI);
437
438 //fEtaReq1nPOI
439 fEtaReq1nPOI = new TProfile("fEtaReq1nPOI","Re[q_n]",fnBinsEta,fEtaMin,fEtaMax,"s");
440 fEtaReq1nPOI->SetXTitle("#eta");
441 fEtaReq1nPOI->SetYTitle("Re[q_n]");
442 fHistList->Add(fEtaReq1nPOI);
443
444 //fEtaImq1nPOI
445 fEtaImq1nPOI = new TProfile("fEtaImq1nPOI","Im[q_n]",fnBinsEta,fEtaMin,fEtaMax,"s");
446 fEtaImq1nPOI->SetXTitle("#eta");
447 fEtaImq1nPOI->SetYTitle("Im[q_n]");
448 //fHistList->Add(fEtaImq1nPOI);
449
450 //fEtaReq2nPOI
451 fEtaReq2nPOI = new TProfile("fEtaReq2nPOI","Re[q_2n]",fnBinsEta,fEtaMin,fEtaMax,"s");
452 fEtaReq2nPOI->SetXTitle("#eta");
453 fEtaReq2nPOI->SetYTitle("Im[D]");
454 //fHistList->Add(fEtaReq2nPOI);
455
456 //fEtaImq2nPOI
457 fEtaImq2nPOI = new TProfile("fEtaImq2nPOI","Im[q_2n]",fnBinsEta,fEtaMin,fEtaMax,"s");
458 fEtaImq2nPOI->SetXTitle("#eta");
459 fEtaImq2nPOI->SetYTitle("Im[q_2n]");
460 //fHistList->Add(fEtaImq2nPOI);
461
462 //f2PerEtaBin1n1nPOI
463 f2PerEtaBin1n1nPOI = new TProfile("f2PerEtaBin1n1nPOI","<2'>_{n|n}",fnBinsEta,fEtaMin,fEtaMax,"s");
464 f2PerEtaBin1n1nPOI->SetXTitle("#eta");
465 //f2PerEtaBin1n1nPOI->SetYTitle("<2'>_{n|n}");
466 fHistList->Add(f2PerEtaBin1n1nPOI);
467
468 //f2PerEtaBin2n2nPOI
469 f2PerEtaBin2n2nPOI = new TProfile("f2PerEtaBin2n2nPOI","<2'>_{2n|2n}",fnBinsEta,fEtaMin,fEtaMax,"s");
470 f2PerEtaBin2n2nPOI->SetXTitle("#eta");
471 //f2PerEtaBin2n2nPOI->SetYTitle("<2'>_{2n|2n}");
472 fHistList->Add(f2PerEtaBin2n2nPOI);
473
474 //f3PerEtaBin2n1n1nPOI
475 f3PerEtaBin2n1n1nPOI = new TProfile("f3PerEtaBin2n1n1nPOI","<3'>_{2n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
476 f3PerEtaBin2n1n1nPOI->SetXTitle("#eta");
477 //f3PerEtaBin2n1n1nPOI->SetYTitle("<3'>_{2n|n,n}");
478 fHistList->Add(f3PerEtaBin2n1n1nPOI);
479
480 //f3PerEtaBin1n1n2nPOI
481 f3PerEtaBin1n1n2nPOI = new TProfile("f3PerEtaBin1n1n2POI","<3'>_{n,n|2n}",fnBinsEta,fEtaMin,fEtaMax,"s");
482 f3PerEtaBin1n1n2nPOI->SetXTitle("#eta");
483 //f3PerEtaBin1n1n2n->SetYTitle("<3'>_{n,n|2n}");
484 fHistList->Add(f3PerEtaBin1n1n2nPOI);
485
486 //f4PerEtaBin1n1n1n1nPOI
487 f4PerEtaBin1n1n1n1nPOI = new TProfile("f4PerEtaBin1n1n1n1nPOI","<4'>_{n,n|n,n}",fnBinsEta,fEtaMin,fEtaMax,"s");
488 f4PerEtaBin1n1n1n1nPOI->SetXTitle("#eta");
489 //f4PerEtaBin1n1n1n1nPOI->SetYTitle("<4'>_{n,n|n,n}");
490 fHistList->Add(f4PerEtaBin1n1n1n1nPOI);
bc92c0cb 491
cb308e83 492 //common control histogram (2nd order)
493 fCommonHists2nd = new AliFlowCommonHist("AliFlowCommonHist2ndOrderQC");
494 fHistList->Add(fCommonHists2nd);
1315fe58 495
cb308e83 496 //common control histogram (4th order)
497 fCommonHists4th = new AliFlowCommonHist("AliFlowCommonHist4thOrderQC");
498 fHistList->Add(fCommonHists4th);
499
500 //common control histogram (6th order)
501 fCommonHists6th = new AliFlowCommonHist("AliFlowCommonHist6thOrderQC");
502 fHistList->Add(fCommonHists6th);
503
504 //common control histogram (8th order)
505 fCommonHists8th = new AliFlowCommonHist("AliFlowCommonHist8thOrderQC");
506 fHistList->Add(fCommonHists8th);
507
8842fb2b 508 //common histograms for final results (2nd order)
1315fe58 509 fCommonHistsResults2nd = new AliFlowCommonHistResults("AliFlowCommonHistResults2ndOrderQC");
510 fHistList->Add(fCommonHistsResults2nd);
511
8842fb2b 512 //common histograms for final results (4th order)
1315fe58 513 fCommonHistsResults4th = new AliFlowCommonHistResults("AliFlowCommonHistResults4thOrderQC");
514 fHistList->Add(fCommonHistsResults4th);
515
8842fb2b 516 //common histograms for final results (6th order)
1315fe58 517 fCommonHistsResults6th = new AliFlowCommonHistResults("AliFlowCommonHistResults6thOrderQC");
518 fHistList->Add(fCommonHistsResults6th);
519
8842fb2b 520 //common histograms for final results (8th order)
1315fe58 521 fCommonHistsResults8th = new AliFlowCommonHistResults("AliFlowCommonHistResults8thOrderQC");
522 fHistList->Add(fCommonHistsResults8th);
1315fe58 523
524 //weighted <2>_{n|n} distribution
52021ae2 525 f2pDistribution = new TH1D("f2pDistribution","<2>_{n|n} distribution",100000,-0.02,0.1);
526 f2pDistribution->SetXTitle("<2>_{n|n}");
527 f2pDistribution->SetYTitle("Counts");
528 fHistList->Add(f2pDistribution);
1315fe58 529
530 //weighted <4>_{n,n|n,n} distribution
52021ae2 531 f4pDistribution = new TH1D("f4pDistribution","<4>_{n,n|n,n} distribution",100000,-0.00025,0.002);
532 f4pDistribution->SetXTitle("<4>_{n,n|n,n}");
533 f4pDistribution->SetYTitle("Counts");
534 fHistList->Add(f4pDistribution);
1315fe58 535
536 //weighted <6>_{n,n,n|n,n,n} distribution
52021ae2 537 f6pDistribution = new TH1D("f6pDistribution","<6>_{n,n,n|n,n,n} distribution",100000,-0.000005,0.000025);
538 f6pDistribution->SetXTitle("<6>_{n,n,n|n,n,n}");
539 f6pDistribution->SetYTitle("Counts");
540 fHistList->Add(f6pDistribution);
bc92c0cb 541
5e838eeb 542 //weighted <8>_{n,n,n,n|n,n,n,n} distribution
543 f8pDistribution = new TH1D("f8pDistribution","<8>_{n,n,n,n|n,n,n,n} distribution",100000,-0.000000001,0.00000001);
544 f8pDistribution->SetXTitle("<8>_{n,n,n,n|n,n,n,n}");
545 f8pDistribution->SetYTitle("Counts");
546 fHistList->Add(f8pDistribution);
547
bc92c0cb 548}//end of CreateOutputObjects()
549
550//================================================================================================================
551
552void AliFlowAnalysisWithQCumulants::Make(AliFlowEventSimple* anEvent)
553{
1dfa3c16 554 //running over data
1315fe58 555
bc92c0cb 556 //get the total multiplicity of event:
1dfa3c16 557 //Int_t nPrim = anEvent->NumberOfTracks();//line needed only for nested loops
558 //cout<<"nPrim = "<<nPrim<<endl;
bc92c0cb 559
dee1e0e0 560 //if(nPrim>8&&nPrim<12)//line needed only for nested loops
561 //{ //line needed only for nested loops
8842fb2b 562
bc92c0cb 563 //get the selected multiplicity (i.e. number of particles used for int. flow):
564 //Int_t nEventNSelTracksIntFlow = anEvent->GetEventNSelTracksIntFlow();
565
566 Int_t n=2; //int flow harmonic (to be improved)
567
568 //---------------------------------------------------------------------------------------------------------
569 //Q-vectors of an event evaluated in harmonics n, 2n, 3n and 4n:
1dfa3c16 570 AliFlowVector afvQvector1n, afvQvector2n, afvQvector3n, afvQvector4n;
bc92c0cb 571
1dfa3c16 572 afvQvector1n.Set(0.,0.);
573 afvQvector1n.SetMult(0);
574 afvQvector1n=anEvent->GetQ(1*n);
bc92c0cb 575
1dfa3c16 576 afvQvector2n.Set(0.,0.);
577 afvQvector2n.SetMult(0);
578 afvQvector2n=anEvent->GetQ(2*n);
bc92c0cb 579
1dfa3c16 580 afvQvector3n.Set(0.,0.);
581 afvQvector3n.SetMult(0);
582 afvQvector3n=anEvent->GetQ(3*n);
bc92c0cb 583
1dfa3c16 584 afvQvector4n.Set(0.,0.);
585 afvQvector4n.SetMult(0);
586 afvQvector4n=anEvent->GetQ(4*n);
bc92c0cb 587 //---------------------------------------------------------------------------------------------------------
588
589 //multiplicity (to be improved, because I already have nEventNSelTracksIntFlow and nPrim)
1dfa3c16 590 Double_t dMult = afvQvector1n.GetMult();
bc92c0cb 591
1dfa3c16 592 fAvMultIntFlowQC->Fill(0.,dMult,1.);
bc92c0cb 593
594 //---------------------------------------------------------------------------------------------------------
dee1e0e0 595 //
596 // *******************
597 // **** Q-vectors ****
598 // *******************
599 //
1dfa3c16 600 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}^*]
52021ae2 601 //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}^*]
602 Double_t reQ1nQ1nQ2nstar = reQ2nQ1nstarQ1nstar;//Re[Q_{n} Q_{n} Q_{2n}^*] = Re[Q_{2n} Q_{n}^* Q_{n}^*]
1dfa3c16 603 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());
52021ae2 604 //Double_t imQ3nQ1nQ2nstarQ2nstar = calculate and implement this (deleteMe)
605 Double_t reQ2nQ2nQ3nstarQ1nstar = reQ3nQ1nQ2nstarQ2nstar;
1dfa3c16 606 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}^*]
52021ae2 607 //Double_t imQ4nQ2nstarQ2nstar = calculate and implement this (deleteMe)
608 Double_t reQ2nQ2nQ4nstar = reQ4nQ2nstarQ2nstar;
1dfa3c16 609 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}^*]
52021ae2 610 Double_t reQ3nQ1nQ4nstar = reQ4nQ3nstarQ1nstar;//Re[Q_{3n} Q_{n} Q_{4n}^*] = Re[Q_{4n} Q_{3n}^* Q_{n}^*]
611 //Double_t imQ4nQ3nstarQ1nstar = calculate and implement this (deleteMe)
1dfa3c16 612 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}^*]
52021ae2 613 Double_t reQ2nQ1nQ3nstar = reQ3nQ2nstarQ1nstar;//Re[Q_{2n} Q_{n} Q_{3n}^*] = Re[Q_{3n} Q_{2n}^* Q_{n}^*]
614 //Double_t imQ3nQ2nstarQ1nstar; //calculate and implement this (deleteMe)
1dfa3c16 615 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}^*]
52021ae2 616 //Double_t imQ3nQ1nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
1dfa3c16 617 Double_t xQ2nQ1nQ2nstarQ1nstar = pow(afvQvector2n.Mod()*afvQvector1n.Mod(),2);//|Q_{2n}|^2 |Q_{n}|^2
618 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}^*]
52021ae2 619 //Double_t imQ4nQ2nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
1dfa3c16 620 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}^*]
52021ae2 621 //Double_t imQ2nQ1nQ1nstarQ1nstarQ1nstar; //calculate and implement this (deleteMe)
1dfa3c16 622 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}^*]
52021ae2 623 //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}^*]
1dfa3c16 624 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}^*]
dee1e0e0 625 //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}^*]
1dfa3c16 626 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}^*]
627 //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}^*]
628 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}^*]
629 //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}^*]
630 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}^*]
631 //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}^*]
632 Double_t xQ2nQ1nQ1nQ2nstarQ1nstarQ1nstar = pow(afvQvector2n.Mod(),2.)*pow(afvQvector1n.Mod(),4.);//|Q_{2n}|^2 |Q_{n}|^4
633 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}^*]
634 //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}^*]
bc92c0cb 635 //---------------------------------------------------------------------------------------------------------
636
637 //---------------------------------------------------------------------------------------------------------
dee1e0e0 638 //
639 // **************************************
640 // **** multi-particle correlations: ****
641 // **************************************
642 //
643 // Remark 1: multi-particle correlations calculated with Q-vectors are stored in fQCorrelations.
644 // Remark 2: binning of fQCorrelations is organized as follows:
645 //
646 // 1st bin: <2>_{n|n} = two1n1n
647 // 2nd bin: <2>_{2n|2n} = two2n2n
648 // 3rd bin: <2>_{3n|3n} = two3n3n
649 // 4th bin: <2>_{4n|4n} = two4n4n
650 // 5th bin: -- EMPTY --
651 // 6th bin: <3>_{2n|n,n} = three2n1n1n
652 // 7th bin: <3>_{3n|2n,n} = three3n2n1n
653 // 8th bin: <3>_{4n|2n,2n} = three4n2n2n
654 // 9th bin: <3>_{4n|3n,n} = three4n3n1n
655 //10th bin: -- EMPTY --
656 //11th bin: <4>_{n,n|n,n} = four1n1n1n1n
657 //12th bin: <4>_{2n,n|2n,n} = four2n1n2n1n
658 //13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n
659 //14th bin: <4>_{3n|n,n,n} = four3n1n1n1n
660 //15th bin: <4>_{3n,n|3n,n} = four3n1n3n1n
661 //16th bin: <4>_{3n,n|2n,2n} = four3n1n2n2n
662 //17th bin: <4>_{4n|2n,n,n} = four4n2n1n1n
663 //18th bin: -- EMPTY --
664 //19th bin: <5>_{2n|n,n,n,n} = five2n1n1n1n1n
665 //20th bin: <5>_{2n,2n|2n,n,n} = five2n2n2n1n1n
666 //21st bin: <5>_{3n,n|2n,n,n} = five3n1n2n1n1n
667 //22nd bin: <5>_{4n|n,n,n,n} = five4n1n1n1n1n
668 //23rd bin: -- EMPTY --
669 //24th bin: <6>_{n,n,n|n,n,n} = six1n1n1n1n1n1n
670 //25th bin: <6>_{2n,n,n|2n,n,n} = six2n1n1n2n1n1n
671 //26th bin: <6>_{2n,2n|n,n,n,n} = six2n2n1n1n1n1n
672 //27th bin: <6>_{3n,n|n,n,n,n} = six3n1n1n1n1n1n
673 //28th bin: -- EMPTY --
674 //29th bin: <7>_{2n,n,n|n,n,n,n} = seven2n1n1n1n1n1n1n
675 //30th bin: -- EMPTY --
676 //31st bin: <8>_{n,n,n,n|n,n,n,n} = eight1n1n1n1n1n1n1n1n
677
1315fe58 678
8842fb2b 679 // binning of fQProduct (all correlations are evaluated in harmonic n):
680 // 1st bin: <2>*<4>
681 // 2nd bin: <2>*<6>
682 // 3rd bin: <2>*<8>
683 // 4th bin: <4>*<6>
684 // 5th bin: <4>*<8>
685 // 6th bin: <6>*<8>
686
bc92c0cb 687 //2-particle
52021ae2 688 Double_t two1n1n=0., two2n2n=0., two3n3n=0., two4n4n=0.;
1dfa3c16 689 if(dMult>1)
bc92c0cb 690 {
cb308e83 691 //fill the common control histogram (2nd order):
692 fCommonHists2nd->FillControlHistograms(anEvent);
693
1dfa3c16 694 two1n1n = (pow(afvQvector1n.Mod(),2.)-dMult)/(dMult*(dMult-1.)); //<2>_{n|n} = <cos(n*(phi1-phi2))>
695 two2n2n = (pow(afvQvector2n.Mod(),2.)-dMult)/(dMult*(dMult-1.)); //<2>_{2n|2n} = <cos(2n*(phi1-phi2))>
696 two3n3n = (pow(afvQvector3n.Mod(),2.)-dMult)/(dMult*(dMult-1.)); //<2>_{3n|3n} = <cos(3n*(phi1-phi2))>
697 two4n4n = (pow(afvQvector4n.Mod(),2.)-dMult)/(dMult*(dMult-1.)); //<2>_{4n|4n} = <cos(4n*(phi1-phi2))>
1315fe58 698
1dfa3c16 699 fQCorrelations->Fill(0.,two1n1n,dMult*(dMult-1.));
700 fQCorrelations->Fill(1.,two2n2n,dMult*(dMult-1.));
701 fQCorrelations->Fill(2.,two3n3n,dMult*(dMult-1.));
702 fQCorrelations->Fill(3.,two4n4n,dMult*(dMult-1.));
1315fe58 703
1dfa3c16 704 f2pDistribution->Fill(two1n1n,dMult*(dMult-1.));
bc92c0cb 705 }
706
707 //3-particle
52021ae2 708 Double_t three2n1n1n=0., three3n2n1n=0., three4n2n2n=0., three4n3n1n=0.;
1dfa3c16 709 if(dMult>2)
bc92c0cb 710 {
1dfa3c16 711 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))>
712 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))>
713 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))>
714 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))>
715
716 fQCorrelations->Fill(5.,three2n1n1n,dMult*(dMult-1.)*(dMult-2.));
717 fQCorrelations->Fill(6.,three3n2n1n,dMult*(dMult-1.)*(dMult-2.));
718 fQCorrelations->Fill(7.,three4n2n2n,dMult*(dMult-1.)*(dMult-2.));
719 fQCorrelations->Fill(8.,three4n3n1n,dMult*(dMult-1.)*(dMult-2.));
bc92c0cb 720 }
721
722 //4-particle
52021ae2 723 Double_t four1n1n1n1n=0., four2n2n2n2n=0., four2n1n2n1n=0., four3n1n1n1n=0., four4n2n1n1n=0., four3n1n2n2n=0., four3n1n3n1n=0.;
1dfa3c16 724 if(dMult>3)
bc92c0cb 725 {
cb308e83 726 //fill the common control histogram (4th order):
727 fCommonHists4th->FillControlHistograms(anEvent);
728
1dfa3c16 729 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}
730 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}
731 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}]
732 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}]
733 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}]
734 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}]
735 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}
1315fe58 736 //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}
737
1dfa3c16 738 fQCorrelations->Fill(10.,four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
739 fQCorrelations->Fill(11.,four2n1n2n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
740 fQCorrelations->Fill(12.,four2n2n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
741 fQCorrelations->Fill(13.,four3n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
742 fQCorrelations->Fill(14.,four3n1n3n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
743 fQCorrelations->Fill(15.,four3n1n2n2n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
744 fQCorrelations->Fill(16.,four4n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
dee1e0e0 745
1dfa3c16 746 f4pDistribution->Fill(four1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
bc92c0cb 747
1dfa3c16 748 fQProduct->Fill(0.,two1n1n*four1n1n1n1n,dMult*(dMult-1.)*dMult*(dMult-1.)*(dMult-2.)*(dMult-3.));
bc92c0cb 749 }
750
751 //5-particle
52021ae2 752 Double_t five2n1n1n1n1n=0., five2n2n2n1n1n=0., five3n1n2n1n1n=0., five4n1n1n1n1n=0.;
1dfa3c16 753 if(dMult>4)
1315fe58 754 {
1dfa3c16 755 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}]
1315fe58 756
1dfa3c16 757 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}]
1315fe58 758
dee1e0e0 759 //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!
1315fe58 760
1dfa3c16 761 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}]
1315fe58 762
dee1e0e0 763 //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!
764
1dfa3c16 765 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}]
dee1e0e0 766
1dfa3c16 767 //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!
1315fe58 768
1dfa3c16 769 //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!
dee1e0e0 770
1dfa3c16 771 fQCorrelations->Fill(18.,five2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
772 fQCorrelations->Fill(19.,five2n2n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
773 fQCorrelations->Fill(20.,five3n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
774 fQCorrelations->Fill(21.,five4n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.));
1315fe58 775 }
bc92c0cb 776
777 //6-particle
dee1e0e0 778 Double_t six1n1n1n1n1n1n=0., six2n2n1n1n1n1n=0., six3n1n1n1n1n1n=0., six2n1n1n2n1n1n=0.;
1dfa3c16 779 if(dMult>5)
bc92c0cb 780 {
cb308e83 781 //fill the common control histogram (6th order):
782 fCommonHists6th->FillControlHistograms(anEvent);
783
1dfa3c16 784 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}
1315fe58 785
1dfa3c16 786 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}
dee1e0e0 787
1dfa3c16 788 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}
dee1e0e0 789
1dfa3c16 790 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}
dee1e0e0 791
1dfa3c16 792 fQCorrelations->Fill(23.,six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
793 fQCorrelations->Fill(24.,six2n1n1n2n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
794 fQCorrelations->Fill(25.,six2n2n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
795 fQCorrelations->Fill(26.,six3n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
dee1e0e0 796
1dfa3c16 797 f6pDistribution->Fill(six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
bc92c0cb 798
1dfa3c16 799 fQProduct->Fill(1.,two1n1n*six1n1n1n1n1n1n,dMult*(dMult-1.)*dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
800 fQProduct->Fill(3.,four1n1n1n1n*six1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.));
bc92c0cb 801 }
dee1e0e0 802
803 //7-particle
804 Double_t seven2n1n1n1n1n1n1n=0.;
1dfa3c16 805 if(dMult>6)
dee1e0e0 806 {
1dfa3c16 807 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.));
dee1e0e0 808
1dfa3c16 809 fQCorrelations->Fill(28.,seven2n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.));
dee1e0e0 810 }
811
812 //8-particle
813 Double_t eight1n1n1n1n1n1n1n1n=0.;
1dfa3c16 814 if(dMult>7)
dee1e0e0 815 {
cb308e83 816 //fill the common control histogram (8th order):
817 fCommonHists8th->FillControlHistograms(anEvent);
818
1dfa3c16 819 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.));
dee1e0e0 820
1dfa3c16 821 fQCorrelations->Fill(30.,eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
5e838eeb 822
1dfa3c16 823 f8pDistribution->Fill(eight1n1n1n1n1n1n1n1n,dMult*(dMult-1.)*(dMult-2.)*(dMult-3.)*(dMult-4.)*(dMult-5.)*(dMult-6.)*(dMult-7.));
dee1e0e0 824 }
bc92c0cb 825 //---------------------------------------------------------------------------------------------------------
826
bc92c0cb 827 //---------------------------------------------------------------------------------------------------------
828 // DIFFERENTIAL FLOW
829
1dfa3c16 830 Double_t dQ1nx = afvQvector1n.X();
831 Double_t dQ1ny = afvQvector1n.Y();
832 Double_t dQ2nx = afvQvector2n.X();
833 Double_t dQ2ny = afvQvector2n.Y();
bc92c0cb 834
1dfa3c16 835 Double_t dBinWidthPt=1.*(fPtMax-fPtMin)/fnBinsPt;
836 Double_t dBinWidthEta=1.*(fEtaMax-fEtaMin)/fnBinsEta;
837
838 //RP:
839 Double_t qxPtRP=0.,qyPtRP=0.,q2xPtRP=0.,q2yPtRP=0.,mPtRP=0.;//add comments for these variables (deleteMe)
840 Double_t qxEtaRP=0.,qyEtaRP=0.,q2xEtaRP=0.,q2yEtaRP=0.,mEtaRP=0.;//add comments for these variables (deleteMe)
841
842 for(Int_t i=0;i<dMult;i++) //check if nPrim == M
bc92c0cb 843 {
844 fTrack=anEvent->GetTrack(i);
1dfa3c16 845 if(fTrack && fTrack->UseForIntegratedFlow())//checking RP condition
1315fe58 846 {
1dfa3c16 847 //Pt:
848 fPtReq1nRP->Fill(fTrack->Pt(),cos(n*(fTrack->Phi())),1.);
849 fPtImq1nRP->Fill(fTrack->Pt(),sin(n*(fTrack->Phi())),1.);
850 fPtReq2nRP->Fill(fTrack->Pt(),cos(2.*n*(fTrack->Phi())),1.);
851 fPtImq2nRP->Fill(fTrack->Pt(),sin(2.*n*(fTrack->Phi())),1.);
852 //Eta:
853 fEtaReq1nRP->Fill(fTrack->Eta(),cos(n*(fTrack->Phi())),1.);
854 fEtaImq1nRP->Fill(fTrack->Eta(),sin(n*(fTrack->Phi())),1.);
855 fEtaReq2nRP->Fill(fTrack->Eta(),cos(2.*n*(fTrack->Phi())),1.);
856 fEtaImq2nRP->Fill(fTrack->Eta(),sin(2.*n*(fTrack->Phi())),1.);
1315fe58 857 }
bc92c0cb 858 }
859
1dfa3c16 860 //Pt:
861 Double_t twoDiffPt1n1nRP=0.,twoDiffPt2n2nRP=0.,threeDiffPt2n1n1nRP=0.,threeDiffPt1n1n2nRP=0.,fourDiffPt1n1n1n1nRP=0.;
bc92c0cb 862
52021ae2 863 for(Int_t bin=1;bin<(fnBinsPt+1);bin++)//loop over pt-bins
bc92c0cb 864 {
1dfa3c16 865 qxPtRP = (fPtReq1nRP->GetBinContent(bin))*(fPtReq1nRP->GetBinEntries(bin));
866 qyPtRP = (fPtImq1nRP->GetBinContent(bin))*(fPtImq1nRP->GetBinEntries(bin));
867 q2xPtRP = (fPtReq2nRP->GetBinContent(bin))*(fPtReq2nRP->GetBinEntries(bin));
868 q2yPtRP = (fPtImq2nRP->GetBinContent(bin))*(fPtImq2nRP->GetBinEntries(bin));
869 mPtRP = fPtReq1nRP->GetBinEntries(bin);
bc92c0cb 870
1dfa3c16 871 if(mPtRP>0&&dMult>1)
bc92c0cb 872 {
1dfa3c16 873 twoDiffPt1n1nRP = (qxPtRP*dQ1nx+qyPtRP*dQ1ny-mPtRP)/(mPtRP*(dMult-1.));
874 f2PerPtBin1n1nRP->Fill(fPtMin+(bin-1)*dBinWidthPt,twoDiffPt1n1nRP,mPtRP*(dMult-1.));//<2'>_{n|n}
bc92c0cb 875
1dfa3c16 876 twoDiffPt2n2nRP = (q2xPtRP*dQ2nx+q2yPtRP*dQ2ny-mPtRP)/(mPtRP*(dMult-1.));
877 f2PerPtBin2n2nRP->Fill(fPtMin+(bin-1)*dBinWidthPt,twoDiffPt2n2nRP,mPtRP*(dMult-1.));//<2'>_{2n|2n}
bc92c0cb 878 }
879
1dfa3c16 880 if(mPtRP>0&&dMult>2)
bc92c0cb 881 {
1dfa3c16 882 threeDiffPt2n1n1nRP = (q2xPtRP*(dQ1nx*dQ1nx-dQ1ny*dQ1ny)+2.*q2yPtRP*dQ1nx*dQ1ny-2.*(qxPtRP*dQ1nx+qyPtRP*dQ1ny)-(q2xPtRP*dQ2nx+q2yPtRP*dQ2ny)+2.*mPtRP)/(mPtRP*(dMult-1.)*(dMult-2.));
883 f3PerPtBin2n1n1nRP->Fill(fPtMin+(bin-1)*dBinWidthPt,threeDiffPt2n1n1nRP,mPtRP*(dMult-1.)*(dMult-2.));//Re[<3'>_{2n|n,n}]
bc92c0cb 884
1dfa3c16 885 threeDiffPt1n1n2nRP = (dQ2nx*(qxPtRP*dQ1nx-qyPtRP*dQ1ny)+dQ2ny*(qxPtRP*dQ1ny+qyPtRP*dQ1nx)-2.*(qxPtRP*dQ1nx+qyPtRP*dQ1ny)-(q2xPtRP*dQ2nx+q2yPtRP*dQ2ny)+2.*mPtRP)/(mPtRP*(dMult-1.)*(dMult-2.));
886 f3PerPtBin1n1n2nRP->Fill(fPtMin+(bin-1)*dBinWidthPt,threeDiffPt1n1n2nRP,mPtRP*(dMult-1.)*(dMult-2.));//Re[<3'>_{n,n|2n}]
bc92c0cb 887 }
888
1dfa3c16 889 if(mPtRP>0&&dMult>3)
bc92c0cb 890 {
1dfa3c16 891 fourDiffPt1n1n1n1nRP = ((dQ1nx*dQ1nx+dQ1ny*dQ1ny)*(qxPtRP*dQ1nx+qyPtRP*dQ1ny)-(q2xPtRP*(dQ1nx*dQ1nx-dQ1ny*dQ1ny)+2.*q2yPtRP*dQ1nx*dQ1ny)-(dQ2nx*(qxPtRP*dQ1nx-qyPtRP*dQ1ny)+dQ2ny*(qxPtRP*dQ1ny+qyPtRP*dQ1nx))+(q2xPtRP*dQ2nx+q2yPtRP*dQ2ny)-2.*(dMult-3.)*(qxPtRP*dQ1nx+qyPtRP*dQ1ny)-2.*mPtRP*(dQ1nx*dQ1nx+dQ1ny*dQ1ny)+2.*(dQ1nx*qxPtRP+dQ1ny*qyPtRP)+2.*mPtRP*(dMult-3.))/(mPtRP*(dMult-1.)*(dMult-2.)*(dMult-3.));
892 f4PerPtBin1n1n1n1nRP->Fill(fPtMin+(bin-1)*dBinWidthPt,fourDiffPt1n1n1n1nRP,mPtRP*(dMult-1.)*(dMult-2.)*(dMult-3.));//Re[<4'>_{n,n|n,n}]
bc92c0cb 893 }
894
895 }
896
1dfa3c16 897 fPtReq1nRP->Reset();
898 fPtImq1nRP->Reset();
899 fPtReq2nRP->Reset();
900 fPtImq2nRP->Reset();
901
902 //Eta:
903 Double_t twoDiffEta1n1nRP=0.,twoDiffEta2n2nRP=0.,threeDiffEta2n1n1nRP=0.,threeDiffEta1n1n2nRP=0.,fourDiffEta1n1n1n1nRP=0.;
904
905 for(Int_t bin=1;bin<(fnBinsEta+1);bin++)//loop over eta-bins
906 {
907 qxEtaRP = (fEtaReq1nRP->GetBinContent(bin))*(fEtaReq1nRP->GetBinEntries(bin));
908 qyEtaRP = (fEtaImq1nRP->GetBinContent(bin))*(fEtaImq1nRP->GetBinEntries(bin));
909 q2xEtaRP = (fEtaReq2nRP->GetBinContent(bin))*(fEtaReq2nRP->GetBinEntries(bin));
910 q2yEtaRP = (fEtaImq2nRP->GetBinContent(bin))*(fEtaImq2nRP->GetBinEntries(bin));
911 mEtaRP = fEtaReq1nRP->GetBinEntries(bin);
912
913 if(mEtaRP>0&&dMult>1)
914 {
915 twoDiffEta1n1nRP = (qxEtaRP*dQ1nx+qyEtaRP*dQ1ny-mEtaRP)/(mEtaRP*(dMult-1.));
916 f2PerEtaBin1n1nRP->Fill(fEtaMin+(bin-1)*dBinWidthEta,twoDiffEta1n1nRP,mEtaRP*(dMult-1.));//<2'>_{n|n}
917
918 twoDiffEta2n2nRP = (q2xEtaRP*dQ2nx+q2yEtaRP*dQ2ny-mEtaRP)/(mEtaRP*(dMult-1.));
919 f2PerEtaBin2n2nRP->Fill(fEtaMin+(bin-1)*dBinWidthEta,twoDiffEta2n2nRP,mEtaRP*(dMult-1.));//<2'>_{2n|2n}
920 }
921
922 if(mEtaRP>0&&dMult>2)
923 {
924 threeDiffEta2n1n1nRP = (q2xEtaRP*(dQ1nx*dQ1nx-dQ1ny*dQ1ny)+2.*q2yEtaRP*dQ1nx*dQ1ny-2.*(qxEtaRP*dQ1nx+qyEtaRP*dQ1ny)-(q2xEtaRP*dQ2nx+q2yEtaRP*dQ2ny)+2.*mEtaRP)/(mEtaRP*(dMult-1.)*(dMult-2.));
925 f3PerEtaBin2n1n1nRP->Fill(fEtaMin+(bin-1)*dBinWidthEta,threeDiffEta2n1n1nRP,mEtaRP*(dMult-1.)*(dMult-2.));//Re[<3'>_{2n|n,n}]
926
927 threeDiffEta1n1n2nRP = (dQ2nx*(qxEtaRP*dQ1nx-qyEtaRP*dQ1ny)+dQ2ny*(qxEtaRP*dQ1ny+qyEtaRP*dQ1nx)-2.*(qxEtaRP*dQ1nx+qyEtaRP*dQ1ny)-(q2xEtaRP*dQ2nx+q2yEtaRP*dQ2ny)+2.*mEtaRP)/(mEtaRP*(dMult-1.)*(dMult-2.));
928 f3PerEtaBin1n1n2nRP->Fill(fEtaMin+(bin-1)*dBinWidthEta,threeDiffEta1n1n2nRP,mEtaRP*(dMult-1.)*(dMult-2.));//Re[<3'>_{n,n|2n}]
929 }
930
931 if(mEtaRP>0&&dMult>3)
932 {
933 fourDiffEta1n1n1n1nRP = ((dQ1nx*dQ1nx+dQ1ny*dQ1ny)*(qxEtaRP*dQ1nx+qyEtaRP*dQ1ny)-(q2xEtaRP*(dQ1nx*dQ1nx-dQ1ny*dQ1ny)+2.*q2yEtaRP*dQ1nx*dQ1ny)-(dQ2nx*(qxEtaRP*dQ1nx-qyEtaRP*dQ1ny)+dQ2ny*(qxEtaRP*dQ1ny+qyEtaRP*dQ1nx))+(q2xEtaRP*dQ2nx+q2yEtaRP*dQ2ny)-2.*(dMult-3.)*(qxEtaRP*dQ1nx+qyEtaRP*dQ1ny)-2.*mEtaRP*(dQ1nx*dQ1nx+dQ1ny*dQ1ny)+2.*(dQ1nx*qxEtaRP+dQ1ny*qyEtaRP)+2.*mEtaRP*(dMult-3.))/(mEtaRP*(dMult-1.)*(dMult-2.)*(dMult-3.));
934 f4PerEtaBin1n1n1n1nRP->Fill(fEtaMin+(bin-1)*dBinWidthEta,fourDiffEta1n1n1n1nRP,mEtaRP*(dMult-1.)*(dMult-2.)*(dMult-3.));//Re[<4'>_{n,n|n,n}]
935 }
936
937 }
938
939 fEtaReq1nRP->Reset();
940 fEtaImq1nRP->Reset();
941 fEtaReq2nRP->Reset();
942 fEtaImq2nRP->Reset();
943
944 //POI:
945 Double_t qxPtPOI=0.,qyPtPOI=0.,q2xPtPOI=0.,q2yPtPOI=0.,mPtPOI=0.;//add comments for these variables (deleteMe)
946 Double_t qxEtaPOI=0.,qyEtaPOI=0.,q2xEtaPOI=0.,q2yEtaPOI=0.,mEtaPOI=0.;//add comments for these variables (deleteMe)
947 Int_t iOverlap=0;
948
949 for(Int_t i=0;i<dMult;i++) //check if nPrim == M
950 {
951 fTrack=anEvent->GetTrack(i);
952 if(fTrack && fTrack->UseForDifferentialFlow())//checking POI condition
953 {
954 //Pt:
955 fPtReq1nPOI->Fill(fTrack->Pt(),cos(n*(fTrack->Phi())),1.);
956 fPtImq1nPOI->Fill(fTrack->Pt(),sin(n*(fTrack->Phi())),1.);
957 fPtReq2nPOI->Fill(fTrack->Pt(),cos(2.*n*(fTrack->Phi())),1.);
958 fPtImq2nPOI->Fill(fTrack->Pt(),sin(2.*n*(fTrack->Phi())),1.);
959 //Eta:
960 fEtaReq1nPOI->Fill(fTrack->Eta(),cos(n*(fTrack->Phi())),1.);
961 fEtaImq1nPOI->Fill(fTrack->Eta(),sin(n*(fTrack->Phi())),1.);
962 fEtaReq2nPOI->Fill(fTrack->Eta(),cos(2.*n*(fTrack->Phi())),1.);
963 fEtaImq2nPOI->Fill(fTrack->Eta(),sin(2.*n*(fTrack->Phi())),1.);
964 if(fTrack->UseForDifferentialFlow() && fTrack->UseForIntegratedFlow())//counting the overlap between RP and POI
965 {
966 iOverlap++;
967 }
968 }
969 }
970
971 //Pt:
972 Double_t twoDiffPt1n1nPOI=0.,twoDiffPt2n2nPOI=0.,threeDiffPt2n1n1nPOI=0.,threeDiffPt1n1n2nPOI=0.,fourDiffPt1n1n1n1nPOI=0.;
973
974 for(Int_t bin=1;bin<(fnBinsPt+1);bin++)//loop over pt-bins
975 {
976 qxPtPOI = (fPtReq1nPOI->GetBinContent(bin))*(fPtReq1nPOI->GetBinEntries(bin));
977 qyPtPOI = (fPtImq1nPOI->GetBinContent(bin))*(fPtImq1nPOI->GetBinEntries(bin));
978 q2xPtPOI = (fPtReq2nPOI->GetBinContent(bin))*(fPtReq2nPOI->GetBinEntries(bin));
979 q2yPtPOI = (fPtImq2nPOI->GetBinContent(bin))*(fPtImq2nPOI->GetBinEntries(bin));
980 mPtPOI = fPtReq1nPOI->GetBinEntries(bin);
981
982 if(mPtPOI>0&&dMult>1)
983 {
984 //twoDiffPt1n1nPOI = (qxPtPOI*dQ1nx+qyPtPOI*dQ1ny-mPtPOI)/(mPtPOI*(dMult-1.));
985 twoDiffPt1n1nPOI = (qxPtPOI*dQ1nx+qyPtPOI*dQ1ny-iOverlap)/(mPtPOI*(dMult-1.));
986 f2PerPtBin1n1nPOI->Fill(fPtMin+(bin-1)*dBinWidthPt,twoDiffPt1n1nPOI,mPtPOI*(dMult-1.));//<2'>_{n|n}
987
988 //twoDiffPt2n2nPOI = (q2xPtPOI*dQ2nx+q2yPtPOI*dQ2ny-mPtPOI)/(mPtPOI*(dMult-1.));
989 twoDiffPt2n2nPOI = (q2xPtPOI*dQ2nx+q2yPtPOI*dQ2ny-iOverlap)/(mPtPOI*(dMult-1.));
990 f2PerPtBin2n2nPOI->Fill(fPtMin+(bin-1)*dBinWidthPt,twoDiffPt2n2nPOI,mPtPOI*(dMult-1.));//<2'>_{2n|2n}
991 }
992
993 if(mPtPOI>0&&dMult>2)
994 {
995 threeDiffPt2n1n1nPOI = (q2xPtPOI*(dQ1nx*dQ1nx-dQ1ny*dQ1ny)+2.*q2yPtPOI*dQ1nx*dQ1ny-2.*(qxPtPOI*dQ1nx+qyPtPOI*dQ1ny)-(q2xPtPOI*dQ2nx+q2yPtPOI*dQ2ny)+2.*mPtPOI)/(mPtPOI*(dMult-1.)*(dMult-2.));//to be improved (correct formula)
996 //f3PePOItBin2n1n1nPOI->Fill(fPtMin+(bin-1)*dBinWidthPt,threeDiffPt2n1n1nPOI,mPtPOI*(dMult-1.)*(dMult-2.));//Re[<3'>_{2n|n,n}]
997
998 threeDiffPt1n1n2nPOI = (dQ2nx*(qxPtPOI*dQ1nx-qyPtPOI*dQ1ny)+dQ2ny*(qxPtPOI*dQ1ny+qyPtPOI*dQ1nx)-2.*(qxPtPOI*dQ1nx+qyPtPOI*dQ1ny)-(q2xPtPOI*dQ2nx+q2yPtPOI*dQ2ny)+2.*mPtPOI)/(mPtPOI*(dMult-1.)*(dMult-2.));//to be improved (correct formula)
999 //f3PePOItBin1n1n2nPOI->Fill(fPtMin+(bin-1)*dBinWidthPt,threeDiffPt1n1n2nPOI,mPtPOI*(dMult-1.)*(dMult-2.));//Re[<3'>_{n,n|2n}]
1000 }
1001
1002 if(mPtPOI>0&&dMult>3)
1003 {
1004 fourDiffPt1n1n1n1nPOI = ((dQ1nx*dQ1nx+dQ1ny*dQ1ny)*(qxPtPOI*dQ1nx+qyPtPOI*dQ1ny)-(q2xPtPOI*(dQ1nx*dQ1nx-dQ1ny*dQ1ny)+2.*q2yPtPOI*dQ1nx*dQ1ny)-(dQ2nx*(qxPtPOI*dQ1nx-qyPtPOI*dQ1ny)+dQ2ny*(qxPtPOI*dQ1ny+qyPtPOI*dQ1nx))+(q2xPtPOI*dQ2nx+q2yPtPOI*dQ2ny)-2.*(dMult-3.)*(qxPtPOI*dQ1nx+qyPtPOI*dQ1ny)-2.*mPtPOI*(dQ1nx*dQ1nx+dQ1ny*dQ1ny)+2.*(dQ1nx*qxPtPOI+dQ1ny*qyPtPOI)+2.*mPtPOI*(dMult-3.))/(mPtPOI*(dMult-1.)*(dMult-2.)*(dMult-3.));//to be improved (correct formula)
1005 //f4PePOItBin1n1n1n1nPOI->Fill(fPtMin+(bin-1)*dBinWidthPt,fourDiffPt1n1n1n1nPOI,mPtPOI*(dMult-1.)*(dMult-2.)*(dMult-3.));//Re[<4'>_{n,n|n,n}]
1006 }
1007
1008 }
1009
1010 fPtReq1nPOI->Reset();
1011 fPtImq1nPOI->Reset();
1012 fPtReq2nPOI->Reset();
1013 fPtImq2nPOI->Reset();
1014
1015 //Eta:
1016 Double_t twoDiffEta1n1nPOI=0.,twoDiffEta2n2nPOI=0.,threeDiffEta2n1n1nPOI=0.,threeDiffEta1n1n2nPOI=0.,fourDiffEta1n1n1n1nPOI=0.;
1017
1018 for(Int_t bin=1;bin<(fnBinsEta+1);bin++)//loop over eta-bins
1019 {
1020 qxEtaPOI = (fEtaReq1nPOI->GetBinContent(bin))*(fEtaReq1nPOI->GetBinEntries(bin));
1021 qyEtaPOI = (fEtaImq1nPOI->GetBinContent(bin))*(fEtaImq1nPOI->GetBinEntries(bin));
1022 q2xEtaPOI = (fEtaReq2nPOI->GetBinContent(bin))*(fEtaReq2nPOI->GetBinEntries(bin));
1023 q2yEtaPOI = (fEtaImq2nPOI->GetBinContent(bin))*(fEtaImq2nPOI->GetBinEntries(bin));
1024 mEtaPOI = fEtaReq1nPOI->GetBinEntries(bin);
1025
1026 if(mEtaPOI>0&&dMult>1)
1027 {
1028 //twoDiffEta1n1nPOI = (qxEtaPOI*dQ1nx+qyEtaPOI*dQ1ny-mEtaPOI)/(mEtaPOI*(dMult-1.));
1029 twoDiffEta1n1nPOI = (qxEtaPOI*dQ1nx+qyEtaPOI*dQ1ny-iOverlap)/(mEtaPOI*(dMult-1.));
1030 f2PerEtaBin1n1nPOI->Fill(fEtaMin+(bin-1)*dBinWidthEta,twoDiffEta1n1nPOI,mEtaPOI*(dMult-1.));//<2'>_{n|n}
1031
1032 //twoDiffEta2n2nPOI = (q2xEtaPOI*dQ2nx+q2yEtaPOI*dQ2ny-mEtaPOI)/(mEtaPOI*(dMult-1.));
1033 twoDiffEta2n2nPOI = (q2xEtaPOI*dQ2nx+q2yEtaPOI*dQ2ny-iOverlap)/(mEtaPOI*(dMult-1.));
1034 f2PerEtaBin2n2nPOI->Fill(fEtaMin+(bin-1)*dBinWidthEta,twoDiffEta2n2nPOI,mEtaPOI*(dMult-1.));//<2'>_{2n|2n}
1035 }
1036
1037 if(mEtaPOI>0&&dMult>2)
1038 {
1039 threeDiffEta2n1n1nPOI = (q2xEtaPOI*(dQ1nx*dQ1nx-dQ1ny*dQ1ny)+2.*q2yEtaPOI*dQ1nx*dQ1ny-2.*(qxEtaPOI*dQ1nx+qyEtaPOI*dQ1ny)-(q2xEtaPOI*dQ2nx+q2yEtaPOI*dQ2ny)+2.*mEtaPOI)/(mEtaPOI*(dMult-1.)*(dMult-2.));//to be improved (correct formula)
1040 //f3PerEtaBin2n1n1nPOI->Fill(fEtaMin+(bin-1)*dBinWidthEta,threeDiffEta2n1n1nPOI,mEtaPOI*(dMult-1.)*(dMult-2.));//Re[<3'>_{2n|n,n}]
1041
1042 threeDiffEta1n1n2nPOI = (dQ2nx*(qxEtaPOI*dQ1nx-qyEtaPOI*dQ1ny)+dQ2ny*(qxEtaPOI*dQ1ny+qyEtaPOI*dQ1nx)-2.*(qxEtaPOI*dQ1nx+qyEtaPOI*dQ1ny)-(q2xEtaPOI*dQ2nx+q2yEtaPOI*dQ2ny)+2.*mEtaPOI)/(mEtaPOI*(dMult-1.)*(dMult-2.));//to be improved (correct formula)
1043 //f3PerEtaBin1n1n2nPOI->Fill(fEtaMin+(bin-1)*dBinWidthEta,threeDiffEta1n1n2nPOI,mEtaPOI*(dMult-1.)*(dMult-2.));//Re[<3'>_{n,n|2n}]
1044 }
1045
1046 if(mEtaPOI>0&&dMult>3)
1047 {
1048 fourDiffEta1n1n1n1nPOI = ((dQ1nx*dQ1nx+dQ1ny*dQ1ny)*(qxEtaPOI*dQ1nx+qyEtaPOI*dQ1ny)-(q2xEtaPOI*(dQ1nx*dQ1nx-dQ1ny*dQ1ny)+2.*q2yEtaPOI*dQ1nx*dQ1ny)-(dQ2nx*(qxEtaPOI*dQ1nx-qyEtaPOI*dQ1ny)+dQ2ny*(qxEtaPOI*dQ1ny+qyEtaPOI*dQ1nx))+(q2xEtaPOI*dQ2nx+q2yEtaPOI*dQ2ny)-2.*(dMult-3.)*(qxEtaPOI*dQ1nx+qyEtaPOI*dQ1ny)-2.*mEtaPOI*(dQ1nx*dQ1nx+dQ1ny*dQ1ny)+2.*(dQ1nx*qxEtaPOI+dQ1ny*qyEtaPOI)+2.*mEtaPOI*(dMult-3.))/(mEtaPOI*(dMult-1.)*(dMult-2.)*(dMult-3.));//to be improved (correct formula)
1049 //f4PerEtaBin1n1n1n1nPOI->Fill(fEtaMin+(bin-1)*dBinWidthEta,fourDiffEta1n1n1n1nPOI,mEtaPOI*(dMult-1.)*(dMult-2.)*(dMult-3.));//Re[<4'>_{n,n|n,n}]
1050 }
1051
1052 }
1053
1054 fEtaReq1nPOI->Reset();
1055 fEtaImq1nPOI->Reset();
1056 fEtaReq2nPOI->Reset();
1057 fEtaImq2nPOI->Reset();
1058
bc92c0cb 1059//---------------------------------------------------------------------------------------------------------
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
bc92c0cb 1072
1073
1074
bc92c0cb 1075
1076
bc92c0cb 1077
bc92c0cb 1078
1079
1080
bc92c0cb 1081
1082
1083
52021ae2 1084/*
bc92c0cb 1085
1086
1087
1088
1089
bc92c0cb 1090
bc92c0cb 1091
dee1e0e0 1092
1093 //--------------------------------------------------------------------------------------------------------------------------------
1094 //
1095 // **********************
1096 // **** NESTED LOOPS ****
1097 // **********************
1098 //
1099 // Remark 1: multi-particle correlations calculated with nested loops are stored in fDirectCorrelations.
1100 // Remark 2: binning of fDirectCorrelations: bins 0..40 - correlations needed for integrated flow; bins 40..80 - correlations needed for differential flow (taking as an example bin 0.5 < pt < 0.6)
1101 //
1102 // binning details of fDirectCorrelations (integrated flow):
1103 //
1104 // 1st bin: <2>_{n|n} = two1n1n
1105 // 2nd bin: <2>_{2n|2n} = two2n2n
1106 // 3rd bin: <2>_{3n|3n} = two3n3n
1107 // 4th bin: <2>_{4n|4n} = two4n4n
1108 // 5th bin: -- EMPTY --
1109 // 6th bin: <3>_{2n|n,n} = three2n1n1n
1110 // 7th bin: <3>_{3n|2n,n} = three3n2n1n
1111 // 8th bin: <3>_{4n|2n,2n} = three4n2n2n
1112 // 9th bin: <3>_{4n|3n,n} = three4n3n1n
1113 //10th bin: -- EMPTY --
1114 //11th bin: <4>_{n,n|n,n} = four1n1n1n1n
1115 //12th bin: <4>_{2n,n|2n,n} = four2n1n2n1n
1116 //13th bin: <4>_{2n,2n|2n,2n} = four2n2n2n2n
1117 //14th bin: <4>_{3n|n,n,n} = four3n1n1n1n
1118 //15th bin: <4>_{3n,n|3n,n} = four3n1n3n1n
1119 //16th bin: <4>_{3n,n|2n,2n} = four3n1n2n2n
1120 //17th bin: <4>_{4n|2n,n,n} = four4n2n1n1n
1121 //18th bin: -- EMPTY --
1122 //19th bin: <5>_{2n|n,n,n,n} = five2n1n1n1n1n
1123 //20th bin: <5>_{2n,2n|2n,n,n} = five2n2n2n1n1n
1124 //21st bin: <5>_{3n,n|2n,n,n} = five3n1n2n1n1n
1125 //22nd bin: <5>_{4n|n,n,n,n} = five4n1n1n1n1n
1126 //23rd bin: -- EMPTY --
1127 //24th bin: <6>_{n,n,n|n,n,n} = six1n1n1n1n1n1n
1128 //25th bin: <6>_{2n,n,n|2n,n,n} = six2n1n1n2n1n1n
1129 //26th bin: <6>_{2n,2n|n,n,n,n} = six2n2n1n1n1n1n
1130 //27th bin: <6>_{3n,n|n,n,n,n} = six3n1n1n1n1n1n
1131 //28th bin: -- EMPTY --
1132 //29th bin: <7>_{2n,n,n|n,n,n,n} = seven2n1n1n1n1n1n1n
1133 //30th bin: -- EMPTY --
1134 //31st bin: <8>_{n,n,n,n|n,n,n,n} = eight1n1n1n1n1n1n1n1n
1135
1136 Double_t phi1=0., phi2=0., phi3=0., phi4=0., phi5=0., phi6=0., phi7=0., phi8=0.;
1137
1138 //<2>_{k*n|k*n} (k=1,2,3 and 4)
1dfa3c16 1139 for(Int_t i1=0;i1<dMult;i1++)
bc92c0cb 1140 {
dee1e0e0 1141 fTrack=anEvent->GetTrack(i1);
bc92c0cb 1142 phi1=fTrack->Phi();
1dfa3c16 1143 for(Int_t i2=0;i2<dMult;i2++)
bc92c0cb 1144 {
dee1e0e0 1145 if(i2==i1)continue;
1146 fTrack=anEvent->GetTrack(i2);
bc92c0cb 1147 phi2=fTrack->Phi();
1315fe58 1148 fDirectCorrelations->Fill(0.,cos(n*(phi1-phi2)),1); //<2>_{n|n}
1149 fDirectCorrelations->Fill(1.,cos(2.*n*(phi1-phi2)),1); //<2>_{2n|2n}
1150 fDirectCorrelations->Fill(2.,cos(3.*n*(phi1-phi2)),1); //<2>_{3n|3n}
1151 fDirectCorrelations->Fill(3.,cos(4.*n*(phi1-phi2)),1); //<2>_{4n|4n}
bc92c0cb 1152 }
1153 }
1154
1315fe58 1155 //<3>_{2n|n,n}, <3>_{3n|2n,n}, <3>_{4n|2n,2n} and <3>_{4n|3n,n}
1dfa3c16 1156 for(Int_t i1=0;i1<dMult;i1++)
bc92c0cb 1157 {
dee1e0e0 1158 fTrack=anEvent->GetTrack(i1);
bc92c0cb 1159 phi1=fTrack->Phi();
1dfa3c16 1160 for(Int_t i2=0;i2<dMult;i2++)
bc92c0cb 1161 {
dee1e0e0 1162 if(i2==i1)continue;
1163 fTrack=anEvent->GetTrack(i2);
bc92c0cb 1164 phi2=fTrack->Phi();
1dfa3c16 1165 for(Int_t i3=0;i3<dMult;i3++)
bc92c0cb 1166 {
dee1e0e0 1167 if(i3==i1||i3==i2)continue;
1168 fTrack=anEvent->GetTrack(i3);
bc92c0cb 1169 phi3=fTrack->Phi();
1315fe58 1170 fDirectCorrelations->Fill(5.,cos(2*n*phi1-n*(phi2+phi3)),1); //<3>_{2n|n,n}
1171 fDirectCorrelations->Fill(6.,cos(3.*n*phi1-2.*n*phi2-n*phi3),1); //<3>_{3n|2n,n}
1172 fDirectCorrelations->Fill(7.,cos(4.*n*phi1-2.*n*phi2-2.*n*phi3),1); //<3>_{4n|2n,2n}
1173 fDirectCorrelations->Fill(8.,cos(4.*n*phi1-3.*n*phi2-n*phi3),1); //<3>_{4n|3n,n}
bc92c0cb 1174 }
1175 }
1176 }
1177
dee1e0e0 1178 //<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}
1dfa3c16 1179 for(Int_t i1=0;i1<dMult;i1++)
bc92c0cb 1180 {
dee1e0e0 1181 fTrack=anEvent->GetTrack(i1);
bc92c0cb 1182 phi1=fTrack->Phi();
1dfa3c16 1183 for(Int_t i2=0;i2<dMult;i2++)
bc92c0cb 1184 {
dee1e0e0 1185 if(i2==i1)continue;
1186 fTrack=anEvent->GetTrack(i2);
bc92c0cb 1187 phi2=fTrack->Phi();
1dfa3c16 1188 for(Int_t i3=0;i3<dMult;i3++)
bc92c0cb 1189 {
dee1e0e0 1190 if(i3==i1||i3==i2)continue;
1191 fTrack=anEvent->GetTrack(i3);
bc92c0cb 1192 phi3=fTrack->Phi();
1dfa3c16 1193 for(Int_t i4=0;i4<dMult;i4++)
bc92c0cb 1194 {
dee1e0e0 1195 if(i4==i1||i4==i2||i4==i3)continue;
1196 fTrack=anEvent->GetTrack(i4);
bc92c0cb 1197 phi4=fTrack->Phi();
dee1e0e0 1198 fDirectCorrelations->Fill(10.,cos(n*phi1+n*phi2-n*phi3-n*phi4),1); //<4>_{n,n|n,n}
1199 fDirectCorrelations->Fill(11.,cos(2.*n*phi1+n*phi2-2.*n*phi3-n*phi4),1); //<4>_{2n,n|2n,n}
1200 fDirectCorrelations->Fill(12.,cos(2.*n*phi1+2*n*phi2-2.*n*phi3-2.*n*phi4),1); //<4>_{2n,2n|2n,2n}
1201 fDirectCorrelations->Fill(13.,cos(3.*n*phi1-n*phi2-n*phi3-n*phi4),1); //<4>_{3n|n,n,n}
1202 fDirectCorrelations->Fill(14.,cos(3.*n*phi1+n*phi2-3.*n*phi3-n*phi4),1); //<4>_{3n,n|3n,n}
1203 fDirectCorrelations->Fill(15.,cos(3.*n*phi1+n*phi2-2.*n*phi3-2.*n*phi4),1); //<4>_{3n,n|2n,2n}
1204 fDirectCorrelations->Fill(16.,cos(4.*n*phi1-2.*n*phi2-n*phi3-n*phi4),1); //<4>_{4n|2n,n,n}
bc92c0cb 1205 }
1206 }
1207 }
1208 }
1209
dee1e0e0 1210 //<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}
1dfa3c16 1211 for(Int_t i1=0;i1<dMult;i1++)
bc92c0cb 1212 {
dee1e0e0 1213 //cout<<"i1 = "<<i1<<endl;
1214 fTrack=anEvent->GetTrack(i1);
bc92c0cb 1215 phi1=fTrack->Phi();
1dfa3c16 1216 for(Int_t i2=0;i2<dMult;i2++)
bc92c0cb 1217 {
dee1e0e0 1218 if(i2==i1)continue;
1219 fTrack=anEvent->GetTrack(i2);
bc92c0cb 1220 phi2=fTrack->Phi();
1dfa3c16 1221 for(Int_t i3=0;i3<dMult;i3++)
bc92c0cb 1222 {
dee1e0e0 1223 if(i3==i1||i3==i2)continue;
1224 fTrack=anEvent->GetTrack(i3);
bc92c0cb 1225 phi3=fTrack->Phi();
1dfa3c16 1226 for(Int_t i4=0;i4<dMult;i4++)
bc92c0cb 1227 {
dee1e0e0 1228 if(i4==i1||i4==i2||i4==i3)continue;
1229 fTrack=anEvent->GetTrack(i4);
bc92c0cb 1230 phi4=fTrack->Phi();
1dfa3c16 1231 for(Int_t i5=0;i5<dMult;i5++)
bc92c0cb 1232 {
dee1e0e0 1233 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
1234 fTrack=anEvent->GetTrack(i5);
bc92c0cb 1235 phi5=fTrack->Phi();
dee1e0e0 1236 fDirectCorrelations->Fill(18.,cos(2.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5),1); //<5>_{2n,n|n,n,n}
1237 fDirectCorrelations->Fill(19.,cos(2.*n*phi1+2.*n*phi2-2.*n*phi3-n*phi4-n*phi5),1); //<5>_{2n,2n|2n,n,n}
1238 fDirectCorrelations->Fill(20.,cos(3.*n*phi1+n*phi2-2.*n*phi3-n*phi4-n*phi5),1); //<5>_{3n,n|2n,n,n}
1239 fDirectCorrelations->Fill(21.,cos(4.*n*phi1-n*phi2-n*phi3-n*phi4-n*phi5),1); //<5>_{4n|n,n,n,n}
bc92c0cb 1240 }
1241 }
1242 }
1243 }
1244 }
1245
dee1e0e0 1246 //<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}
1dfa3c16 1247 for(Int_t i1=0;i1<dMult;i1++)
dee1e0e0 1248 {
1249 //cout<<"i1 = "<<i1<<endl;
1250 fTrack=anEvent->GetTrack(i1);
1251 phi1=fTrack->Phi();
1dfa3c16 1252 for(Int_t i2=0;i2<dMult;i2++)
dee1e0e0 1253 {
1254 if(i2==i1)continue;
1255 fTrack=anEvent->GetTrack(i2);
1256 phi2=fTrack->Phi();
1dfa3c16 1257 for(Int_t i3=0;i3<dMult;i3++)
dee1e0e0 1258 {
1259 if(i3==i1||i3==i2)continue;
1260 fTrack=anEvent->GetTrack(i3);
1261 phi3=fTrack->Phi();
1dfa3c16 1262 for(Int_t i4=0;i4<dMult;i4++)
dee1e0e0 1263 {
1264 if(i4==i1||i4==i2||i4==i3)continue;
1265 fTrack=anEvent->GetTrack(i4);
1266 phi4=fTrack->Phi();
1dfa3c16 1267 for(Int_t i5=0;i5<dMult;i5++)
dee1e0e0 1268 {
1269 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
1270 fTrack=anEvent->GetTrack(i5);
1271 phi5=fTrack->Phi();
1dfa3c16 1272 for(Int_t i6=0;i6<dMult;i6++)
dee1e0e0 1273 {
1274 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
1275 fTrack=anEvent->GetTrack(i6);
1276 phi6=fTrack->Phi();
1277 fDirectCorrelations->Fill(23.,cos(n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6),1); //<6>_{n,n,n|n,n,n}
1278 fDirectCorrelations->Fill(24.,cos(2.*n*phi1+n*phi2+n*phi3-2.*n*phi4-n*phi5-n*phi6),1); //<6>_{2n,n,n|2n,n,n}
1279 fDirectCorrelations->Fill(25.,cos(2.*n*phi1+2.*n*phi2-n*phi3-n*phi4-n*phi5-n*phi6),1); //<6>_{2n,2n|n,n,n,n}
1280 fDirectCorrelations->Fill(26.,cos(3.*n*phi1+n*phi2-n*phi3-n*phi4-n*phi5-n*phi6),1); //<6>_{3n,n|n,n,n,n}
1281 }
1282 }
1283 }
1284 }
1285 }
1286 }
52021ae2 1287
dee1e0e0 1288 //<7>_{2n,n,n|n,n,n,n}
1dfa3c16 1289 for(Int_t i1=0;i1<dMult;i1++)
bc92c0cb 1290 {
dee1e0e0 1291 //cout<<"i1 = "<<i1<<endl;
1292 fTrack=anEvent->GetTrack(i1);
bc92c0cb 1293 phi1=fTrack->Phi();
1dfa3c16 1294 for(Int_t i2=0;i2<dMult;i2++)
bc92c0cb 1295 {
dee1e0e0 1296 if(i2==i1)continue;
1297 fTrack=anEvent->GetTrack(i2);
bc92c0cb 1298 phi2=fTrack->Phi();
1dfa3c16 1299 for(Int_t i3=0;i3<dMult;i3++)
bc92c0cb 1300 {
dee1e0e0 1301 if(i3==i1||i3==i2)continue;
1302 fTrack=anEvent->GetTrack(i3);
bc92c0cb 1303 phi3=fTrack->Phi();
1dfa3c16 1304 for(Int_t i4=0;i4<dMult;i4++)
bc92c0cb 1305 {
dee1e0e0 1306 if(i4==i1||i4==i2||i4==i3)continue;
1307 fTrack=anEvent->GetTrack(i4);
bc92c0cb 1308 phi4=fTrack->Phi();
1dfa3c16 1309 for(Int_t i5=0;i5<dMult;i5++)
bc92c0cb 1310 {
dee1e0e0 1311 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
1312 fTrack=anEvent->GetTrack(i5);
bc92c0cb 1313 phi5=fTrack->Phi();
1dfa3c16 1314 for(Int_t i6=0;i6<dMult;i6++)
bc92c0cb 1315 {
dee1e0e0 1316 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
1317 fTrack=anEvent->GetTrack(i6);
bc92c0cb 1318 phi6=fTrack->Phi();
1dfa3c16 1319 for(Int_t i7=0;i7<dMult;i7++)
dee1e0e0 1320 {
1321 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
1322 fTrack=anEvent->GetTrack(i7);
1323 phi7=fTrack->Phi();
1324 fDirectCorrelations->Fill(28.,cos(2.*n*phi1+n*phi2+n*phi3-n*phi4-n*phi5-n*phi6-n*phi7),1);//<7>_{2n,n,n|n,n,n,n}
1325 }
bc92c0cb 1326 }
1327 }
1328 }
1329 }
1330 }
1331 }
52021ae2 1332
dee1e0e0 1333 //<8>_{n,n,n,n|n,n,n,n}
1dfa3c16 1334 for(Int_t i1=0;i1<dMult;i1++)
dee1e0e0 1335 {
1336 cout<<"i1 = "<<i1<<endl;
1337 fTrack=anEvent->GetTrack(i1);
1338 phi1=fTrack->Phi();
1dfa3c16 1339 for(Int_t i2=0;i2<dMult;i2++)
dee1e0e0 1340 {
1341 if(i2==i1)continue;
1342 fTrack=anEvent->GetTrack(i2);
1343 phi2=fTrack->Phi();
1dfa3c16 1344 for(Int_t i3=0;i3<dMult;i3++)
dee1e0e0 1345 {
1346 if(i3==i1||i3==i2)continue;
1347 fTrack=anEvent->GetTrack(i3);
1348 phi3=fTrack->Phi();
1dfa3c16 1349 for(Int_t i4=0;i4<dMult;i4++)
dee1e0e0 1350 {
1351 if(i4==i1||i4==i2||i4==i3)continue;
1352 fTrack=anEvent->GetTrack(i4);
1353 phi4=fTrack->Phi();
1dfa3c16 1354 for(Int_t i5=0;i5<dMult;i5++)
dee1e0e0 1355 {
1356 if(i5==i1||i5==i2||i5==i3||i5==i4)continue;
1357 fTrack=anEvent->GetTrack(i5);
1358 phi5=fTrack->Phi();
1dfa3c16 1359 for(Int_t i6=0;i6<dMult;i6++)
dee1e0e0 1360 {
1361 if(i6==i1||i6==i2||i6==i3||i6==i4||i6==i5)continue;
1362 fTrack=anEvent->GetTrack(i6);
1363 phi6=fTrack->Phi();
1dfa3c16 1364 for(Int_t i7=0;i7<dMult;i7++)
dee1e0e0 1365 {
1366 if(i7==i1||i7==i2||i7==i3||i7==i4||i7==i5||i7==i6)continue;
1367 fTrack=anEvent->GetTrack(i7);
1368 phi7=fTrack->Phi();
1dfa3c16 1369 for(Int_t i8=0;i8<dMult;i8++)
dee1e0e0 1370 {
1371 if(i8==i1||i8==i2||i8==i3||i8==i4||i8==i5||i8==i6||i8==i7)continue;
1372 fTrack=anEvent->GetTrack(i8);
1373 phi8=fTrack->Phi();
1374 fDirectCorrelations->Fill(30.,cos(n*phi1+n*phi2+n*phi3+n*phi4-n*phi5-n*phi6-n*phi7-n*phi8),1);//<8>_{n,n,n,n|n,n,n,n}
1375 }
1376 }
1377 }
1378 }
1379 }
1380 }
1381 }
1382 }
bc92c0cb 1383
dee1e0e0 1384 // binning details of fDirectCorrelations (differential flow):
1385 //
bc92c0cb 1386 //41st bin: <2'>_{n|n}
1387 //42nd bin: <2'>_{2n|2n}
1388 //46th bin: <3'>_{2n|n,n}
1389 //47th bin: <3'>_{n,n|2n}
1390 //51st bin: <4'>_{n,n|n,n}
1391
1392 //<2'>_{n|n}
1dfa3c16 1393 for(Int_t i1=0;i1<dMult;i1++)
bc92c0cb 1394 {
dee1e0e0 1395 fTrack=anEvent->GetTrack(i1);
bc92c0cb 1396 if(fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)
1397 {
1398 phi1=fTrack->Phi();
1dfa3c16 1399 for(Int_t i2=0;i2<dMult;i2++)
bc92c0cb 1400 {
dee1e0e0 1401 if(i2==i1)continue;
1402 fTrack=anEvent->GetTrack(i2);
bc92c0cb 1403 phi2=fTrack->Phi();
1404 fDirectCorrelations->Fill(40.,cos(1.*n*(phi1-phi2)),1); //<2'>_{n,n}
1405 fDirectCorrelations->Fill(41.,cos(2.*n*(phi1-phi2)),1); //<2'>_{2n,2n}
1406 }
1407 }
1408 }
1409
1410 //<3'>_{2n|n,n}
1dfa3c16 1411 for(Int_t i1=0;i1<dMult;i1++)
bc92c0cb 1412 {
dee1e0e0 1413 fTrack=anEvent->GetTrack(i1);
bc92c0cb 1414 if(fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)
1415 {
1416 phi1=fTrack->Phi();
1dfa3c16 1417 for(Int_t i2=0;i2<dMult;i2++)
bc92c0cb 1418 {
dee1e0e0 1419 if(i2==i1)continue;
1420 fTrack=anEvent->GetTrack(i2);
bc92c0cb 1421 phi2=fTrack->Phi();
1dfa3c16 1422 for(Int_t i3=0;i3<dMult;i3++)
bc92c0cb 1423 {
dee1e0e0 1424 if(i3==i1||i3==i2)continue;
1425 fTrack=anEvent->GetTrack(i3);
bc92c0cb 1426 phi3=fTrack->Phi();
1427 fDirectCorrelations->Fill(45.,cos(n*(2.*phi1-phi2-phi3)),1); //<3'>_{2n|n,n}
1428 fDirectCorrelations->Fill(46.,cos(n*(phi1+phi2-2.*phi3)),1); //<3'>_{n,n|2n}
1429 }
1430 }
1431 }
1432 }
1433
1434 //<4'>_{n,n|n,n}
1dfa3c16 1435 for(Int_t i1=0;i1<dMult;i1++)
bc92c0cb 1436 {
dee1e0e0 1437 fTrack=anEvent->GetTrack(i1);
bc92c0cb 1438 if(fTrack->Pt()>=0.5&&fTrack->Pt()<0.6)
1439 {
1440 phi1=fTrack->Phi();
1dfa3c16 1441 for(Int_t i2=0;i2<dMult;i2++)
bc92c0cb 1442 {
dee1e0e0 1443 if(i2==i1)continue;
1444 fTrack=anEvent->GetTrack(i2);
bc92c0cb 1445 phi2=fTrack->Phi();
1dfa3c16 1446 for(Int_t i3=0;i3<dMult;i3++)
bc92c0cb 1447 {
dee1e0e0 1448 if(i3==i1||i3==i2)continue;
1449 fTrack=anEvent->GetTrack(i3);
bc92c0cb 1450 phi3=fTrack->Phi();
1dfa3c16 1451 for(Int_t i4=0;i4<dMult;i4++)
bc92c0cb 1452 {
dee1e0e0 1453 if(i4==i1||i4==i2||i4==i3)continue;
1454 fTrack=anEvent->GetTrack(i4);
bc92c0cb 1455 phi4=fTrack->Phi();
1456 fDirectCorrelations->Fill(50.,cos(n*(phi1+phi2-phi3-phi4)),1); //<4'>_{n,n|n,n}
1457 }
1458 }
1459 }
1460 }
1461 }
1462 //--------------------------------------------------------------------------------------------------------------------------------
1463
1464
bc92c0cb 1465
1466
dee1e0e0 1467*/
bc92c0cb 1468
1469
1470
bc92c0cb 1471
dee1e0e0 1472//}//line needed only for nested loops - end of if(nPrim>8&&nPrim<14)
bc92c0cb 1473
1474}//end of Make()
1475
1476//================================================================================================================
1477
1478void AliFlowAnalysisWithQCumulants::Finish()
1479{
1315fe58 1480 //calculate the final results
1dfa3c16 1481 AliQCumulantsFunctions finalResults(fIntFlowResultsQC,fDiffFlowResults2ndOrderQC,fDiffFlowResults4thOrderQC,fCovariances,fAvMultIntFlowQC,fQvectorComponents,fQCorrelations, fQProduct,fDirectCorrelations,f2PerPtBin1n1nRP,f2PerPtBin2n2nRP,f3PerPtBin2n1n1nRP,f3PerPtBin1n1n2nRP,f4PerPtBin1n1n1n1nRP, f2PerEtaBin1n1nRP,f2PerEtaBin2n2nRP,f3PerEtaBin2n1n1nRP,f3PerEtaBin1n1n2nRP,f4PerEtaBin1n1n1n1nRP, f2PerPtBin1n1nPOI,f2PerPtBin2n2nPOI,f3PerPtBin2n1n1nPOI,f3PerPtBin1n1n2nPOI,f4PerPtBin1n1n1n1nPOI, f2PerEtaBin1n1nPOI,f2PerEtaBin2n2nPOI,f3PerEtaBin2n1n1nPOI,f3PerEtaBin1n1n2nPOI,f4PerEtaBin1n1n1n1nPOI,fCommonHistsResults2nd, fCommonHistsResults4th,fCommonHistsResults6th,fCommonHistsResults8th);
1315fe58 1482
1483 finalResults.Calculate();
bc92c0cb 1484}
1485
1315fe58 1486//================================================================================================================
bc92c0cb 1487
1315fe58 1488void AliFlowAnalysisWithQCumulants::WriteHistograms(TString* outputFileName)
1489{
1490 //store the final results in output .root file
1491 TFile *output = new TFile(outputFileName->Data(),"RECREATE");
7a2c2652 1492 output->WriteObject(fHistList, "cobjQC","SingleKey");
1315fe58 1493 delete output;
1494}
bc92c0cb 1495
1315fe58 1496//================================================================================================================
dee1e0e0 1497