Additional cuts on TPC and TRD quantities.
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowCommon / 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;
e085f1a9 22class TGraph;
bc92c0cb 23
24class TH1;
25class TProfile;
bc92c0cb 26
27class AliFlowEventSimple;
28class AliFlowTrackSimple;
52021ae2 29class AliFlowVector;
30
bc92c0cb 31class AliFlowCommonHist;
32class AliFlowCommonHistResults;
bc92c0cb 33
34//================================================================================================================
35
36class AliFlowAnalysisWithQCumulants{
37 public:
38 AliFlowAnalysisWithQCumulants();
39 virtual ~AliFlowAnalysisWithQCumulants();
40
e085f1a9 41 virtual void Init();
bc92c0cb 42 virtual void Make(AliFlowEventSimple* anEvent);
43 virtual void Finish();
4057ba99 44 virtual void WriteHistograms(TString outputFileName);
8842fb2b 45
46//----------------------------------------------------------------------------------------------------------------
47// setters and getters
48//----------------------------------------------------------------------------------------------------------------
03a02aca 49 TList* GetHistList() const {return this->fHistList;}
50
51 void SetWeightsList(TList* wlist) {this->fWeightsList = wlist;}
52 TList* GetWeightsList() const {return this->fWeightsList;}
bc92c0cb 53
52021ae2 54 void SetIntFlowResults(TH1D* const ifr) {this->fIntFlowResultsQC = ifr;};
55 TH1D* GetIntFlowResults() const {return this->fIntFlowResultsQC;};
8842fb2b 56
52021ae2 57 void SetDiffFlowResults2nd(TH1D* const diff2nd) {this->fDiffFlowResults2ndOrderQC = diff2nd;};
58 TH1D* GetDiffFlowResults2nd() const {return this->fDiffFlowResults2ndOrderQC;};
8842fb2b 59
52021ae2 60 void SetDiffFlowResults4th(TH1D* const diff4th) {this->fDiffFlowResults4thOrderQC = diff4th;};
61 TH1D* GetDiffFlowResults4th() const {return this->fDiffFlowResults4thOrderQC;};
8842fb2b 62
52021ae2 63 void SetCovariances(TH1D* const cov) {this->fCovariances = cov;};
64 TH1D* GetCovariances() const {return this->fCovariances;};
8842fb2b 65
7e58a232 66 void SetCommonHists2nd(AliFlowCommonHist* const ch2nd) {this->fCommonHists2nd = ch2nd;};
67 AliFlowCommonHist* GetCommonHists2nd() const {return this->fCommonHists2nd;};
68
69 void SetCommonHists4th(AliFlowCommonHist* const ch4th) {this->fCommonHists4th = ch4th;};
70 AliFlowCommonHist* GetCommonHists4th() const {return this->fCommonHists4th;};
71
72 void SetCommonHists6th(AliFlowCommonHist* const ch6th) {this->fCommonHists6th = ch6th;};
73 AliFlowCommonHist* GetCommonHists6th() const {return this->fCommonHists6th;};
74
75 void SetCommonHists8th(AliFlowCommonHist* const ch8th) {this->fCommonHists8th = ch8th;};
76 AliFlowCommonHist* GetCommonHists8th() const {return this->fCommonHists8th;};
77
52021ae2 78 void SetCommonHistsResults2nd(AliFlowCommonHistResults* const chr2nd) {this->fCommonHistsResults2nd = chr2nd;};
79 AliFlowCommonHistResults* GetCommonHistsResults2nd() const {return this->fCommonHistsResults2nd;};
8842fb2b 80
52021ae2 81 void SetCommonHistsResults4th(AliFlowCommonHistResults* const chr4th) {this->fCommonHistsResults4th = chr4th;};
82 AliFlowCommonHistResults* GetCommonHistsResults4th() const {return this->fCommonHistsResults4th;};
8842fb2b 83
52021ae2 84 void SetCommonHistsResults6th(AliFlowCommonHistResults* const chr6th) {this->fCommonHistsResults6th = chr6th;};
85 AliFlowCommonHistResults* GetCommonHistsResults6th() const {return this->fCommonHistsResults6th;};
8842fb2b 86
52021ae2 87 void SetCommonHistsResults8th(AliFlowCommonHistResults* const chr8th) {this->fCommonHistsResults8th = chr8th;};
88 AliFlowCommonHistResults* GetCommonHistsResults8th() const {return this->fCommonHistsResults8th;};
8842fb2b 89
52021ae2 90 void SetAverageMultiplicity(TProfile* const am) {this->fAvMultIntFlowQC = am;};
91 TProfile* GetAverageMultiplicity() const {return this->fAvMultIntFlowQC;};
8842fb2b 92
e085f1a9 93 void SetQvectorForEachEventX(TProfile* const qvfeex) {this->fQvectorForEachEventX = qvfeex;};
94 TProfile* GetQvectorForEachEventX() const {return this->fQvectorForEachEventX;};
95
96 void SetQvectorForEachEventY(TProfile* const qvfeey) {this->fQvectorForEachEventY = qvfeey;};
97 TProfile* GetQvectorForEachEventY() const {return this->fQvectorForEachEventY;};
98
52021ae2 99 void SetQCorrelations(TProfile* const QCorr) {this->fQCorrelations = QCorr;};
100 TProfile* GetQCorrelations() const {return this->fQCorrelations;};
8842fb2b 101
77515452 102 void SetWeightedQCorrelations(TProfile* const WQCorr) {this->fWeightedQCorrelations = WQCorr;};
103 TProfile* GetWeightedQCorrelations() const {return this->fWeightedQCorrelations;};
3d824203 104
52021ae2 105 void SetQProduct(TProfile* const qp) {this->fQProduct = qp;};
106 TProfile* GetQProduct() const {return this->fQProduct;};
8842fb2b 107
52021ae2 108 void SetQVectorComponents(TProfile* const qvc) {this->fQvectorComponents = qvc;};
109 TProfile* GetQVectorComponents() const {return this->fQvectorComponents;};
8842fb2b 110
1dfa3c16 111 void SetTwo1n1nPerPtBinRP(TProfile* const pb2PerPtBin1n1nRP) {this->f2PerPtBin1n1nRP = pb2PerPtBin1n1nRP;};
112 TProfile* GetTwo1n1nPerPtBinRP() const {return this->f2PerPtBin1n1nRP;};
8842fb2b 113
1dfa3c16 114 void SetFour1n1n1n1nPerPtBinRP(TProfile* const pb4PerPtBin1n1n1n1nRP) {this->f4PerPtBin1n1n1n1nRP = pb4PerPtBin1n1n1n1nRP;};
115 TProfile* GetFour1n1n1n1nPerPtBinRP() const {return this->f4PerPtBin1n1n1n1nRP;};
03a02aca 116
1dfa3c16 117 void SetTwo1n1nPerEtaBinRP(TProfile* const pb2PerEtaBin1n1nRP) {this->f2PerEtaBin1n1nRP = pb2PerEtaBin1n1nRP;};
118 TProfile* GetTwo1n1nPerEtaBinRP() const {return this->f2PerEtaBin1n1nRP;};
119
1dfa3c16 120 void SetFour1n1n1n1nPerEtaBinRP(TProfile* const pb4PerEtaBin1n1n1n1nRP) {this->f4PerEtaBin1n1n1n1nRP = pb4PerEtaBin1n1n1n1nRP;};
121 TProfile* GetFour1n1n1n1nPerEtaBinRP() const {return this->f4PerEtaBin1n1n1n1nRP;};
122
123 void SetTwo1n1nPerPtBinPOI(TProfile* const pb2PerPtBin1n1nPOI) {this->f2PerPtBin1n1nPOI = pb2PerPtBin1n1nPOI;};
124 TProfile* GetTwo1n1nPerPtBinPOI() const {return this->f2PerPtBin1n1nPOI;};
125
1dfa3c16 126 void SetFour1n1n1n1nPerPtBinPOI(TProfile* const pb4PerPtBin1n1n1n1nPOI) {this->f4PerPtBin1n1n1n1nPOI = pb4PerPtBin1n1n1n1nPOI;};
127 TProfile* GetFour1n1n1n1nPerPtBinPOI() const {return this->f4PerPtBin1n1n1n1nPOI;};
128
129 void SetTwo1n1nPerEtaBinPOI(TProfile* const pb2PerEtaBin1n1nPOI) {this->f2PerEtaBin1n1nPOI = pb2PerEtaBin1n1nPOI;};
130 TProfile* GetTwo1n1nPerEtaBinPOI() const {return this->f2PerEtaBin1n1nPOI;};
131
1dfa3c16 132 void SetFour1n1n1n1nPerEtaBinPOI(TProfile* const pb4PerEtaBin1n1n1n1nPOI) {this->f4PerEtaBin1n1n1n1nPOI = pb4PerEtaBin1n1n1n1nPOI;};
133 TProfile* GetFour1n1n1n1nPerEtaBinPOI() const {return this->f4PerEtaBin1n1n1n1nPOI;};
8842fb2b 134
3d824203 135 void SetTwo1n1nWPerPtBinPOI(TProfile* const pb2WPerPtBin1n1nPOI) {this->f2WPerPtBin1n1nPOI = pb2WPerPtBin1n1nPOI;};
136 TProfile* GetTwo1n1nWPerPtBinPOI() const {return this->f2WPerPtBin1n1nPOI;};
137
3d824203 138 void SetFour1n1n1n1nWPerPtBinPOI(TProfile* const pb4WPerPtBin1n1n1n1nPOI) {this->f4WPerPtBin1n1n1n1nPOI = pb4WPerPtBin1n1n1n1nPOI;};
139 TProfile* GetFour1n1n1n1nWPerPtBinPOI() const {return this->f4WPerPtBin1n1n1n1nPOI;}
140
3d824203 141 void SetTwo1n1nWPerEtaBinPOI(TProfile* const pb2WPerEtaBin1n1nPOI) {this->f2WPerEtaBin1n1nPOI = pb2WPerEtaBin1n1nPOI;};
142 TProfile* GetTwo1n1nWPerEtaBinPOI() const {return this->f2WPerEtaBin1n1nPOI;};
143
144 void SetFour1n1n1n1nWPerEtaBinPOI(TProfile* const pb4WPerEtaBin1n1n1n1nPOI) {this->f4WPerEtaBin1n1n1n1nPOI = pb4WPerEtaBin1n1n1n1nPOI;};
145 TProfile* GetFour1n1n1n1nWPerEtaBinPOI() const {return this->f4WPerEtaBin1n1n1n1nPOI;}
146
147 void SetTwo1n1nWPerPtBinRP(TProfile* const pb2WPerPtBin1n1nRP) {this->f2WPerPtBin1n1nRP = pb2WPerPtBin1n1nRP;};
148 TProfile* GetTwo1n1nWPerPtBinRP() const {return this->f2WPerPtBin1n1nRP;};
149
150 void SetFour1n1n1n1nWPerPtBinRP(TProfile* const pb4WPerPtBin1n1n1n1nRP) {this->f4WPerPtBin1n1n1n1nRP = pb4WPerPtBin1n1n1n1nRP;};
151 TProfile* GetFour1n1n1n1nWPerPtBinRP() const {return this->f4WPerPtBin1n1n1n1nRP;}
152
153 void SetTwo1n1nWPerEtaBinRP(TProfile* const pb2WPerEtaBin1n1nRP) {this->f2WPerEtaBin1n1nRP = pb2WPerEtaBin1n1nRP;};
154 TProfile* GetTwo1n1nWPerEtaBinRP() const {return this->f2WPerEtaBin1n1nRP;};
155
156 void SetFour1n1n1n1nWPerEtaBinRP(TProfile* const pb4WPerEtaBin1n1n1n1nRP) {this->f4WPerEtaBin1n1n1n1nRP = pb4WPerEtaBin1n1n1n1nRP;};
157 TProfile* GetFour1n1n1n1nWPerEtaBinRP() const {return this->f4WPerEtaBin1n1n1n1nRP;}
158
52021ae2 159 void SetDirectCorrelations(TProfile* const dc) {this->fDirectCorrelations = dc;};
160 TProfile* GetDirectCorrelations() const {return this->fDirectCorrelations;};
e085f1a9 161
e04e4ec5 162 void SetUsePhiWeights(Bool_t const uPhiW) {this->fUsePhiWeights = uPhiW;};
03a02aca 163 Bool_t GetUsePhiWeights() const {return this->fUsePhiWeights;};
e085f1a9 164
e04e4ec5 165 void SetUsePtWeights(Bool_t const uPtW) {this->fUsePtWeights = uPtW;};
03a02aca 166 Bool_t GetUsePtWeights() const {return this->fUsePtWeights;};
e085f1a9 167
e04e4ec5 168 void SetUseEtaWeights(Bool_t const uEtaW) {this->fUseEtaWeights = uEtaW;};
03a02aca 169 Bool_t GetUseEtaWeights() const {return this->fUseEtaWeights;};
8842fb2b 170//----------------------------------------------------------------------------------------------------------------
171
bc92c0cb 172 private:
173 AliFlowAnalysisWithQCumulants(const AliFlowAnalysisWithQCumulants& afawQc);
174 AliFlowAnalysisWithQCumulants& operator=(const AliFlowAnalysisWithQCumulants& afawQc);
8842fb2b 175
176 AliFlowTrackSimple* fTrack; //track
177 TList* fHistList; //list to hold all output histograms
ae733b3b 178 TList* fDiffFlowList; //list to hold all histograms and profiles needed for differential flow
03a02aca 179 TList* fWeightsList; //list to hold all histograms with weights
180
8842fb2b 181 TProfile* fAvMultIntFlowQC; //average selected multiplicity (for int. flow)
bc92c0cb 182
8842fb2b 183 TProfile* fQvectorComponents; //averages of Q-vector components (1st bin: <Q_x>, 2nd bin: <Q_y>, ...)
bc92c0cb 184
8842fb2b 185 TH1D* fIntFlowResultsQC; //integrated flow results from Q-cumulants
186 TH1D* fDiffFlowResults2ndOrderQC; //differential flow results from 2nd order Q-cumulant
187 TH1D* fDiffFlowResults4thOrderQC; //differential flow results from 4th order Q-cumulant
188 TH1D* fCovariances; //final results for covariances: 1st bin: <2*4>-<2>*<4>, 2nd bin: <2*6>-<2>*<6>, ...
189
e085f1a9 190 TProfile* fQvectorForEachEventX; //profile containing the x-components of Q-vectors from all events (to be removed)
191 TProfile* fQvectorForEachEventY; //profile containing the y-components of Q-vectors from all events (to be removed)
8842fb2b 192 TProfile* fQCorrelations; //multi-particle correlations calculated from Q-vectors
77515452 193 TProfile* fWeightedQCorrelations; //weighted multi-particle correlations calculated from Q-vectors
8842fb2b 194 TProfile* fQProduct; //average of products: 1st bin: <2*4>, 2nd bin: <2*6>, ...
195
196 TProfile* fDirectCorrelations; //multi-particle correlations calculated with nested loop
1dfa3c16 197
77515452 198 // POI (Particles Of Interest):
199 // non-weighted correlations
1dfa3c16 200 TProfile* f2PerPtBin1n1nPOI; //<<2'>>_{n|n} per pt-bin
1dfa3c16 201 TProfile* f4PerPtBin1n1n1n1nPOI; //<<4'>>_{n,n|n,n} per pt-bin
1dfa3c16 202
203 TProfile* f2PerEtaBin1n1nPOI; //<<2'>>_{n|n} per eta-bin
1dfa3c16 204 TProfile* f4PerEtaBin1n1n1n1nPOI; //<<4'>>_{n,n|n,n} per eta-bin
77515452 205 // weighted correlations
3d824203 206 TProfile* f2WPerPtBin1n1nPOI; //<<2'>>_{n|n} per eta-bin
3d824203 207 TProfile* f4WPerPtBin1n1n1n1nPOI; //<<4'>>_{n,n|n,n} per eta-bin
208
77515452 209 TProfile* f2WPerEtaBin1n1nPOI; //<<2'>>_{n|n} per eta-bin
210 TProfile* f4WPerEtaBin1n1n1n1nPOI; //<<4'>>_{n,n|n,n} per eta-bin
3d824203 211
77515452 212 // RP (Reaction Plane particles)
213 // non-weighted correlations
214 TProfile* f2PerPtBin1n1nRP; //<<2'>>_{n|n} per pt-bin
215 TProfile* f4PerPtBin1n1n1n1nRP; //<<4'>>_{n,n|n,n} per pt-bin
216
217 TProfile* f2PerEtaBin1n1nRP; //<<2'>>_{n|n} per eta-bin
218 TProfile* f4PerEtaBin1n1n1n1nRP; //<<4'>>_{n,n|n,n} per eta-bin
219 // weighted correlations
220 TProfile* f2WPerPtBin1n1nRP; //<<2'>>_{n|n} per eta-bin
221 TProfile* f4WPerPtBin1n1n1n1nRP; //<<4'>>_{n,n|n,n} per eta-bin
3d824203 222
223 TProfile* f2WPerEtaBin1n1nRP; //<<2'>>_{n|n} per eta-bin
224 TProfile* f4WPerEtaBin1n1n1n1nRP; //<<4'>>_{n,n|n,n} per eta-bin
225
7e58a232 226 AliFlowCommonHist* fCommonHists2nd; //common control histograms (taking into account only the events with 2 and more particles)
227 AliFlowCommonHist* fCommonHists4th; //common control histograms (taking into account only the events with 4 and more particles)
228 AliFlowCommonHist* fCommonHists6th; //common control histograms (taking into account only the events with 6 and more particles)
229 AliFlowCommonHist* fCommonHists8th; //common control histograms (taking into account only the events with 8 and more particles)
bc92c0cb 230
1315fe58 231 AliFlowCommonHistResults* fCommonHistsResults2nd; //final results for 2nd order int. and diff. flow stored in the common histograms
232 AliFlowCommonHistResults* fCommonHistsResults4th; //final results for 4th order int. and diff. flow stored in the common histograms
233 AliFlowCommonHistResults* fCommonHistsResults6th; //final results for 6th order int. and diff. flow stored in the common histograms
234 AliFlowCommonHistResults* fCommonHistsResults8th; //final results for 8th order int. and diff. flow stored in the common histograms
1315fe58 235
5e838eeb 236 TH1D* f2pDistribution; //distribution of <2>_{n|n}
237 TH1D* f4pDistribution; //distribution of <4>_{n,n|n,n}
238 TH1D* f6pDistribution; //distribution of <6>_{n,n,n|n,n,n}
239 TH1D* f8pDistribution; //distribution of <8>_{n,n,n,n|n,n,n,n}
dee1e0e0 240
8842fb2b 241 Int_t fnBinsPt; //number of pt bins
52021ae2 242 Double_t fPtMin; //minimum pt
1dfa3c16 243 Double_t fPtMax; //maximum pt
244
245 Int_t fnBinsEta; //number of eta bins
246 Double_t fEtaMin; //minimum eta
e085f1a9 247 Double_t fEtaMax; //maximum eta
248 Int_t fEventCounter; //counting the number of events
249
03a02aca 250 Bool_t fUsePhiWeights; //phi weights
251 Bool_t fUsePtWeights; //v_2(pt) weights
252 Bool_t fUseEtaWeights; //v_2(eta) weights
ae733b3b 253
bc92c0cb 254 ClassDef(AliFlowAnalysisWithQCumulants, 0);
255};
256
257//================================================================================================================
258
259#endif
260
261
262
263
264