]>
Commit | Line | Data |
---|---|---|
2188af53 | 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 cumulants * | |
9 | * * | |
10 | * author: Ante Bilandzic * | |
11 | * (anteb@nikhef.nl) * | |
12 | *******************************/ | |
13 | ||
b6cd16a9 | 14 | #ifndef ALIFLOWANALYSISWITHCUMULANTS_H |
15 | #define ALIFLOWANALYSISWITHCUMULANTS_H | |
f1d945a1 | 16 | |
f1d945a1 | 17 | #include "AliFlowCommonConstants.h" |
18 | #include "AliFlowCumuConstants.h" | |
19 | ||
f1d945a1 | 20 | class TObjArray; |
2188af53 | 21 | class TList; |
22 | class TFile; | |
aaebd73d | 23 | |
2188af53 | 24 | class TH1; |
aaebd73d | 25 | class TProfile; |
26 | class TProfile2D; | |
27 | class TProfile3D; | |
28 | ||
f1d945a1 | 29 | class AliFlowEventSimple; |
30 | class AliFlowTrackSimple; | |
31 | class AliFlowCommonHist; | |
32 | class AliFlowCommonHistResults; | |
33 | class AliFlowVector; | |
34 | ||
2188af53 | 35 | //================================================================================================================ |
36 | ||
37 | class AliFlowAnalysisWithCumulants{ | |
f1d945a1 | 38 | public: |
39 | AliFlowAnalysisWithCumulants(); | |
2188af53 | 40 | virtual ~AliFlowAnalysisWithCumulants(); |
729ec982 | 41 | |
f1d945a1 | 42 | virtual void CreateOutputObjects(); |
dce74562 | 43 | virtual void Make(AliFlowEventSimple* anEvent); |
44 | virtual void Finish(); | |
1315fe58 | 45 | virtual void WriteHistograms(TString* outputFileName); |
b0fda271 | 46 | virtual void WriteHistograms(TString outputFileName); |
aaebd73d | 47 | |
52021ae2 | 48 | //---------------------------------------------------------------------------------------------------------------- |
813a4157 | 49 | // setters and getters fBinWidth |
52021ae2 | 50 | //---------------------------------------------------------------------------------------------------------------- |
2188af53 | 51 | TList* GetHistList() const {return this->fHistList;} //output histogram list |
52021ae2 | 52 | |
5270f185 | 53 | void SetIntFlowResults(TH1D* const ifr) {this->fIntFlowResultsGFC = ifr;}; |
52021ae2 | 54 | TH1D* GetIntFlowResults() const {return this->fIntFlowResultsGFC;}; |
55 | ||
5270f185 | 56 | void SetDiffFlowResults2nd(TH1D* const diff2nd) {this->fDiffFlowResults2ndOrderGFC = diff2nd;}; |
52021ae2 | 57 | TH1D* GetDiffFlowResults2nd() const {return this->fDiffFlowResults2ndOrderGFC;}; |
58 | ||
5270f185 | 59 | void SetDiffFlowResults4th(TH1D* const diff4th) {this->fDiffFlowResults4thOrderGFC = diff4th;}; |
52021ae2 | 60 | TH1D* GetDiffFlowResults4th() const {return this->fDiffFlowResults4thOrderGFC;}; |
61 | ||
5270f185 | 62 | void SetDiffFlowResults6th(TH1D* const diff6th) {this->fDiffFlowResults6thOrderGFC = diff6th;}; |
52021ae2 | 63 | TH1D* GetDiffFlowResults6th() const {return this->fDiffFlowResults6thOrderGFC;}; |
64 | ||
5270f185 | 65 | void SetDiffFlowResults8th(TH1D* const diff8th) {this->fDiffFlowResults8thOrderGFC = diff8th;}; |
52021ae2 | 66 | TH1D* GetDiffFlowResults8th() const {return this->fDiffFlowResults8thOrderGFC;}; |
67 | ||
5270f185 | 68 | void SetCommonHistsResults2nd(AliFlowCommonHistResults* const chr2nd) {this->fCommonHistsResults2nd = chr2nd;}; |
52021ae2 | 69 | AliFlowCommonHistResults* GetCommonHistsResults2nd() const {return this->fCommonHistsResults2nd;}; |
70 | ||
5270f185 | 71 | void SetCommonHistsResults4th(AliFlowCommonHistResults* const chr4th) {this->fCommonHistsResults4th = chr4th;}; |
52021ae2 | 72 | AliFlowCommonHistResults* GetCommonHistsResults4th() const {return this->fCommonHistsResults4th;}; |
73 | ||
5270f185 | 74 | void SetCommonHistsResults6th(AliFlowCommonHistResults* const chr6th) {this->fCommonHistsResults6th = chr6th;}; |
52021ae2 | 75 | AliFlowCommonHistResults* GetCommonHistsResults6th() const {return this->fCommonHistsResults6th;}; |
76 | ||
5270f185 | 77 | void SetCommonHistsResults8th(AliFlowCommonHistResults* const chr8th) {this->fCommonHistsResults8th = chr8th;}; |
52021ae2 | 78 | AliFlowCommonHistResults* GetCommonHistsResults8th() const {return this->fCommonHistsResults8th;}; |
79 | ||
5270f185 | 80 | void SetIntFlowGenFun(TProfile2D* const ifgf) {this->fIntFlowGenFun = ifgf;}; |
b6cd16a9 | 81 | TProfile2D* GetIntFlowGenFun() const {return this->fIntFlowGenFun;}; |
82 | ||
5270f185 | 83 | void SetIntFlowGenFun4(TProfile2D* const ifgf4) {this->fIntFlowGenFun4 = ifgf4;}; //(only for other system of Eq.) |
cb308e83 | 84 | TProfile2D* GetIntFlowGenFun4() const {return this->fIntFlowGenFun4;}; //(only for other system of Eq.) |
b6cd16a9 | 85 | |
5270f185 | 86 | void SetIntFlowGenFun6(TProfile2D* const ifgf6) {this->fIntFlowGenFun6 = ifgf6;}; //(only for other system of Eq.) |
cb308e83 | 87 | TProfile2D* GetIntFlowGenFun6() const {return this->fIntFlowGenFun6;}; //(only for other system of Eq.) |
b6cd16a9 | 88 | |
5270f185 | 89 | void SetIntFlowGenFun8(TProfile2D* const ifgf8) {this->fIntFlowGenFun8 = ifgf8;}; //(only for other system of Eq.) |
cb308e83 | 90 | TProfile2D* GetIntFlowGenFun8() const {return this->fIntFlowGenFun8;}; //(only for other system of Eq.) |
52021ae2 | 91 | |
5270f185 | 92 | void SetIntFlowGenFun16(TProfile2D* const ifgf16) {this->fIntFlowGenFun16 = ifgf16;}; //(only for other system of Eq.) |
cb308e83 | 93 | TProfile2D* GetIntFlowGenFun16() const {return this->fIntFlowGenFun16;}; //(only for other system of Eq.) |
b6cd16a9 | 94 | |
5270f185 | 95 | void SetAverageMultiplicity4(TProfile* const am4) {this->fAvMultIntFlow4GFC = am4;}; //(only for other system of Eq.) |
cb308e83 | 96 | TProfile* GetAverageMultiplicity4() const {return this->fAvMultIntFlow4GFC;}; //(only for other system of Eq.) |
97 | ||
5270f185 | 98 | void SetAverageMultiplicity6(TProfile* const am6) {this->fAvMultIntFlow6GFC = am6;}; //(only for other system of Eq.) |
cb308e83 | 99 | TProfile* GetAverageMultiplicity6() const {return this->fAvMultIntFlow6GFC;}; //(only for other system of Eq.) |
100 | ||
5270f185 | 101 | void SetAverageMultiplicity8(TProfile* const am8) {this->fAvMultIntFlow8GFC = am8;}; //(only for other system of Eq.) |
cb308e83 | 102 | TProfile* GetAverageMultiplicity8() const {return this->fAvMultIntFlow8GFC;}; //(only for other system of Eq.) |
103 | ||
5270f185 | 104 | void SetAverageMultiplicity16(TProfile* const am16) {this->fAvMultIntFlow16GFC = am16;}; //(only for other system of Eq.) |
cb308e83 | 105 | TProfile* GetAverageMultiplicity16() const {return this->fAvMultIntFlow16GFC;}; //(only for other system of Eq.) |
52021ae2 | 106 | |
813a4157 | 107 | //---------------------------------------------------------------------------------------------------------- |
108 | //RP = Reaction Plane (RP denotes particles used to determine the reaction plane) | |
5270f185 | 109 | void SetDiffFlowPtRPGenFunRe(TProfile3D* const dfRPPtgfRe) {this->fDiffFlowPtRPGenFunRe = dfRPPtgfRe;}; |
813a4157 | 110 | TProfile3D* GetDiffFlowPtRPGenFunRe() const {return this->fDiffFlowPtRPGenFunRe;}; |
111 | ||
5270f185 | 112 | void SetDiffFlowPtRPGenFunIm(TProfile3D* const dfRPPtgfIm) {this->fDiffFlowPtRPGenFunIm = dfRPPtgfIm;}; |
813a4157 | 113 | TProfile3D* GetDiffPtRPFlowGenFunIm() const {return this->fDiffFlowPtRPGenFunIm;}; |
114 | ||
5270f185 | 115 | void SetNumberOfParticlesPerPtBinRP(TProfile* const nopppbRP) {this->fPtBinRPNoOfParticles = nopppbRP;}; |
813a4157 | 116 | TProfile* GetNumberOfParticlesPerPtBinRP() const {return this->fPtBinRPNoOfParticles;}; |
117 | ||
5270f185 | 118 | void SetDiffFlowEtaRPGenFunRe(TProfile3D* const dfEtaRPgfRe) {this->fDiffFlowEtaRPGenFunRe = dfEtaRPgfRe;}; |
813a4157 | 119 | TProfile3D* GetDiffFlowEtaRPGenFunRe() const {return this->fDiffFlowEtaRPGenFunRe;}; |
120 | ||
5270f185 | 121 | void SetDiffFlowEtaRPGenFunIm(TProfile3D* const dfEtaRPgfIm) {this->fDiffFlowEtaRPGenFunIm = dfEtaRPgfIm;}; |
813a4157 | 122 | TProfile3D* GetDiffFlowEtaRPGenFunIm() const {return this->fDiffFlowEtaRPGenFunIm;}; |
123 | ||
5270f185 | 124 | void SetNumberOfParticlesPerEtaBinRP(TProfile* const noppebRP) {this->fEtaBinRPNoOfParticles = noppebRP;}; |
813a4157 | 125 | TProfile* GetNumberOfParticlesPerEtaBinRP() const {return this->fEtaBinRPNoOfParticles;}; |
126 | //---------------------------------------------------------------------------------------------------------- | |
127 | ||
128 | //---------------------------------------------------------------------------------------------------------- | |
129 | //POI = Particles Of Interest (POI denotes particles of interest for the final physical results for int. and diff. flow) | |
5270f185 | 130 | void SetDiffFlowPtPOIGenFunRe(TProfile3D* const dfPOIPtgfRe) {this->fDiffFlowPtPOIGenFunRe = dfPOIPtgfRe;}; |
813a4157 | 131 | TProfile3D* GetDiffFlowPtPOIGenFunRe() const {return this->fDiffFlowPtPOIGenFunRe;}; |
132 | ||
5270f185 | 133 | void SetDiffFlowPtPOIGenFunIm(TProfile3D* const dfPOIPtgfIm) {this->fDiffFlowPtPOIGenFunIm = dfPOIPtgfIm;}; |
813a4157 | 134 | TProfile3D* GetDiffPtPOIFlowGenFunIm() const {return this->fDiffFlowPtPOIGenFunIm;}; |
52021ae2 | 135 | |
5270f185 | 136 | void SetNumberOfParticlesPerPtBinPOI(TProfile* const nopppbPOI) {this->fPtBinPOINoOfParticles = nopppbPOI;}; |
813a4157 | 137 | TProfile* GetNumberOfParticlesPerPtBinPOI() const {return this->fPtBinPOINoOfParticles;}; |
52021ae2 | 138 | |
5270f185 | 139 | void SetDiffFlowEtaPOIGenFunRe(TProfile3D* const dfEtaPOIgfRe) {this->fDiffFlowEtaPOIGenFunRe = dfEtaPOIgfRe;}; |
813a4157 | 140 | TProfile3D* GetDiffFlowEtaPOIGenFunRe() const {return this->fDiffFlowEtaPOIGenFunRe;}; |
141 | ||
5270f185 | 142 | void SetDiffFlowEtaPOIGenFunIm(TProfile3D* const dfEtaPOIgfIm) {this->fDiffFlowEtaPOIGenFunIm = dfEtaPOIgfIm;}; |
813a4157 | 143 | TProfile3D* GetDiffFlowEtaPOIGenFunIm() const {return this->fDiffFlowEtaPOIGenFunIm;}; |
144 | ||
5270f185 | 145 | void SetNumberOfParticlesPerEtaBinPOI(TProfile* const noppebPOI) {this->fEtaBinPOINoOfParticles = noppebPOI;}; |
813a4157 | 146 | TProfile* GetNumberOfParticlesPerEtaBinPOI() const {return this->fEtaBinPOINoOfParticles;}; |
147 | //---------------------------------------------------------------------------------------------------------- | |
148 | ||
5270f185 | 149 | void SetAverageMultiplicity(TProfile* const am) {this->fAvMultIntFlowGFC = am;}; |
52021ae2 | 150 | TProfile* GetAverageMultiplicity() const {return this->fAvMultIntFlowGFC;}; |
151 | ||
5270f185 | 152 | void SetQVectorComponents(TProfile* const sqvc) {this->fQVectorComponentsGFC = sqvc;}; |
52021ae2 | 153 | TProfile* GetQVectorComponents() const {return this->fQVectorComponentsGFC;}; |
813a4157 | 154 | |
5270f185 | 155 | void SetCommonHists(AliFlowCommonHist* const ch) {this->fCommonHists = ch;}; |
813a4157 | 156 | AliFlowCommonHist* GetCommonHists() const {return this->fCommonHists;}; |
52021ae2 | 157 | //---------------------------------------------------------------------------------------------------------------- |
924fafb7 | 158 | |
2188af53 | 159 | private: |
160 | AliFlowAnalysisWithCumulants(const AliFlowAnalysisWithCumulants& afawc); | |
161 | AliFlowAnalysisWithCumulants& operator=(const AliFlowAnalysisWithCumulants& afawc); | |
b6cd16a9 | 162 | AliFlowTrackSimple* fTrack; //track |
163 | static const Int_t fgkQmax = AliFlowCumuConstants::kQmax; //needed for numerics | |
164 | static const Int_t fgkPmax = AliFlowCumuConstants::kPmax; //needed for numerics | |
813a4157 | 165 | static const Int_t fgkQmax4 = AliFlowCumuConstants::kQmax4; //needed for numerics (only for different system of Eq.) |
166 | static const Int_t fgkPmax4 = AliFlowCumuConstants::kPmax4; //needed for numerics (only for different system of Eq.) | |
167 | static const Int_t fgkQmax6 = AliFlowCumuConstants::kQmax6; //needed for numerics (only for different system of Eq.) | |
168 | static const Int_t fgkPmax6 = AliFlowCumuConstants::kPmax6; //needed for numerics (only for different system of Eq.) | |
169 | static const Int_t fgkQmax8 = AliFlowCumuConstants::kQmax8; //needed for numerics (only for different system of Eq.) | |
170 | static const Int_t fgkPmax8 = AliFlowCumuConstants::kPmax8; //needed for numerics (only for different system of Eq.) | |
171 | static const Int_t fgkQmax16 = AliFlowCumuConstants::kQmax16; //needed for numerics (only for different system of Eq.) | |
172 | static const Int_t fgkPmax16 = AliFlowCumuConstants::kPmax16; //needed for numerics (only for different system of Eq.) | |
b6cd16a9 | 173 | static const Int_t fgkFlow = AliFlowCumuConstants::kFlow; //integrated flow coefficient to be calculated |
174 | static const Int_t fgkMltpl = AliFlowCumuConstants::kMltpl; //the multiple in p=m*n (diff. flow) | |
175 | TList* fHistList; //list to hold all output histograms | |
2188af53 | 176 | |
813a4157 | 177 | Double_t fR0; //needed for numerics |
178 | Double_t fPtMax; //maximum pt | |
179 | Double_t fPtMin; //minimum pt | |
180 | Double_t fBinWidthPt; //width of pt bin (in GeV) | |
181 | Int_t fgknBinsPt; //number of pt bins | |
182 | ||
183 | Double_t fEtaMax; //maximum pt | |
184 | Double_t fEtaMin; //minimum pt | |
185 | Double_t fBinWidthEta; //width of pt bin (in GeV) | |
186 | Int_t fgknBinsEta; //number of pt bins | |
f1d945a1 | 187 | |
2188af53 | 188 | Double_t fAvQx; //<Q_x> |
189 | Double_t fAvQy; //<Q_y> | |
190 | Double_t fAvQ2x; //<(Q_x)^2> | |
191 | Double_t fAvQ2y; //<(Q_y)^2> | |
192 | ||
b6cd16a9 | 193 | TProfile* fAvMultIntFlowGFC; //average selected multiplicity |
2188af53 | 194 | |
52021ae2 | 195 | TProfile* fQVectorComponentsGFC; //averages of Q-vector components (1st bin: <Q_x>, 2nd bin: <Q_y>, 3rd bin: <(Q_x)^2>, 4th bin: <(Q_y)^2>) |
2188af53 | 196 | |
b6cd16a9 | 197 | TH1D* fIntFlowResultsGFC; //integrated flow final results |
aaebd73d | 198 | |
52021ae2 | 199 | TH1D* fDiffFlowResults2ndOrderGFC; //differential flow final results (2nd order estimate) |
200 | TH1D* fDiffFlowResults4thOrderGFC; //differential flow final results (4th order estimate) | |
201 | TH1D* fDiffFlowResults6thOrderGFC; //differential flow final results (6th order estimate) | |
202 | TH1D* fDiffFlowResults8thOrderGFC; //differential flow final results (8th order estimate) | |
203 | ||
b6cd16a9 | 204 | AliFlowCommonHistResults* fCommonHistsResults2nd; //final results for 2nd order int. and diff. flow stored in the common histograms |
205 | AliFlowCommonHistResults* fCommonHistsResults4th; //final results for 4th order int. and diff. flow stored in the common histograms | |
206 | AliFlowCommonHistResults* fCommonHistsResults6th; //final results for 6th order int. and diff. flow stored in the common histograms | |
207 | AliFlowCommonHistResults* fCommonHistsResults8th; //final results for 8th order int. and diff. flow stored in the common histograms | |
208 | ||
209 | TProfile2D* fIntFlowGenFun; //avarage of the generating function for integrated flow | |
cb308e83 | 210 | |
211 | TProfile2D* fIntFlowGenFun4; //avarage of the generating function for integrated flow (only for different system of Eq.) | |
212 | TProfile2D* fIntFlowGenFun6; //avarage of the generating function for integrated flow (only for different system of Eq.) | |
213 | TProfile2D* fIntFlowGenFun8; //avarage of the generating function for integrated flow (only for different system of Eq.) | |
214 | TProfile2D* fIntFlowGenFun16; //avarage of the generating function for integrated flow (only for different system of Eq.) | |
215 | ||
216 | TProfile* fAvMultIntFlow4GFC; //average selected multiplicity (only for different system of Eq.) | |
217 | TProfile* fAvMultIntFlow6GFC; //average selected multiplicity (only for different system of Eq.) | |
218 | TProfile* fAvMultIntFlow8GFC; //average selected multiplicity (only for different system of Eq.) | |
219 | TProfile* fAvMultIntFlow16GFC; //average selected multiplicity (only for different system of Eq.) | |
813a4157 | 220 | |
221 | //RP = Reaction Plane (RP denotes particles used to determine the reaction plane) | |
222 | TProfile3D* fDiffFlowPtRPGenFunRe; //avarage of the generating function for differential flow in Pt (real part) | |
223 | TProfile3D* fDiffFlowPtRPGenFunIm; //avarage of the generating function for differential flow in Pt (imaginary part) | |
224 | TProfile* fPtBinRPNoOfParticles; //number of particles per pt bin | |
225 | TProfile3D* fDiffFlowEtaRPGenFunRe; //avarage of the generating function for differential flow in Eta (real part) | |
226 | TProfile3D* fDiffFlowEtaRPGenFunIm; //avarage of the generating function for differential flow in Eta (imaginary part) | |
227 | TProfile* fEtaBinRPNoOfParticles; //number of particles per eta bin | |
228 | ||
229 | //POI = Particles Of Interest (POI denotes particles of interest for the final physical results for int. and diff. flow) | |
230 | TProfile3D* fDiffFlowPtPOIGenFunRe; //avarage of the generating function for differential flow in Pt (real part) | |
231 | TProfile3D* fDiffFlowPtPOIGenFunIm; //avarage of the generating function for differential flow in Pt (imaginary part) | |
232 | TProfile* fPtBinPOINoOfParticles; //number of particles per pt bin | |
233 | TProfile3D* fDiffFlowEtaPOIGenFunRe; //avarage of the generating function for differential flow in Eta (real part) | |
234 | TProfile3D* fDiffFlowEtaPOIGenFunIm; //avarage of the generating function for differential flow in Eta (imaginary part) | |
235 | TProfile* fEtaBinPOINoOfParticles; //number of particles per eta bin | |
aaebd73d | 236 | |
52021ae2 | 237 | /* |
2188af53 | 238 | TProfile2D *fDiffFlowGenFunRe0,*fDiffFlowGenFunRe1,*fDiffFlowGenFunRe2,*fDiffFlowGenFunRe3;//differential flow |
239 | TProfile2D *fDiffFlowGenFunRe4,*fDiffFlowGenFunRe5,*fDiffFlowGenFunRe6,*fDiffFlowGenFunRe7;//differential flow | |
240 | TProfile2D *fDiffFlowGenFunIm0,*fDiffFlowGenFunIm1,*fDiffFlowGenFunIm2,*fDiffFlowGenFunIm3;//differential flow | |
241 | TProfile2D *fDiffFlowGenFunIm4,*fDiffFlowGenFunIm5,*fDiffFlowGenFunIm6,*fDiffFlowGenFunIm7;//differential flow | |
52021ae2 | 242 | */ |
2188af53 | 243 | |
244 | AliFlowCommonHist* fCommonHists; //common control histograms | |
b6cd16a9 | 245 | |
246 | Bool_t fOtherEquations; //numerical equations for cumulants solved up to different highest order | |
2188af53 | 247 | |
f1d945a1 | 248 | ClassDef(AliFlowAnalysisWithCumulants, 0); |
249 | }; | |
2188af53 | 250 | |
251 | //================================================================================================================ | |
252 | ||
f1d945a1 | 253 | #endif |
254 | ||
255 | ||
aaebd73d | 256 | |
257 | ||
258 |