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