]>
Commit | Line | Data |
---|---|---|
bc92c0cb | 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 | * flow analysis with Q-cumulants * | |
9 | * * | |
10 | * author: Ante Bilandzic * | |
11 | * (anteb@nikhef.nl) * | |
12 | *********************************/ | |
13 | ||
52021ae2 | 14 | #ifndef ALIFLOWANALYSISWITHQCUMULANTS_H |
15 | #define ALIFLOWANALYSISWITHQCUMULANTS_H | |
bc92c0cb | 16 | |
52021ae2 | 17 | #include "AliFlowCommonConstants.h"//needed as include |
bc92c0cb | 18 | |
19 | class TObjArray; | |
20 | class TList; | |
21 | class TFile; | |
22 | ||
23 | class TH1; | |
24 | class TProfile; | |
bc92c0cb | 25 | |
26 | class AliFlowEventSimple; | |
27 | class AliFlowTrackSimple; | |
52021ae2 | 28 | class AliFlowVector; |
29 | ||
bc92c0cb | 30 | class AliFlowCommonHist; |
31 | class AliFlowCommonHistResults; | |
bc92c0cb | 32 | |
33 | //================================================================================================================ | |
34 | ||
35 | class AliFlowAnalysisWithQCumulants{ | |
36 | public: | |
37 | AliFlowAnalysisWithQCumulants(); | |
38 | virtual ~AliFlowAnalysisWithQCumulants(); | |
39 | ||
40 | virtual void CreateOutputObjects(); | |
41 | virtual void Make(AliFlowEventSimple* anEvent); | |
42 | virtual void Finish(); | |
1315fe58 | 43 | virtual void WriteHistograms(TString* outputFileName); |
8842fb2b | 44 | |
45 | //---------------------------------------------------------------------------------------------------------------- | |
46 | // setters and getters | |
47 | //---------------------------------------------------------------------------------------------------------------- | |
1315fe58 | 48 | TList* GetHistList() const {return this->fHistList;} //output histogram list |
bc92c0cb | 49 | |
52021ae2 | 50 | void SetIntFlowResults(TH1D* const ifr) {this->fIntFlowResultsQC = ifr;}; |
51 | TH1D* GetIntFlowResults() const {return this->fIntFlowResultsQC;}; | |
8842fb2b | 52 | |
52021ae2 | 53 | void SetDiffFlowResults2nd(TH1D* const diff2nd) {this->fDiffFlowResults2ndOrderQC = diff2nd;}; |
54 | TH1D* GetDiffFlowResults2nd() const {return this->fDiffFlowResults2ndOrderQC;}; | |
8842fb2b | 55 | |
52021ae2 | 56 | void SetDiffFlowResults4th(TH1D* const diff4th) {this->fDiffFlowResults4thOrderQC = diff4th;}; |
57 | TH1D* GetDiffFlowResults4th() const {return this->fDiffFlowResults4thOrderQC;}; | |
8842fb2b | 58 | |
52021ae2 | 59 | void SetCovariances(TH1D* const cov) {this->fCovariances = cov;}; |
60 | TH1D* GetCovariances() const {return this->fCovariances;}; | |
8842fb2b | 61 | |
52021ae2 | 62 | void SetCommonHistsResults2nd(AliFlowCommonHistResults* const chr2nd) {this->fCommonHistsResults2nd = chr2nd;}; |
63 | AliFlowCommonHistResults* GetCommonHistsResults2nd() const {return this->fCommonHistsResults2nd;}; | |
8842fb2b | 64 | |
52021ae2 | 65 | void SetCommonHistsResults4th(AliFlowCommonHistResults* const chr4th) {this->fCommonHistsResults4th = chr4th;}; |
66 | AliFlowCommonHistResults* GetCommonHistsResults4th() const {return this->fCommonHistsResults4th;}; | |
8842fb2b | 67 | |
52021ae2 | 68 | void SetCommonHistsResults6th(AliFlowCommonHistResults* const chr6th) {this->fCommonHistsResults6th = chr6th;}; |
69 | AliFlowCommonHistResults* GetCommonHistsResults6th() const {return this->fCommonHistsResults6th;}; | |
8842fb2b | 70 | |
52021ae2 | 71 | void SetCommonHistsResults8th(AliFlowCommonHistResults* const chr8th) {this->fCommonHistsResults8th = chr8th;}; |
72 | AliFlowCommonHistResults* GetCommonHistsResults8th() const {return this->fCommonHistsResults8th;}; | |
8842fb2b | 73 | |
52021ae2 | 74 | void SetAverageMultiplicity(TProfile* const am) {this->fAvMultIntFlowQC = am;}; |
75 | TProfile* GetAverageMultiplicity() const {return this->fAvMultIntFlowQC;}; | |
8842fb2b | 76 | |
52021ae2 | 77 | void SetQCorrelations(TProfile* const QCorr) {this->fQCorrelations = QCorr;}; |
78 | TProfile* GetQCorrelations() const {return this->fQCorrelations;}; | |
8842fb2b | 79 | |
52021ae2 | 80 | void SetQProduct(TProfile* const qp) {this->fQProduct = qp;}; |
81 | TProfile* GetQProduct() const {return this->fQProduct;}; | |
8842fb2b | 82 | |
52021ae2 | 83 | void SetQVectorComponents(TProfile* const qvc) {this->fQvectorComponents = qvc;}; |
84 | TProfile* GetQVectorComponents() const {return this->fQvectorComponents;}; | |
8842fb2b | 85 | |
1dfa3c16 | 86 | void SetTwo1n1nPerPtBinRP(TProfile* const pb2PerPtBin1n1nRP) {this->f2PerPtBin1n1nRP = pb2PerPtBin1n1nRP;}; |
87 | TProfile* GetTwo1n1nPerPtBinRP() const {return this->f2PerPtBin1n1nRP;}; | |
8842fb2b | 88 | |
1dfa3c16 | 89 | void SetTwo2n2nPerPtBinRP(TProfile* const pb2PerPtBin2n2nRP) {this->f2PerPtBin2n2nRP = pb2PerPtBin2n2nRP;}; |
90 | TProfile* GetTwo2n2nPerPtBinRP() const {return this->f2PerPtBin2n2nRP;}; | |
8842fb2b | 91 | |
1dfa3c16 | 92 | void SetThree2n1n1nPerPtBinRP(TProfile* const pb3PerPtBin2n1n1nRP) {this->f3PerPtBin2n1n1nRP = pb3PerPtBin2n1n1nRP;}; |
93 | TProfile* GetThree2n1n1nPerPtBinRP() const {return this->f3PerPtBin2n1n1nRP;}; | |
8842fb2b | 94 | |
1dfa3c16 | 95 | void SetThree1n1n2nPerPtBinRP(TProfile* const pb3PerPtBin1n1n2nRP) {this->f3PerPtBin1n1n2nRP = pb3PerPtBin1n1n2nRP;}; |
96 | TProfile* GetThree1n1n2nPerPtBinRP() const {return this->f3PerPtBin1n1n2nRP;}; | |
8842fb2b | 97 | |
1dfa3c16 | 98 | void SetFour1n1n1n1nPerPtBinRP(TProfile* const pb4PerPtBin1n1n1n1nRP) {this->f4PerPtBin1n1n1n1nRP = pb4PerPtBin1n1n1n1nRP;}; |
99 | TProfile* GetFour1n1n1n1nPerPtBinRP() const {return this->f4PerPtBin1n1n1n1nRP;}; | |
100 | ||
101 | void SetTwo1n1nPerEtaBinRP(TProfile* const pb2PerEtaBin1n1nRP) {this->f2PerEtaBin1n1nRP = pb2PerEtaBin1n1nRP;}; | |
102 | TProfile* GetTwo1n1nPerEtaBinRP() const {return this->f2PerEtaBin1n1nRP;}; | |
103 | ||
104 | void SetTwo2n2nPerEtaBinRP(TProfile* const pb2PerEtaBin2n2nRP) {this->f2PerEtaBin2n2nRP = pb2PerEtaBin2n2nRP;}; | |
105 | TProfile* GetTwo2n2nPerEtaBinRP() const {return this->f2PerEtaBin2n2nRP;}; | |
106 | ||
107 | void SetThree2n1n1nPerEtaBinRP(TProfile* const pb3PerEtaBin2n1n1nRP) {this->f3PerEtaBin2n1n1nRP = pb3PerEtaBin2n1n1nRP;}; | |
108 | TProfile* GetThree2n1n1nPerEtaBinRP() const {return this->f3PerEtaBin2n1n1nRP;}; | |
109 | ||
110 | void SetThree1n1n2nPerEtaBinRP(TProfile* const pb3PerEtaBin1n1n2nRP) {this->f3PerEtaBin1n1n2nRP = pb3PerEtaBin1n1n2nRP;}; | |
111 | TProfile* GetThree1n1n2nPerEtaBinRP() const {return this->f3PerEtaBin1n1n2nRP;}; | |
112 | ||
113 | void SetFour1n1n1n1nPerEtaBinRP(TProfile* const pb4PerEtaBin1n1n1n1nRP) {this->f4PerEtaBin1n1n1n1nRP = pb4PerEtaBin1n1n1n1nRP;}; | |
114 | TProfile* GetFour1n1n1n1nPerEtaBinRP() const {return this->f4PerEtaBin1n1n1n1nRP;}; | |
115 | ||
116 | void SetTwo1n1nPerPtBinPOI(TProfile* const pb2PerPtBin1n1nPOI) {this->f2PerPtBin1n1nPOI = pb2PerPtBin1n1nPOI;}; | |
117 | TProfile* GetTwo1n1nPerPtBinPOI() const {return this->f2PerPtBin1n1nPOI;}; | |
118 | ||
119 | void SetTwo2n2nPerPtBinPOI(TProfile* const pb2PerPtBin2n2nPOI) {this->f2PerPtBin2n2nPOI = pb2PerPtBin2n2nPOI;}; | |
120 | TProfile* GetTwo2n2nPerPtBinPOI() const {return this->f2PerPtBin2n2nPOI;}; | |
121 | ||
122 | void SetThree2n1n1nPerPtBinPOI(TProfile* const pb3PerPtBin2n1n1nPOI) {this->f3PerPtBin2n1n1nPOI = pb3PerPtBin2n1n1nPOI;}; | |
123 | TProfile* GetThree2n1n1nPerPtBinPOI() const {return this->f3PerPtBin2n1n1nPOI;}; | |
124 | ||
125 | void SetThree1n1n2nPerPtBinPOI(TProfile* const pb3PerPtBin1n1n2nPOI) {this->f3PerPtBin1n1n2nPOI = pb3PerPtBin1n1n2nPOI;}; | |
126 | TProfile* GetThree1n1n2nPerPtBinPOI() const {return this->f3PerPtBin1n1n2nPOI;}; | |
127 | ||
128 | void SetFour1n1n1n1nPerPtBinPOI(TProfile* const pb4PerPtBin1n1n1n1nPOI) {this->f4PerPtBin1n1n1n1nPOI = pb4PerPtBin1n1n1n1nPOI;}; | |
129 | TProfile* GetFour1n1n1n1nPerPtBinPOI() const {return this->f4PerPtBin1n1n1n1nPOI;}; | |
130 | ||
131 | void SetTwo1n1nPerEtaBinPOI(TProfile* const pb2PerEtaBin1n1nPOI) {this->f2PerEtaBin1n1nPOI = pb2PerEtaBin1n1nPOI;}; | |
132 | TProfile* GetTwo1n1nPerEtaBinPOI() const {return this->f2PerEtaBin1n1nPOI;}; | |
133 | ||
134 | void SetTwo2n2nPerEtaBinPOI(TProfile* const pb2PerEtaBin2n2nPOI) {this->f2PerEtaBin2n2nPOI = pb2PerEtaBin2n2nPOI;}; | |
135 | TProfile* GetTwo2n2nPerEtaBinPOI() const {return this->f2PerEtaBin2n2nPOI;}; | |
136 | ||
137 | void SetThree2n1n1nPerEtaBinPOI(TProfile* const pb3PerEtaBin2n1n1nPOI) {this->f3PerEtaBin2n1n1nPOI = pb3PerEtaBin2n1n1nPOI;}; | |
138 | TProfile* GetThree2n1n1nPerEtaBinPOI() const {return this->f3PerEtaBin2n1n1nPOI;}; | |
139 | ||
140 | void SetThree1n1n2nPerEtaBinPOI(TProfile* const pb3PerEtaBin1n1n2nPOI) {this->f3PerEtaBin1n1n2nPOI = pb3PerEtaBin1n1n2nPOI;}; | |
141 | TProfile* GetThree1n1n2nPerEtaBinPOI() const {return this->f3PerEtaBin1n1n2nPOI;}; | |
142 | ||
143 | void SetFour1n1n1n1nPerEtaBinPOI(TProfile* const pb4PerEtaBin1n1n1n1nPOI) {this->f4PerEtaBin1n1n1n1nPOI = pb4PerEtaBin1n1n1n1nPOI;}; | |
144 | TProfile* GetFour1n1n1n1nPerEtaBinPOI() const {return this->f4PerEtaBin1n1n1n1nPOI;}; | |
8842fb2b | 145 | |
52021ae2 | 146 | void SetDirectCorrelations(TProfile* const dc) {this->fDirectCorrelations = dc;}; |
147 | TProfile* GetDirectCorrelations() const {return this->fDirectCorrelations;}; | |
8842fb2b | 148 | //---------------------------------------------------------------------------------------------------------------- |
149 | ||
bc92c0cb | 150 | private: |
151 | AliFlowAnalysisWithQCumulants(const AliFlowAnalysisWithQCumulants& afawQc); | |
152 | AliFlowAnalysisWithQCumulants& operator=(const AliFlowAnalysisWithQCumulants& afawQc); | |
8842fb2b | 153 | |
154 | AliFlowTrackSimple* fTrack; //track | |
155 | TList* fHistList; //list to hold all output histograms | |
156 | TProfile* fAvMultIntFlowQC; //average selected multiplicity (for int. flow) | |
bc92c0cb | 157 | |
8842fb2b | 158 | TProfile* fQvectorComponents; //averages of Q-vector components (1st bin: <Q_x>, 2nd bin: <Q_y>, ...) |
bc92c0cb | 159 | |
8842fb2b | 160 | TH1D* fIntFlowResultsQC; //integrated flow results from Q-cumulants |
161 | TH1D* fDiffFlowResults2ndOrderQC; //differential flow results from 2nd order Q-cumulant | |
162 | TH1D* fDiffFlowResults4thOrderQC; //differential flow results from 4th order Q-cumulant | |
163 | TH1D* fCovariances; //final results for covariances: 1st bin: <2*4>-<2>*<4>, 2nd bin: <2*6>-<2>*<6>, ... | |
164 | ||
165 | TProfile* fQCorrelations; //multi-particle correlations calculated from Q-vectors | |
166 | TProfile* fQProduct; //average of products: 1st bin: <2*4>, 2nd bin: <2*6>, ... | |
167 | ||
168 | TProfile* fDirectCorrelations; //multi-particle correlations calculated with nested loop | |
8842fb2b | 169 | |
1dfa3c16 | 170 | //RP (Reaction Plane particles): |
171 | TProfile* fPtReq1nRP; //real part of q-vector evaluated in harmonic n for each pt-bin | |
172 | TProfile* fPtImq1nRP; //imaginary part of q-vector evaluated in harmonic n for each pt-bin | |
173 | TProfile* fPtReq2nRP; //real part of q-vector evaluated in harmonic 2n for each pt-bin | |
174 | TProfile* fPtImq2nRP; //imaginary part of q-vector evaluated in harmonic 2n for each pt-bin | |
175 | ||
176 | TProfile* f2PerPtBin1n1nRP; //<<2'>>_{n|n} per pt-bin | |
177 | TProfile* f2PerPtBin2n2nRP; //<<2'>>_{2n|2n} per pt-bin | |
178 | TProfile* f3PerPtBin2n1n1nRP; //<<3'>>_{2n|n,n} per pt-bin | |
179 | TProfile* f3PerPtBin1n1n2nRP; //<<3'>>_{n,n|2n} per pt-bin | |
180 | TProfile* f4PerPtBin1n1n1n1nRP; //<<4'>>_{n,n|n,n} per pt-bin | |
181 | ||
182 | TProfile* fEtaReq1nRP; //real part of q-vector evaluated in harmonic n for each eta-bin | |
183 | TProfile* fEtaImq1nRP; //imaginary part of q-vector evaluated in harmonic n for each eta-bin | |
184 | TProfile* fEtaReq2nRP; //real part of q-vector evaluated in harmonic 2n for each eta-bin | |
185 | TProfile* fEtaImq2nRP; //imaginary part of q-vector evaluated in harmonic 2n for each eta-bin | |
186 | ||
187 | TProfile* f2PerEtaBin1n1nRP; //<<2'>>_{n|n} per eta-bin | |
188 | TProfile* f2PerEtaBin2n2nRP; //<<2'>>_{2n|2n} per eta-bin | |
189 | TProfile* f3PerEtaBin2n1n1nRP; //<<3'>>_{2n|n,n} per eta-bin | |
190 | TProfile* f3PerEtaBin1n1n2nRP; //<<3'>>_{n,n|2n} per eta-bin | |
191 | TProfile* f4PerEtaBin1n1n1n1nRP; //<<4'>>_{n,n|n,n} per eta-bin | |
192 | ||
193 | //POI (Particles Of Interest): | |
194 | TProfile* fPtReq1nPOI; //real part of q-vector evaluated in harmonic n for each pt-bin | |
195 | TProfile* fPtImq1nPOI; //imaginary part of q-vector evaluated in harmonic n for each pt-bin | |
196 | TProfile* fPtReq2nPOI; //real part of q-vector evaluated in harmonic 2n for each pt-bin | |
197 | TProfile* fPtImq2nPOI; //imaginary part of q-vector evaluated in harmonic 2n for each pt-bin | |
e8a609bc | 198 | TProfile* fOverlapPerPtBin; //number of particles selected both as RP and POI in each pt-bin |
1dfa3c16 | 199 | |
200 | TProfile* f2PerPtBin1n1nPOI; //<<2'>>_{n|n} per pt-bin | |
201 | TProfile* f2PerPtBin2n2nPOI; //<<2'>>_{2n|2n} per pt-bin | |
202 | TProfile* f3PerPtBin2n1n1nPOI; //<<3'>>_{2n|n,n} per pt-bin | |
203 | TProfile* f3PerPtBin1n1n2nPOI; //<<3'>>_{n,n|2n} per pt-bin | |
204 | TProfile* f4PerPtBin1n1n1n1nPOI; //<<4'>>_{n,n|n,n} per pt-bin | |
205 | ||
206 | TProfile* fEtaReq1nPOI; //real part of q-vector evaluated in harmonic n for each eta-bin | |
207 | TProfile* fEtaImq1nPOI; //imaginary part of q-vector evaluated in harmonic n for each eta-bin | |
208 | TProfile* fEtaReq2nPOI; //real part of q-vector evaluated in harmonic 2n for each eta-bin | |
209 | TProfile* fEtaImq2nPOI; //imaginary part of q-vector evaluated in harmonic 2n for each eta-bin | |
e8a609bc | 210 | TProfile* fOverlapPerEtaBin; //number of particles selected both as RP and POI in each eta-bin |
1dfa3c16 | 211 | |
212 | TProfile* f2PerEtaBin1n1nPOI; //<<2'>>_{n|n} per eta-bin | |
213 | TProfile* f2PerEtaBin2n2nPOI; //<<2'>>_{2n|2n} per eta-bin | |
214 | TProfile* f3PerEtaBin2n1n1nPOI; //<<3'>>_{2n|n,n} per eta-bin | |
215 | TProfile* f3PerEtaBin1n1n2nPOI; //<<3'>>_{n,n|2n} per eta-bin | |
216 | TProfile* f4PerEtaBin1n1n1n1nPOI; //<<4'>>_{n,n|n,n} per eta-bin | |
bc92c0cb | 217 | |
cb308e83 | 218 | AliFlowCommonHist* fCommonHists2nd; //common control histograms for 2nd order |
219 | AliFlowCommonHist* fCommonHists4th; //common control histograms for 4th order | |
220 | AliFlowCommonHist* fCommonHists6th; //common control histograms for 6th order | |
221 | AliFlowCommonHist* fCommonHists8th; //common control histograms for 8th order | |
bc92c0cb | 222 | |
1315fe58 | 223 | AliFlowCommonHistResults* fCommonHistsResults2nd; //final results for 2nd order int. and diff. flow stored in the common histograms |
224 | AliFlowCommonHistResults* fCommonHistsResults4th; //final results for 4th order int. and diff. flow stored in the common histograms | |
225 | AliFlowCommonHistResults* fCommonHistsResults6th; //final results for 6th order int. and diff. flow stored in the common histograms | |
226 | AliFlowCommonHistResults* fCommonHistsResults8th; //final results for 8th order int. and diff. flow stored in the common histograms | |
1315fe58 | 227 | |
5e838eeb | 228 | TH1D* f2pDistribution; //distribution of <2>_{n|n} |
229 | TH1D* f4pDistribution; //distribution of <4>_{n,n|n,n} | |
230 | TH1D* f6pDistribution; //distribution of <6>_{n,n,n|n,n,n} | |
231 | TH1D* f8pDistribution; //distribution of <8>_{n,n,n,n|n,n,n,n} | |
dee1e0e0 | 232 | |
8842fb2b | 233 | Int_t fnBinsPt; //number of pt bins |
52021ae2 | 234 | Double_t fPtMin; //minimum pt |
1dfa3c16 | 235 | Double_t fPtMax; //maximum pt |
236 | ||
237 | Int_t fnBinsEta; //number of eta bins | |
238 | Double_t fEtaMin; //minimum eta | |
239 | Double_t fEtaMax; //maximum eta | |
52021ae2 | 240 | |
bc92c0cb | 241 | ClassDef(AliFlowAnalysisWithQCumulants, 0); |
242 | }; | |
243 | ||
244 | //================================================================================================================ | |
245 | ||
246 | #endif | |
247 | ||
248 | ||
249 | ||
250 | ||
251 |