]>
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(); | |
4057ba99 | 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 | |
7e58a232 | 62 | void SetCommonHists2nd(AliFlowCommonHist* const ch2nd) {this->fCommonHists2nd = ch2nd;}; |
63 | AliFlowCommonHist* GetCommonHists2nd() const {return this->fCommonHists2nd;}; | |
64 | ||
65 | void SetCommonHists4th(AliFlowCommonHist* const ch4th) {this->fCommonHists4th = ch4th;}; | |
66 | AliFlowCommonHist* GetCommonHists4th() const {return this->fCommonHists4th;}; | |
67 | ||
68 | void SetCommonHists6th(AliFlowCommonHist* const ch6th) {this->fCommonHists6th = ch6th;}; | |
69 | AliFlowCommonHist* GetCommonHists6th() const {return this->fCommonHists6th;}; | |
70 | ||
71 | void SetCommonHists8th(AliFlowCommonHist* const ch8th) {this->fCommonHists8th = ch8th;}; | |
72 | AliFlowCommonHist* GetCommonHists8th() const {return this->fCommonHists8th;}; | |
73 | ||
52021ae2 | 74 | void SetCommonHistsResults2nd(AliFlowCommonHistResults* const chr2nd) {this->fCommonHistsResults2nd = chr2nd;}; |
75 | AliFlowCommonHistResults* GetCommonHistsResults2nd() const {return this->fCommonHistsResults2nd;}; | |
8842fb2b | 76 | |
52021ae2 | 77 | void SetCommonHistsResults4th(AliFlowCommonHistResults* const chr4th) {this->fCommonHistsResults4th = chr4th;}; |
78 | AliFlowCommonHistResults* GetCommonHistsResults4th() const {return this->fCommonHistsResults4th;}; | |
8842fb2b | 79 | |
52021ae2 | 80 | void SetCommonHistsResults6th(AliFlowCommonHistResults* const chr6th) {this->fCommonHistsResults6th = chr6th;}; |
81 | AliFlowCommonHistResults* GetCommonHistsResults6th() const {return this->fCommonHistsResults6th;}; | |
8842fb2b | 82 | |
52021ae2 | 83 | void SetCommonHistsResults8th(AliFlowCommonHistResults* const chr8th) {this->fCommonHistsResults8th = chr8th;}; |
84 | AliFlowCommonHistResults* GetCommonHistsResults8th() const {return this->fCommonHistsResults8th;}; | |
8842fb2b | 85 | |
52021ae2 | 86 | void SetAverageMultiplicity(TProfile* const am) {this->fAvMultIntFlowQC = am;}; |
87 | TProfile* GetAverageMultiplicity() const {return this->fAvMultIntFlowQC;}; | |
8842fb2b | 88 | |
52021ae2 | 89 | void SetQCorrelations(TProfile* const QCorr) {this->fQCorrelations = QCorr;}; |
90 | TProfile* GetQCorrelations() const {return this->fQCorrelations;}; | |
8842fb2b | 91 | |
52021ae2 | 92 | void SetQProduct(TProfile* const qp) {this->fQProduct = qp;}; |
93 | TProfile* GetQProduct() const {return this->fQProduct;}; | |
8842fb2b | 94 | |
52021ae2 | 95 | void SetQVectorComponents(TProfile* const qvc) {this->fQvectorComponents = qvc;}; |
96 | TProfile* GetQVectorComponents() const {return this->fQvectorComponents;}; | |
8842fb2b | 97 | |
1dfa3c16 | 98 | void SetTwo1n1nPerPtBinRP(TProfile* const pb2PerPtBin1n1nRP) {this->f2PerPtBin1n1nRP = pb2PerPtBin1n1nRP;}; |
99 | TProfile* GetTwo1n1nPerPtBinRP() const {return this->f2PerPtBin1n1nRP;}; | |
8842fb2b | 100 | |
1dfa3c16 | 101 | void SetTwo2n2nPerPtBinRP(TProfile* const pb2PerPtBin2n2nRP) {this->f2PerPtBin2n2nRP = pb2PerPtBin2n2nRP;}; |
102 | TProfile* GetTwo2n2nPerPtBinRP() const {return this->f2PerPtBin2n2nRP;}; | |
8842fb2b | 103 | |
1dfa3c16 | 104 | void SetThree2n1n1nPerPtBinRP(TProfile* const pb3PerPtBin2n1n1nRP) {this->f3PerPtBin2n1n1nRP = pb3PerPtBin2n1n1nRP;}; |
105 | TProfile* GetThree2n1n1nPerPtBinRP() const {return this->f3PerPtBin2n1n1nRP;}; | |
8842fb2b | 106 | |
1dfa3c16 | 107 | void SetThree1n1n2nPerPtBinRP(TProfile* const pb3PerPtBin1n1n2nRP) {this->f3PerPtBin1n1n2nRP = pb3PerPtBin1n1n2nRP;}; |
108 | TProfile* GetThree1n1n2nPerPtBinRP() const {return this->f3PerPtBin1n1n2nRP;}; | |
8842fb2b | 109 | |
1dfa3c16 | 110 | void SetFour1n1n1n1nPerPtBinRP(TProfile* const pb4PerPtBin1n1n1n1nRP) {this->f4PerPtBin1n1n1n1nRP = pb4PerPtBin1n1n1n1nRP;}; |
111 | TProfile* GetFour1n1n1n1nPerPtBinRP() const {return this->f4PerPtBin1n1n1n1nRP;}; | |
112 | ||
113 | void SetTwo1n1nPerEtaBinRP(TProfile* const pb2PerEtaBin1n1nRP) {this->f2PerEtaBin1n1nRP = pb2PerEtaBin1n1nRP;}; | |
114 | TProfile* GetTwo1n1nPerEtaBinRP() const {return this->f2PerEtaBin1n1nRP;}; | |
115 | ||
116 | void SetTwo2n2nPerEtaBinRP(TProfile* const pb2PerEtaBin2n2nRP) {this->f2PerEtaBin2n2nRP = pb2PerEtaBin2n2nRP;}; | |
117 | TProfile* GetTwo2n2nPerEtaBinRP() const {return this->f2PerEtaBin2n2nRP;}; | |
118 | ||
119 | void SetThree2n1n1nPerEtaBinRP(TProfile* const pb3PerEtaBin2n1n1nRP) {this->f3PerEtaBin2n1n1nRP = pb3PerEtaBin2n1n1nRP;}; | |
120 | TProfile* GetThree2n1n1nPerEtaBinRP() const {return this->f3PerEtaBin2n1n1nRP;}; | |
121 | ||
122 | void SetThree1n1n2nPerEtaBinRP(TProfile* const pb3PerEtaBin1n1n2nRP) {this->f3PerEtaBin1n1n2nRP = pb3PerEtaBin1n1n2nRP;}; | |
123 | TProfile* GetThree1n1n2nPerEtaBinRP() const {return this->f3PerEtaBin1n1n2nRP;}; | |
124 | ||
125 | void SetFour1n1n1n1nPerEtaBinRP(TProfile* const pb4PerEtaBin1n1n1n1nRP) {this->f4PerEtaBin1n1n1n1nRP = pb4PerEtaBin1n1n1n1nRP;}; | |
126 | TProfile* GetFour1n1n1n1nPerEtaBinRP() const {return this->f4PerEtaBin1n1n1n1nRP;}; | |
127 | ||
128 | void SetTwo1n1nPerPtBinPOI(TProfile* const pb2PerPtBin1n1nPOI) {this->f2PerPtBin1n1nPOI = pb2PerPtBin1n1nPOI;}; | |
129 | TProfile* GetTwo1n1nPerPtBinPOI() const {return this->f2PerPtBin1n1nPOI;}; | |
130 | ||
131 | void SetTwo2n2nPerPtBinPOI(TProfile* const pb2PerPtBin2n2nPOI) {this->f2PerPtBin2n2nPOI = pb2PerPtBin2n2nPOI;}; | |
132 | TProfile* GetTwo2n2nPerPtBinPOI() const {return this->f2PerPtBin2n2nPOI;}; | |
133 | ||
134 | void SetThree2n1n1nPerPtBinPOI(TProfile* const pb3PerPtBin2n1n1nPOI) {this->f3PerPtBin2n1n1nPOI = pb3PerPtBin2n1n1nPOI;}; | |
135 | TProfile* GetThree2n1n1nPerPtBinPOI() const {return this->f3PerPtBin2n1n1nPOI;}; | |
136 | ||
137 | void SetThree1n1n2nPerPtBinPOI(TProfile* const pb3PerPtBin1n1n2nPOI) {this->f3PerPtBin1n1n2nPOI = pb3PerPtBin1n1n2nPOI;}; | |
138 | TProfile* GetThree1n1n2nPerPtBinPOI() const {return this->f3PerPtBin1n1n2nPOI;}; | |
139 | ||
140 | void SetFour1n1n1n1nPerPtBinPOI(TProfile* const pb4PerPtBin1n1n1n1nPOI) {this->f4PerPtBin1n1n1n1nPOI = pb4PerPtBin1n1n1n1nPOI;}; | |
141 | TProfile* GetFour1n1n1n1nPerPtBinPOI() const {return this->f4PerPtBin1n1n1n1nPOI;}; | |
142 | ||
143 | void SetTwo1n1nPerEtaBinPOI(TProfile* const pb2PerEtaBin1n1nPOI) {this->f2PerEtaBin1n1nPOI = pb2PerEtaBin1n1nPOI;}; | |
144 | TProfile* GetTwo1n1nPerEtaBinPOI() const {return this->f2PerEtaBin1n1nPOI;}; | |
145 | ||
146 | void SetTwo2n2nPerEtaBinPOI(TProfile* const pb2PerEtaBin2n2nPOI) {this->f2PerEtaBin2n2nPOI = pb2PerEtaBin2n2nPOI;}; | |
147 | TProfile* GetTwo2n2nPerEtaBinPOI() const {return this->f2PerEtaBin2n2nPOI;}; | |
148 | ||
149 | void SetThree2n1n1nPerEtaBinPOI(TProfile* const pb3PerEtaBin2n1n1nPOI) {this->f3PerEtaBin2n1n1nPOI = pb3PerEtaBin2n1n1nPOI;}; | |
150 | TProfile* GetThree2n1n1nPerEtaBinPOI() const {return this->f3PerEtaBin2n1n1nPOI;}; | |
151 | ||
152 | void SetThree1n1n2nPerEtaBinPOI(TProfile* const pb3PerEtaBin1n1n2nPOI) {this->f3PerEtaBin1n1n2nPOI = pb3PerEtaBin1n1n2nPOI;}; | |
153 | TProfile* GetThree1n1n2nPerEtaBinPOI() const {return this->f3PerEtaBin1n1n2nPOI;}; | |
154 | ||
155 | void SetFour1n1n1n1nPerEtaBinPOI(TProfile* const pb4PerEtaBin1n1n1n1nPOI) {this->f4PerEtaBin1n1n1n1nPOI = pb4PerEtaBin1n1n1n1nPOI;}; | |
156 | TProfile* GetFour1n1n1n1nPerEtaBinPOI() const {return this->f4PerEtaBin1n1n1n1nPOI;}; | |
8842fb2b | 157 | |
52021ae2 | 158 | void SetDirectCorrelations(TProfile* const dc) {this->fDirectCorrelations = dc;}; |
159 | TProfile* GetDirectCorrelations() const {return this->fDirectCorrelations;}; | |
8842fb2b | 160 | //---------------------------------------------------------------------------------------------------------------- |
161 | ||
bc92c0cb | 162 | private: |
163 | AliFlowAnalysisWithQCumulants(const AliFlowAnalysisWithQCumulants& afawQc); | |
164 | AliFlowAnalysisWithQCumulants& operator=(const AliFlowAnalysisWithQCumulants& afawQc); | |
8842fb2b | 165 | |
166 | AliFlowTrackSimple* fTrack; //track | |
167 | TList* fHistList; //list to hold all output histograms | |
168 | TProfile* fAvMultIntFlowQC; //average selected multiplicity (for int. flow) | |
bc92c0cb | 169 | |
8842fb2b | 170 | TProfile* fQvectorComponents; //averages of Q-vector components (1st bin: <Q_x>, 2nd bin: <Q_y>, ...) |
bc92c0cb | 171 | |
8842fb2b | 172 | TH1D* fIntFlowResultsQC; //integrated flow results from Q-cumulants |
173 | TH1D* fDiffFlowResults2ndOrderQC; //differential flow results from 2nd order Q-cumulant | |
174 | TH1D* fDiffFlowResults4thOrderQC; //differential flow results from 4th order Q-cumulant | |
175 | TH1D* fCovariances; //final results for covariances: 1st bin: <2*4>-<2>*<4>, 2nd bin: <2*6>-<2>*<6>, ... | |
176 | ||
177 | TProfile* fQCorrelations; //multi-particle correlations calculated from Q-vectors | |
178 | TProfile* fQProduct; //average of products: 1st bin: <2*4>, 2nd bin: <2*6>, ... | |
179 | ||
180 | TProfile* fDirectCorrelations; //multi-particle correlations calculated with nested loop | |
8842fb2b | 181 | |
1dfa3c16 | 182 | //RP (Reaction Plane particles): |
183 | TProfile* fPtReq1nRP; //real part of q-vector evaluated in harmonic n for each pt-bin | |
184 | TProfile* fPtImq1nRP; //imaginary part of q-vector evaluated in harmonic n for each pt-bin | |
185 | TProfile* fPtReq2nRP; //real part of q-vector evaluated in harmonic 2n for each pt-bin | |
186 | TProfile* fPtImq2nRP; //imaginary part of q-vector evaluated in harmonic 2n for each pt-bin | |
187 | ||
188 | TProfile* f2PerPtBin1n1nRP; //<<2'>>_{n|n} per pt-bin | |
189 | TProfile* f2PerPtBin2n2nRP; //<<2'>>_{2n|2n} per pt-bin | |
190 | TProfile* f3PerPtBin2n1n1nRP; //<<3'>>_{2n|n,n} per pt-bin | |
191 | TProfile* f3PerPtBin1n1n2nRP; //<<3'>>_{n,n|2n} per pt-bin | |
192 | TProfile* f4PerPtBin1n1n1n1nRP; //<<4'>>_{n,n|n,n} per pt-bin | |
193 | ||
194 | TProfile* fEtaReq1nRP; //real part of q-vector evaluated in harmonic n for each eta-bin | |
195 | TProfile* fEtaImq1nRP; //imaginary part of q-vector evaluated in harmonic n for each eta-bin | |
196 | TProfile* fEtaReq2nRP; //real part of q-vector evaluated in harmonic 2n for each eta-bin | |
197 | TProfile* fEtaImq2nRP; //imaginary part of q-vector evaluated in harmonic 2n for each eta-bin | |
198 | ||
199 | TProfile* f2PerEtaBin1n1nRP; //<<2'>>_{n|n} per eta-bin | |
200 | TProfile* f2PerEtaBin2n2nRP; //<<2'>>_{2n|2n} per eta-bin | |
201 | TProfile* f3PerEtaBin2n1n1nRP; //<<3'>>_{2n|n,n} per eta-bin | |
202 | TProfile* f3PerEtaBin1n1n2nRP; //<<3'>>_{n,n|2n} per eta-bin | |
203 | TProfile* f4PerEtaBin1n1n1n1nRP; //<<4'>>_{n,n|n,n} per eta-bin | |
204 | ||
205 | //POI (Particles Of Interest): | |
4057ba99 | 206 | TProfile* fPtReq1nPrimePOI; //real part of q'-vector evaluated in harmonic n for each pt-bin |
207 | TProfile* fPtImq1nPrimePOI; //imaginary part of q'-vector evaluated in harmonic n for each pt-bin | |
208 | TProfile* fPtReq2nPrimePOI; //real part of q'-vector evaluated in harmonic 2n for each pt-bin | |
209 | TProfile* fPtImq2nPrimePOI; //imaginary part of q'-vector evaluated in harmonic 2n for each pt-bin | |
210 | TProfile* fmPrimePerPtBin; //number of particles selected both as POI and not as RP per each pt-bin | |
211 | ||
212 | TProfile* fPtReq1nPrimePrimePOI; //real part of q''-vector evaluated in harmonic n for each pt-bin | |
213 | TProfile* fPtImq1nPrimePrimePOI; //imaginary part of q''-vector evaluated in harmonic n for each pt-bin | |
214 | TProfile* fPtReq2nPrimePrimePOI; //real part of q''-vector evaluated in harmonic 2n for each pt-bin | |
215 | TProfile* fPtImq2nPrimePrimePOI; //imaginary part of q''-vector evaluated in harmonic 2n for each pt-bin | |
216 | TProfile* fmPrimePrimePerPtBin; //number of particles selected both as RP and POI per each pt-bin | |
217 | ||
218 | TProfile* fEtaReq1nPrimePOI; //real part of q'-vector evaluated in harmonic n for each eta-bin | |
219 | TProfile* fEtaImq1nPrimePOI; //imaginary part of q'-vector evaluated in harmonic n for each eta-bin | |
220 | TProfile* fEtaReq2nPrimePOI; //real part of q'-vector evaluated in harmonic 2n for each eta-bin | |
221 | TProfile* fEtaImq2nPrimePOI; //imaginary part of q'-vector evaluated in harmonic 2n for each eta-bin | |
222 | TProfile* fmPrimePerEtaBin; //number of particles selected both as POI and not as RP per each eta-bin | |
223 | ||
224 | ||
225 | TProfile* fEtaReq1nPrimePrimePOI; //real part of q''-vector evaluated in harmonic n for each eta-bin | |
226 | TProfile* fEtaImq1nPrimePrimePOI; //imaginary part of q''-vector evaluated in harmonic n for each eta-bin | |
227 | TProfile* fEtaReq2nPrimePrimePOI; //real part of q''-vector evaluated in harmonic 2n for each eta-bin | |
228 | TProfile* fEtaImq2nPrimePrimePOI; //imaginary part of q''-vector evaluated in harmonic 2n for each eta-bin | |
229 | TProfile* fmPrimePrimePerEtaBin; //number of particles selected both as RP and POI in each eta-bin | |
230 | ||
1dfa3c16 | 231 | TProfile* f2PerPtBin1n1nPOI; //<<2'>>_{n|n} per pt-bin |
232 | TProfile* f2PerPtBin2n2nPOI; //<<2'>>_{2n|2n} per pt-bin | |
233 | TProfile* f3PerPtBin2n1n1nPOI; //<<3'>>_{2n|n,n} per pt-bin | |
234 | TProfile* f3PerPtBin1n1n2nPOI; //<<3'>>_{n,n|2n} per pt-bin | |
235 | TProfile* f4PerPtBin1n1n1n1nPOI; //<<4'>>_{n,n|n,n} per pt-bin | |
1dfa3c16 | 236 | |
237 | TProfile* f2PerEtaBin1n1nPOI; //<<2'>>_{n|n} per eta-bin | |
238 | TProfile* f2PerEtaBin2n2nPOI; //<<2'>>_{2n|2n} per eta-bin | |
239 | TProfile* f3PerEtaBin2n1n1nPOI; //<<3'>>_{2n|n,n} per eta-bin | |
240 | TProfile* f3PerEtaBin1n1n2nPOI; //<<3'>>_{n,n|2n} per eta-bin | |
241 | TProfile* f4PerEtaBin1n1n1n1nPOI; //<<4'>>_{n,n|n,n} per eta-bin | |
bc92c0cb | 242 | |
7e58a232 | 243 | AliFlowCommonHist* fCommonHists2nd; //common control histograms (taking into account only the events with 2 and more particles) |
244 | AliFlowCommonHist* fCommonHists4th; //common control histograms (taking into account only the events with 4 and more particles) | |
245 | AliFlowCommonHist* fCommonHists6th; //common control histograms (taking into account only the events with 6 and more particles) | |
246 | AliFlowCommonHist* fCommonHists8th; //common control histograms (taking into account only the events with 8 and more particles) | |
bc92c0cb | 247 | |
1315fe58 | 248 | AliFlowCommonHistResults* fCommonHistsResults2nd; //final results for 2nd order int. and diff. flow stored in the common histograms |
249 | AliFlowCommonHistResults* fCommonHistsResults4th; //final results for 4th order int. and diff. flow stored in the common histograms | |
250 | AliFlowCommonHistResults* fCommonHistsResults6th; //final results for 6th order int. and diff. flow stored in the common histograms | |
251 | AliFlowCommonHistResults* fCommonHistsResults8th; //final results for 8th order int. and diff. flow stored in the common histograms | |
1315fe58 | 252 | |
5e838eeb | 253 | TH1D* f2pDistribution; //distribution of <2>_{n|n} |
254 | TH1D* f4pDistribution; //distribution of <4>_{n,n|n,n} | |
255 | TH1D* f6pDistribution; //distribution of <6>_{n,n,n|n,n,n} | |
256 | TH1D* f8pDistribution; //distribution of <8>_{n,n,n,n|n,n,n,n} | |
dee1e0e0 | 257 | |
8842fb2b | 258 | Int_t fnBinsPt; //number of pt bins |
52021ae2 | 259 | Double_t fPtMin; //minimum pt |
1dfa3c16 | 260 | Double_t fPtMax; //maximum pt |
261 | ||
262 | Int_t fnBinsEta; //number of eta bins | |
263 | Double_t fEtaMin; //minimum eta | |
264 | Double_t fEtaMax; //maximum eta | |
52021ae2 | 265 | |
bc92c0cb | 266 | ClassDef(AliFlowAnalysisWithQCumulants, 0); |
267 | }; | |
268 | ||
269 | //================================================================================================================ | |
270 | ||
271 | #endif | |
272 | ||
273 | ||
274 | ||
275 | ||
276 |