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