]>
Commit | Line | Data |
---|---|---|
83bc3e95 | 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 | * * | |
5c078806 | 11 | * a) Distribution of relative angle difference (phi1-phi2); * |
12 | * b) Cross-check the results for mixed harmonics. * | |
83bc3e95 | 13 | * * |
14 | * Author: Ante Bilandzic (abilandzic@gmail.com) * | |
15 | ***************************************************************/ | |
16 | ||
2701c4bc | 17 | #ifndef ALIFLOWANALYSISWITHNESTEDLOOPS_H |
18 | #define ALIFLOWANALYSISWITHNESTEDLOOPS_H | |
83bc3e95 | 19 | |
20 | class TList; | |
929098e4 | 21 | class TDirectoryFile; |
22 | class TH1F; | |
23 | class TH1D; | |
83bc3e95 | 24 | class TProfile; |
25 | ||
26 | class AliFlowEventSimple; | |
2701c4bc | 27 | class AliFlowCommonConstants; |
83bc3e95 | 28 | class AliFlowCommonHist; |
29 | class AliFlowCommonHistResults; | |
30 | ||
31 | //================================================================================================================ | |
32 | ||
33 | class AliFlowAnalysisWithNestedLoops | |
34 | { | |
35 | public: | |
36 | AliFlowAnalysisWithNestedLoops(); | |
37 | virtual ~AliFlowAnalysisWithNestedLoops(); | |
38 | // 0.) Methods called in the constructor: | |
5c078806 | 39 | virtual void InitializeArraysForMH(); |
83bc3e95 | 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(); | |
5c078806 | 45 | virtual void BookAndFillProfileHoldingSettings(); |
83bc3e95 | 46 | virtual void BookCommonHistograms(); |
5c078806 | 47 | virtual void BookEverythingForRAD(); // RAD = relative angle distribution phi1-phi2 |
48 | virtual void BookEverythingForMH(); // MH = Mixed Harmonics | |
83bc3e95 | 49 | virtual void BookAndFillWeightsHistograms(); |
e999459d | 50 | virtual void StoreHarmonic(); |
83bc3e95 | 51 | // 2.) Method Make() and methods called within Make(): |
52 | virtual void Make(AliFlowEventSimple *anEvent); | |
53 | virtual void CheckPointersUsedInMake(); | |
5c078806 | 54 | virtual void EvaluateNestedLoopsForRAD(AliFlowEventSimple *anEvent); |
55 | virtual void EvaluateNestedLoopsForMH(AliFlowEventSimple *anEvent); | |
83bc3e95 | 56 | // 3.) Method Finish() and methods called within Finish(): |
57 | virtual void Finish(); | |
58 | virtual void CheckPointersUsedInFinish(); | |
5c078806 | 59 | virtual void AccessSettings(); |
60 | virtual void PrintOnTheScreen(); | |
83bc3e95 | 61 | // 4.) Method GetOutputHistograms and method called within it: |
62 | virtual void GetOutputHistograms(TList *outputListHistos); | |
5c078806 | 63 | virtual void GetPointersForBaseHistograms(); |
83bc3e95 | 64 | virtual void GetPointersForCommonHistograms(); |
5c078806 | 65 | virtual void GetPointersForRAD(); |
66 | virtual void GetPointersForMH(); | |
83bc3e95 | 67 | // 5.) Other methods: |
68 | virtual void WriteHistograms(TString outputFileName); | |
69 | virtual void WriteHistograms(TDirectoryFile *outputFileName); | |
5c078806 | 70 | virtual void CheckPointersForRAD(TString where); |
71 | virtual void CheckPointersForMH(TString where); | |
83bc3e95 | 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;}; | |
e999459d | 77 | void SetHarmonic(Int_t const harmonic) {this->fHarmonic = harmonic;}; |
78 | Int_t GetHarmonic() const {return this->fHarmonic;}; | |
83bc3e95 | 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;}; | |
e999459d | 83 | void SetOppositeChargesPOI(Bool_t const ocp) {this->fOppositeChargesPOI = ocp;}; |
84 | Bool_t GetOppositeChargesPOI() const {return this->fOppositeChargesPOI;}; | |
85 | void SetEvaluateDifferential3pCorrelator(Bool_t const ed3pc) {this->fEvaluateDifferential3pCorrelator = ed3pc;}; | |
86 | Bool_t GetEvaluateDifferential3pCorrelator() const {return this->fEvaluateDifferential3pCorrelator;}; | |
5c078806 | 87 | void SetPrintOnTheScreen(Bool_t const pots) {this->fPrintOnTheScreen = pots;}; |
88 | Bool_t GetPrintOnTheScreen() const {return this->fPrintOnTheScreen;}; | |
83bc3e95 | 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;}; | |
5c078806 | 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;}; | |
110 | Bool_t GetEvaluateNestedLoopsForRAD() const {return this->fEvaluateNestedLoopsForRAD;}; | |
83bc3e95 | 111 | void SetRelativeAngleDistribution(TH1D* const rad) {this->fRelativeAngleDistribution = rad;}; |
5c078806 | 112 | TH1D* GetRelativeAngleDistribution() const {return this->fRelativeAngleDistribution;}; |
e999459d | 113 | void SetCharge(TH1D* const rad) {this->fCharge = rad;}; |
114 | TH1D* GetCharge() const {return this->fCharge;}; | |
5c078806 | 115 | // QC: |
e999459d | 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;}; | |
119 | Bool_t GetEvaluateNestedLoopsForQC() const {return this->fEvaluateNestedLoopsForQC;}; | |
5c078806 | 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;}; | |
124 | Bool_t GetEvaluateNestedLoopsForMH() const {return this->fEvaluateNestedLoopsForMH;}; | |
e999459d | 125 | void Set3pCorrelatorPro(TProfile* const s3pPro) {this->f3pCorrelatorPro = s3pPro;}; |
126 | TProfile* Get3pCorrelatorPro() const {return this->f3pCorrelatorPro;}; | |
97d82c42 | 127 | void Set5pCorrelatorPro(TProfile* const s3pPro) {this->f5pCorrelatorPro = s3pPro;}; |
128 | TProfile* Get5pCorrelatorPro() const {return this->f5pCorrelatorPro;}; | |
5c078806 | 129 | void Set3pCorrelatorVsPtSumDiffDirectPro(TProfile* const s3pcvpsdd, Int_t const sd) {this->f3pCorrelatorVsPtSumDiffDirectPro[sd] = s3pcvpsdd;}; |
130 | TProfile* Get3pCorrelatorVsPtSumDiffDirectPro(Int_t sd) const {return this->f3pCorrelatorVsPtSumDiffDirectPro[sd];}; | |
83bc3e95 | 131 | |
132 | private: | |
133 | AliFlowAnalysisWithNestedLoops(const AliFlowAnalysisWithNestedLoops& afawQc); | |
134 | AliFlowAnalysisWithNestedLoops& operator=(const AliFlowAnalysisWithNestedLoops& afawQc); | |
135 | // 0.) Base: | |
136 | TList *fHistList; // base list to hold all output objects | |
137 | TString *fHistListName; // name of base list | |
e999459d | 138 | Int_t fHarmonic; // harmonic |
83bc3e95 | 139 | TString *fAnalysisLabel; // analysis label |
140 | TProfile *fAnalysisSettings; // profile to hold analysis settings | |
e999459d | 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 | |
5c078806 | 143 | Bool_t fPrintOnTheScreen; // print or not on the screen |
83bc3e95 | 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 | |
5c078806 | 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 | |
83bc3e95 | 170 | TH1D *fRelativeAngleDistribution; // distribution of phi1-phi2 for all distinct pairs of particles |
e999459d | 171 | TH1D *fCharge; // distribution of phi1-phi2 for all distinct pairs of particles |
5c078806 | 172 | // 4.) Debugging and cross-checking QC: |
e999459d | 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 | |
5c078806 | 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 | |
97d82c42 | 178 | TProfile *f3pCorrelatorPro; // 3-p correlator <<cos[n(phi1+phi2-2phi3)]>> |
179 | TProfile *f5pCorrelatorPro; // 5-p correlator <<cos[n(2phi1+2phi2+2phi3-3phi4-3phi5)]>> | |
5c078806 | 180 | TProfile *f3pCorrelatorVsPtSumDiffDirectPro[2]; // differential 3-p correlator cos[n(2phi1-psi2-psi3)] vs [(p1+p2)/2,|p1-p2|] |
83bc3e95 | 181 | |
182 | ClassDef(AliFlowAnalysisWithNestedLoops, 0); | |
83bc3e95 | 183 | }; |
184 | ||
185 | //================================================================================================================ | |
186 | ||
187 | #endif | |
188 | ||
189 | ||
190 | ||
191 | ||
192 |