]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FLOW/AliFlowAnalysisWithQCumulants.h
6c8816433869c8b9c4a2ce14657f5ca10b2d433a
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowAnalysisWithQCumulants.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 Q-cumulants * 
9  *                                * 
10  * author:  Ante Bilandzic        * 
11  *           (anteb@nikhef.nl)    *
12  *********************************/ 
13
14 #ifndef ALIFLOWANALYSISWITHQCUMULANTS_H
15 #define ALIFLOWANALYSISWITHQCUMULANTS_H
16
17 #include "AliFlowCommonConstants.h"//needed as include
18
19 class TObjArray;
20 class TList;
21 class TFile;
22
23 class TH1;
24 class TProfile;
25
26 class AliFlowEventSimple;
27 class AliFlowTrackSimple;
28 class AliFlowVector;
29
30 class AliFlowCommonHist;
31 class AliFlowCommonHistResults;
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();
43   virtual void WriteHistograms(TString* outputFileName);
44  
45 //----------------------------------------------------------------------------------------------------------------
46 //                                            setters and getters                                                 
47 //----------------------------------------------------------------------------------------------------------------
48   TList* GetHistList() const {return this->fHistList;} //output histogram list
49  
50   void SetIntFlowResults(TH1D* const ifr) {this->fIntFlowResultsQC = ifr;};
51   TH1D* GetIntFlowResults() const {return this->fIntFlowResultsQC;};
52   
53   void SetDiffFlowResults2nd(TH1D* const diff2nd) {this->fDiffFlowResults2ndOrderQC = diff2nd;};
54   TH1D* GetDiffFlowResults2nd() const {return this->fDiffFlowResults2ndOrderQC;};
55   
56   void SetDiffFlowResults4th(TH1D* const diff4th) {this->fDiffFlowResults4thOrderQC = diff4th;};
57   TH1D* GetDiffFlowResults4th() const {return this->fDiffFlowResults4thOrderQC;};
58   
59   void SetCovariances(TH1D* const cov) {this->fCovariances = cov;};
60   TH1D* GetCovariances() const {return this->fCovariances;};
61   
62   void SetCommonHistsResults2nd(AliFlowCommonHistResults* const chr2nd) {this->fCommonHistsResults2nd = chr2nd;};
63   AliFlowCommonHistResults* GetCommonHistsResults2nd() const {return this->fCommonHistsResults2nd;};
64   
65   void SetCommonHistsResults4th(AliFlowCommonHistResults* const chr4th) {this->fCommonHistsResults4th = chr4th;};
66   AliFlowCommonHistResults* GetCommonHistsResults4th() const {return this->fCommonHistsResults4th;};
67   
68   void SetCommonHistsResults6th(AliFlowCommonHistResults* const chr6th) {this->fCommonHistsResults6th = chr6th;};
69   AliFlowCommonHistResults* GetCommonHistsResults6th() const {return this->fCommonHistsResults6th;};
70   
71   void SetCommonHistsResults8th(AliFlowCommonHistResults* const chr8th) {this->fCommonHistsResults8th = chr8th;};
72   AliFlowCommonHistResults* GetCommonHistsResults8th() const {return this->fCommonHistsResults8th;};
73   
74   void SetAverageMultiplicity(TProfile* const am) {this->fAvMultIntFlowQC = am;};
75   TProfile* GetAverageMultiplicity() const {return this->fAvMultIntFlowQC;};
76   
77   void SetQCorrelations(TProfile* const QCorr) {this->fQCorrelations = QCorr;};
78   TProfile* GetQCorrelations() const {return this->fQCorrelations;};
79   
80   void SetQProduct(TProfile* const qp) {this->fQProduct = qp;};
81   TProfile* GetQProduct() const {return this->fQProduct;};
82   
83   void SetQVectorComponents(TProfile* const qvc) {this->fQvectorComponents = qvc;};
84   TProfile* GetQVectorComponents() const {return this->fQvectorComponents;};
85   
86   void SetTwo1n1nPerPtBinRP(TProfile* const pb2PerPtBin1n1nRP) {this->f2PerPtBin1n1nRP = pb2PerPtBin1n1nRP;};
87   TProfile* GetTwo1n1nPerPtBinRP() const {return this->f2PerPtBin1n1nRP;};
88   
89   void SetTwo2n2nPerPtBinRP(TProfile* const pb2PerPtBin2n2nRP) {this->f2PerPtBin2n2nRP = pb2PerPtBin2n2nRP;};
90   TProfile* GetTwo2n2nPerPtBinRP() const {return this->f2PerPtBin2n2nRP;};
91   
92   void SetThree2n1n1nPerPtBinRP(TProfile* const pb3PerPtBin2n1n1nRP) {this->f3PerPtBin2n1n1nRP = pb3PerPtBin2n1n1nRP;};
93   TProfile* GetThree2n1n1nPerPtBinRP() const {return this->f3PerPtBin2n1n1nRP;};
94   
95   void SetThree1n1n2nPerPtBinRP(TProfile* const pb3PerPtBin1n1n2nRP) {this->f3PerPtBin1n1n2nRP = pb3PerPtBin1n1n2nRP;};
96   TProfile* GetThree1n1n2nPerPtBinRP() const {return this->f3PerPtBin1n1n2nRP;};
97   
98   void SetFour1n1n1n1nPerPtBinRP(TProfile* const pb4PerPtBin1n1n1n1nRP) {this->f4PerPtBin1n1n1n1nRP = pb4PerPtBin1n1n1n1nRP;};
99   TProfile* GetFour1n1n1n1nPerPtBinRP() const {return this->f4PerPtBin1n1n1n1nRP;}; 
100   
101   void SetTwo1n1nPerEtaBinRP(TProfile* const pb2PerEtaBin1n1nRP) {this->f2PerEtaBin1n1nRP = pb2PerEtaBin1n1nRP;};
102   TProfile* GetTwo1n1nPerEtaBinRP() const {return this->f2PerEtaBin1n1nRP;};
103   
104   void SetTwo2n2nPerEtaBinRP(TProfile* const pb2PerEtaBin2n2nRP) {this->f2PerEtaBin2n2nRP = pb2PerEtaBin2n2nRP;};
105   TProfile* GetTwo2n2nPerEtaBinRP() const {return this->f2PerEtaBin2n2nRP;};
106   
107   void SetThree2n1n1nPerEtaBinRP(TProfile* const pb3PerEtaBin2n1n1nRP) {this->f3PerEtaBin2n1n1nRP = pb3PerEtaBin2n1n1nRP;};
108   TProfile* GetThree2n1n1nPerEtaBinRP() const {return this->f3PerEtaBin2n1n1nRP;};
109   
110   void SetThree1n1n2nPerEtaBinRP(TProfile* const pb3PerEtaBin1n1n2nRP) {this->f3PerEtaBin1n1n2nRP = pb3PerEtaBin1n1n2nRP;};
111   TProfile* GetThree1n1n2nPerEtaBinRP() const {return this->f3PerEtaBin1n1n2nRP;};
112   
113   void SetFour1n1n1n1nPerEtaBinRP(TProfile* const pb4PerEtaBin1n1n1n1nRP) {this->f4PerEtaBin1n1n1n1nRP = pb4PerEtaBin1n1n1n1nRP;};
114   TProfile* GetFour1n1n1n1nPerEtaBinRP() const {return this->f4PerEtaBin1n1n1n1nRP;}; 
115   
116   void SetTwo1n1nPerPtBinPOI(TProfile* const pb2PerPtBin1n1nPOI) {this->f2PerPtBin1n1nPOI = pb2PerPtBin1n1nPOI;};
117   TProfile* GetTwo1n1nPerPtBinPOI() const {return this->f2PerPtBin1n1nPOI;};
118   
119   void SetTwo2n2nPerPtBinPOI(TProfile* const pb2PerPtBin2n2nPOI) {this->f2PerPtBin2n2nPOI = pb2PerPtBin2n2nPOI;};
120   TProfile* GetTwo2n2nPerPtBinPOI() const {return this->f2PerPtBin2n2nPOI;};
121   
122   void SetThree2n1n1nPerPtBinPOI(TProfile* const pb3PerPtBin2n1n1nPOI) {this->f3PerPtBin2n1n1nPOI = pb3PerPtBin2n1n1nPOI;};
123   TProfile* GetThree2n1n1nPerPtBinPOI() const {return this->f3PerPtBin2n1n1nPOI;};
124   
125   void SetThree1n1n2nPerPtBinPOI(TProfile* const pb3PerPtBin1n1n2nPOI) {this->f3PerPtBin1n1n2nPOI = pb3PerPtBin1n1n2nPOI;};
126   TProfile* GetThree1n1n2nPerPtBinPOI() const {return this->f3PerPtBin1n1n2nPOI;};
127   
128   void SetFour1n1n1n1nPerPtBinPOI(TProfile* const pb4PerPtBin1n1n1n1nPOI) {this->f4PerPtBin1n1n1n1nPOI = pb4PerPtBin1n1n1n1nPOI;};
129   TProfile* GetFour1n1n1n1nPerPtBinPOI() const {return this->f4PerPtBin1n1n1n1nPOI;}; 
130   
131   void SetTwo1n1nPerEtaBinPOI(TProfile* const pb2PerEtaBin1n1nPOI) {this->f2PerEtaBin1n1nPOI = pb2PerEtaBin1n1nPOI;};
132   TProfile* GetTwo1n1nPerEtaBinPOI() const {return this->f2PerEtaBin1n1nPOI;};
133   
134   void SetTwo2n2nPerEtaBinPOI(TProfile* const pb2PerEtaBin2n2nPOI) {this->f2PerEtaBin2n2nPOI = pb2PerEtaBin2n2nPOI;};
135   TProfile* GetTwo2n2nPerEtaBinPOI() const {return this->f2PerEtaBin2n2nPOI;};
136   
137   void SetThree2n1n1nPerEtaBinPOI(TProfile* const pb3PerEtaBin2n1n1nPOI) {this->f3PerEtaBin2n1n1nPOI = pb3PerEtaBin2n1n1nPOI;};
138   TProfile* GetThree2n1n1nPerEtaBinPOI() const {return this->f3PerEtaBin2n1n1nPOI;};
139   
140   void SetThree1n1n2nPerEtaBinPOI(TProfile* const pb3PerEtaBin1n1n2nPOI) {this->f3PerEtaBin1n1n2nPOI = pb3PerEtaBin1n1n2nPOI;};
141   TProfile* GetThree1n1n2nPerEtaBinPOI() const {return this->f3PerEtaBin1n1n2nPOI;};
142   
143   void SetFour1n1n1n1nPerEtaBinPOI(TProfile* const pb4PerEtaBin1n1n1n1nPOI) {this->f4PerEtaBin1n1n1n1nPOI = pb4PerEtaBin1n1n1n1nPOI;};
144   TProfile* GetFour1n1n1n1nPerEtaBinPOI() const {return this->f4PerEtaBin1n1n1n1nPOI;}; 
145   
146   void SetDirectCorrelations(TProfile* const dc) {this->fDirectCorrelations = dc;};
147   TProfile* GetDirectCorrelations() const {return this->fDirectCorrelations;};
148 //----------------------------------------------------------------------------------------------------------------
149  
150  private:
151   AliFlowAnalysisWithQCumulants(const AliFlowAnalysisWithQCumulants& afawQc);
152   AliFlowAnalysisWithQCumulants& operator=(const AliFlowAnalysisWithQCumulants& afawQc);
153   
154   AliFlowTrackSimple* fTrack;                           //track
155   TList*              fHistList;                        //list to hold all output histograms
156   TProfile*           fAvMultIntFlowQC;                 //average selected multiplicity (for int. flow)
157  
158   TProfile*           fQvectorComponents;               //averages of Q-vector components (1st bin: <Q_x>, 2nd bin: <Q_y>, ...)
159             
160   TH1D*               fIntFlowResultsQC;                //integrated flow results from Q-cumulants
161   TH1D*               fDiffFlowResults2ndOrderQC;       //differential flow results from 2nd order Q-cumulant
162   TH1D*               fDiffFlowResults4thOrderQC;       //differential flow results from 4th order Q-cumulant
163   TH1D*               fCovariances;                     //final results for covariances: 1st bin: <2*4>-<2>*<4>, 2nd bin: <2*6>-<2>*<6>, ...
164   
165   TProfile*                  fQCorrelations;            //multi-particle correlations calculated from Q-vectors 
166   TProfile*                  fQProduct;                 //average of products: 1st bin: <2*4>, 2nd bin: <2*6>, ...
167   
168   TProfile*                  fDirectCorrelations;       //multi-particle correlations calculated with nested loop  
169
170   //RP (Reaction Plane particles):  
171   TProfile*                  fPtReq1nRP;                //real part of q-vector evaluated in harmonic n for each pt-bin
172   TProfile*                  fPtImq1nRP;                //imaginary part of q-vector evaluated in harmonic n for each pt-bin
173   TProfile*                  fPtReq2nRP;                //real part of q-vector evaluated in harmonic 2n for each pt-bin
174   TProfile*                  fPtImq2nRP;                //imaginary part of q-vector evaluated in harmonic 2n for each pt-bin
175
176   TProfile*                  f2PerPtBin1n1nRP;          //<<2'>>_{n|n} per pt-bin
177   TProfile*                  f2PerPtBin2n2nRP;          //<<2'>>_{2n|2n} per pt-bin
178   TProfile*                  f3PerPtBin2n1n1nRP;        //<<3'>>_{2n|n,n} per pt-bin
179   TProfile*                  f3PerPtBin1n1n2nRP;        //<<3'>>_{n,n|2n} per pt-bin
180   TProfile*                  f4PerPtBin1n1n1n1nRP;      //<<4'>>_{n,n|n,n} per pt-bin
181   
182   TProfile*                  fEtaReq1nRP;               //real part of q-vector evaluated in harmonic n for each eta-bin
183   TProfile*                  fEtaImq1nRP;               //imaginary part of q-vector evaluated in harmonic n for each eta-bin
184   TProfile*                  fEtaReq2nRP;               //real part of q-vector evaluated in harmonic 2n for each eta-bin
185   TProfile*                  fEtaImq2nRP;               //imaginary part of q-vector evaluated in harmonic 2n for each eta-bin
186
187   TProfile*                  f2PerEtaBin1n1nRP;         //<<2'>>_{n|n} per eta-bin
188   TProfile*                  f2PerEtaBin2n2nRP;         //<<2'>>_{2n|2n} per eta-bin
189   TProfile*                  f3PerEtaBin2n1n1nRP;       //<<3'>>_{2n|n,n} per eta-bin
190   TProfile*                  f3PerEtaBin1n1n2nRP;       //<<3'>>_{n,n|2n} per eta-bin
191   TProfile*                  f4PerEtaBin1n1n1n1nRP;     //<<4'>>_{n,n|n,n} per eta-bin  
192
193   //POI (Particles Of Interest): 
194   TProfile*                  fPtReq1nPOI;               //real part of q-vector evaluated in harmonic n for each pt-bin
195   TProfile*                  fPtImq1nPOI;               //imaginary part of q-vector evaluated in harmonic n for each pt-bin
196   TProfile*                  fPtReq2nPOI;               //real part of q-vector evaluated in harmonic 2n for each pt-bin
197   TProfile*                  fPtImq2nPOI;               //imaginary part of q-vector evaluated in harmonic 2n for each pt-bin
198   TProfile*                  fOverlapPerPtBin;          //number of particles selected both as RP and POI in each pt-bin
199
200   TProfile*                  f2PerPtBin1n1nPOI;         //<<2'>>_{n|n} per pt-bin
201   TProfile*                  f2PerPtBin2n2nPOI;         //<<2'>>_{2n|2n} per pt-bin
202   TProfile*                  f3PerPtBin2n1n1nPOI;       //<<3'>>_{2n|n,n} per pt-bin
203   TProfile*                  f3PerPtBin1n1n2nPOI;       //<<3'>>_{n,n|2n} per pt-bin
204   TProfile*                  f4PerPtBin1n1n1n1nPOI;     //<<4'>>_{n,n|n,n} per pt-bin
205   
206   TProfile*                  fEtaReq1nPOI;              //real part of q-vector evaluated in harmonic n for each eta-bin
207   TProfile*                  fEtaImq1nPOI;              //imaginary part of q-vector evaluated in harmonic n for each eta-bin
208   TProfile*                  fEtaReq2nPOI;              //real part of q-vector evaluated in harmonic 2n for each eta-bin
209   TProfile*                  fEtaImq2nPOI;              //imaginary part of q-vector evaluated in harmonic 2n for each eta-bin
210   TProfile*                  fOverlapPerEtaBin;         //number of particles selected both as RP and POI in each eta-bin
211
212   TProfile*                  f2PerEtaBin1n1nPOI;        //<<2'>>_{n|n} per eta-bin
213   TProfile*                  f2PerEtaBin2n2nPOI;        //<<2'>>_{2n|2n} per eta-bin
214   TProfile*                  f3PerEtaBin2n1n1nPOI;      //<<3'>>_{2n|n,n} per eta-bin
215   TProfile*                  f3PerEtaBin1n1n2nPOI;      //<<3'>>_{n,n|2n} per eta-bin
216   TProfile*                  f4PerEtaBin1n1n1n1nPOI;    //<<4'>>_{n,n|n,n} per eta-bin  
217  
218   AliFlowCommonHist*         fCommonHists2nd;           //common control histograms for 2nd order
219   AliFlowCommonHist*         fCommonHists4th;           //common control histograms for 4th order
220   AliFlowCommonHist*         fCommonHists6th;           //common control histograms for 6th order
221   AliFlowCommonHist*         fCommonHists8th;           //common control histograms for 8th order
222   
223   AliFlowCommonHistResults*  fCommonHistsResults2nd;    //final results for 2nd order int. and diff. flow stored in the common histograms 
224   AliFlowCommonHistResults*  fCommonHistsResults4th;    //final results for 4th order int. and diff. flow stored in the common histograms 
225   AliFlowCommonHistResults*  fCommonHistsResults6th;    //final results for 6th order int. and diff. flow stored in the common histograms
226   AliFlowCommonHistResults*  fCommonHistsResults8th;    //final results for 8th order int. and diff. flow stored in the common histograms
227       
228   TH1D*                      f2pDistribution;           //distribution of <2>_{n|n}
229   TH1D*                      f4pDistribution;           //distribution of <4>_{n,n|n,n}
230   TH1D*                      f6pDistribution;           //distribution of <6>_{n,n,n|n,n,n} 
231   TH1D*                      f8pDistribution;           //distribution of <8>_{n,n,n,n|n,n,n,n}
232  
233   Int_t                      fnBinsPt;                  //number of pt bins
234   Double_t                   fPtMin;                    //minimum pt   
235   Double_t                   fPtMax;                    //maximum pt    
236   
237   Int_t                      fnBinsEta;                 //number of eta bins
238   Double_t                   fEtaMin;                   //minimum eta   
239   Double_t                   fEtaMax;                   //maximum eta           
240                         
241   ClassDef(AliFlowAnalysisWithQCumulants, 0);
242 };
243
244 //================================================================================================================
245
246 #endif
247
248
249
250
251