AliPhysics  a88b1f0 (a88b1f0)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliFlowAnalysisWithNestedLoops.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  * Only in this class nested loops are used for flow analysis. *
9  * Nested loops are used to evaluate: *
10  * *
11  * a) Distribution of relative angle difference (phi1-phi2); *
12  * b) Cross-check the results for mixed harmonics. *
13  * *
14  * Author: Ante Bilandzic (abilandzic@gmail.com) *
15  ***************************************************************/
16 
17 #ifndef ALIFLOWANALYSISWITHNESTEDLOOPS_H
18 #define ALIFLOWANALYSISWITHNESTEDLOOPS_H
19 
20 class TList;
21 class TDirectoryFile;
22 class TH1F;
23 class TH1D;
24 class TProfile;
25 
26 class AliFlowEventSimple;
28 class AliFlowCommonHist;
30 
31 //================================================================================================================
32 
34 {
35  public:
38  // 0.) Methods called in the constructor:
39  virtual void InitializeArraysForMH();
40  // 1.) Method Init() and methods called within Init():
41  virtual void Init();
42  virtual void CrossCheckSettings();
43  virtual void AccessConstants();
44  virtual void BookAndNestAllLists();
45  virtual void BookAndFillProfileHoldingSettings();
46  virtual void BookCommonHistograms();
47  virtual void BookEverythingForRAD(); // RAD = relative angle distribution phi1-phi2
48  virtual void BookEverythingForMH(); // MH = Mixed Harmonics
49  virtual void BookAndFillWeightsHistograms();
50  virtual void StoreHarmonic();
51  // 2.) Method Make() and methods called within Make():
52  virtual void Make(AliFlowEventSimple *anEvent);
53  virtual void CheckPointersUsedInMake();
54  virtual void EvaluateNestedLoopsForRAD(AliFlowEventSimple *anEvent);
55  virtual void EvaluateNestedLoopsForMH(AliFlowEventSimple *anEvent);
56  // 3.) Method Finish() and methods called within Finish():
57  virtual void Finish();
58  virtual void CheckPointersUsedInFinish();
59  virtual void AccessSettings();
60  virtual void PrintOnTheScreen();
61  // 4.) Method GetOutputHistograms and method called within it:
62  virtual void GetOutputHistograms(TList *outputListHistos);
63  virtual void GetPointersForBaseHistograms();
64  virtual void GetPointersForCommonHistograms();
65  virtual void GetPointersForRAD();
66  virtual void GetPointersForMH();
67  // 5.) Other methods:
68  virtual void WriteHistograms(TString outputFileName);
69  virtual void WriteHistograms(TDirectoryFile *outputFileName);
70  virtual void CheckPointersForRAD(TString where);
71  virtual void CheckPointersForMH(TString where);
72  // 6.) Setters and getters:
73  void SetHistList(TList* const hl) {this->fHistList = hl;}
74  TList* GetHistList() const {return this->fHistList;}
75  void SetHistListName(const char *hln) {this->fHistListName->Append(*hln);};
76  TString *GetHistListName() const {return this->fHistListName;};
77  void SetHarmonic(Int_t const harmonic) {this->fHarmonic = harmonic;};
78  Int_t GetHarmonic() const {return this->fHarmonic;};
79  void SetAnalysisLabel(const char *al) {this->fAnalysisLabel->Append(*al);};
80  TString *GetAnalysisLabel() const {return this->fAnalysisLabel;};
81  void SetAnalysisSettings(TProfile* const as) {this->fAnalysisSettings = as;};
82  TProfile* GetAnalysisSettings() const {return this->fAnalysisSettings;};
83  void SetOppositeChargesPOI(Bool_t const ocp) {this->fOppositeChargesPOI = ocp;};
87  void SetPrintOnTheScreen(Bool_t const pots) {this->fPrintOnTheScreen = pots;};
88  Bool_t GetPrintOnTheScreen() const {return this->fPrintOnTheScreen;};
89  void SetCommonHists(AliFlowCommonHist* const ch) {this->fCommonHists = ch;};
90  AliFlowCommonHist* GetCommonHists() const {return this->fCommonHists;};
91  void SetWeightsList(TList* const wl) {this->fWeightsList = (TList*)wl->Clone();}
92  TList* GetWeightsList() const {return this->fWeightsList;}
93  void SetUsePhiWeights(Bool_t const uPhiW) {this->fUsePhiWeights = uPhiW;};
94  Bool_t GetUsePhiWeights() const {return this->fUsePhiWeights;};
95  void SetUsePtWeights(Bool_t const uPtW) {this->fUsePtWeights = uPtW;};
96  Bool_t GetUsePtWeights() const {return this->fUsePtWeights;};
97  void SetUseEtaWeights(Bool_t const uEtaW) {this->fUseEtaWeights = uEtaW;};
98  Bool_t GetUseEtaWeights() const {return this->fUseEtaWeights;};
99  void SetUseParticleWeights(TProfile* const uPW) {this->fUseParticleWeights = uPW;};
100  TProfile* GetUseParticleWeights() const {return this->fUseParticleWeights;};
101  void SetPhiWeights(TH1F* const histPhiWeights) {this->fPhiWeights = histPhiWeights;};
102  TH1F* GetPhiWeights() const {return this->fPhiWeights;};
103  void SetPtWeights(TH1D* const histPtWeights) {this->fPtWeights = histPtWeights;};
104  TH1D* GetPtWeights() const {return this->fPtWeights;};
105  void SetEtaWeights(TH1D* const histEtaWeights) {this->fEtaWeights = histEtaWeights;};
106  TH1D* GetEtaWeights() const {return this->fEtaWeights;};
107  void SetListRAD(TList* const lRAD) {this->fListRAD = lRAD;}
108  TList* GetListRAD() const {return this->fListRAD;}
109  void SetEvaluateNestedLoopsForRAD(Bool_t const enlfRAD) {this->fEvaluateNestedLoopsForRAD = enlfRAD;};
113  void SetCharge(TH1D* const rad) {this->fCharge = rad;};
114  TH1D* GetCharge() const {return this->fCharge;};
115  // QC:
116  void SetListQC(TList* const lQC) {this->fListQC = lQC;}
117  TList* GetListQC() const {return this->fListQC;}
118  void SetEvaluateNestedLoopsForQC(Bool_t const enlfQC) {this->fEvaluateNestedLoopsForQC = enlfQC;};
120  // MH:
121  void SetListMH(TList* const lMH) {this->fListMH = lMH;}
122  TList* GetListMH() const {return this->fListMH;}
123  void SetEvaluateNestedLoopsForMH(Bool_t const enlfMH) {this->fEvaluateNestedLoopsForMH = enlfMH;};
125  void Set3pCorrelatorPro(TProfile* const s3pPro) {this->f3pCorrelatorPro = s3pPro;};
126  TProfile* Get3pCorrelatorPro() const {return this->f3pCorrelatorPro;};
127  void Set5pCorrelatorPro(TProfile* const s3pPro) {this->f5pCorrelatorPro = s3pPro;};
128  TProfile* Get5pCorrelatorPro() const {return this->f5pCorrelatorPro;};
129  void Set3pCorrelatorVsPtSumDiffDirectPro(TProfile* const s3pcvpsdd, Int_t const sd) {this->f3pCorrelatorVsPtSumDiffDirectPro[sd] = s3pcvpsdd;};
131 
132  private:
135  // 0.) Base:
136  TList *fHistList; // base list to hold all output objects
137  TString *fHistListName; // name of base list
138  Int_t fHarmonic; // harmonic
139  TString *fAnalysisLabel; // analysis label
140  TProfile *fAnalysisSettings; // profile to hold analysis settings
141  Bool_t fOppositeChargesPOI; // two POIs, psi1 and psi2, in correlator <<cos[psi1+psi2-2phi3)]>> will be taken with opposite charges
142  Bool_t fEvaluateDifferential3pCorrelator; // evaluate <<cos[psi1+psi2-2phi3)]>>, where psi1 and psi2 are two POIs
143  Bool_t fPrintOnTheScreen; // print or not on the screen
144  // 1.) Common:
145  AliFlowCommonHist *fCommonHists; // common control histograms (filled only with events with 3 or more tracks for 3-p correlators)
146  Int_t fnBinsPhi; // number of phi bins
147  Double_t fPhiMin; // minimum phi
148  Double_t fPhiMax; // maximum phi
149  Double_t fPhiBinWidth; // bin width for phi histograms
150  Int_t fnBinsPt; // number of pt bins
151  Double_t fPtMin; // minimum pt
152  Double_t fPtMax; // maximum pt
153  Double_t fPtBinWidth; // bin width for pt histograms
154  Int_t fnBinsEta; // number of eta bins
155  Double_t fEtaMin; // minimum eta
156  Double_t fEtaMax; // maximum eta
157  Double_t fEtaBinWidth; // bin width for eta histograms
158  // 2a.) Particle weights:
159  TList *fWeightsList; // list to hold all histograms with particle weights: fUseParticleWeights, fPhiWeights, fPtWeights and fEtaWeights
160  Bool_t fUsePhiWeights; // use phi weights
161  Bool_t fUsePtWeights; // use pt weights
162  Bool_t fUseEtaWeights; // use eta weights
163  TProfile *fUseParticleWeights; // profile with three bins to hold values of fUsePhiWeights, fUsePtWeights and fUseEtaWeights
164  TH1F *fPhiWeights; // histogram holding phi weights
165  TH1D *fPtWeights; // histogram holding phi weights
166  TH1D *fEtaWeights; // histogram holding phi weights
167  // 3.) Relative angle distribution (RAD):
168  TList *fListRAD; // list holding objects for calculation of relative angle distribution phi1-phi2
169  Bool_t fEvaluateNestedLoopsForRAD; // evaluate nested loops for relative angle distribution
170  TH1D *fRelativeAngleDistribution; // distribution of phi1-phi2 for all distinct pairs of particles
171  TH1D *fCharge; // distribution of phi1-phi2 for all distinct pairs of particles
172  // 4.) Debugging and cross-checking QC:
173  TList *fListQC; // list holding objects relevant for debugging and cross-checking of Q-cumulants class
174  Bool_t fEvaluateNestedLoopsForQC; // evaluate nested loops for Q-cumulants
175  // 5.) Debugging and cross-checking MH:
176  TList *fListMH; // list holding objects relevant for debugging and cross-checking of MH class
177  Bool_t fEvaluateNestedLoopsForMH; // evaluate nested loops for mixed harmonics
178  TProfile *f3pCorrelatorPro; // 3-p correlator <<cos[n(phi1+phi2-2phi3)]>>
179  TProfile *f5pCorrelatorPro; // 5-p correlator <<cos[n(2phi1+2phi2+2phi3-3phi4-3phi5)]>>
180  TProfile *f3pCorrelatorVsPtSumDiffDirectPro[2]; // differential 3-p correlator cos[n(2phi1-psi2-psi3)] vs [(p1+p2)/2,|p1-p2|]
181 
183 };
184 
185 //================================================================================================================
186 
187 #endif
188 
189 
190 
191 
192 
virtual void EvaluateNestedLoopsForMH(AliFlowEventSimple *anEvent)
void SetEvaluateNestedLoopsForQC(Bool_t const enlfQC)
double Double_t
Definition: External.C:58
void SetEtaWeights(TH1D *const histEtaWeights)
void Set5pCorrelatorPro(TProfile *const s3pPro)
virtual void Make(AliFlowEventSimple *anEvent)
virtual void EvaluateNestedLoopsForRAD(AliFlowEventSimple *anEvent)
virtual void WriteHistograms(TString outputFileName)
TProfile * Get3pCorrelatorVsPtSumDiffDirectPro(Int_t sd) const
void SetEvaluateNestedLoopsForMH(Bool_t const enlfMH)
int Int_t
Definition: External.C:63
virtual void GetOutputHistograms(TList *outputListHistos)
Definition: External.C:212
void SetPtWeights(TH1D *const histPtWeights)
void SetPhiWeights(TH1F *const histPhiWeights)
AliFlowCommonHist * GetCommonHists() const
void SetCommonHists(AliFlowCommonHist *const ch)
void SetEvaluateDifferential3pCorrelator(Bool_t const ed3pc)
AliFlowAnalysisWithNestedLoops & operator=(const AliFlowAnalysisWithNestedLoops &afawQc)
void SetEvaluateNestedLoopsForRAD(Bool_t const enlfRAD)
void SetUseParticleWeights(TProfile *const uPW)
bool Bool_t
Definition: External.C:53
ClassDef(AliFlowAnalysisWithNestedLoops, 0)
void Set3pCorrelatorPro(TProfile *const s3pPro)
void Set3pCorrelatorVsPtSumDiffDirectPro(TProfile *const s3pcvpsdd, Int_t const sd)