]>
Commit | Line | Data |
---|---|---|
d66d46f7 | 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 | * In this class azimuthal correlators in mixed harmonics * | |
9 | * are implemented in terms of Q-vectors. This approach * | |
10 | * doesn't require evaluation of nested loops. This class * | |
11 | * can be used to: * | |
12 | * * | |
13 | * a) Extract subdominant harmonics (like v1 and v4); * | |
5c078806 | 14 | * b) Study flow of two-particle resonances; * |
15 | * c) Study strong parity violation. * | |
d66d46f7 | 16 | * * |
e999459d | 17 | * Author: Ante Bilandzic (abilandzic@gmail.com) * |
d66d46f7 | 18 | *********************************************************/ |
19 | ||
20 | #ifndef ALIFLOWANALYSISWITHMIXEDHARMONICS_H | |
21 | #define ALIFLOWANALYSISWITHMIXEDHARMONICS_H | |
22 | ||
23 | #include "AliFlowCommonConstants.h" // needed as include | |
24 | #include "TMatrixD.h" | |
25 | ||
929098e4 | 26 | class TDirectoryFile; |
d66d46f7 | 27 | class TList; |
28 | class TFile; | |
929098e4 | 29 | class TH1F; |
30 | class TH1D; | |
67a6b178 | 31 | class TH2D; |
d66d46f7 | 32 | class TProfile; |
33 | class TProfile2D; | |
34 | ||
35 | class AliFlowEventSimple; | |
36 | class AliFlowCommonHist; | |
37 | class AliFlowCommonHistResults; | |
38 | ||
39 | //================================================================================================================ | |
40 | ||
41 | class AliFlowAnalysisWithMixedHarmonics | |
42 | { | |
43 | public: | |
44 | AliFlowAnalysisWithMixedHarmonics(); | |
45 | virtual ~AliFlowAnalysisWithMixedHarmonics(); | |
46 | // 0.) Methods called in the constructor: | |
41e6d9e4 | 47 | virtual void InitializeArrays(); |
48 | ||
d66d46f7 | 49 | // 1.) Method Init() and methods called within Init(): |
50 | virtual void Init(); | |
41e6d9e4 | 51 | virtual void CrossCheckSettings(); |
52 | virtual void AccessConstants(); | |
53 | virtual void BookAndNestAllLists(); | |
54 | virtual void BookProfileHoldingSettings(); | |
55 | virtual void BookCommonHistograms(); | |
56 | virtual void BookAllEventByEventQuantities(); | |
57 | virtual void BookAllAllEventQuantities(); | |
58 | virtual void BookDefault(); // book histos and profiles without any binning in multiplicity, pt or eta | |
59 | virtual void BookVsM(); | |
60 | virtual void BookDifferential(); | |
61 | virtual void BookAndFillWeightsHistograms(); | |
62 | virtual void StoreHarmonic(); | |
63 | ||
64 | // 2.) Method Make() and methods called within Make(): | |
d66d46f7 | 65 | virtual void Make(AliFlowEventSimple *anEvent); |
41e6d9e4 | 66 | virtual void CheckPointersUsedInMake(); |
67 | virtual void Calculate3pCorrelator(); | |
97d82c42 | 68 | virtual void Calculate5pCorrelator(); |
41e6d9e4 | 69 | virtual void CalculateNonIsotropicTerms(); |
70 | virtual void CalculateDifferential3pCorrelator(Double_t &gIntegratedValue); | |
71 | ||
72 | virtual void ResetEventByEventQuantities(); | |
73 | ||
d66d46f7 | 74 | // 3.) Method Finish() and methods called within Finish(): |
75 | virtual void Finish(); | |
41e6d9e4 | 76 | virtual void AccessSettings(); |
77 | virtual void CheckPointersUsedInFinish(); | |
78 | virtual void CorrectForDetectorEffects(); | |
79 | virtual void CorrectForDetectorEffectsVsM(); | |
80 | virtual void PrintOnTheScreen(); | |
e409ac85 | 81 | virtual void GetCorrelatorAndError(TProfile *g3pCorrelatorVsPt, |
82 | Double_t &g3pCorrelatorValue, | |
83 | Double_t &g3pCorrelatorError); | |
84 | ||
d66d46f7 | 85 | // 4.) Method GetOutputHistograms and method called within it: |
86 | virtual void GetOutputHistograms(TList *outputListHistos); | |
41e6d9e4 | 87 | virtual void GetPointersForBaseHistograms(); |
88 | virtual void GetPointersForCommonHistograms(); | |
89 | virtual void GetPointersForAllEventProfiles(); | |
90 | virtual void GetPointersForResultsHistograms(); | |
91 | ||
d66d46f7 | 92 | // 5.) Other methods: |
93 | virtual void WriteHistograms(TString outputFileName); | |
94 | virtual void WriteHistograms(TDirectoryFile *outputFileName); | |
41e6d9e4 | 95 | |
d66d46f7 | 96 | // 6.) Setters and getters: |
97 | void SetHistList(TList* const hl) {this->fHistList = hl;} | |
98 | TList* GetHistList() const {return this->fHistList;} | |
99 | void SetHistListName(const char *hln) {this->fHistListName->Append(*hln);}; | |
100 | TString *GetHistListName() const {return this->fHistListName;}; | |
e999459d | 101 | void SetHarmonic(Int_t const harmonic) {this->fHarmonic = harmonic;}; |
102 | Int_t GetHarmonic() const {return this->fHarmonic;}; | |
d66d46f7 | 103 | void SetAnalysisLabel(const char *al) {this->fAnalysisLabel->Append(*al);}; |
104 | TString *GetAnalysisLabel() const {return this->fAnalysisLabel;}; | |
105 | void SetAnalysisSettings(TProfile* const as) {this->fAnalysisSettings = as;}; | |
ecac11c2 | 106 | TProfile* GetAnalysisSettings() const {return this->fAnalysisSettings;}; |
d66d46f7 | 107 | void SetNoOfMultipicityBins(Int_t const nomb) {this->fNoOfMultipicityBins = nomb;}; |
108 | Int_t GetNoOfMultipicityBins() const {return this->fNoOfMultipicityBins;}; | |
109 | void SetMultipicityBinWidth(Double_t const mbw) {this->fMultipicityBinWidth = mbw;}; | |
110 | Double_t GetMultipicityBinWidth() const {return this->fMultipicityBinWidth;}; | |
111 | void SetMinMultiplicity(Double_t const mm) {this->fMinMultiplicity = mm;}; | |
112 | Double_t GetMinMultiplicity() const {return this->fMinMultiplicity;}; | |
e999459d | 113 | void SetOppositeChargesPOI(Bool_t const ocp) {this->fOppositeChargesPOI = ocp;}; |
114 | Bool_t GetOppositeChargesPOI() const {return this->fOppositeChargesPOI;}; | |
115 | void SetEvaluateDifferential3pCorrelator(Bool_t const ed3pc) {this->fEvaluateDifferential3pCorrelator = ed3pc;}; | |
116 | Bool_t GetEvaluateDifferential3pCorrelator() const {return this->fEvaluateDifferential3pCorrelator;}; | |
d66d46f7 | 117 | void SetCorrectForDetectorEffects(Bool_t const cfde) {this->fCorrectForDetectorEffects = cfde;}; |
118 | Bool_t GetCorrectForDetectorEffects() const {return this->fCorrectForDetectorEffects;}; | |
5c078806 | 119 | void SetPrintOnTheScreen(Bool_t const pots) {this->fPrintOnTheScreen = pots;}; |
b71a354b | 120 | Bool_t GetPrintOnTheScreen() const {return this->fPrintOnTheScreen;}; |
121 | void SetCalculateVsM(Bool_t const cvm) {this->fCalculateVsM = cvm;}; | |
122 | Bool_t GetCalculateVsM() const {return this->fCalculateVsM;}; | |
123 | void SetShowBinLabelsVsM(Bool_t const sblvm) {this->fShowBinLabelsVsM = sblvm;}; | |
124 | Bool_t GetShowBinLabelsVsM() const {return this->fShowBinLabelsVsM;}; | |
d66d46f7 | 125 | void SetCommonHists(AliFlowCommonHist* const ch) {this->fCommonHists = ch;}; |
126 | AliFlowCommonHist* GetCommonHists() const {return this->fCommonHists;}; | |
127 | void SetWeightsList(TList* const wl) {this->fWeightsList = (TList*)wl->Clone();} | |
128 | TList* GetWeightsList() const {return this->fWeightsList;} | |
129 | void SetUsePhiWeights(Bool_t const uPhiW) {this->fUsePhiWeights = uPhiW;}; | |
130 | Bool_t GetUsePhiWeights() const {return this->fUsePhiWeights;}; | |
131 | void SetUsePtWeights(Bool_t const uPtW) {this->fUsePtWeights = uPtW;}; | |
132 | Bool_t GetUsePtWeights() const {return this->fUsePtWeights;}; | |
133 | void SetUseEtaWeights(Bool_t const uEtaW) {this->fUseEtaWeights = uEtaW;}; | |
134 | Bool_t GetUseEtaWeights() const {return this->fUseEtaWeights;}; | |
135 | void SetUseParticleWeights(TProfile* const uPW) {this->fUseParticleWeights = uPW;}; | |
136 | TProfile* GetUseParticleWeights() const {return this->fUseParticleWeights;}; | |
137 | void SetPhiWeights(TH1F* const histPhiWeights) {this->fPhiWeights = histPhiWeights;}; | |
138 | TH1F* GetPhiWeights() const {return this->fPhiWeights;}; | |
139 | void SetPtWeights(TH1D* const histPtWeights) {this->fPtWeights = histPtWeights;}; | |
140 | TH1D* GetPtWeights() const {return this->fPtWeights;}; | |
141 | void SetEtaWeights(TH1D* const histEtaWeights) {this->fEtaWeights = histEtaWeights;}; | |
142 | TH1D* GetEtaWeights() const {return this->fEtaWeights;}; | |
ecac11c2 | 143 | void SetProfileList(TList* const plist) {this->fProfileList = plist;} |
144 | TList* GetProfileList() const {return this->fProfileList;} | |
d66d46f7 | 145 | void Set3pCorrelatorPro(TProfile* const s3pPro) {this->f3pCorrelatorPro = s3pPro;}; |
146 | TProfile* Get3pCorrelatorPro() const {return this->f3pCorrelatorPro;}; | |
97d82c42 | 147 | void Set5pCorrelatorPro(TProfile* const s5pPro) {this->f5pCorrelatorPro = s5pPro;}; |
148 | TProfile* Get5pCorrelatorPro() const {return this->f5pCorrelatorPro;}; | |
ecac11c2 | 149 | void SetNonIsotropicTermsPro(TProfile* const nitPro) {this->fNonIsotropicTermsPro = nitPro;}; |
d66d46f7 | 150 | TProfile* GetNonIsotropicTermsPro() const {return this->fNonIsotropicTermsPro;}; |
ecac11c2 | 151 | void Set3pCorrelatorVsMPro(TProfile* const s3pVsMPro) {this->f3pCorrelatorVsMPro = s3pVsMPro;}; |
d66d46f7 | 152 | TProfile* Get3pCorrelatorVsMPro() const {return this->f3pCorrelatorVsMPro;}; |
41e6d9e4 | 153 | void Set3pPOICorrelatorVsM(TProfile* const s3pPOIVsM) {this->f3pPOICorrelatorVsM = s3pPOIVsM;}; |
154 | TProfile* Get3pPOICorrelatorVsM() const {return this->f3pPOICorrelatorVsM;}; | |
ecac11c2 | 155 | void SetNonIsotropicTermsVsMPro(TProfile2D* const nitVsMPro) {this->fNonIsotropicTermsVsMPro = nitVsMPro;}; |
d66d46f7 | 156 | TProfile2D* GetNonIsotropicTermsVsMPro() const {return this->fNonIsotropicTermsVsMPro;}; |
e409ac85 | 157 | |
debab807 | 158 | //2p correlators - pt diff |
159 | void Set2pCorrelatorCosPsiDiffPtDiff(TProfile* const g2pCorrelatorCosPsiDiffPtDiff) {this->f2pCorrelatorCosPsiDiffPtDiff = g2pCorrelatorCosPsiDiffPtDiff;}; | |
160 | TProfile* Get2pCorrelatorCosPsiDiffPtDiff() const {return this->f2pCorrelatorCosPsiDiffPtDiff;}; | |
161 | void Set2pCorrelatorCosPsiSumPtDiff(TProfile* const g2pCorrelatorCosPsiSumPtDiff) {this->f2pCorrelatorCosPsiSumPtDiff = g2pCorrelatorCosPsiSumPtDiff;}; | |
162 | TProfile* Get2pCorrelatorCosPsiSumPtDiff() const {return this->f2pCorrelatorCosPsiSumPtDiff;}; | |
163 | void Set2pCorrelatorSinPsiDiffPtDiff(TProfile* const g2pCorrelatorSinPsiDiffPtDiff) {this->f2pCorrelatorSinPsiDiffPtDiff = g2pCorrelatorSinPsiDiffPtDiff;}; | |
164 | TProfile* Get2pCorrelatorSinPsiDiffPtDiff() const {return this->f2pCorrelatorSinPsiDiffPtDiff;}; | |
165 | void Set2pCorrelatorSinPsiSumPtDiff(TProfile* const g2pCorrelatorSinPsiSumPtDiff) {this->f2pCorrelatorSinPsiSumPtDiff = g2pCorrelatorSinPsiSumPtDiff;}; | |
166 | TProfile* Get2pCorrelatorSinPsiSumPtDiff() const {return this->f2pCorrelatorSinPsiSumPtDiff;}; | |
167 | ||
168 | //2p correlators - pt sum | |
169 | void Set2pCorrelatorCosPsiDiffPtSum(TProfile* const g2pCorrelatorCosPsiDiffPtSum) {this->f2pCorrelatorCosPsiDiffPtSum = g2pCorrelatorCosPsiDiffPtSum;}; | |
170 | TProfile* Get2pCorrelatorCosPsiDiffPtSum() const {return this->f2pCorrelatorCosPsiDiffPtSum;}; | |
171 | void Set2pCorrelatorCosPsiSumPtSum(TProfile* const g2pCorrelatorCosPsiSumPtSum) {this->f2pCorrelatorCosPsiSumPtSum = g2pCorrelatorCosPsiSumPtSum;}; | |
172 | TProfile* Get2pCorrelatorCosPsiSumPtSum() const {return this->f2pCorrelatorCosPsiSumPtSum;}; | |
173 | void Set2pCorrelatorSinPsiDiffPtSum(TProfile* const g2pCorrelatorSinPsiDiffPtSum) {this->f2pCorrelatorSinPsiDiffPtSum = g2pCorrelatorSinPsiDiffPtSum;}; | |
174 | TProfile* Get2pCorrelatorSinPsiDiffPtSum() const {return this->f2pCorrelatorSinPsiDiffPtSum;}; | |
175 | void Set2pCorrelatorSinPsiSumPtSum(TProfile* const g2pCorrelatorSinPsiSumPtSum) {this->f2pCorrelatorSinPsiSumPtSum = g2pCorrelatorSinPsiSumPtSum;}; | |
176 | TProfile* Get2pCorrelatorSinPsiSumPtSum() const {return this->f2pCorrelatorSinPsiSumPtSum;}; | |
177 | ||
178 | //2p correlators - eta diff | |
179 | void Set2pCorrelatorCosPsiDiffEtaDiff(TProfile* const g2pCorrelatorCosPsiDiffEtaDiff) {this->f2pCorrelatorCosPsiDiffEtaDiff = g2pCorrelatorCosPsiDiffEtaDiff;}; | |
180 | TProfile* Get2pCorrelatorCosPsiDiffEtaDiff() const {return this->f2pCorrelatorCosPsiDiffEtaDiff;}; | |
181 | void Set2pCorrelatorCosPsiSumEtaDiff(TProfile* const g2pCorrelatorCosPsiSumEtaDiff) {this->f2pCorrelatorCosPsiSumEtaDiff = g2pCorrelatorCosPsiSumEtaDiff;}; | |
182 | TProfile* Get2pCorrelatorCosPsiSumEtaDiff() const {return this->f2pCorrelatorCosPsiSumEtaDiff;}; | |
183 | void Set2pCorrelatorSinPsiDiffEtaDiff(TProfile* const g2pCorrelatorSinPsiDiffEtaDiff) {this->f2pCorrelatorSinPsiDiffEtaDiff = g2pCorrelatorSinPsiDiffEtaDiff;}; | |
184 | TProfile* Get2pCorrelatorSinPsiDiffEtaDiff() const {return this->f2pCorrelatorSinPsiDiffEtaDiff;}; | |
185 | void Set2pCorrelatorSinPsiSumEtaDiff(TProfile* const g2pCorrelatorSinPsiSumEtaDiff) {this->f2pCorrelatorSinPsiSumEtaDiff = g2pCorrelatorSinPsiSumEtaDiff;}; | |
186 | TProfile* Get2pCorrelatorSinPsiSumEtaDiff() const {return this->f2pCorrelatorSinPsiSumEtaDiff;}; | |
187 | ||
188 | //2p correlators - eta sum | |
189 | void Set2pCorrelatorCosPsiDiffEtaSum(TProfile* const g2pCorrelatorCosPsiDiffEtaSum) {this->f2pCorrelatorCosPsiDiffEtaSum = g2pCorrelatorCosPsiDiffEtaSum;}; | |
190 | TProfile* Get2pCorrelatorCosPsiDiffEtaSum() const {return this->f2pCorrelatorCosPsiDiffEtaSum;}; | |
191 | void Set2pCorrelatorCosPsiSumEtaSum(TProfile* const g2pCorrelatorCosPsiSumEtaSum) {this->f2pCorrelatorCosPsiSumEtaSum = g2pCorrelatorCosPsiSumEtaSum;}; | |
192 | TProfile* Get2pCorrelatorCosPsiSumEtaSum() const {return this->f2pCorrelatorCosPsiSumEtaSum;}; | |
193 | void Set2pCorrelatorSinPsiDiffEtaSum(TProfile* const g2pCorrelatorSinPsiDiffEtaSum) {this->f2pCorrelatorSinPsiDiffEtaSum = g2pCorrelatorSinPsiDiffEtaSum;}; | |
194 | TProfile* Get2pCorrelatorSinPsiDiffEtaSum() const {return this->f2pCorrelatorSinPsiDiffEtaSum;}; | |
195 | void Set2pCorrelatorSinPsiSumEtaSum(TProfile* const g2pCorrelatorSinPsiSumEtaSum) {this->f2pCorrelatorSinPsiSumEtaSum = g2pCorrelatorSinPsiSumEtaSum;}; | |
196 | TProfile* Get2pCorrelatorSinPsiSumEtaSum() const {return this->f2pCorrelatorSinPsiSumEtaSum;}; | |
e409ac85 | 197 | |
d66d46f7 | 198 | void SetResultsList(TList* const rlist) {this->fResultsList = rlist;} |
5c078806 | 199 | TList* GetResultsList() const {return this->fResultsList;} |
200 | void Set3pCorrelatorHist(TH1D* const s3pHist) {this->f3pCorrelatorHist = s3pHist;}; | |
e558a733 | 201 | TH1D* Get3pCorrelatorHist() const {return this->f3pCorrelatorHist;}; |
202 | void Set3pCorrelatorVsMHist(TH1D* const s3pVsMHist) {this->f3pCorrelatorVsMHist = s3pVsMHist;}; | |
203 | TH1D* Get3pCorrelatorVsMHist() const {return this->f3pCorrelatorVsMHist;}; | |
d66d46f7 | 204 | void SetDetectorBiasHist(TH1D* const dbHist) {this->fDetectorBiasHist = dbHist;}; |
205 | TH1D* GetDetectorBiasHist() const {return this->fDetectorBiasHist;}; | |
d66d46f7 | 206 | void SetDetectorBiasVsMHist(TH1D* const dbVsMHist) {this->fDetectorBiasVsMHist = dbVsMHist;}; |
207 | TH1D* GetDetectorBiasVsMHist() const {return this->fDetectorBiasVsMHist;}; | |
5c078806 | 208 | void Set3pCorrelatorVsPtSumDiffPro(TProfile* const s3pcvpsd, Int_t const sd) {this->f3pCorrelatorVsPtSumDiffPro[sd] = s3pcvpsd;}; |
209 | TProfile* Get3pCorrelatorVsPtSumDiffPro(Int_t sd) const {return this->f3pCorrelatorVsPtSumDiffPro[sd];}; | |
41e6d9e4 | 210 | void Set3pCorrelatorVsEtaSumDiffPro(TProfile* const s3pcvpsd, Int_t const sd) {this->f3pCorrelatorVsEtaSumDiffPro[sd] = s3pcvpsd;}; |
211 | TProfile* Get3pCorrelatorVsEtaSumDiffPro(Int_t sd) const {return this->f3pCorrelatorVsEtaSumDiffPro[sd];}; | |
212 | ||
e409ac85 | 213 | //void Set2pCorrelatorHist(TH1D* const s2pHist) {this->f2pCorrelatorHist = s2pHist;}; |
214 | //TH1D* Get2pCorrelatorHist() const {return this->f2pCorrelatorHist;}; | |
41e6d9e4 | 215 | |
d66d46f7 | 216 | private: |
217 | AliFlowAnalysisWithMixedHarmonics(const AliFlowAnalysisWithMixedHarmonics& afawQc); | |
218 | AliFlowAnalysisWithMixedHarmonics& operator=(const AliFlowAnalysisWithMixedHarmonics& afawQc); | |
41e6d9e4 | 219 | |
d66d46f7 | 220 | // 0.) Base: |
221 | TList *fHistList; // base list to hold all output objects | |
222 | TString *fHistListName; // name of base list | |
e999459d | 223 | Int_t fHarmonic; // harmonic n in cos[n*(phi1+phi2-2phi3)] and cos[n*(psi1+psi2-2phi3)] |
d66d46f7 | 224 | TString *fAnalysisLabel; // analysis label |
225 | TProfile *fAnalysisSettings; // profile to hold analysis settings | |
d66d46f7 | 226 | Int_t fNoOfMultipicityBins; // number of multiplicity bins |
227 | Double_t fMultipicityBinWidth; // width of multiplicity bin | |
228 | Double_t fMinMultiplicity; // minimal multiplicity | |
e999459d | 229 | Bool_t fOppositeChargesPOI; // two POIs, psi1 and psi2, in correlator <<cos[psi1+psi2-2phi3)]>> will be taken with opposite charges |
230 | Bool_t fEvaluateDifferential3pCorrelator; // evaluate <<cos[psi1+psi2-2phi3)]>>, where psi1 and psi2 are two POIs | |
d66d46f7 | 231 | Bool_t fCorrectForDetectorEffects; // correct 3-p correlator for detector effects |
5c078806 | 232 | Bool_t fPrintOnTheScreen; // print or not the final results on the screen |
b71a354b | 233 | Bool_t fCalculateVsM; // calculate correlators vs multiplicity |
234 | Bool_t fShowBinLabelsVsM; // in histograms holding results vs multiplicity show bin labels in the format M_lowEdge \leq M < M_upperEdge | |
41e6d9e4 | 235 | |
d66d46f7 | 236 | // 1.) Common: |
237 | AliFlowCommonHist *fCommonHists; // common control histograms (filled only with events with 3 or more tracks for 3-p correlators) | |
238 | Int_t fnBinsPhi; // number of phi bins | |
239 | Double_t fPhiMin; // minimum phi | |
240 | Double_t fPhiMax; // maximum phi | |
241 | Double_t fPhiBinWidth; // bin width for phi histograms | |
242 | Int_t fnBinsPt; // number of pt bins | |
243 | Double_t fPtMin; // minimum pt | |
244 | Double_t fPtMax; // maximum pt | |
245 | Double_t fPtBinWidth; // bin width for pt histograms | |
246 | Int_t fnBinsEta; // number of eta bins | |
247 | Double_t fEtaMin; // minimum eta | |
248 | Double_t fEtaMax; // maximum eta | |
249 | Double_t fEtaBinWidth; // bin width for eta histograms | |
41e6d9e4 | 250 | |
d66d46f7 | 251 | // 2a.) Particle weights: |
252 | TList *fWeightsList; // list to hold all histograms with particle weights: fUseParticleWeights, fPhiWeights, fPtWeights and fEtaWeights | |
253 | Bool_t fUsePhiWeights; // use phi weights | |
254 | Bool_t fUsePtWeights; // use pt weights | |
255 | Bool_t fUseEtaWeights; // use eta weights | |
256 | TProfile *fUseParticleWeights; // profile with three bins to hold values of fUsePhiWeights, fUsePtWeights and fUseEtaWeights | |
257 | TH1F *fPhiWeights; // histogram holding phi weights | |
258 | TH1D *fPtWeights; // histogram holding phi weights | |
259 | TH1D *fEtaWeights; // histogram holding phi weights | |
41e6d9e4 | 260 | |
d66d46f7 | 261 | // 3.) Event-by-event quantities: |
262 | TMatrixD *fReQnk; // fReQ[n][k] = Re[Q_{n,k}] = sum_{i=1}^{M} w_{i}^{k} cos(n*phi_{i}) | |
263 | TMatrixD *fImQnk; // fImQ[n][k] = Im[Q_{n,k}] = sum_{i=1}^{M} w_{i}^{k} sin(n*phi_{i}) | |
264 | TMatrixD *fSpk; // fS[p][k] = S_{p,k} = (sum_{i=1}^{M} w_{i}^{k})^{p+1} // note p+1 in the power to use 0th index in p in non-trivial way | |
5c078806 | 265 | TProfile *fRePEBE[2]; // real part of p_n vs [(p1+p2)/2,|p1-p2|] |
266 | TProfile *fImPEBE[2]; // imaginary part of p_n vs [(p1+p2)/2,|p1-p2|] | |
e999459d | 267 | TProfile *fOverlapEBE[2][2]; // cos[n(psi-phi)] vs [(p1+p2)/2,|p1-p2|], where phi stands for 1st/2nd POI which is also RP |
41e6d9e4 | 268 | TProfile *fReEtaEBE[2]; // real part of p_n vs [(eta1+eta2)/2,|eta1-eta2|] |
269 | TProfile *fImEtaEBE[2]; // imaginary part of p_n vs [(eta1+eta2)/2,|eta1-eta2|] | |
270 | TProfile *fOverlapEBE2[2][2]; // cos[n(psi-phi)] vs [(eta1+eta2)/2,|eta1-eta2|], where phi stands for 1st/2nd POI which is also RP | |
271 | ||
d66d46f7 | 272 | // 4.) Profiles: |
ecac11c2 | 273 | TList *fProfileList; // list holding all all-event profiles |
e999459d | 274 | TProfile *f3pCorrelatorPro; // 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> (not corrected for detector effects) |
97d82c42 | 275 | TProfile *f5pCorrelatorPro; // 5-p correlator <<cos[n*(2.*phi1+2.*phi2+2.*phi3-3.*phi4-3.*phi5)]>> (not corrected for detector effects) |
e999459d | 276 | TProfile *fNonIsotropicTermsPro; // non-isotropic terms in the decomposition of 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> |
277 | TProfile *f3pCorrelatorVsMPro; // 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> vs multiplicity | |
41e6d9e4 | 278 | TProfile *f3pPOICorrelatorVsM; // 3-p correlator <<cos[n(psi1+psi2-2phi3)]>> vs multiplicity |
e999459d | 279 | TProfile2D *fNonIsotropicTermsVsMPro; // non-isotropic terms in the decomposition of <cos[n(phi1+phi2-2phi3))]> vs multiplicity |
280 | TProfile *f3pCorrelatorVsPtSumDiffPro[2]; // differential 3-p correlator <<cos[psi1+psi2-2phi3)]>> vs [(p1+p2)/2,|p1-p2|] | |
41e6d9e4 | 281 | TProfile *f3pCorrelatorVsEtaSumDiffPro[2]; // differential 3-p correlator <<cos[psi1+psi2-2phi3)]>> vs [(eta1+eta2)/2,|eta1-eta2|] |
debab807 | 282 | |
283 | //2p correlators vs |Pt1 - Pt2| | |
284 | TProfile *f2pCorrelatorCosPsiDiffPtDiff; // <<cos[n(psi1-psi2)] vs pt diff | |
285 | TProfile *f2pCorrelatorCosPsiSumPtDiff; // <<cos[n(psi1+psi2)] vs pt diff | |
286 | TProfile *f2pCorrelatorSinPsiDiffPtDiff; // <<sin[n(psi1-psi2)] vs pt diff | |
287 | TProfile *f2pCorrelatorSinPsiSumPtDiff; // <<sin[n(psi1+psi2)] vs pt diff | |
288 | ||
289 | //2p correlators vs (Pt1 + Pt2)/2 | |
290 | TProfile *f2pCorrelatorCosPsiDiffPtSum; // <<cos[n(psi1-psi2)] vs pt sum | |
291 | TProfile *f2pCorrelatorCosPsiSumPtSum; // <<cos[n(psi1+psi2)] vs pt sum | |
292 | TProfile *f2pCorrelatorSinPsiDiffPtSum; // <<sin[n(psi1-psi2)] vs pt sum | |
293 | TProfile *f2pCorrelatorSinPsiSumPtSum; // <<sin[n(psi1+psi2)] vs pt sum | |
294 | ||
295 | //2p correlators vs |eta1 - eta2| | |
296 | TProfile *f2pCorrelatorCosPsiDiffEtaDiff; // <<cos[n(psi1-psi2)] vs eta diff | |
297 | TProfile *f2pCorrelatorCosPsiSumEtaDiff; // <<cos[n(psi1+psi2)] vs eta diff | |
298 | TProfile *f2pCorrelatorSinPsiDiffEtaDiff; // <<sin[n(psi1-psi2)] vs eta diff | |
299 | TProfile *f2pCorrelatorSinPsiSumEtaDiff; // <<sin[n(psi1+psi2)] vs eta diff | |
300 | ||
301 | //2p correlators vs (eta1 + eta2)/2 | |
302 | TProfile *f2pCorrelatorCosPsiDiffEtaSum; // <<cos[n(psi1-psi2)] vs eta sum | |
303 | TProfile *f2pCorrelatorCosPsiSumEtaSum; // <<cos[n(psi1+psi2)] vs eta sum | |
304 | TProfile *f2pCorrelatorSinPsiDiffEtaSum; // <<sin[n(psi1-psi2)] vs eta sum | |
305 | TProfile *f2pCorrelatorSinPsiSumEtaSum; // <<sin[n(psi1+psi2)] vs eta sum | |
41e6d9e4 | 306 | |
d66d46f7 | 307 | // 5.) Final results: |
308 | TList *fResultsList; // list holding objects with final results | |
e999459d | 309 | TH1D *f3pCorrelatorHist; // 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> corrected for detector effects |
310 | TH1D *fDetectorBiasHist; // bias coming from detector inefficiencies to 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> (in %) | |
311 | TH1D *f3pCorrelatorVsMHist; // 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> vs multiplicity corrected for detector effects | |
312 | TH1D *fDetectorBiasVsMHist; // bias coming from detector inefficiencies to 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> (in %) versus multiplicity | |
e409ac85 | 313 | //TH1D *f2pCorrelatorHist;//<<cos[(psi1-psi2)]>> |
5c078806 | 314 | |
d66d46f7 | 315 | ClassDef(AliFlowAnalysisWithMixedHarmonics, 0); |
316 | ||
317 | }; | |
318 | ||
319 | //================================================================================================================ | |
320 | ||
321 | #endif | |
322 | ||
323 | ||
324 | ||
325 | ||
326 |