]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FLOW/AliFlowAnalysisWithCumulants.h
bd75a9536a2fb795fcbbdd7f766dfb1aca6775d6
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowAnalysisWithCumulants.h
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
14 #ifndef ALIFLOWANALYSISWITHCUMULANTS_H
15 #define ALIFLOWANALYSISWITHCUMULANTS_H
16
17 #include "AliFlowCommonConstants.h"
18 #include "AliFlowCumuConstants.h"
19
20 class TObjArray;
21 class TList;
22 class TFile;
23
24 class TH1;
25 class TProfile;
26 class TProfile2D;
27 class TProfile3D;
28
29 class AliFlowEventSimple;
30 class AliFlowTrackSimple;
31 class AliFlowCommonHist;
32 class AliFlowCommonHistResults;
33 class AliFlowVector;
34
35 //================================================================================================================
36
37 class AliFlowAnalysisWithCumulants{
38  public:
39   AliFlowAnalysisWithCumulants();
40   virtual ~AliFlowAnalysisWithCumulants(); 
41   
42   virtual void CreateOutputObjects();
43   virtual void Make(AliFlowEventSimple* anEvent);
44   virtual void Finish();
45   virtual void WriteHistograms(TString* outputFileName);
46   
47 //----------------------------------------------------------------------------------------------------------------
48 //                                            setters and getters                                                 
49 //----------------------------------------------------------------------------------------------------------------
50   TList* GetHistList() const {return this->fHistList;}      //output histogram list
51   
52   void SetIntFlowResults(TH1D* ifr)  {this->fIntFlowResultsGFC = ifr;};
53   TH1D* GetIntFlowResults() const    {return this->fIntFlowResultsGFC;};
54   
55   void SetDiffFlowResults2nd(TH1D* diff2nd)  {this->fDiffFlowResults2ndOrderGFC = diff2nd;};
56   TH1D* GetDiffFlowResults2nd() const        {return this->fDiffFlowResults2ndOrderGFC;};
57   
58   void SetDiffFlowResults4th(TH1D* diff4th)  {this->fDiffFlowResults4thOrderGFC = diff4th;};
59   TH1D* GetDiffFlowResults4th() const        {return this->fDiffFlowResults4thOrderGFC;};
60   
61   void SetDiffFlowResults6th(TH1D* diff6th)  {this->fDiffFlowResults6thOrderGFC = diff6th;};
62   TH1D* GetDiffFlowResults6th() const        {return this->fDiffFlowResults6thOrderGFC;};
63   
64   void SetDiffFlowResults8th(TH1D* diff8th)  {this->fDiffFlowResults8thOrderGFC = diff8th;};
65   TH1D* GetDiffFlowResults8th() const        {return this->fDiffFlowResults8thOrderGFC;};
66   
67   void SetCommonHistsResults2nd(AliFlowCommonHistResults* chr2nd)  {this->fCommonHistsResults2nd = chr2nd;};
68   AliFlowCommonHistResults* GetCommonHistsResults2nd() const       {return this->fCommonHistsResults2nd;};
69   
70   void SetCommonHistsResults4th(AliFlowCommonHistResults* chr4th)  {this->fCommonHistsResults4th = chr4th;};
71   AliFlowCommonHistResults* GetCommonHistsResults4th() const       {return this->fCommonHistsResults4th;};
72   
73   void SetCommonHistsResults6th(AliFlowCommonHistResults* chr6th)  {this->fCommonHistsResults6th = chr6th;};
74   AliFlowCommonHistResults* GetCommonHistsResults6th() const       {return this->fCommonHistsResults6th;};
75   
76   void SetCommonHistsResults8th(AliFlowCommonHistResults* chr8th)  {this->fCommonHistsResults8th = chr8th;};
77   AliFlowCommonHistResults* GetCommonHistsResults8th() const       {return this->fCommonHistsResults8th;};
78   
79   void SetIntFlowGenFun(TProfile2D* ifgf)  {this->fIntFlowGenFun = ifgf;};
80   TProfile2D* GetIntFlowGenFun() const     {return this->fIntFlowGenFun;};
81
82   void SetIntFlowGenFun4(TProfile2D* ifgf4)  {this->fIntFlowGenFun4 = ifgf4;};
83   TProfile2D* GetIntFlowGenFun4() const      {return this->fIntFlowGenFun4;};
84   
85   void SetIntFlowGenFun6(TProfile2D* ifgf6)  {this->fIntFlowGenFun6 = ifgf6;};
86   TProfile2D* GetIntFlowGenFun6() const      {return this->fIntFlowGenFun6;};
87   
88   void SetIntFlowGenFun8(TProfile2D* ifgf8)  {this->fIntFlowGenFun8 = ifgf8;};
89   TProfile2D* GetIntFlowGenFun8() const      {return this->fIntFlowGenFun8;};
90   
91   void SetIntFlowGenFun16(TProfile2D* ifgf16)  {this->fIntFlowGenFun16 = ifgf16;};
92   TProfile2D* GetIntFlowGenFun16() const       {return this->fIntFlowGenFun16;};
93  
94   void SetDiffFlowGenFunRe(TProfile3D* dfgfRe)  {this->fDiffFlowGenFunRe = dfgfRe;};
95   TProfile3D* GetDiffFlowGenFunRe() const         {return this->fDiffFlowGenFunRe;};
96   
97   void SetDiffFlowGenFunIm(TProfile3D* dfgfIm)  {this->fDiffFlowGenFunIm = dfgfIm;};
98   TProfile3D* GetDiffFlowGenFunIm() const         {return this->fDiffFlowGenFunIm;};
99   
100   void SetNumberOfParticlesPerPtBin(TProfile* nopppb)    {this->fBinNoOfParticles = nopppb;};
101   TProfile* GetNumberOfParticlesPerPtBin() const         {return this->fBinNoOfParticles;};  
102   
103   void SetAverageMultiplicity(TProfile* am)      {this->fAvMultIntFlowGFC = am;};
104   TProfile* GetAverageMultiplicity() const       {return this->fAvMultIntFlowGFC;};
105   
106   void SetQVectorComponents(TProfile* sqvc)    {this->fQVectorComponentsGFC = sqvc;};
107   TProfile* GetQVectorComponents() const       {return this->fQVectorComponentsGFC;};
108 //----------------------------------------------------------------------------------------------------------------
109  
110  private:
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
127
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
133       
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>
138
139   TProfile*          fAvMultIntFlowGFC; //average selected multiplicity
140  
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>)
142     
143   TH1D*              fIntFlowResultsGFC; //integrated flow final results
144   
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)
149   
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
154   
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 
160      
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
164   
165   /*
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
170   */
171  
172   AliFlowCommonHist* fCommonHists;      //common control histograms
173   
174   Bool_t fOtherEquations; //numerical equations for cumulants solved up to different highest order 
175       
176   ClassDef(AliFlowAnalysisWithCumulants, 0);
177 };
178
179 //================================================================================================================
180
181 #endif
182
183
184
185
186