]>
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(); |
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;}; | |
77 | void SetAnalysisLabel(const char *al) {this->fAnalysisLabel->Append(*al);}; | |
78 | TString *GetAnalysisLabel() const {return this->fAnalysisLabel;}; | |
79 | void SetAnalysisSettings(TProfile* const as) {this->fAnalysisSettings = as;}; | |
80 | TProfile* GetAnalysisSettings() const {return this->fAnalysisSettings;}; | |
5c078806 | 81 | void SetPrintOnTheScreen(Bool_t const pots) {this->fPrintOnTheScreen = pots;}; |
82 | Bool_t GetPrintOnTheScreen() const {return this->fPrintOnTheScreen;}; | |
83bc3e95 | 83 | void SetCommonHists(AliFlowCommonHist* const ch) {this->fCommonHists = ch;}; |
84 | AliFlowCommonHist* GetCommonHists() const {return this->fCommonHists;}; | |
85 | void SetWeightsList(TList* const wl) {this->fWeightsList = (TList*)wl->Clone();} | |
86 | TList* GetWeightsList() const {return this->fWeightsList;} | |
87 | void SetUsePhiWeights(Bool_t const uPhiW) {this->fUsePhiWeights = uPhiW;}; | |
88 | Bool_t GetUsePhiWeights() const {return this->fUsePhiWeights;}; | |
89 | void SetUsePtWeights(Bool_t const uPtW) {this->fUsePtWeights = uPtW;}; | |
90 | Bool_t GetUsePtWeights() const {return this->fUsePtWeights;}; | |
91 | void SetUseEtaWeights(Bool_t const uEtaW) {this->fUseEtaWeights = uEtaW;}; | |
92 | Bool_t GetUseEtaWeights() const {return this->fUseEtaWeights;}; | |
93 | void SetUseParticleWeights(TProfile* const uPW) {this->fUseParticleWeights = uPW;}; | |
94 | TProfile* GetUseParticleWeights() const {return this->fUseParticleWeights;}; | |
95 | void SetPhiWeights(TH1F* const histPhiWeights) {this->fPhiWeights = histPhiWeights;}; | |
96 | TH1F* GetPhiWeights() const {return this->fPhiWeights;}; | |
97 | void SetPtWeights(TH1D* const histPtWeights) {this->fPtWeights = histPtWeights;}; | |
98 | TH1D* GetPtWeights() const {return this->fPtWeights;}; | |
99 | void SetEtaWeights(TH1D* const histEtaWeights) {this->fEtaWeights = histEtaWeights;}; | |
100 | TH1D* GetEtaWeights() const {return this->fEtaWeights;}; | |
5c078806 | 101 | void SetListRAD(TList* const lRAD) {this->fListRAD = lRAD;} |
102 | TList* GetListRAD() const {return this->fListRAD;} | |
103 | void SetEvaluateNestedLoopsForRAD(Bool_t const enlfRAD) {this->fEvaluateNestedLoopsForRAD = enlfRAD;}; | |
104 | Bool_t GetEvaluateNestedLoopsForRAD() const {return this->fEvaluateNestedLoopsForRAD;}; | |
83bc3e95 | 105 | void SetRelativeAngleDistribution(TH1D* const rad) {this->fRelativeAngleDistribution = rad;}; |
5c078806 | 106 | TH1D* GetRelativeAngleDistribution() const {return this->fRelativeAngleDistribution;}; |
107 | // QC: | |
108 | // ... | |
109 | // MH: | |
110 | void SetListMH(TList* const lMH) {this->fListMH = lMH;} | |
111 | TList* GetListMH() const {return this->fListMH;} | |
112 | void SetEvaluateNestedLoopsForMH(Bool_t const enlfMH) {this->fEvaluateNestedLoopsForMH = enlfMH;}; | |
113 | Bool_t GetEvaluateNestedLoopsForMH() const {return this->fEvaluateNestedLoopsForMH;}; | |
114 | void SetCorrelatorIntegerMH(Int_t const ciMH) {this->fCorrelatorIntegerMH = ciMH;}; | |
115 | Int_t GetCorrelatorIntegerMH() const {return this->fCorrelatorIntegerMH;}; | |
116 | void Set3pCorrelatorVsPtSumDiffDirectPro(TProfile* const s3pcvpsdd, Int_t const sd) {this->f3pCorrelatorVsPtSumDiffDirectPro[sd] = s3pcvpsdd;}; | |
117 | TProfile* Get3pCorrelatorVsPtSumDiffDirectPro(Int_t sd) const {return this->f3pCorrelatorVsPtSumDiffDirectPro[sd];}; | |
118 | void SetCrossCheckInPtSumBinNo(Int_t const ccipsbn) {this->fCrossCheckInPtSumBinNo = ccipsbn;}; | |
119 | Int_t GetCrossCheckInPtSumBinNo() const {return this->fCrossCheckInPtSumBinNo;}; | |
120 | void SetCrossCheckInPtDiffBinNo(Int_t const ccipdbn) {this->fCrossCheckInPtDiffBinNo = ccipdbn;}; | |
121 | Int_t GetCrossCheckInPtDiffBinNo() const {return this->fCrossCheckInPtDiffBinNo;}; | |
83bc3e95 | 122 | |
123 | private: | |
124 | AliFlowAnalysisWithNestedLoops(const AliFlowAnalysisWithNestedLoops& afawQc); | |
125 | AliFlowAnalysisWithNestedLoops& operator=(const AliFlowAnalysisWithNestedLoops& afawQc); | |
126 | // 0.) Base: | |
127 | TList *fHistList; // base list to hold all output objects | |
128 | TString *fHistListName; // name of base list | |
129 | TString *fAnalysisLabel; // analysis label | |
130 | TProfile *fAnalysisSettings; // profile to hold analysis settings | |
5c078806 | 131 | Bool_t fPrintOnTheScreen; // print or not on the screen |
83bc3e95 | 132 | // 1.) Common: |
133 | AliFlowCommonHist *fCommonHists; // common control histograms (filled only with events with 3 or more tracks for 3-p correlators) | |
134 | Int_t fnBinsPhi; // number of phi bins | |
135 | Double_t fPhiMin; // minimum phi | |
136 | Double_t fPhiMax; // maximum phi | |
137 | Double_t fPhiBinWidth; // bin width for phi histograms | |
138 | Int_t fnBinsPt; // number of pt bins | |
139 | Double_t fPtMin; // minimum pt | |
140 | Double_t fPtMax; // maximum pt | |
141 | Double_t fPtBinWidth; // bin width for pt histograms | |
142 | Int_t fnBinsEta; // number of eta bins | |
143 | Double_t fEtaMin; // minimum eta | |
144 | Double_t fEtaMax; // maximum eta | |
145 | Double_t fEtaBinWidth; // bin width for eta histograms | |
146 | // 2a.) Particle weights: | |
147 | TList *fWeightsList; // list to hold all histograms with particle weights: fUseParticleWeights, fPhiWeights, fPtWeights and fEtaWeights | |
148 | Bool_t fUsePhiWeights; // use phi weights | |
149 | Bool_t fUsePtWeights; // use pt weights | |
150 | Bool_t fUseEtaWeights; // use eta weights | |
151 | TProfile *fUseParticleWeights; // profile with three bins to hold values of fUsePhiWeights, fUsePtWeights and fUseEtaWeights | |
152 | TH1F *fPhiWeights; // histogram holding phi weights | |
153 | TH1D *fPtWeights; // histogram holding phi weights | |
154 | TH1D *fEtaWeights; // histogram holding phi weights | |
5c078806 | 155 | // 3.) Relative angle distribution (RAD): |
156 | TList *fListRAD; // list holding objects for calculation of relative angle distribution phi1-phi2 | |
157 | Bool_t fEvaluateNestedLoopsForRAD; // evaluate nested loops for relative angle distribution | |
83bc3e95 | 158 | TH1D *fRelativeAngleDistribution; // distribution of phi1-phi2 for all distinct pairs of particles |
5c078806 | 159 | // 4.) Debugging and cross-checking QC: |
160 | // ... | |
161 | // 5.) Debugging and cross-checking MH: | |
162 | TList *fListMH; // list holding objects relevant for debugging and cross-checking of MH class | |
163 | Bool_t fEvaluateNestedLoopsForMH; // evaluate nested loops for mixed harmonics | |
164 | Int_t fCorrelatorIntegerMH; // integer n in cos[n(2phi1-psi2-psi3)] | |
165 | TProfile *f3pCorrelatorVsPtSumDiffDirectPro[2]; // differential 3-p correlator cos[n(2phi1-psi2-psi3)] vs [(p1+p2)/2,|p1-p2|] | |
166 | Int_t fCrossCheckInPtSumBinNo; // print on the screen result of cos[n(2phi1-psi2-psi3)] vs (p1+p2)/2 in this bin number | |
167 | Int_t fCrossCheckInPtDiffBinNo; // print on the screen result of cos[n(2phi1-psi2-psi3)] vs |p1-p2| in this bin number | |
83bc3e95 | 168 | |
169 | ClassDef(AliFlowAnalysisWithNestedLoops, 0); | |
83bc3e95 | 170 | }; |
171 | ||
172 | //================================================================================================================ | |
173 | ||
174 | #endif | |
175 | ||
176 | ||
177 | ||
178 | ||
179 |