simplified code
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowCommon / AliFlowAnalysisWithQCumulants.h
1 /* 
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. 
3  * See cxx source for full Copyright notice 
4  * $Id$ 
5  */
6
7 /********************************** 
8  * flow analysis with Q-cumulants * 
9  *                                * 
10  * author:  Ante Bilandzic        * 
11  *           (anteb@nikhef.nl)    *
12  *********************************/ 
13
14 #ifndef ALIFLOWANALYSISWITHQCUMULANTS_H
15 #define ALIFLOWANALYSISWITHQCUMULANTS_H
16
17 #include "AliFlowCommonConstants.h" // needed as include
18 #include "TMatrixD.h"
19 #include "TH2D.h"
20 #include "TBits.h"
21
22 class TObjArray;
23 class TList;
24 class TFile;
25 class TGraph;
26
27 class TH1;
28 class TProfile;
29 class TProfile2D;
30
31 class AliFlowEventSimple;
32 class AliFlowTrackSimple;
33 class AliFlowVector;
34
35 class AliFlowCommonHist;
36 class AliFlowCommonHistResults;
37
38 //================================================================================================================
39
40 class AliFlowAnalysisWithQCumulants{
41  public:
42   AliFlowAnalysisWithQCumulants();
43   virtual ~AliFlowAnalysisWithQCumulants(); 
44   
45   virtual void Init();
46   virtual void Make(AliFlowEventSimple* anEvent);
47   
48   virtual void CalculateCorrelationsForIntegratedFlow(); // everything cross-checked (2-8)
49   virtual void CalculateWeightedCorrelationsForIntegratedFlow();
50   virtual void CalculateCorrelationsForDifferentialFlow(TString type="POI");
51   virtual void CalculateWeightedCorrelationsForDifferentialFlow(TString type="POI");
52   
53   virtual void EvaluateNestedLoopsForIntegratedFlow(AliFlowEventSimple* anEvent); 
54   virtual void EvaluateNestedLoopsForDifferentialFlow(AliFlowEventSimple* anEvent); 
55   
56   virtual void Finish();
57   
58   TProfile* MakePtProjection(TProfile2D *profilePtEta) const;
59   TProfile* MakeEtaProjection(TProfile2D *profilePtEta) const;
60   
61   virtual void CalculateFinalResultsForNoNameIntegratedFlow(Bool_t useWeights=kFALSE);
62   virtual void CalculateFinalResultsForRPandPOIIntegratedFlow(Bool_t useWeights, TString type);
63   virtual void CalculateFinalResultsForDifferentialFlow(TProfile2D *profilePtEta, TH2D *flowPtEta, TH1D *flowPt, TH1D *flowEta);
64   
65   virtual void PrintFinalResultsForIntegratedFlow(Bool_t useWeights=kTRUE, TString type="NONAME");
66     
67   virtual void CompareDirectAndQCorrelationsForIntegratedFlow(Bool_t useWeights);
68   virtual void CompareDirectAndQCorrelationsForDifferentialFlow(Bool_t useWeights);
69
70   virtual void WriteHistograms(TString outputFileName);
71   
72   virtual void TempDeleteMe();
73  
74 //----------------------------------------------------------------------------------------------------------------
75 //                                            setters and getters                                                 
76 //----------------------------------------------------------------------------------------------------------------
77   TList* GetHistList() const {return this->fHistList;} 
78   
79   void SetWeightsList(TList* wlist) {this->fWeightsList = wlist;}
80   TList* GetWeightsList() const {return this->fWeightsList;}  
81   
82   void SetResultsList(TList* rlist) {this->fResultsList = rlist;}
83   TList* GetResultsList() const {return this->fResultsList;}  
84  
85   void SetIntFlowResults(TH1D* const ifr) {this->fIntFlowResultsQC = ifr;};
86   TH1D* GetIntFlowResults() const {return this->fIntFlowResultsQC;};
87   
88   void SetIntFlowResultsW(TH1D* const ifrw) {this->fIntFlowResultsQCW = ifrw;};
89   TH1D* GetIntFlowResultsW() const {return this->fIntFlowResultsQCW;};
90   
91   void SetIntFlowResultsPOI(TH1D* const ifrp) {this->fIntFlowResultsPOIQC = ifrp;};
92   TH1D* GetIntFlowResultsPOI() const {return this->fIntFlowResultsPOIQC;};
93   
94   void SetIntFlowResultsPOIW(TH1D* const ifrpw) {this->fIntFlowResultsPOIQCW = ifrpw;};
95   TH1D* GetIntFlowResultsPOIW() const {return this->fIntFlowResultsPOIQCW;};
96
97   void SetIntFlowResultsRP(TH1D* const ifrr) {this->fIntFlowResultsRPQC = ifrr;};
98   TH1D* GetIntFlowResultsRP() const {return this->fIntFlowResultsRPQC;};
99   
100   void SetIntFlowResultsRPW(TH1D* const ifrrw) {this->fIntFlowResultsRPQCW = ifrrw;};
101   TH1D* GetIntFlowResultsRPW() const {return this->fIntFlowResultsRPQCW;};
102
103
104
105
106
107   void SetDiffFlowResults2nd(TH1D* const diff2nd) {this->fDiffFlowResults2ndOrderQC = diff2nd;};
108   TH1D* GetDiffFlowResults2nd() const {return this->fDiffFlowResults2ndOrderQC;};
109   
110   void SetDiffFlowResults4th(TH1D* const diff4th) {this->fDiffFlowResults4thOrderQC = diff4th;};
111   TH1D* GetDiffFlowResults4th() const {return this->fDiffFlowResults4thOrderQC;};
112   
113   void SetCovariances(TH1D* const cov) {this->fCovariances = cov;};
114   TH1D* GetCovariances() const {return this->fCovariances;};
115   
116   void SetCommonHists2nd(AliFlowCommonHist* const ch2nd) {this->fCommonHists2nd = ch2nd;};
117   AliFlowCommonHist* GetCommonHists2nd() const {return this->fCommonHists2nd;};
118   
119   void SetCommonHists4th(AliFlowCommonHist* const ch4th) {this->fCommonHists4th = ch4th;};
120   AliFlowCommonHist* GetCommonHists4th() const {return this->fCommonHists4th;};
121   
122   void SetCommonHists6th(AliFlowCommonHist* const ch6th) {this->fCommonHists6th = ch6th;};
123   AliFlowCommonHist* GetCommonHists6th() const {return this->fCommonHists6th;};
124   
125   void SetCommonHists8th(AliFlowCommonHist* const ch8th) {this->fCommonHists8th = ch8th;};
126   AliFlowCommonHist* GetCommonHists8th() const {return this->fCommonHists8th;};
127   
128   void SetCommonHistsResults2nd(AliFlowCommonHistResults* const chr2nd) {this->fCommonHistsResults2nd = chr2nd;};
129   AliFlowCommonHistResults* GetCommonHistsResults2nd() const {return this->fCommonHistsResults2nd;};
130   
131   void SetCommonHistsResults4th(AliFlowCommonHistResults* const chr4th) {this->fCommonHistsResults4th = chr4th;};
132   AliFlowCommonHistResults* GetCommonHistsResults4th() const {return this->fCommonHistsResults4th;};
133   
134   void SetCommonHistsResults6th(AliFlowCommonHistResults* const chr6th) {this->fCommonHistsResults6th = chr6th;};
135   AliFlowCommonHistResults* GetCommonHistsResults6th() const {return this->fCommonHistsResults6th;};
136   
137   void SetCommonHistsResults8th(AliFlowCommonHistResults* const chr8th) {this->fCommonHistsResults8th = chr8th;};
138   AliFlowCommonHistResults* GetCommonHistsResults8th() const {return this->fCommonHistsResults8th;};
139   
140   void SetAverageMultiplicity(TProfile* const am) {this->fAvMultIntFlowQC = am;};
141   TProfile* GetAverageMultiplicity() const {return this->fAvMultIntFlowQC;};
142   
143   void SetQvectorForEachEventX(TProfile* const qvfeex) {this->fQvectorForEachEventX = qvfeex;};
144   TProfile* GetQvectorForEachEventX() const {return this->fQvectorForEachEventX;};
145
146   void SetQvectorForEachEventY(TProfile* const qvfeey) {this->fQvectorForEachEventY = qvfeey;};
147   TProfile* GetQvectorForEachEventY() const {return this->fQvectorForEachEventY;};
148         
149   void SetQCorrelations(TProfile* const QCorr) {this->fQCorrelations = QCorr;};
150   TProfile* GetQCorrelations() const {return this->fQCorrelations;};
151   
152   void SetQCorrelationsW(TProfile* const QCorrW) {this->fQCorrelationsW = QCorrW;};
153   TProfile* GetQCorrelationsW() const {return this->fQCorrelationsW;};
154   
155   void SetQProduct(TProfile* const qp) {this->fQProduct = qp;};
156   TProfile* GetQProduct() const {return this->fQProduct;};
157   
158   void SetQVectorComponents(TProfile* const qvc) {this->fQvectorComponents = qvc;};
159   TProfile* GetQVectorComponents() const {return this->fQvectorComponents;};
160   
161   void SetTwo1n1nPerPtBinRP(TProfile* const pb2PerPtBin1n1nRP) {this->f2PerPtBin1n1nRP = pb2PerPtBin1n1nRP;};
162   TProfile* GetTwo1n1nPerPtBinRP() const {return this->f2PerPtBin1n1nRP;};
163   
164   void SetFour1n1n1n1nPerPtBinRP(TProfile* const pb4PerPtBin1n1n1n1nRP) {this->f4PerPtBin1n1n1n1nRP = pb4PerPtBin1n1n1n1nRP;};
165   TProfile* GetFour1n1n1n1nPerPtBinRP() const {return this->f4PerPtBin1n1n1n1nRP;}; 
166
167   void SetTwo1n1nPerEtaBinRP(TProfile* const pb2PerEtaBin1n1nRP) {this->f2PerEtaBin1n1nRP = pb2PerEtaBin1n1nRP;};
168   TProfile* GetTwo1n1nPerEtaBinRP() const {return this->f2PerEtaBin1n1nRP;};
169   
170   void SetFour1n1n1n1nPerEtaBinRP(TProfile* const pb4PerEtaBin1n1n1n1nRP) {this->f4PerEtaBin1n1n1n1nRP = pb4PerEtaBin1n1n1n1nRP;};
171   TProfile* GetFour1n1n1n1nPerEtaBinRP() const {return this->f4PerEtaBin1n1n1n1nRP;}; 
172   
173   void SetTwo1n1nPerPtBinPOI(TProfile* const pb2PerPtBin1n1nPOI) {this->f2PerPtBin1n1nPOI = pb2PerPtBin1n1nPOI;};
174   TProfile* GetTwo1n1nPerPtBinPOI() const {return this->f2PerPtBin1n1nPOI;};
175   
176   void SetFour1n1n1n1nPerPtBinPOI(TProfile* const pb4PerPtBin1n1n1n1nPOI) {this->f4PerPtBin1n1n1n1nPOI = pb4PerPtBin1n1n1n1nPOI;};
177   TProfile* GetFour1n1n1n1nPerPtBinPOI() const {return this->f4PerPtBin1n1n1n1nPOI;}; 
178   
179   void SetTwo1n1nPerEtaBinPOI(TProfile* const pb2PerEtaBin1n1nPOI) {this->f2PerEtaBin1n1nPOI = pb2PerEtaBin1n1nPOI;};
180   TProfile* GetTwo1n1nPerEtaBinPOI() const {return this->f2PerEtaBin1n1nPOI;};
181   
182   void SetFour1n1n1n1nPerEtaBinPOI(TProfile* const pb4PerEtaBin1n1n1n1nPOI) {this->f4PerEtaBin1n1n1n1nPOI = pb4PerEtaBin1n1n1n1nPOI;};
183   TProfile* GetFour1n1n1n1nPerEtaBinPOI() const {return this->f4PerEtaBin1n1n1n1nPOI;}; 
184   
185   void SetTwo1n1nWPerPtBinPOI(TProfile* const pb2WPerPtBin1n1nPOI) {this->f2WPerPtBin1n1nPOI = pb2WPerPtBin1n1nPOI;};
186   TProfile* GetTwo1n1nWPerPtBinPOI() const {return this->f2WPerPtBin1n1nPOI;};
187   
188   void SetFour1n1n1n1nWPerPtBinPOI(TProfile* const pb4WPerPtBin1n1n1n1nPOI) {this->f4WPerPtBin1n1n1n1nPOI = pb4WPerPtBin1n1n1n1nPOI;};
189   TProfile* GetFour1n1n1n1nWPerPtBinPOI() const {return this->f4WPerPtBin1n1n1n1nPOI;}
190   
191   void SetTwo1n1nWPerEtaBinPOI(TProfile* const pb2WPerEtaBin1n1nPOI) {this->f2WPerEtaBin1n1nPOI = pb2WPerEtaBin1n1nPOI;};
192   TProfile* GetTwo1n1nWPerEtaBinPOI() const {return this->f2WPerEtaBin1n1nPOI;};
193   
194   void SetFour1n1n1n1nWPerEtaBinPOI(TProfile* const pb4WPerEtaBin1n1n1n1nPOI) {this->f4WPerEtaBin1n1n1n1nPOI = pb4WPerEtaBin1n1n1n1nPOI;};
195   TProfile* GetFour1n1n1n1nWPerEtaBinPOI() const {return this->f4WPerEtaBin1n1n1n1nPOI;}
196   
197   void SetTwo1n1nWPerPtBinRP(TProfile* const pb2WPerPtBin1n1nRP) {this->f2WPerPtBin1n1nRP = pb2WPerPtBin1n1nRP;};
198   TProfile* GetTwo1n1nWPerPtBinRP() const {return this->f2WPerPtBin1n1nRP;};
199   
200   void SetFour1n1n1n1nWPerPtBinRP(TProfile* const pb4WPerPtBin1n1n1n1nRP) {this->f4WPerPtBin1n1n1n1nRP = pb4WPerPtBin1n1n1n1nRP;};
201   TProfile* GetFour1n1n1n1nWPerPtBinRP() const {return this->f4WPerPtBin1n1n1n1nRP;}
202   
203   void SetTwo1n1nWPerEtaBinRP(TProfile* const pb2WPerEtaBin1n1nRP) {this->f2WPerEtaBin1n1nRP = pb2WPerEtaBin1n1nRP;};
204   TProfile* GetTwo1n1nWPerEtaBinRP() const {return this->f2WPerEtaBin1n1nRP;};
205   
206   void SetFour1n1n1n1nWPerEtaBinRP(TProfile* const pb4WPerEtaBin1n1n1n1nRP) {this->f4WPerEtaBin1n1n1n1nRP = pb4WPerEtaBin1n1n1n1nRP;};
207   TProfile* GetFour1n1n1n1nWPerEtaBinRP() const {return this->f4WPerEtaBin1n1n1n1nRP;}
208   
209   void SetDirectCorrelations(TProfile* const dc) {this->fDirectCorrelations = dc;};
210   TProfile* GetDirectCorrelations() const {return this->fDirectCorrelations;};
211   
212   void SetDirectCorrelationsW(TProfile* const dcw) {this->fDirectCorrelationsW = dcw;};
213   TProfile* GetDirectCorrelationsW() const {return this->fDirectCorrelationsW;};
214   
215   void SetDirectCorrelationsDiffFlow(TProfile* const dcdf) {this->fDirectCorrelationsDiffFlow = dcdf;};
216   TProfile* GetDirectCorrelationsDiffFlow() const {return this->fDirectCorrelationsDiffFlow;};
217   
218   void SetDirectCorrelationsDiffFlowW(TProfile* const dcdfw) {this->fDirectCorrelationsDiffFlowW = dcdfw;};
219   TProfile* GetDirectCorrelationsDiffFlowW() const {return this->fDirectCorrelationsDiffFlowW;};
220   
221   void SetUsePhiWeights(Bool_t const uPhiW) {this->fUsePhiWeights = uPhiW;};
222   Bool_t GetUsePhiWeights() const {return this->fUsePhiWeights;};
223   
224   void SetUsePtWeights(Bool_t const uPtW) {this->fUsePtWeights = uPtW;};
225   Bool_t GetUsePtWeights() const {return this->fUsePtWeights;};
226   
227   void SetUseEtaWeights(Bool_t const uEtaW) {this->fUseEtaWeights = uEtaW;};
228   Bool_t GetUseEtaWeights() const {return this->fUseEtaWeights;};
229   
230   void SetUseWeights(Bool_t const uw) {this->fUseWeights = uw;};
231   Bool_t GetUseWeights() const {return this->fUseWeights;};
232   
233   void SetUseWeightsBits(TBits* const uwb) {this->fUseWeightsBits = uwb;};
234   TBits* GetUseWeightsBits() const {return this->fUseWeightsBits;};
235   
236   
237   
238   
239   
240   
241   
242   // .................................................................................................
243   // non-weighted correlations for differential flow of POIs:
244   void Set2pPtEtaPOI(TProfile2D* const tppep) {this->f2pPtEtaPOI = tppep;};
245   TProfile2D* Get2pPtEtaPOI() const {return this->f2pPtEtaPOI;};
246   void Set4pPtEtaPOI(TProfile2D* const fppep) {this->f4pPtEtaPOI = fppep;};
247   TProfile2D* Get4pPtEtaPOI() const {return this->f4pPtEtaPOI;};
248   void Set6pPtEtaPOI(TProfile2D* const sppep) {this->f6pPtEtaPOI = sppep;};
249   TProfile2D* Get6pPtEtaPOI() const {return this->f6pPtEtaPOI;};
250   void Set8pPtEtaPOI(TProfile2D* const eppep) {this->f8pPtEtaPOI = eppep;};
251   TProfile2D* Get8pPtEtaPOI() const {return this->f8pPtEtaPOI;};
252   
253   // non-weighted final results for differential flow of POIs:
254   // 3D (pt,eta):
255   void Setvn2ndPtEtaPOI(TH2D* const v2pep) {this->fvn2ndPtEtaPOI = v2pep;};
256   TH2D* Getvn2ndPtEtaPOI() const {return this->fvn2ndPtEtaPOI;};
257   void Setvn4thPtEtaPOI(TH2D* const v4pep) {this->fvn4thPtEtaPOI = v4pep;};
258   TH2D* Getvn4thPtEtaPOI() const {return this->fvn4thPtEtaPOI;};
259   void Setvn6thPtEtaPOI(TH2D* const v6pep) {this->fvn6thPtEtaPOI = v6pep;};
260   TH2D* Getvn6thPtEtaPOI() const {return this->fvn6thPtEtaPOI;};
261   void Setvn8thPtEtaPOI(TH2D* const v8pep) {this->fvn8thPtEtaPOI = v8pep;};
262   TH2D* Getvn8thPtEtaPOI() const {return this->fvn8thPtEtaPOI;};
263   // 2D (pt):
264   void Setvn2ndPtPOI(TH1D* const v2pp) {this->fvn2ndPtPOI = v2pp;};
265   TH1D* Getvn2ndPtPOI() const {return this->fvn2ndPtPOI;};
266   void Setvn4thPtPOI(TH1D* const v4pp) {this->fvn4thPtPOI = v4pp;};
267   TH1D* Getvn4thPtPOI() const {return this->fvn4thPtPOI;};
268   void Setvn6thPtPOI(TH1D* const v6pp) {this->fvn6thPtPOI = v6pp;};
269   TH1D* Getvn6thPtPOI() const {return this->fvn6thPtPOI;};
270   void Setvn8thPtPOI(TH1D* const v8pp) {this->fvn8thPtPOI = v8pp;};
271   TH1D* Getvn8thPtPOI() const {return this->fvn8thPtPOI;};
272   // 2D (eta):
273   void Setvn2ndEtaPOI(TH1D* const v2ep) {this->fvn2ndEtaPOI = v2ep;};
274   TH1D* Getvn2ndEtaPOI() const {return this->fvn2ndEtaPOI;};
275   void Setvn4thEtaPOI(TH1D* const v4ep) {this->fvn4thEtaPOI = v4ep;};
276   TH1D* Getvn4thEtaPOI() const {return this->fvn4thEtaPOI;};
277   void Setvn6thEtaPOI(TH1D* const v6ep) {this->fvn6thEtaPOI = v6ep;};
278   TH1D* Getvn6thEtaPOI() const {return this->fvn6thEtaPOI;};
279   void Setvn8thEtaPOI(TH1D* const v8ep) {this->fvn8thEtaPOI = v8ep;};
280   TH1D* Getvn8thEtaPOI() const {return this->fvn8thEtaPOI;};
281   
282   // weighted correlations for differential flow of POIs:
283   void Set2pPtEtaPOIW(TProfile2D* const tppepw) {this->f2pPtEtaPOIW = tppepw;};
284   TProfile2D* Get2pPtEtaPOIW() const {return this->f2pPtEtaPOIW;};
285   void Set4pPtEtaPOIW(TProfile2D* const fppepw) {this->f4pPtEtaPOIW = fppepw;};
286   TProfile2D* Get4pPtEtaPOIW() const {return this->f4pPtEtaPOIW;};
287   void Set6pPtEtaPOIW(TProfile2D* const sppepw) {this->f6pPtEtaPOIW = sppepw;};
288   TProfile2D* Get6pPtEtaPOIW() const {return this->f6pPtEtaPOIW;};
289   void Set8pPtEtaPOIW(TProfile2D* const eppepw) {this->f8pPtEtaPOIW = eppepw;};
290   TProfile2D* Get8pPtEtaPOIW() const {return this->f8pPtEtaPOIW;};
291   
292   // weighted final results for differential flow of POIs:
293   // 3D (pt,eta):
294   void Setvn2ndPtEtaPOIW(TH2D* const v2pepw) {this->fvn2ndPtEtaPOIW = v2pepw;};
295   TH2D* Getvn2ndPtEtaPOIW() const {return this->fvn2ndPtEtaPOIW;};
296   void Setvn4thPtEtaPOIW(TH2D* const v4pepw) {this->fvn4thPtEtaPOIW = v4pepw;};
297   TH2D* Getvn4thPtEtaPOIW() const {return this->fvn4thPtEtaPOIW;};
298   void Setvn6thPtEtaPOIW(TH2D* const v6pepw) {this->fvn6thPtEtaPOIW = v6pepw;};
299   TH2D* Getvn6thPtEtaPOIW() const {return this->fvn6thPtEtaPOIW;};
300   void Setvn8thPtEtaPOIW(TH2D* const v8pepw) {this->fvn8thPtEtaPOIW = v8pepw;};
301   TH2D* Getvn8thPtEtaPOIW() const {return this->fvn8thPtEtaPOIW;};
302   // 2D (pt):
303   void Setvn2ndPtPOIW(TH1D* const v2ppw) {this->fvn2ndPtPOIW = v2ppw;};
304   TH1D* Getvn2ndPtPOIW() const {return this->fvn2ndPtPOIW;};
305   void Setvn4thPtPOIW(TH1D* const v4ppw) {this->fvn4thPtPOIW = v4ppw;};
306   TH1D* Getvn4thPtPOIW() const {return this->fvn4thPtPOIW;};
307   void Setvn6thPtPOIW(TH1D* const v6ppw) {this->fvn6thPtPOIW = v6ppw;};
308   TH1D* Getvn6thPtPOIW() const {return this->fvn6thPtPOIW;};
309   void Setvn8thPtPOIW(TH1D* const v8ppw) {this->fvn8thPtPOIW = v8ppw;};
310   TH1D* Getvn8thPtPOIW() const {return this->fvn8thPtPOIW;};
311   // 2D (eta):
312   void Setvn2ndEtaPOIW(TH1D* const v2epw) {this->fvn2ndEtaPOIW = v2epw;};
313   TH1D* Getvn2ndEtaPOIW() const {return this->fvn2ndEtaPOIW;};
314   void Setvn4thEtaPOIW(TH1D* const v4epw) {this->fvn4thEtaPOIW = v4epw;};
315   TH1D* Getvn4thEtaPOIW() const {return this->fvn4thEtaPOIW;};
316   void Setvn6thEtaPOIW(TH1D* const v6epw) {this->fvn6thEtaPOIW = v6epw;};
317   TH1D* Getvn6thEtaPOIW() const {return this->fvn6thEtaPOIW;};
318   void Setvn8thEtaPOIW(TH1D* const v8epw) {this->fvn8thEtaPOIW = v8epw;};
319   TH1D* Getvn8thEtaPOIW() const {return this->fvn8thEtaPOIW;};
320        
321   // non-weighted correlations for differential flow of RPs:
322   void Set2pPtEtaRP(TProfile2D* const tpper) {this->f2pPtEtaRP = tpper;};
323   TProfile2D* Get2pPtEtaRP() const {return this->f2pPtEtaRP;};
324   void Set4pPtEtaRP(TProfile2D* const fpper) {this->f4pPtEtaRP = fpper;};
325   TProfile2D* Get4pPtEtaRP() const {return this->f4pPtEtaRP;};
326   void Set6pPtEtaRP(TProfile2D* const spper) {this->f6pPtEtaRP = spper;};
327   TProfile2D* Get6pPtEtaRP() const {return this->f6pPtEtaRP;};
328   void Set8pPtEtaRP(TProfile2D* const epper) {this->f8pPtEtaRP = epper;};
329   TProfile2D* Get8pPtEtaRP() const {return this->f8pPtEtaRP;};
330   
331   // non-weighted final results for differential flow of RPs:
332   // 3D (pt,eta):
333   void Setvn2ndPtEtaRP(TH2D* const v2per) {this->fvn2ndPtEtaRP = v2per;};
334   TH2D* Getvn2ndPtEtaRP() const {return this->fvn2ndPtEtaRP;};
335   void Setvn4thPtEtaRP(TH2D* const v4per) {this->fvn4thPtEtaRP = v4per;};
336   TH2D* Getvn4thPtEtaRP() const {return this->fvn4thPtEtaRP;};
337   void Setvn6thPtEtaRP(TH2D* const v6per) {this->fvn6thPtEtaRP = v6per;};
338   TH2D* Getvn6thPtEtaRP() const {return this->fvn6thPtEtaRP;};
339   void Setvn8thPtEtaRP(TH2D* const v8per) {this->fvn4thPtEtaRP = v8per;};
340   TH2D* Getvn8thPtEtaRP() const {return this->fvn8thPtEtaRP;};
341   // 2D (pt):
342   void Setvn2ndPtRP(TH1D* const v2pp) {this->fvn2ndPtRP = v2pp;};
343   TH1D* Getvn2ndPtRP() const {return this->fvn2ndPtRP;};
344   void Setvn4thPtRP(TH1D* const v4pp) {this->fvn4thPtRP = v4pp;};
345   TH1D* Getvn4thPtRP() const {return this->fvn4thPtRP;};
346   void Setvn6thPtRP(TH1D* const v6pp) {this->fvn6thPtRP = v6pp;};
347   TH1D* Getvn6thPtRP() const {return this->fvn6thPtRP;};
348   void Setvn8thPtRP(TH1D* const v8pp) {this->fvn8thPtRP = v8pp;};
349   TH1D* Getvn8thPtRP() const {return this->fvn8thPtRP;};
350   // 2D (eta):
351   void Setvn2ndEtaRP(TH1D* const v2ep) {this->fvn2ndEtaRP = v2ep;};
352   TH1D* Getvn2ndEtaRP() const {return this->fvn2ndEtaRP;};
353   void Setvn4thEtaRP(TH1D* const v4ep) {this->fvn4thEtaRP = v4ep;};
354   TH1D* Getvn4thEtaRP() const {return this->fvn4thEtaRP;};
355   void Setvn6thEtaRP(TH1D* const v6ep) {this->fvn6thEtaRP = v6ep;};
356   TH1D* Getvn6thEtaRP() const {return this->fvn6thEtaRP;};
357   void Setvn8thEtaRP(TH1D* const v8ep) {this->fvn8thEtaRP = v8ep;};
358   TH1D* Getvn8thEtaRP() const {return this->fvn8thEtaRP;};
359   
360   // weighted correlations for differential flow of RPs:
361   void Set2pPtEtaRPW(TProfile2D* const tpperw) {this->f2pPtEtaRPW = tpperw;};
362   TProfile2D* Get2pPtEtaRPW() const {return this->f2pPtEtaRPW;};
363   void Set4pPtEtaRPW(TProfile2D* const fpperw) {this->f4pPtEtaRPW = fpperw;};
364   TProfile2D* Get4pPtEtaRPW() const {return this->f4pPtEtaRPW;};
365   void Set6pPtEtaRPW(TProfile2D* const spperw) {this->f6pPtEtaRPW = spperw;};
366   TProfile2D* Get6pPtEtaRPW() const {return this->f6pPtEtaRPW;};
367   void Set8pPtEtaRPW(TProfile2D* const epperw) {this->f8pPtEtaRPW = epperw;};
368   TProfile2D* Get8pPtEtaRPW() const {return this->f8pPtEtaRPW;};
369   
370   // weighted final results for differential flow of RPs:
371   // 3D (pt,eta):
372   void Setvn2ndPtEtaRPW(TH2D* const v2perw) {this->fvn2ndPtEtaRPW = v2perw;};
373   TH2D* Getvn2ndPtEtaRPW() const {return this->fvn2ndPtEtaRPW;}; 
374   void Setvn4thPtEtaRPW(TH2D* const v4perw) {this->fvn4thPtEtaRPW = v4perw;};
375   TH2D* Getvn4thPtEtaRPW() const {return this->fvn4thPtEtaRPW;};
376   void Setvn6thPtEtaRPW(TH2D* const v6perw) {this->fvn6thPtEtaRPW = v6perw;};
377   TH2D* Getvn6thPtEtaRPW() const {return this->fvn6thPtEtaRPW;};
378   void Setvn8thPtEtaRPW(TH2D* const v8perw) {this->fvn4thPtEtaRPW = v8perw;};
379   TH2D* Getvn8thPtEtaRPW() const {return this->fvn8thPtEtaRPW;};
380   // 2D (pt):
381   void Setvn2ndPtRPW(TH1D* const v2ppw) {this->fvn2ndPtRPW = v2ppw;};
382   TH1D* Getvn2ndPtRPW() const {return this->fvn2ndPtRPW;};
383   void Setvn4thPtRPW(TH1D* const v4ppw) {this->fvn4thPtRPW = v4ppw;};
384   TH1D* Getvn4thPtRPW() const {return this->fvn4thPtRPW;};
385   void Setvn6thPtRPW(TH1D* const v6ppw) {this->fvn6thPtRPW = v6ppw;};
386   TH1D* Getvn6thPtRPW() const {return this->fvn6thPtRPW;};
387   void Setvn8thPtRPW(TH1D* const v8ppw) {this->fvn8thPtRPW = v8ppw;};
388   TH1D* Getvn8thPtRPW() const {return this->fvn8thPtRPW;};
389   // 2D (eta):
390   void Setvn2ndEtaRPW(TH1D* const v2epw) {this->fvn2ndEtaRPW = v2epw;};
391   TH1D* Getvn2ndEtaRPW() const {return this->fvn2ndEtaRPW;};
392   void Setvn4thEtaRPW(TH1D* const v4epw) {this->fvn4thEtaRPW = v4epw;};
393   TH1D* Getvn4thEtaRPW() const {return this->fvn4thEtaRPW;};
394   void Setvn6thEtaRPW(TH1D* const v6epw) {this->fvn6thEtaRPW = v6epw;};
395   TH1D* Getvn6thEtaRPW() const {return this->fvn6thEtaRPW;};
396   void Setvn8thEtaRPW(TH1D* const v8epw) {this->fvn8thEtaRPW = v8epw;};
397   TH1D* Getvn8thEtaRPW() const {return this->fvn8thEtaRPW;};
398   // .................................................................................................
399   
400   
401   
402   
403 //----------------------------------------------------------------------------------------------------------------
404  
405  private:
406   AliFlowAnalysisWithQCumulants(const AliFlowAnalysisWithQCumulants& afawQc);
407   AliFlowAnalysisWithQCumulants& operator=(const AliFlowAnalysisWithQCumulants& afawQc);
408   
409   AliFlowTrackSimple* fTrack;                           //track
410   TList*              fHistList;                        //list to hold all output histograms
411   TList*              fDiffFlowList;                    //list to hold all histograms and profiles needed for differential flow
412   TList*              fWeightsList;                     //list to hold all histograms with weights
413   TList*              fResultsList;                         // list to hold all histograms with results
414     
415   TProfile*           fAvMultIntFlowQC;                 //average selected multiplicity (for int. flow)
416  
417   TProfile*           fQvectorComponents;               //averages of Q-vector components (1st bin: <Q_x>, 2nd bin: <Q_y>, ...)
418             
419   TH1D*               fDiffFlowResults2ndOrderQC;       //differential flow results from 2nd order Q-cumulant
420   TH1D*               fDiffFlowResults4thOrderQC;       //differential flow results from 4th order Q-cumulant
421   TH1D*               fCovariances;                     //final results for covariances: 1st bin: <2*4>-<2>*<4>, 2nd bin: <2*6>-<2>*<6>, ...
422   
423   TProfile*                  fQvectorForEachEventX;     //profile containing the x-components of Q-vectors from all events (to be removed)  
424   TProfile*                  fQvectorForEachEventY;     //profile containing the y-components of Q-vectors from all events (to be removed)   
425   TProfile*                  fQCorrelations;            //multi-particle correlations calculated from Q-vectors 
426   TProfile*                  fQCorrelationsW;           //weighted multi-particle correlations calculated from Q-vectors 
427   TProfile*                  fQProduct;                 //average of products: 1st bin: <2*4>, 2nd bin: <2*6>, ...
428   
429   TProfile*          fDirectCorrelations;               // multi-particle correlations calculated with nested loop needed for int. flow 
430   TProfile*          fDirectCorrelationsW;              // multi-particle correlations calculated with nested loop needed for weighted int. flow
431   TProfile*          fDirectCorrelationsDiffFlow;       // multi-particle correlations calculated with nested loop needed for diff. flow
432   TProfile*          fDirectCorrelationsDiffFlowW;      // multi-particle correlations calculated with nested loop needed for weighted int. flow
433   
434   // POI (Particles Of Interest):
435   // non-weighted correlations
436   TProfile*                  f2PerPtBin1n1nPOI;         //<<2'>>_{n|n} per pt-bin
437   TProfile*                  f4PerPtBin1n1n1n1nPOI;     //<<4'>>_{n,n|n,n} per pt-bin
438
439   TProfile*                  f2PerEtaBin1n1nPOI;        //<<2'>>_{n|n} per eta-bin
440   TProfile*                  f4PerEtaBin1n1n1n1nPOI;    //<<4'>>_{n,n|n,n} per eta-bin  
441   // weighted correlations
442   TProfile*                  f2WPerPtBin1n1nPOI;        //<<2'>>_{n|n} per eta-bin
443   TProfile*                  f4WPerPtBin1n1n1n1nPOI;    //<<4'>>_{n,n|n,n} per eta-bin    
444   
445   TProfile*                  f2WPerEtaBin1n1nPOI;       //<<2'>>_{n|n} per eta-bin 
446   TProfile*                  f4WPerEtaBin1n1n1n1nPOI;   //<<4'>>_{n,n|n,n} per eta-bin
447   
448   // RP (Reaction Plane particles)
449   // non-weighted correlations
450   TProfile*                  f2PerPtBin1n1nRP;          //<<2'>>_{n|n} per pt-bin
451   TProfile*                  f4PerPtBin1n1n1n1nRP;      //<<4'>>_{n,n|n,n} per pt-bin
452
453   TProfile*                  f2PerEtaBin1n1nRP;         //<<2'>>_{n|n} per eta-bin
454   TProfile*                  f4PerEtaBin1n1n1n1nRP;     //<<4'>>_{n,n|n,n} per eta-bin  
455   // weighted correlations
456   TProfile*                  f2WPerPtBin1n1nRP;         //<<2'>>_{n|n} per eta-bin 
457   TProfile*                  f4WPerPtBin1n1n1n1nRP;     //<<4'>>_{n,n|n,n} per eta-bin
458   
459   TProfile*                  f2WPerEtaBin1n1nRP;        //<<2'>>_{n|n} per eta-bin 
460   TProfile*                  f4WPerEtaBin1n1n1n1nRP;    //<<4'>>_{n,n|n,n} per eta-bin
461   
462   AliFlowCommonHist*         fCommonHists2nd;           //common control histograms (taking into account only the events with 2 and more particles) 
463   AliFlowCommonHist*         fCommonHists4th;           //common control histograms (taking into account only the events with 4 and more particles) 
464   AliFlowCommonHist*         fCommonHists6th;           //common control histograms (taking into account only the events with 6 and more particles) 
465   AliFlowCommonHist*         fCommonHists8th;           //common control histograms (taking into account only the events with 8 and more particles) 
466   
467   AliFlowCommonHistResults*  fCommonHistsResults2nd;    //final results for 2nd order int. and diff. flow stored in the common histograms 
468   AliFlowCommonHistResults*  fCommonHistsResults4th;    //final results for 4th order int. and diff. flow stored in the common histograms 
469   AliFlowCommonHistResults*  fCommonHistsResults6th;    //final results for 6th order int. and diff. flow stored in the common histograms
470   AliFlowCommonHistResults*  fCommonHistsResults8th;    //final results for 8th order int. and diff. flow stored in the common histograms
471       
472   TH1D*                      f2pDistribution;           //distribution of <2>_{n|n}
473   TH1D*                      f4pDistribution;           //distribution of <4>_{n,n|n,n}
474   TH1D*                      f6pDistribution;           //distribution of <6>_{n,n,n|n,n,n} 
475   TH1D*                      f8pDistribution;           //distribution of <8>_{n,n,n,n|n,n,n,n}
476  
477   Int_t                      fnBinsPt;                  //number of pt bins
478   Double_t                   fPtMin;                    //minimum pt   
479   Double_t                   fPtMax;                    //maximum pt    
480   
481   Int_t                      fnBinsEta;                 //number of eta bins
482   Double_t                   fEtaMin;                   //minimum eta   
483   Double_t                   fEtaMax;                   //maximum eta
484   Int_t                      fEventCounter;             //counting the number of events    
485    
486   Bool_t                     fUsePhiWeights;            // phi weights
487   Bool_t                     fUsePtWeights;             // pt weights
488   Bool_t                     fUseEtaWeights;            // eta weights
489   Bool_t                     fUseWeights;               // use phi || pt || eta weights
490   TBits*                     fUseWeightsBits;           // use phi || pt || eta weights 
491     
492   TProfile* tempDeleteMe; // to be removed
493   
494   
495   // ...................................................................................................................  
496   // Q_{n,k} and S^M_{n,k}:        
497   TMatrixD *fReQ;  // real part of the Q-vectors stored in matrix fReQ[n][k] = sum_{i=1}^{M} w_{i}^{k} cos(n phi_{i})
498   TMatrixD *fImQ;  // imaginary part of the Q-vectors stored in matrix fImQ[n][k] = sum_{i=1}^{M} w_{i}^{k} sin(n phi_{i})
499   TMatrixD *fSMpk; // fSM[p][k] = (sum_{i=1}^{M} w_{i}^{k})^{p}
500   
501   // q_{n} (POIs):
502   TH2D *fReqnPtEta; // real part of q_n (q_n is a Q-vector evaluated only for POIs in harmonic n for each (pt,eta) bin)  
503   TH2D *fImqnPtEta; // imaginary part of q_n (q_n is a Q-vector evaluated only for POIs in harmonic n for each (pt,eta) bin)
504   TH2D *fmPtEta;    // # of POIs (m) for each (pt,eta) bin  
505   
506   // non-weighted q''_{n} and q''_{2n} (both POIs and RPs)
507   TH2D *fReqPrimePrime1nPtEta; // real part of q''_{n} for each (pt,eta) bin  
508   TH2D *fImqPrimePrime1nPtEta; // imaginary part of q''_{n} for each (pt,eta) bin 
509   TH2D *fReqPrimePrime2nPtEta; // real part of q''_{2n} for each (pt,eta) bin
510   TH2D *fImqPrimePrime2nPtEta; // imaginary part of q''_{2n} for each (pt,eta) bin
511   
512   // weighted q''_{n,2k} and q''_{2n,k} (both POIs and RPs)
513   TH2D *fReqPrimePrime1n2kPtEta; // real part of q''_{n,2k} for each (pt,eta) bin  
514   TH2D *fImqPrimePrime1n2kPtEta; // imaginary part of q''_{n,2k} for each (pt,eta) bin  
515   TH2D *fReqPrimePrime2n1kPtEta; // real part of q''_{2n,k} for each (pt,eta) bin 
516   TH2D *fImqPrimePrime2n1kPtEta; // imaginary part of q''_{2n,k} for each (pt,eta) bin 
517   
518   // m'' (both POIs and RPs) :
519   TH2D *fmPrimePrimePtEta; // # of particles which are both POIs and RPs for each (pt,eta) bin
520   
521   // S^{m''}_{p,k} (both POIs and RPs):
522   TH2D *fSmPrimePrime1p1kPtEta; // pow(sum_{i=1}^{m''} w_{i} cos(n phi_{i}), 1)
523   TH2D *fSmPrimePrime1p2kPtEta; // pow(sum_{i=1}^{m''} w_{i}^{2} cos(n phi_{i}), 1)
524   TH2D *fSmPrimePrime1p3kPtEta; // pow(sum_{i=1}^{m''} w_{i}^{3} cos(n phi_{i}), 1)
525   
526   // non-weighted q_RP{n} and q_RP{2n} (for each (pt,eta) bin for RPs)
527   TH2D *fReqRP1nPtEta; // real part of q_RP{n} (q_RP{n} is a Q-vector evaluated only for RPs in harmonic n for each (pt,eta) bin)
528   TH2D *fImqRP1nPtEta; // imaginary part of q_RP{n} (q_RP{n} is a Q-vector evaluated only for RPs in harmonic n for each (pt,eta) bin)
529   TH2D *fReqRP2nPtEta; // real part of q_RP{2n} (q_RP{2n} is a Q-vector evaluated only for RPs in harmonic 2n for each (pt,eta) bin)
530   TH2D *fImqRP2nPtEta; // imaginary part of q_RP{2n} (q_RP{2n} is a Q-vector evaluated only for RPs in harmonic 2n for each (pt,eta) bin)
531   
532   // weighted q_RP{n,2k} and q_RP{2n,k} (for each (pt,eta) bin for RPs)
533   TH2D *fReqRP1n2kPtEta; // real part of q_RP{n,2k} for each (pt,eta) bin  
534   TH2D *fImqRP1n2kPtEta; // imaginary part of q_RP{n,2k} for each (pt,eta) bin  
535   TH2D *fReqRP2n1kPtEta; // real part of q_RP{2n,k} for each (pt,eta) bin 
536   TH2D *fImqRP2n1kPtEta; // imaginary part of q_RP{2n,k} for each (pt,eta) bin 
537   
538   // m_RP:
539   TH2D *fmRPPtEta; // # of particles which are RPs for each (pt,eta) bin
540   
541   // S^{m_RP}_{p,k} (for each (pt,eta) bin for RPs):
542   TH2D *fSmRP1p1kPtEta; // pow(sum_{i=1}^{m_RP} w_{i} cos(n phi_{i}), 1)
543   TH2D *fSmRP1p2kPtEta; // pow(sum_{i=1}^{m_RP} w_{i}^{2} cos(n phi_{i}), 1)
544   TH2D *fSmRP1p3kPtEta; // pow(sum_{i=1}^{m_RP} w_{i}^{3} cos(n phi_{i}), 1)
545   
546   // ----- RESULTS ----
547   
548   // non-weighted integrated flow:
549   TH1D *fIntFlowResultsQC;     // final results for non-weighted no-name integrated flow
550   TH1D *fIntFlowResultsPOIQC;  // final results for non-weighted POIs integrated flow
551   TH1D *fIntFlowResultsRPQC;   // final results for non-weighted RPs integrated flow
552   
553   // weighted integrated flow:
554   TH1D *fIntFlowResultsQCW;    // final results for weighted no-name integrated flow
555   TH1D *fIntFlowResultsPOIQCW; // final results for weighted POIs integrated flow
556   TH1D *fIntFlowResultsRPQCW;  // final results for weighted RPs integrated flow
557   
558   // non-weighted correlations for each (pt,eta) bin for POIs:
559   TProfile2D *f2pPtEtaPOI; // <cos n(psi1-phi2)> for POIs
560   TProfile2D *f4pPtEtaPOI; // <cos n(psi1+phi2-phi3-phi4)> for POIs 
561   TProfile2D *f6pPtEtaPOI; // <cos n(psi1+phi2+phi3-phi4-phi5-phi6)> for POIs 
562   TProfile2D *f8pPtEtaPOI; // <cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)> for POIs 
563   
564   // non-weighted final results for differential flow for POIs:
565   // 3D (pt,eta):
566   TH2D *fvn2ndPtEtaPOI; // v'_{n}{2,QC} (pt,eta) for POIs
567   TH2D *fvn4thPtEtaPOI; // v'_{n}{4,QC} (pt,eta) for POIs
568   TH2D *fvn6thPtEtaPOI; // v'_{n}{6,QC} (pt,eta) for POIs
569   TH2D *fvn8thPtEtaPOI; // v'_{n}{8,QC} (pt,eta) for POIs
570   // 2D (pt):
571   TH1D *fvn2ndPtPOI; // v'_{n}{2,QC} (pt) for POIs
572   TH1D *fvn4thPtPOI; // v'_{n}{4,QC} (pt) for POIs
573   TH1D *fvn6thPtPOI; // v'_{n}{6,QC} (pt) for POIs
574   TH1D *fvn8thPtPOI; // v'_{n}{8,QC} (pt) for POIs
575   // 2D (eta):
576   TH1D *fvn2ndEtaPOI; // v'_{n}{2,QC} (eta) for POIs
577   TH1D *fvn4thEtaPOI; // v'_{n}{4,QC} (eta) for POIs
578   TH1D *fvn6thEtaPOI; // v'_{n}{6,QC} (eta) for POIs
579   TH1D *fvn8thEtaPOI; // v'_{n}{8,QC} (eta) for POIs
580
581   // weighted correlations for each (pt,eta) bin for POIs:
582   TProfile2D *f2pPtEtaPOIW; // <w2 cos n(psi1-phi2)> for POIs
583   TProfile2D *f4pPtEtaPOIW; // <w2 w3 w4 cos n(psi1+phi2-phi3-phi4)> for POIs 
584   TProfile2D *f6pPtEtaPOIW; // <w2 w3 w4 w5 w6 cos n(psi1+phi2+phi3-phi4-phi5-phi6)> for POIs 
585   TProfile2D *f8pPtEtaPOIW; // <w2 w3 w4 w5 w6 w7 w8 cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)> for POIs 
586   
587   // weighted final results for differential flow  for POIs:
588   // 3D (pt,eta):
589   TH2D *fvn2ndPtEtaPOIW; // v'_{n}{2,QC} (pt,eta) for POIs
590   TH2D *fvn4thPtEtaPOIW; // v'_{n}{4,QC} (pt,eta) for POIs
591   TH2D *fvn6thPtEtaPOIW; // v'_{n}{6,QC} (pt,eta) for POIs
592   TH2D *fvn8thPtEtaPOIW; // v'_{n}{8,QC} (pt,eta) for POIs
593   // 2D (pt):
594   TH1D *fvn2ndPtPOIW; // v'_{n}{2,QC} (pt) for POIs
595   TH1D *fvn4thPtPOIW; // v'_{n}{4,QC} (pt) for POIs
596   TH1D *fvn6thPtPOIW; // v'_{n}{6,QC} (pt) for POIs
597   TH1D *fvn8thPtPOIW; // v'_{n}{8,QC} (pt) for POIs
598   // 2D (eta):
599   TH1D *fvn2ndEtaPOIW; // v'_{n}{2,QC} (eta) for POIs
600   TH1D *fvn4thEtaPOIW; // v'_{n}{4,QC} (eta) for POIs
601   TH1D *fvn6thEtaPOIW; // v'_{n}{6,QC} (eta) for POIs
602   TH1D *fvn8thEtaPOIW; // v'_{n}{8,QC} (eta) for POIs
603   
604   // non-weighted correlations for each (pt,eta) bin for RPs:
605   TProfile2D *f2pPtEtaRP; // <cos n(psi1-phi2)> for RPs
606   TProfile2D *f4pPtEtaRP; // <cos n(psi1+phi2-phi3-phi4)> for RPs 
607   TProfile2D *f6pPtEtaRP; // <cos n(psi1+phi2+phi3-phi4-phi5-phi6)> for RPs 
608   TProfile2D *f8pPtEtaRP; // <cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)> for RPs
609   
610   // non-weighted final results for differential flow for RPs:
611   // 3D (pt,eta):
612   TH2D *fvn2ndPtEtaRP; // v'_{n}{2,QC} (pt,eta) for RPs
613   TH2D *fvn4thPtEtaRP; // v'_{n}{4,QC} (pt,eta) for RPs
614   TH2D *fvn6thPtEtaRP; // v'_{n}{6,QC} (pt,eta) for RPs
615   TH2D *fvn8thPtEtaRP; // v'_{n}{8,QC} (pt,eta) for RPs
616   // 2D (pt):
617   TH1D *fvn2ndPtRP; // v'_{n}{2,QC} (pt) for RPs
618   TH1D *fvn4thPtRP; // v'_{n}{4,QC} (pt) for RPs
619   TH1D *fvn6thPtRP; // v'_{n}{6,QC} (pt) for RPs
620   TH1D *fvn8thPtRP; // v'_{n}{8,QC} (pt) for RPs
621   // 2D (eta):
622   TH1D *fvn2ndEtaRP; // v'_{n}{2,QC} (eta) for RPs
623   TH1D *fvn4thEtaRP; // v'_{n}{4,QC} (eta) for RPs
624   TH1D *fvn6thEtaRP; // v'_{n}{6,QC} (eta) for RPs
625   TH1D *fvn8thEtaRP; // v'_{n}{8,QC} (eta) for RPs
626  
627   // weighted correlations for each (pt,eta) bin for RPs:
628   TProfile2D *f2pPtEtaRPW; // <w2 cos n(psi1-phi2)> for RPs
629   TProfile2D *f4pPtEtaRPW; // <w2 w3 w4 cos n(psi1+phi2-phi3-phi4)> for RPs 
630   TProfile2D *f6pPtEtaRPW; // <w2 w3 w4 w5 w6 cos n(psi1+phi2+phi3-phi4-phi5-phi6)> for RPs 
631   TProfile2D *f8pPtEtaRPW; // <w2 w3 w4 w5 w6 w7 w8 cos n(psi1+phi2+phi3+phi4-phi5-phi6-phi7-phi8)> for RPs 
632   
633   // weighted final results for differential flow for RPs:
634   // 3D (pt,eta):
635   TH2D *fvn2ndPtEtaRPW; // v'_{n}{2,QC} (pt,eta) for RPs
636   TH2D *fvn4thPtEtaRPW; // v'_{n}{4,QC} (pt,eta) for RPs
637   TH2D *fvn6thPtEtaRPW; // v'_{n}{6,QC} (pt,eta) for RPs
638   TH2D *fvn8thPtEtaRPW; // v'_{n}{8,QC} (pt,eta) for RPs
639   // 2D (pt):
640   TH1D *fvn2ndPtRPW; // v'_{n}{2,QC} (pt) for RPs
641   TH1D *fvn4thPtRPW; // v'_{n}{4,QC} (pt) for RPs
642   TH1D *fvn6thPtRPW; // v'_{n}{6,QC} (pt) for RPs
643   TH1D *fvn8thPtRPW; // v'_{n}{8,QC} (pt) for RPs
644   // 2D (eta):
645   TH1D *fvn2ndEtaRPW; // v'_{n}{2,QC} (eta) for RPs
646   TH1D *fvn4thEtaRPW; // v'_{n}{4,QC} (eta) for RPs
647   TH1D *fvn6thEtaRPW; // v'_{n}{6,QC} (eta) for RPs
648   TH1D *fvn8thEtaRPW; // v'_{n}{8,QC} (eta) for RPs
649   // ...................................................................................................................
650   
651   
652   
653                        
654   ClassDef(AliFlowAnalysisWithQCumulants, 0);
655 };
656
657 //================================================================================================================
658
659 #endif
660
661
662
663
664