]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/FLOW/Base/AliFlowAnalysisWithMixedHarmonics.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWG / FLOW / Base / AliFlowAnalysisWithMixedHarmonics.h
CommitLineData
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 25class TDirectoryFile;
d66d46f7 26class TList;
27class TFile;
929098e4 28class TH1F;
29class TH1D;
67a6b178 30class TH2D;
d66d46f7 31class TProfile;
32class TProfile2D;
33
34class AliFlowEventSimple;
2701c4bc 35class AliFlowCommonConstants;
d66d46f7 36class AliFlowCommonHist;
37class AliFlowCommonHistResults;
38
39//================================================================================================================
40
41class 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