2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved.
3 * See cxx source for full Copyright notice
7 /********************************
8 * flow analysis with cumulants *
10 * author: Ante Bilandzic *
12 *******************************/
14 #ifndef ALIFLOWANALYSISWITHCUMULANTS_H
15 #define ALIFLOWANALYSISWITHCUMULANTS_H
17 #include "AliFlowCommonConstants.h"
18 #include "AliFlowCumuConstants.h"
29 class AliFlowEventSimple;
30 class AliFlowTrackSimple;
31 class AliFlowCommonHist;
32 class AliFlowCommonHistResults;
35 //================================================================================================================
37 class AliFlowAnalysisWithCumulants{
39 AliFlowAnalysisWithCumulants();
40 virtual ~AliFlowAnalysisWithCumulants();
42 virtual void CreateOutputObjects();
43 virtual void Make(AliFlowEventSimple* anEvent);
44 virtual void Finish();
45 virtual void WriteHistograms(TString* outputFileName);
47 //----------------------------------------------------------------------------------------------------------------
48 // setters and getters
49 //----------------------------------------------------------------------------------------------------------------
50 TList* GetHistList() const {return this->fHistList;} //output histogram list
52 void SetIntFlowResults(TH1D* ifr) {this->fIntFlowResultsGFC = ifr;};
53 TH1D* GetIntFlowResults() const {return this->fIntFlowResultsGFC;};
55 void SetDiffFlowResults2nd(TH1D* diff2nd) {this->fDiffFlowResults2ndOrderGFC = diff2nd;};
56 TH1D* GetDiffFlowResults2nd() const {return this->fDiffFlowResults2ndOrderGFC;};
58 void SetDiffFlowResults4th(TH1D* diff4th) {this->fDiffFlowResults4thOrderGFC = diff4th;};
59 TH1D* GetDiffFlowResults4th() const {return this->fDiffFlowResults4thOrderGFC;};
61 void SetDiffFlowResults6th(TH1D* diff6th) {this->fDiffFlowResults6thOrderGFC = diff6th;};
62 TH1D* GetDiffFlowResults6th() const {return this->fDiffFlowResults6thOrderGFC;};
64 void SetDiffFlowResults8th(TH1D* diff8th) {this->fDiffFlowResults8thOrderGFC = diff8th;};
65 TH1D* GetDiffFlowResults8th() const {return this->fDiffFlowResults8thOrderGFC;};
67 void SetCommonHistsResults2nd(AliFlowCommonHistResults* chr2nd) {this->fCommonHistsResults2nd = chr2nd;};
68 AliFlowCommonHistResults* GetCommonHistsResults2nd() const {return this->fCommonHistsResults2nd;};
70 void SetCommonHistsResults4th(AliFlowCommonHistResults* chr4th) {this->fCommonHistsResults4th = chr4th;};
71 AliFlowCommonHistResults* GetCommonHistsResults4th() const {return this->fCommonHistsResults4th;};
73 void SetCommonHistsResults6th(AliFlowCommonHistResults* chr6th) {this->fCommonHistsResults6th = chr6th;};
74 AliFlowCommonHistResults* GetCommonHistsResults6th() const {return this->fCommonHistsResults6th;};
76 void SetCommonHistsResults8th(AliFlowCommonHistResults* chr8th) {this->fCommonHistsResults8th = chr8th;};
77 AliFlowCommonHistResults* GetCommonHistsResults8th() const {return this->fCommonHistsResults8th;};
79 void SetIntFlowGenFun(TProfile2D* ifgf) {this->fIntFlowGenFun = ifgf;};
80 TProfile2D* GetIntFlowGenFun() const {return this->fIntFlowGenFun;};
82 void SetIntFlowGenFun4(TProfile2D* ifgf4) {this->fIntFlowGenFun4 = ifgf4;};
83 TProfile2D* GetIntFlowGenFun4() const {return this->fIntFlowGenFun4;};
85 void SetIntFlowGenFun6(TProfile2D* ifgf6) {this->fIntFlowGenFun6 = ifgf6;};
86 TProfile2D* GetIntFlowGenFun6() const {return this->fIntFlowGenFun6;};
88 void SetIntFlowGenFun8(TProfile2D* ifgf8) {this->fIntFlowGenFun8 = ifgf8;};
89 TProfile2D* GetIntFlowGenFun8() const {return this->fIntFlowGenFun8;};
91 void SetIntFlowGenFun16(TProfile2D* ifgf16) {this->fIntFlowGenFun16 = ifgf16;};
92 TProfile2D* GetIntFlowGenFun16() const {return this->fIntFlowGenFun16;};
94 void SetDiffFlowGenFunRe(TProfile3D* dfgfRe) {this->fDiffFlowGenFunRe = dfgfRe;};
95 TProfile3D* GetDiffFlowGenFunRe() const {return this->fDiffFlowGenFunRe;};
97 void SetDiffFlowGenFunIm(TProfile3D* dfgfIm) {this->fDiffFlowGenFunIm = dfgfIm;};
98 TProfile3D* GetDiffFlowGenFunIm() const {return this->fDiffFlowGenFunIm;};
100 void SetNumberOfParticlesPerPtBin(TProfile* nopppb) {this->fBinNoOfParticles = nopppb;};
101 TProfile* GetNumberOfParticlesPerPtBin() const {return this->fBinNoOfParticles;};
103 void SetAverageMultiplicity(TProfile* am) {this->fAvMultIntFlowGFC = am;};
104 TProfile* GetAverageMultiplicity() const {return this->fAvMultIntFlowGFC;};
106 void SetQVectorComponents(TProfile* sqvc) {this->fQVectorComponentsGFC = sqvc;};
107 TProfile* GetQVectorComponents() const {return this->fQVectorComponentsGFC;};
108 //----------------------------------------------------------------------------------------------------------------
111 AliFlowAnalysisWithCumulants(const AliFlowAnalysisWithCumulants& afawc);
112 AliFlowAnalysisWithCumulants& operator=(const AliFlowAnalysisWithCumulants& afawc);
113 AliFlowTrackSimple* fTrack; //track
114 static const Int_t fgkQmax = AliFlowCumuConstants::kQmax; //needed for numerics
115 static const Int_t fgkPmax = AliFlowCumuConstants::kPmax; //needed for numerics
116 static const Int_t fgkQmax4 = AliFlowCumuConstants::kQmax4; //needed for numerics
117 static const Int_t fgkPmax4 = AliFlowCumuConstants::kPmax4; //needed for numerics
118 static const Int_t fgkQmax6 = AliFlowCumuConstants::kQmax6; //needed for numerics
119 static const Int_t fgkPmax6 = AliFlowCumuConstants::kPmax6; //needed for numerics
120 static const Int_t fgkQmax8 = AliFlowCumuConstants::kQmax8; //needed for numerics
121 static const Int_t fgkPmax8 = AliFlowCumuConstants::kPmax8; //needed for numerics
122 static const Int_t fgkQmax16 = AliFlowCumuConstants::kQmax16; //needed for numerics
123 static const Int_t fgkPmax16 = AliFlowCumuConstants::kPmax16; //needed for numerics
124 static const Int_t fgkFlow = AliFlowCumuConstants::kFlow; //integrated flow coefficient to be calculated
125 static const Int_t fgkMltpl = AliFlowCumuConstants::kMltpl; //the multiple in p=m*n (diff. flow)
126 TList* fHistList; //list to hold all output histograms
128 Double_t fR0; //needed for numerics
129 Double_t fPtMax; //maximum pt
130 Double_t fPtMin; //minimum pt
131 Double_t fBinWidth; //width of pt bin (in GeV)
132 Int_t fgknBins; //number of pt bins
134 Double_t fAvQx; //<Q_x>
135 Double_t fAvQy; //<Q_y>
136 Double_t fAvQ2x; //<(Q_x)^2>
137 Double_t fAvQ2y; //<(Q_y)^2>
139 TProfile* fAvMultIntFlowGFC; //average selected multiplicity
141 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>)
143 TH1D* fIntFlowResultsGFC; //integrated flow final results
145 TH1D* fDiffFlowResults2ndOrderGFC; //differential flow final results (2nd order estimate)
146 TH1D* fDiffFlowResults4thOrderGFC; //differential flow final results (4th order estimate)
147 TH1D* fDiffFlowResults6thOrderGFC; //differential flow final results (6th order estimate)
148 TH1D* fDiffFlowResults8thOrderGFC; //differential flow final results (8th order estimate)
150 AliFlowCommonHistResults* fCommonHistsResults2nd; //final results for 2nd order int. and diff. flow stored in the common histograms
151 AliFlowCommonHistResults* fCommonHistsResults4th; //final results for 4th order int. and diff. flow stored in the common histograms
152 AliFlowCommonHistResults* fCommonHistsResults6th; //final results for 6th order int. and diff. flow stored in the common histograms
153 AliFlowCommonHistResults* fCommonHistsResults8th; //final results for 8th order int. and diff. flow stored in the common histograms
155 TProfile2D* fIntFlowGenFun; //avarage of the generating function for integrated flow
156 TProfile2D* fIntFlowGenFun4; //avarage of the generating function for integrated flow
157 TProfile2D* fIntFlowGenFun6; //avarage of the generating function for integrated flow
158 TProfile2D* fIntFlowGenFun8; //avarage of the generating function for integrated flow
159 TProfile2D* fIntFlowGenFun16; //avarage of the generating function for integrated flow
161 TProfile3D* fDiffFlowGenFunRe; //avarage of the generating function for differential flow (real part)
162 TProfile3D* fDiffFlowGenFunIm; //avarage of the generating function for differential flow (imaginary part)
163 TProfile* fBinNoOfParticles; //number of particles per pt bin
166 TProfile2D *fDiffFlowGenFunRe0,*fDiffFlowGenFunRe1,*fDiffFlowGenFunRe2,*fDiffFlowGenFunRe3;//differential flow
167 TProfile2D *fDiffFlowGenFunRe4,*fDiffFlowGenFunRe5,*fDiffFlowGenFunRe6,*fDiffFlowGenFunRe7;//differential flow
168 TProfile2D *fDiffFlowGenFunIm0,*fDiffFlowGenFunIm1,*fDiffFlowGenFunIm2,*fDiffFlowGenFunIm3;//differential flow
169 TProfile2D *fDiffFlowGenFunIm4,*fDiffFlowGenFunIm5,*fDiffFlowGenFunIm6,*fDiffFlowGenFunIm7;//differential flow
172 AliFlowCommonHist* fCommonHists; //common control histograms
174 Bool_t fOtherEquations; //numerical equations for cumulants solved up to different highest order
176 ClassDef(AliFlowAnalysisWithCumulants, 0);
179 //================================================================================================================