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