]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FLOW/AliFlowCommon/AliFlowAnalysisWithCumulants.h
Coding violations fixed for const
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowCommon / AliFlowAnalysisWithCumulants.h
CommitLineData
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 20class TObjArray;
2188af53 21class TList;
22class TFile;
aaebd73d 23
2188af53 24class TH1;
aaebd73d 25class TProfile;
26class TProfile2D;
27class TProfile3D;
28
f1d945a1 29class AliFlowEventSimple;
30class AliFlowTrackSimple;
31class AliFlowCommonHist;
32class AliFlowCommonHistResults;
33class AliFlowVector;
34
2188af53 35//================================================================================================================
36
37class 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