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