AliPhysics  7c37cfa (7c37cfa)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliFlowAnalysisWithMixedHarmonics.h
Go to the documentation of this file.
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); *
14  * b) Study flow of two-particle resonances; *
15  * c) Study strong parity violation. *
16  * *
17  * Author: Ante Bilandzic (abilandzic@gmail.com) *
18  *********************************************************/
19 
20 #ifndef ALIFLOWANALYSISWITHMIXEDHARMONICS_H
21 #define ALIFLOWANALYSISWITHMIXEDHARMONICS_H
22 
23 #include "TMatrixD.h"
24 
25 class TDirectoryFile;
26 class TList;
27 class TFile;
28 class TH1F;
29 class TH1D;
30 class TH2D;
31 class TProfile;
32 class TProfile2D;
33 
34 class AliFlowEventSimple;
36 class AliFlowCommonHist;
38 
39 //================================================================================================================
40 
42 {
43  public:
46  // 0.) Methods called in the constructor:
47  virtual void InitializeArrays();
48 
49  // 1.) Method Init() and methods called within Init():
50  virtual void Init();
51  virtual void CrossCheckSettings();
52  virtual void AccessConstants(TString method);
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():
65  virtual void Make(AliFlowEventSimple *anEvent);
66  virtual void CheckPointersUsedInMake();
67  virtual void Calculate3pCorrelator();
68  virtual void Calculate5pCorrelator();
69  virtual void CalculateNonIsotropicTerms();
70  virtual void CalculateDifferential3pCorrelator(Double_t &gIntegratedValue);
71 
72  virtual void ResetEventByEventQuantities();
73 
74  // 3.) Method Finish() and methods called within Finish():
75  virtual void Finish();
76  virtual void AccessSettings();
77  virtual void CheckPointersUsedInFinish();
78  virtual void CorrectForDetectorEffects();
79  virtual void CorrectForDetectorEffectsVsM();
80  virtual void PrintOnTheScreen();
81  virtual void GetCorrelatorAndError(TProfile *g3pCorrelatorVsPt,
82  Double_t &g3pCorrelatorValue,
83  Double_t &g3pCorrelatorError);
84 
85  // 4.) Method GetOutputHistograms and method called within it:
86  virtual void GetOutputHistograms(TList *outputListHistos);
87  virtual void GetPointersForBaseHistograms();
88  virtual void GetPointersForCommonHistograms();
89  virtual void GetPointersForAllEventProfiles();
90  virtual void GetPointersForResultsHistograms();
91 
92  // 5.) Other methods:
93  virtual void WriteHistograms(TString outputFileName);
94  virtual void WriteHistograms(TDirectoryFile *outputFileName);
95 
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;};
101  void SetHarmonic(Int_t const harmonic) {this->fHarmonic = harmonic;};
102  Int_t GetHarmonic() const {return this->fHarmonic;};
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;};
106  TProfile* GetAnalysisSettings() const {return this->fAnalysisSettings;};
107  void SetNoOfMultipicityBins(Int_t const nomb) {this->fNoOfMultipicityBins = nomb;};
109  void SetMultipicityBinWidth(Double_t const mbw) {this->fMultipicityBinWidth = mbw;};
111  void SetMinMultiplicity(Double_t const mm) {this->fMinMultiplicity = mm;};
112  Double_t GetMinMultiplicity() const {return this->fMinMultiplicity;};
113  void SetOppositeChargesPOI(Bool_t const ocp) {this->fOppositeChargesPOI = ocp;};
119  void SetPrintOnTheScreen(Bool_t const pots) {this->fPrintOnTheScreen = pots;};
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;};
125  void SetCommonHists(AliFlowCommonHist* const ch) {this->fCommonHists = ch;};
127  void SetCommonConstants(TProfile* const cc) {this->fCommonConstants = cc;};
128  TProfile* GetCommonConstants() const {return this->fCommonConstants;};
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;};
145  void SetProfileList(TList* const plist) {this->fProfileList = plist;}
146  TList* GetProfileList() const {return this->fProfileList;}
147  void Set3pCorrelatorPro(TProfile* const s3pPro) {this->f3pCorrelatorPro = s3pPro;};
148  TProfile* Get3pCorrelatorPro() const {return this->f3pCorrelatorPro;};
149  void Set5pCorrelatorPro(TProfile* const s5pPro) {this->f5pCorrelatorPro = s5pPro;};
150  TProfile* Get5pCorrelatorPro() const {return this->f5pCorrelatorPro;};
151  void SetNonIsotropicTermsPro(TProfile* const nitPro) {this->fNonIsotropicTermsPro = nitPro;};
152  TProfile* GetNonIsotropicTermsPro() const {return this->fNonIsotropicTermsPro;};
153  void Set3pCorrelatorVsMPro(TProfile* const s3pVsMPro) {this->f3pCorrelatorVsMPro = s3pVsMPro;};
154  TProfile* Get3pCorrelatorVsMPro() const {return this->f3pCorrelatorVsMPro;};
155  void Set3pPOICorrelatorVsM(TProfile* const s3pPOIVsM) {this->f3pPOICorrelatorVsM = s3pPOIVsM;};
156  TProfile* Get3pPOICorrelatorVsM() const {return this->f3pPOICorrelatorVsM;};
157  void SetNonIsotropicTermsVsMPro(TProfile2D* const nitVsMPro) {this->fNonIsotropicTermsVsMPro = nitVsMPro;};
158  TProfile2D* GetNonIsotropicTermsVsMPro() const {return this->fNonIsotropicTermsVsMPro;};
159 
160  //2p correlators - pt diff
161  void Set2pCorrelatorCosPsiDiffPtDiff(TProfile* const g2pCorrelatorCosPsiDiffPtDiff) {this->f2pCorrelatorCosPsiDiffPtDiff = g2pCorrelatorCosPsiDiffPtDiff;};
163  void Set2pCorrelatorCosPsiSumPtDiff(TProfile* const g2pCorrelatorCosPsiSumPtDiff) {this->f2pCorrelatorCosPsiSumPtDiff = g2pCorrelatorCosPsiSumPtDiff;};
165  void Set2pCorrelatorSinPsiDiffPtDiff(TProfile* const g2pCorrelatorSinPsiDiffPtDiff) {this->f2pCorrelatorSinPsiDiffPtDiff = g2pCorrelatorSinPsiDiffPtDiff;};
167  void Set2pCorrelatorSinPsiSumPtDiff(TProfile* const g2pCorrelatorSinPsiSumPtDiff) {this->f2pCorrelatorSinPsiSumPtDiff = g2pCorrelatorSinPsiSumPtDiff;};
169 
170  //2p correlators - pt sum
171  void Set2pCorrelatorCosPsiDiffPtSum(TProfile* const g2pCorrelatorCosPsiDiffPtSum) {this->f2pCorrelatorCosPsiDiffPtSum = g2pCorrelatorCosPsiDiffPtSum;};
173  void Set2pCorrelatorCosPsiSumPtSum(TProfile* const g2pCorrelatorCosPsiSumPtSum) {this->f2pCorrelatorCosPsiSumPtSum = g2pCorrelatorCosPsiSumPtSum;};
175  void Set2pCorrelatorSinPsiDiffPtSum(TProfile* const g2pCorrelatorSinPsiDiffPtSum) {this->f2pCorrelatorSinPsiDiffPtSum = g2pCorrelatorSinPsiDiffPtSum;};
177  void Set2pCorrelatorSinPsiSumPtSum(TProfile* const g2pCorrelatorSinPsiSumPtSum) {this->f2pCorrelatorSinPsiSumPtSum = g2pCorrelatorSinPsiSumPtSum;};
179 
180  //2p correlators - eta diff
181  void Set2pCorrelatorCosPsiDiffEtaDiff(TProfile* const g2pCorrelatorCosPsiDiffEtaDiff) {this->f2pCorrelatorCosPsiDiffEtaDiff = g2pCorrelatorCosPsiDiffEtaDiff;};
183  void Set2pCorrelatorCosPsiSumEtaDiff(TProfile* const g2pCorrelatorCosPsiSumEtaDiff) {this->f2pCorrelatorCosPsiSumEtaDiff = g2pCorrelatorCosPsiSumEtaDiff;};
185  void Set2pCorrelatorSinPsiDiffEtaDiff(TProfile* const g2pCorrelatorSinPsiDiffEtaDiff) {this->f2pCorrelatorSinPsiDiffEtaDiff = g2pCorrelatorSinPsiDiffEtaDiff;};
187  void Set2pCorrelatorSinPsiSumEtaDiff(TProfile* const g2pCorrelatorSinPsiSumEtaDiff) {this->f2pCorrelatorSinPsiSumEtaDiff = g2pCorrelatorSinPsiSumEtaDiff;};
189 
190  //2p correlators - eta sum
191  void Set2pCorrelatorCosPsiDiffEtaSum(TProfile* const g2pCorrelatorCosPsiDiffEtaSum) {this->f2pCorrelatorCosPsiDiffEtaSum = g2pCorrelatorCosPsiDiffEtaSum;};
193  void Set2pCorrelatorCosPsiSumEtaSum(TProfile* const g2pCorrelatorCosPsiSumEtaSum) {this->f2pCorrelatorCosPsiSumEtaSum = g2pCorrelatorCosPsiSumEtaSum;};
195  void Set2pCorrelatorSinPsiDiffEtaSum(TProfile* const g2pCorrelatorSinPsiDiffEtaSum) {this->f2pCorrelatorSinPsiDiffEtaSum = g2pCorrelatorSinPsiDiffEtaSum;};
197  void Set2pCorrelatorSinPsiSumEtaSum(TProfile* const g2pCorrelatorSinPsiSumEtaSum) {this->f2pCorrelatorSinPsiSumEtaSum = g2pCorrelatorSinPsiSumEtaSum;};
199 
200  void SetResultsList(TList* const rlist) {this->fResultsList = rlist;}
201  TList* GetResultsList() const {return this->fResultsList;}
202  void Set3pCorrelatorHist(TH1D* const s3pHist) {this->f3pCorrelatorHist = s3pHist;};
203  TH1D* Get3pCorrelatorHist() const {return this->f3pCorrelatorHist;};
204  void Set3pCorrelatorVsMHist(TH1D* const s3pVsMHist) {this->f3pCorrelatorVsMHist = s3pVsMHist;};
206  void SetDetectorBiasHist(TH1D* const dbHist) {this->fDetectorBiasHist = dbHist;};
207  TH1D* GetDetectorBiasHist() const {return this->fDetectorBiasHist;};
208  void SetDetectorBiasVsMHist(TH1D* const dbVsMHist) {this->fDetectorBiasVsMHist = dbVsMHist;};
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];};
212  void Set3pCorrelatorVsEtaSumDiffPro(TProfile* const s3pcvpsd, Int_t const sd) {this->f3pCorrelatorVsEtaSumDiffPro[sd] = s3pcvpsd;};
213  TProfile* Get3pCorrelatorVsEtaSumDiffPro(Int_t sd) const {return this->f3pCorrelatorVsEtaSumDiffPro[sd];};
214  void SetNonIsotropicTermsList(TList* const nitlist) {this->fNonIsotropicTermsList = nitlist;}
216  void SetNonIsotropicTermsVsPtSumDiffPro(TProfile* const nt, Int_t const sd, Int_t const t) {this->fNonIsotropicTermsVsPtSumDiffPro[sd][t] = nt;};
218  void SetNonIsotropicTermsVsEtaSumDiffPro(TProfile* const nt,Int_t const sd,Int_t const t){this->fNonIsotropicTermsVsEtaSumDiffPro[sd][t] = nt;};
220  //void Set2pCorrelatorHist(TH1D* const s2pHist) {this->f2pCorrelatorHist = s2pHist;};
221  //TH1D* Get2pCorrelatorHist() const {return this->f2pCorrelatorHist;};
222  void Set3pCorrelatorVsPtSumDiffHist(TH1D* const hist, Int_t const sd) {this->f3pCorrelatorVsPtSumDiffHist[sd] = hist;};
224  void Set3pCorrelatorVsEtaSumDiffHist(TH1D* const hist, Int_t const sd) {this->f3pCorrelatorVsEtaSumDiffHist[sd] = hist;};
226 
227  private:
230 
231  // 0.) Base:
232  TList *fHistList; // base list to hold all output objects
233  TString *fHistListName; // name of base list
234  Int_t fHarmonic; // harmonic n in cos[n*(phi1+phi2-2phi3)] and cos[n*(psi1+psi2-2phi3)]
235  TString *fAnalysisLabel; // analysis label
236  TProfile *fAnalysisSettings; // profile to hold analysis settings
237  Int_t fNoOfMultipicityBins; // number of multiplicity bins
238  Double_t fMultipicityBinWidth; // width of multiplicity bin
239  Double_t fMinMultiplicity; // minimal multiplicity
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
242  Bool_t fCorrectForDetectorEffects; // correct 3-p correlator for detector effects
243  Bool_t fPrintOnTheScreen; // print or not the final results on the screen
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
246 
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
261  TProfile *fCommonConstants; // profile to hold common constants
262 
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
272 
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
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|]
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
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 
284  // 4.) Profiles:
285  TList *fProfileList; // list holding all all-event profiles
286  TProfile *f3pCorrelatorPro; // 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> (not corrected for detector effects)
287  TProfile *f5pCorrelatorPro; // 5-p correlator <<cos[n*(2.*phi1+2.*phi2+2.*phi3-3.*phi4-3.*phi5)]>> (not corrected for detector effects)
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
290  TProfile *f3pPOICorrelatorVsM; // 3-p correlator <<cos[n(psi1+psi2-2phi3)]>> vs multiplicity
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|]
293  TProfile *f3pCorrelatorVsEtaSumDiffPro[2]; // differential 3-p correlator <<cos[psi1+psi2-2phi3)]>> vs [(eta1+eta2)/2,|eta1-eta2|]
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|]
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
324 
325  // 5.) Final results:
326  TList *fResultsList; // list holding objects with final results
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
331  //TH1D *f2pCorrelatorHist;//<<cos[(psi1-psi2)]>>
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
334 
336 
337 };
338 
339 //================================================================================================================
340 
341 #endif
342 
343 
344 
345 
346 
virtual void WriteHistograms(TString outputFileName)
TProfile * GetNonIsotropicTermsVsPtSumDiffPro(Int_t sd, Int_t t) const
void Set2pCorrelatorSinPsiDiffEtaSum(TProfile *const g2pCorrelatorSinPsiDiffEtaSum)
void Set3pCorrelatorVsEtaSumDiffPro(TProfile *const s3pcvpsd, Int_t const sd)
const Color_t cc[]
Definition: DrawKs.C:1
virtual void GetOutputHistograms(TList *outputListHistos)
double Double_t
Definition: External.C:58
AliFlowAnalysisWithMixedHarmonics & operator=(const AliFlowAnalysisWithMixedHarmonics &afawQc)
void Set2pCorrelatorSinPsiSumEtaSum(TProfile *const g2pCorrelatorSinPsiSumEtaSum)
void Set3pCorrelatorVsPtSumDiffPro(TProfile *const s3pcvpsd, Int_t const sd)
void Set2pCorrelatorSinPsiDiffPtDiff(TProfile *const g2pCorrelatorSinPsiDiffPtDiff)
void SetCommonHists(AliFlowCommonHist *const ch)
void Set2pCorrelatorSinPsiDiffPtSum(TProfile *const g2pCorrelatorSinPsiDiffPtSum)
void Set2pCorrelatorCosPsiSumEtaDiff(TProfile *const g2pCorrelatorCosPsiSumEtaDiff)
void Set2pCorrelatorCosPsiSumPtSum(TProfile *const g2pCorrelatorCosPsiSumPtSum)
void Set2pCorrelatorSinPsiSumPtSum(TProfile *const g2pCorrelatorSinPsiSumPtSum)
ClassDef(AliFlowAnalysisWithMixedHarmonics, 0)
void Set3pCorrelatorVsEtaSumDiffHist(TH1D *const hist, Int_t const sd)
virtual void Make(AliFlowEventSimple *anEvent)
int Int_t
Definition: External.C:63
TProfile * GetNonIsotropicTermsVsEtaSumDiffPro(Int_t sd, Int_t t) const
void Set2pCorrelatorSinPsiDiffEtaDiff(TProfile *const g2pCorrelatorSinPsiDiffEtaDiff)
virtual void GetCorrelatorAndError(TProfile *g3pCorrelatorVsPt, Double_t &g3pCorrelatorValue, Double_t &g3pCorrelatorError)
void Set2pCorrelatorCosPsiDiffPtDiff(TProfile *const g2pCorrelatorCosPsiDiffPtDiff)
TProfile * Get3pCorrelatorVsEtaSumDiffPro(Int_t sd) const
Int_t method
void Set2pCorrelatorSinPsiSumPtDiff(TProfile *const g2pCorrelatorSinPsiSumPtDiff)
Definition: External.C:228
Definition: External.C:212
virtual void CalculateDifferential3pCorrelator(Double_t &gIntegratedValue)
void Set2pCorrelatorSinPsiSumEtaDiff(TProfile *const g2pCorrelatorSinPsiSumEtaDiff)
void Set2pCorrelatorCosPsiSumEtaSum(TProfile *const g2pCorrelatorCosPsiSumEtaSum)
void Set3pPOICorrelatorVsM(TProfile *const s3pPOIVsM)
void SetNonIsotropicTermsVsMPro(TProfile2D *const nitVsMPro)
void SetNonIsotropicTermsVsPtSumDiffPro(TProfile *const nt, Int_t const sd, Int_t const t)
void SetNonIsotropicTermsVsEtaSumDiffPro(TProfile *const nt, Int_t const sd, Int_t const t)
void Set2pCorrelatorCosPsiDiffPtSum(TProfile *const g2pCorrelatorCosPsiDiffPtSum)
TProfile * Get3pCorrelatorVsPtSumDiffPro(Int_t sd) const
bool Bool_t
Definition: External.C:53
void Set3pCorrelatorVsPtSumDiffHist(TH1D *const hist, Int_t const sd)
void Set2pCorrelatorCosPsiDiffEtaDiff(TProfile *const g2pCorrelatorCosPsiDiffEtaDiff)
void Set2pCorrelatorCosPsiSumPtDiff(TProfile *const g2pCorrelatorCosPsiSumPtDiff)
void Set2pCorrelatorCosPsiDiffEtaSum(TProfile *const g2pCorrelatorCosPsiDiffEtaSum)
void SetPhiWeights(TH1F *const histPhiWeights)
void SetEtaWeights(TH1D *const histEtaWeights)
void Set3pCorrelatorVsMPro(TProfile *const s3pVsMPro)