]>
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 | ||
d66d46f7 | 23 | #include "TMatrixD.h" |
24 | ||
929098e4 | 25 | class TDirectoryFile; |
d66d46f7 | 26 | class TList; |
27 | class TFile; | |
929098e4 | 28 | class TH1F; |
29 | class TH1D; | |
67a6b178 | 30 | class TH2D; |
d66d46f7 | 31 | class TProfile; |
32 | class TProfile2D; | |
33 | ||
34 | class AliFlowEventSimple; | |
2701c4bc | 35 | class AliFlowCommonConstants; |
d66d46f7 | 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(); |
50040ed6 | 52 | virtual void AccessConstants(TString method); |
41e6d9e4 | 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;}; | |
50040ed6 | 127 | void SetCommonConstants(TProfile* const cc) {this->fCommonConstants = cc;}; |
128 | TProfile* GetCommonConstants() const {return this->fCommonConstants;}; | |
d66d46f7 | 129 | void SetWeightsList(TList* const wl) {this->fWeightsList = (TList*)wl->Clone();} |
130 | TList* GetWeightsList() const {return this->fWeightsList;} | |
131 | void SetUsePhiWeights(Bool_t const uPhiW) {this->fUsePhiWeights = uPhiW;}; | |
132 | Bool_t GetUsePhiWeights() const {return this->fUsePhiWeights;}; | |
133 | void SetUsePtWeights(Bool_t const uPtW) {this->fUsePtWeights = uPtW;}; | |
134 | Bool_t GetUsePtWeights() const {return this->fUsePtWeights;}; | |
135 | void SetUseEtaWeights(Bool_t const uEtaW) {this->fUseEtaWeights = uEtaW;}; | |
136 | Bool_t GetUseEtaWeights() const {return this->fUseEtaWeights;}; | |
137 | void SetUseParticleWeights(TProfile* const uPW) {this->fUseParticleWeights = uPW;}; | |
138 | TProfile* GetUseParticleWeights() const {return this->fUseParticleWeights;}; | |
139 | void SetPhiWeights(TH1F* const histPhiWeights) {this->fPhiWeights = histPhiWeights;}; | |
140 | TH1F* GetPhiWeights() const {return this->fPhiWeights;}; | |
141 | void SetPtWeights(TH1D* const histPtWeights) {this->fPtWeights = histPtWeights;}; | |
142 | TH1D* GetPtWeights() const {return this->fPtWeights;}; | |
143 | void SetEtaWeights(TH1D* const histEtaWeights) {this->fEtaWeights = histEtaWeights;}; | |
144 | TH1D* GetEtaWeights() const {return this->fEtaWeights;}; | |
ecac11c2 | 145 | void SetProfileList(TList* const plist) {this->fProfileList = plist;} |
146 | TList* GetProfileList() const {return this->fProfileList;} | |
d66d46f7 | 147 | void Set3pCorrelatorPro(TProfile* const s3pPro) {this->f3pCorrelatorPro = s3pPro;}; |
148 | TProfile* Get3pCorrelatorPro() const {return this->f3pCorrelatorPro;}; | |
97d82c42 | 149 | void Set5pCorrelatorPro(TProfile* const s5pPro) {this->f5pCorrelatorPro = s5pPro;}; |
150 | TProfile* Get5pCorrelatorPro() const {return this->f5pCorrelatorPro;}; | |
ecac11c2 | 151 | void SetNonIsotropicTermsPro(TProfile* const nitPro) {this->fNonIsotropicTermsPro = nitPro;}; |
d66d46f7 | 152 | TProfile* GetNonIsotropicTermsPro() const {return this->fNonIsotropicTermsPro;}; |
ecac11c2 | 153 | void Set3pCorrelatorVsMPro(TProfile* const s3pVsMPro) {this->f3pCorrelatorVsMPro = s3pVsMPro;}; |
d66d46f7 | 154 | TProfile* Get3pCorrelatorVsMPro() const {return this->f3pCorrelatorVsMPro;}; |
41e6d9e4 | 155 | void Set3pPOICorrelatorVsM(TProfile* const s3pPOIVsM) {this->f3pPOICorrelatorVsM = s3pPOIVsM;}; |
156 | TProfile* Get3pPOICorrelatorVsM() const {return this->f3pPOICorrelatorVsM;}; | |
ecac11c2 | 157 | void SetNonIsotropicTermsVsMPro(TProfile2D* const nitVsMPro) {this->fNonIsotropicTermsVsMPro = nitVsMPro;}; |
d66d46f7 | 158 | TProfile2D* GetNonIsotropicTermsVsMPro() const {return this->fNonIsotropicTermsVsMPro;}; |
e409ac85 | 159 | |
debab807 | 160 | //2p correlators - pt diff |
161 | void Set2pCorrelatorCosPsiDiffPtDiff(TProfile* const g2pCorrelatorCosPsiDiffPtDiff) {this->f2pCorrelatorCosPsiDiffPtDiff = g2pCorrelatorCosPsiDiffPtDiff;}; | |
162 | TProfile* Get2pCorrelatorCosPsiDiffPtDiff() const {return this->f2pCorrelatorCosPsiDiffPtDiff;}; | |
163 | void Set2pCorrelatorCosPsiSumPtDiff(TProfile* const g2pCorrelatorCosPsiSumPtDiff) {this->f2pCorrelatorCosPsiSumPtDiff = g2pCorrelatorCosPsiSumPtDiff;}; | |
164 | TProfile* Get2pCorrelatorCosPsiSumPtDiff() const {return this->f2pCorrelatorCosPsiSumPtDiff;}; | |
165 | void Set2pCorrelatorSinPsiDiffPtDiff(TProfile* const g2pCorrelatorSinPsiDiffPtDiff) {this->f2pCorrelatorSinPsiDiffPtDiff = g2pCorrelatorSinPsiDiffPtDiff;}; | |
166 | TProfile* Get2pCorrelatorSinPsiDiffPtDiff() const {return this->f2pCorrelatorSinPsiDiffPtDiff;}; | |
167 | void Set2pCorrelatorSinPsiSumPtDiff(TProfile* const g2pCorrelatorSinPsiSumPtDiff) {this->f2pCorrelatorSinPsiSumPtDiff = g2pCorrelatorSinPsiSumPtDiff;}; | |
168 | TProfile* Get2pCorrelatorSinPsiSumPtDiff() const {return this->f2pCorrelatorSinPsiSumPtDiff;}; | |
169 | ||
170 | //2p correlators - pt sum | |
171 | void Set2pCorrelatorCosPsiDiffPtSum(TProfile* const g2pCorrelatorCosPsiDiffPtSum) {this->f2pCorrelatorCosPsiDiffPtSum = g2pCorrelatorCosPsiDiffPtSum;}; | |
172 | TProfile* Get2pCorrelatorCosPsiDiffPtSum() const {return this->f2pCorrelatorCosPsiDiffPtSum;}; | |
173 | void Set2pCorrelatorCosPsiSumPtSum(TProfile* const g2pCorrelatorCosPsiSumPtSum) {this->f2pCorrelatorCosPsiSumPtSum = g2pCorrelatorCosPsiSumPtSum;}; | |
174 | TProfile* Get2pCorrelatorCosPsiSumPtSum() const {return this->f2pCorrelatorCosPsiSumPtSum;}; | |
175 | void Set2pCorrelatorSinPsiDiffPtSum(TProfile* const g2pCorrelatorSinPsiDiffPtSum) {this->f2pCorrelatorSinPsiDiffPtSum = g2pCorrelatorSinPsiDiffPtSum;}; | |
176 | TProfile* Get2pCorrelatorSinPsiDiffPtSum() const {return this->f2pCorrelatorSinPsiDiffPtSum;}; | |
177 | void Set2pCorrelatorSinPsiSumPtSum(TProfile* const g2pCorrelatorSinPsiSumPtSum) {this->f2pCorrelatorSinPsiSumPtSum = g2pCorrelatorSinPsiSumPtSum;}; | |
178 | TProfile* Get2pCorrelatorSinPsiSumPtSum() const {return this->f2pCorrelatorSinPsiSumPtSum;}; | |
179 | ||
180 | //2p correlators - eta diff | |
181 | void Set2pCorrelatorCosPsiDiffEtaDiff(TProfile* const g2pCorrelatorCosPsiDiffEtaDiff) {this->f2pCorrelatorCosPsiDiffEtaDiff = g2pCorrelatorCosPsiDiffEtaDiff;}; | |
182 | TProfile* Get2pCorrelatorCosPsiDiffEtaDiff() const {return this->f2pCorrelatorCosPsiDiffEtaDiff;}; | |
183 | void Set2pCorrelatorCosPsiSumEtaDiff(TProfile* const g2pCorrelatorCosPsiSumEtaDiff) {this->f2pCorrelatorCosPsiSumEtaDiff = g2pCorrelatorCosPsiSumEtaDiff;}; | |
184 | TProfile* Get2pCorrelatorCosPsiSumEtaDiff() const {return this->f2pCorrelatorCosPsiSumEtaDiff;}; | |
185 | void Set2pCorrelatorSinPsiDiffEtaDiff(TProfile* const g2pCorrelatorSinPsiDiffEtaDiff) {this->f2pCorrelatorSinPsiDiffEtaDiff = g2pCorrelatorSinPsiDiffEtaDiff;}; | |
186 | TProfile* Get2pCorrelatorSinPsiDiffEtaDiff() const {return this->f2pCorrelatorSinPsiDiffEtaDiff;}; | |
187 | void Set2pCorrelatorSinPsiSumEtaDiff(TProfile* const g2pCorrelatorSinPsiSumEtaDiff) {this->f2pCorrelatorSinPsiSumEtaDiff = g2pCorrelatorSinPsiSumEtaDiff;}; | |
188 | TProfile* Get2pCorrelatorSinPsiSumEtaDiff() const {return this->f2pCorrelatorSinPsiSumEtaDiff;}; | |
189 | ||
190 | //2p correlators - eta sum | |
191 | void Set2pCorrelatorCosPsiDiffEtaSum(TProfile* const g2pCorrelatorCosPsiDiffEtaSum) {this->f2pCorrelatorCosPsiDiffEtaSum = g2pCorrelatorCosPsiDiffEtaSum;}; | |
192 | TProfile* Get2pCorrelatorCosPsiDiffEtaSum() const {return this->f2pCorrelatorCosPsiDiffEtaSum;}; | |
193 | void Set2pCorrelatorCosPsiSumEtaSum(TProfile* const g2pCorrelatorCosPsiSumEtaSum) {this->f2pCorrelatorCosPsiSumEtaSum = g2pCorrelatorCosPsiSumEtaSum;}; | |
194 | TProfile* Get2pCorrelatorCosPsiSumEtaSum() const {return this->f2pCorrelatorCosPsiSumEtaSum;}; | |
195 | void Set2pCorrelatorSinPsiDiffEtaSum(TProfile* const g2pCorrelatorSinPsiDiffEtaSum) {this->f2pCorrelatorSinPsiDiffEtaSum = g2pCorrelatorSinPsiDiffEtaSum;}; | |
196 | TProfile* Get2pCorrelatorSinPsiDiffEtaSum() const {return this->f2pCorrelatorSinPsiDiffEtaSum;}; | |
197 | void Set2pCorrelatorSinPsiSumEtaSum(TProfile* const g2pCorrelatorSinPsiSumEtaSum) {this->f2pCorrelatorSinPsiSumEtaSum = g2pCorrelatorSinPsiSumEtaSum;}; | |
198 | TProfile* Get2pCorrelatorSinPsiSumEtaSum() const {return this->f2pCorrelatorSinPsiSumEtaSum;}; | |
e409ac85 | 199 | |
d66d46f7 | 200 | void SetResultsList(TList* const rlist) {this->fResultsList = rlist;} |
5c078806 | 201 | TList* GetResultsList() const {return this->fResultsList;} |
202 | void Set3pCorrelatorHist(TH1D* const s3pHist) {this->f3pCorrelatorHist = s3pHist;}; | |
e558a733 | 203 | TH1D* Get3pCorrelatorHist() const {return this->f3pCorrelatorHist;}; |
204 | void Set3pCorrelatorVsMHist(TH1D* const s3pVsMHist) {this->f3pCorrelatorVsMHist = s3pVsMHist;}; | |
205 | TH1D* Get3pCorrelatorVsMHist() const {return this->f3pCorrelatorVsMHist;}; | |
d66d46f7 | 206 | void SetDetectorBiasHist(TH1D* const dbHist) {this->fDetectorBiasHist = dbHist;}; |
207 | TH1D* GetDetectorBiasHist() const {return this->fDetectorBiasHist;}; | |
d66d46f7 | 208 | void SetDetectorBiasVsMHist(TH1D* const dbVsMHist) {this->fDetectorBiasVsMHist = dbVsMHist;}; |
209 | TH1D* GetDetectorBiasVsMHist() const {return this->fDetectorBiasVsMHist;}; | |
5c078806 | 210 | void Set3pCorrelatorVsPtSumDiffPro(TProfile* const s3pcvpsd, Int_t const sd) {this->f3pCorrelatorVsPtSumDiffPro[sd] = s3pcvpsd;}; |
211 | TProfile* Get3pCorrelatorVsPtSumDiffPro(Int_t sd) const {return this->f3pCorrelatorVsPtSumDiffPro[sd];}; | |
41e6d9e4 | 212 | void Set3pCorrelatorVsEtaSumDiffPro(TProfile* const s3pcvpsd, Int_t const sd) {this->f3pCorrelatorVsEtaSumDiffPro[sd] = s3pcvpsd;}; |
50040ed6 | 213 | TProfile* Get3pCorrelatorVsEtaSumDiffPro(Int_t sd) const {return this->f3pCorrelatorVsEtaSumDiffPro[sd];}; |
214 | void SetNonIsotropicTermsList(TList* const nitlist) {this->fNonIsotropicTermsList = nitlist;} | |
215 | TList* GetNonIsotropicTermsList() const {return this->fNonIsotropicTermsList;} | |
216 | void SetNonIsotropicTermsVsPtSumDiffPro(TProfile* const nt, Int_t const sd, Int_t const t) {this->fNonIsotropicTermsVsPtSumDiffPro[sd][t] = nt;}; | |
217 | TProfile* GetNonIsotropicTermsVsPtSumDiffPro(Int_t sd, Int_t t) const {return this->fNonIsotropicTermsVsPtSumDiffPro[sd][t];}; | |
218 | void SetNonIsotropicTermsVsEtaSumDiffPro(TProfile* const nt,Int_t const sd,Int_t const t){this->fNonIsotropicTermsVsEtaSumDiffPro[sd][t] = nt;}; | |
219 | TProfile* GetNonIsotropicTermsVsEtaSumDiffPro(Int_t sd, Int_t t) const {return this->fNonIsotropicTermsVsEtaSumDiffPro[sd][t];}; | |
e409ac85 | 220 | //void Set2pCorrelatorHist(TH1D* const s2pHist) {this->f2pCorrelatorHist = s2pHist;}; |
221 | //TH1D* Get2pCorrelatorHist() const {return this->f2pCorrelatorHist;}; | |
50040ed6 | 222 | void Set3pCorrelatorVsPtSumDiffHist(TH1D* const hist, Int_t const sd) {this->f3pCorrelatorVsPtSumDiffHist[sd] = hist;}; |
223 | TH1D* Get3pCorrelatorVsPtSumDiffHist(Int_t sd) const {return this->f3pCorrelatorVsPtSumDiffHist[sd];}; | |
224 | void Set3pCorrelatorVsEtaSumDiffHist(TH1D* const hist, Int_t const sd) {this->f3pCorrelatorVsEtaSumDiffHist[sd] = hist;}; | |
225 | TH1D* Get3pCorrelatorVsEtaSumDiffHist(Int_t sd) const {return this->f3pCorrelatorVsEtaSumDiffHist[sd];}; | |
41e6d9e4 | 226 | |
d66d46f7 | 227 | private: |
228 | AliFlowAnalysisWithMixedHarmonics(const AliFlowAnalysisWithMixedHarmonics& afawQc); | |
229 | AliFlowAnalysisWithMixedHarmonics& operator=(const AliFlowAnalysisWithMixedHarmonics& afawQc); | |
41e6d9e4 | 230 | |
d66d46f7 | 231 | // 0.) Base: |
232 | TList *fHistList; // base list to hold all output objects | |
233 | TString *fHistListName; // name of base list | |
e999459d | 234 | Int_t fHarmonic; // harmonic n in cos[n*(phi1+phi2-2phi3)] and cos[n*(psi1+psi2-2phi3)] |
d66d46f7 | 235 | TString *fAnalysisLabel; // analysis label |
236 | TProfile *fAnalysisSettings; // profile to hold analysis settings | |
d66d46f7 | 237 | Int_t fNoOfMultipicityBins; // number of multiplicity bins |
238 | Double_t fMultipicityBinWidth; // width of multiplicity bin | |
239 | Double_t fMinMultiplicity; // minimal multiplicity | |
e999459d | 240 | Bool_t fOppositeChargesPOI; // two POIs, psi1 and psi2, in correlator <<cos[psi1+psi2-2phi3)]>> will be taken with opposite charges |
241 | Bool_t fEvaluateDifferential3pCorrelator; // evaluate <<cos[psi1+psi2-2phi3)]>>, where psi1 and psi2 are two POIs | |
d66d46f7 | 242 | Bool_t fCorrectForDetectorEffects; // correct 3-p correlator for detector effects |
5c078806 | 243 | Bool_t fPrintOnTheScreen; // print or not the final results on the screen |
b71a354b | 244 | Bool_t fCalculateVsM; // calculate correlators vs multiplicity |
245 | Bool_t fShowBinLabelsVsM; // in histograms holding results vs multiplicity show bin labels in the format M_lowEdge \leq M < M_upperEdge | |
41e6d9e4 | 246 | |
d66d46f7 | 247 | // 1.) Common: |
248 | AliFlowCommonHist *fCommonHists; // common control histograms (filled only with events with 3 or more tracks for 3-p correlators) | |
249 | Int_t fnBinsPhi; // number of phi bins | |
250 | Double_t fPhiMin; // minimum phi | |
251 | Double_t fPhiMax; // maximum phi | |
252 | Double_t fPhiBinWidth; // bin width for phi histograms | |
253 | Int_t fnBinsPt; // number of pt bins | |
254 | Double_t fPtMin; // minimum pt | |
255 | Double_t fPtMax; // maximum pt | |
256 | Double_t fPtBinWidth; // bin width for pt histograms | |
257 | Int_t fnBinsEta; // number of eta bins | |
258 | Double_t fEtaMin; // minimum eta | |
259 | Double_t fEtaMax; // maximum eta | |
260 | Double_t fEtaBinWidth; // bin width for eta histograms | |
50040ed6 | 261 | TProfile *fCommonConstants; // profile to hold common constants |
262 | ||
d66d46f7 | 263 | // 2a.) Particle weights: |
264 | TList *fWeightsList; // list to hold all histograms with particle weights: fUseParticleWeights, fPhiWeights, fPtWeights and fEtaWeights | |
265 | Bool_t fUsePhiWeights; // use phi weights | |
266 | Bool_t fUsePtWeights; // use pt weights | |
267 | Bool_t fUseEtaWeights; // use eta weights | |
268 | TProfile *fUseParticleWeights; // profile with three bins to hold values of fUsePhiWeights, fUsePtWeights and fUseEtaWeights | |
269 | TH1F *fPhiWeights; // histogram holding phi weights | |
270 | TH1D *fPtWeights; // histogram holding phi weights | |
271 | TH1D *fEtaWeights; // histogram holding phi weights | |
41e6d9e4 | 272 | |
d66d46f7 | 273 | // 3.) Event-by-event quantities: |
274 | TMatrixD *fReQnk; // fReQ[n][k] = Re[Q_{n,k}] = sum_{i=1}^{M} w_{i}^{k} cos(n*phi_{i}) | |
275 | TMatrixD *fImQnk; // fImQ[n][k] = Im[Q_{n,k}] = sum_{i=1}^{M} w_{i}^{k} sin(n*phi_{i}) | |
276 | 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 | 277 | TProfile *fRePEBE[2]; // real part of p_n vs [(p1+p2)/2,|p1-p2|] |
278 | TProfile *fImPEBE[2]; // imaginary part of p_n vs [(p1+p2)/2,|p1-p2|] | |
e999459d | 279 | 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 | 280 | TProfile *fReEtaEBE[2]; // real part of p_n vs [(eta1+eta2)/2,|eta1-eta2|] |
281 | TProfile *fImEtaEBE[2]; // imaginary part of p_n vs [(eta1+eta2)/2,|eta1-eta2|] | |
282 | 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 | |
283 | ||
d66d46f7 | 284 | // 4.) Profiles: |
ecac11c2 | 285 | TList *fProfileList; // list holding all all-event profiles |
e999459d | 286 | TProfile *f3pCorrelatorPro; // 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> (not corrected for detector effects) |
97d82c42 | 287 | TProfile *f5pCorrelatorPro; // 5-p correlator <<cos[n*(2.*phi1+2.*phi2+2.*phi3-3.*phi4-3.*phi5)]>> (not corrected for detector effects) |
e999459d | 288 | TProfile *fNonIsotropicTermsPro; // non-isotropic terms in the decomposition of 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> |
289 | TProfile *f3pCorrelatorVsMPro; // 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> vs multiplicity | |
41e6d9e4 | 290 | TProfile *f3pPOICorrelatorVsM; // 3-p correlator <<cos[n(psi1+psi2-2phi3)]>> vs multiplicity |
e999459d | 291 | TProfile2D *fNonIsotropicTermsVsMPro; // non-isotropic terms in the decomposition of <cos[n(phi1+phi2-2phi3))]> vs multiplicity |
292 | TProfile *f3pCorrelatorVsPtSumDiffPro[2]; // differential 3-p correlator <<cos[psi1+psi2-2phi3)]>> vs [(p1+p2)/2,|p1-p2|] | |
41e6d9e4 | 293 | TProfile *f3pCorrelatorVsEtaSumDiffPro[2]; // differential 3-p correlator <<cos[psi1+psi2-2phi3)]>> vs [(eta1+eta2)/2,|eta1-eta2|] |
50040ed6 | 294 | // 5.) Acceptance terms: |
295 | TList *fNonIsotropicTermsList; // list holding all non-isotropic terms for diff. profiles | |
296 | TProfile *fReNITEBE[2][2][4]; // [POI_1,POI_2] [all,overlap] [(p1+p2)/2,|p1-p2|,(eta1+eta2)/2,|eta1-eta2|] | |
297 | TProfile *fImNITEBE[2][2][4]; // [POI_1,POI_2] [all,overlap] [(p1+p2)/2,|p1-p2|,(eta1+eta2)/2,|eta1-eta2|] | |
298 | TProfile *fNonIsotropicTermsVsPtSumDiffPro[2][10]; // non-isotropic terms for <<cos[n(psi1+psi2-2phi3)]>> vs [(p1+p2)/2,|p1-p2|] | |
299 | TProfile *fNonIsotropicTermsVsEtaSumDiffPro[2][10]; // non-isotropic terms for <<cos[n(psi1+psi2-2phi3)]>> vs [(eta1+eta2)/2,|eta1-eta2|] | |
debab807 | 300 | |
301 | //2p correlators vs |Pt1 - Pt2| | |
302 | TProfile *f2pCorrelatorCosPsiDiffPtDiff; // <<cos[n(psi1-psi2)] vs pt diff | |
303 | TProfile *f2pCorrelatorCosPsiSumPtDiff; // <<cos[n(psi1+psi2)] vs pt diff | |
304 | TProfile *f2pCorrelatorSinPsiDiffPtDiff; // <<sin[n(psi1-psi2)] vs pt diff | |
305 | TProfile *f2pCorrelatorSinPsiSumPtDiff; // <<sin[n(psi1+psi2)] vs pt diff | |
306 | ||
307 | //2p correlators vs (Pt1 + Pt2)/2 | |
308 | TProfile *f2pCorrelatorCosPsiDiffPtSum; // <<cos[n(psi1-psi2)] vs pt sum | |
309 | TProfile *f2pCorrelatorCosPsiSumPtSum; // <<cos[n(psi1+psi2)] vs pt sum | |
310 | TProfile *f2pCorrelatorSinPsiDiffPtSum; // <<sin[n(psi1-psi2)] vs pt sum | |
311 | TProfile *f2pCorrelatorSinPsiSumPtSum; // <<sin[n(psi1+psi2)] vs pt sum | |
312 | ||
313 | //2p correlators vs |eta1 - eta2| | |
314 | TProfile *f2pCorrelatorCosPsiDiffEtaDiff; // <<cos[n(psi1-psi2)] vs eta diff | |
315 | TProfile *f2pCorrelatorCosPsiSumEtaDiff; // <<cos[n(psi1+psi2)] vs eta diff | |
316 | TProfile *f2pCorrelatorSinPsiDiffEtaDiff; // <<sin[n(psi1-psi2)] vs eta diff | |
317 | TProfile *f2pCorrelatorSinPsiSumEtaDiff; // <<sin[n(psi1+psi2)] vs eta diff | |
318 | ||
319 | //2p correlators vs (eta1 + eta2)/2 | |
320 | TProfile *f2pCorrelatorCosPsiDiffEtaSum; // <<cos[n(psi1-psi2)] vs eta sum | |
321 | TProfile *f2pCorrelatorCosPsiSumEtaSum; // <<cos[n(psi1+psi2)] vs eta sum | |
322 | TProfile *f2pCorrelatorSinPsiDiffEtaSum; // <<sin[n(psi1-psi2)] vs eta sum | |
323 | TProfile *f2pCorrelatorSinPsiSumEtaSum; // <<sin[n(psi1+psi2)] vs eta sum | |
41e6d9e4 | 324 | |
d66d46f7 | 325 | // 5.) Final results: |
326 | TList *fResultsList; // list holding objects with final results | |
e999459d | 327 | TH1D *f3pCorrelatorHist; // 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> corrected for detector effects |
328 | TH1D *fDetectorBiasHist; // bias coming from detector inefficiencies to 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> (in %) | |
329 | TH1D *f3pCorrelatorVsMHist; // 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> vs multiplicity corrected for detector effects | |
330 | TH1D *fDetectorBiasVsMHist; // bias coming from detector inefficiencies to 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> (in %) versus multiplicity | |
e409ac85 | 331 | //TH1D *f2pCorrelatorHist;//<<cos[(psi1-psi2)]>> |
50040ed6 | 332 | TH1D *f3pCorrelatorVsPtSumDiffHist[2]; // differential 3-p correlator <<cos[psi1+psi2-2phi3)]>> vs [(p1+p2)/2,|p1-p2|] corrected for detector effect |
333 | TH1D *f3pCorrelatorVsEtaSumDiffHist[2]; // differential 3-p correlator <<cos[psi1+psi2-2phi3)]>> vs [(eta1+eta2)/2,|eta1-eta2|] corrected for detector effect | |
5c078806 | 334 | |
d66d46f7 | 335 | ClassDef(AliFlowAnalysisWithMixedHarmonics, 0); |
336 | ||
337 | }; | |
338 | ||
339 | //================================================================================================================ | |
340 | ||
341 | #endif | |
342 | ||
343 | ||
344 | ||
345 | ||
346 |