]>
Commit | Line | Data |
---|---|---|
f1d945a1 | 1 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
2 | * See cxx source for full Copyright notice */ | |
3 | ||
4 | /* $Id$ */ | |
5 | ||
6 | ||
80f72ed6 | 7 | #ifndef ALIFLOWANALYSISWITHLEEYANGZEROS_H |
8 | #define ALIFLOWANALYSISWITHLEEYANGZEROS_H | |
9 | ||
10 | //////////////////////////////////////////////////////////////////// | |
11 | // Description: Maker to analyze Flow by the LeeYangZeros method | |
12 | // One needs to do two runs over the data; | |
13 | // First to calculate the integrated flow | |
14 | // and in the second to calculate the differential flow | |
15 | // Author: Naomi van der Kolk (kolk@nikhef.nl) | |
16 | //////////////////////////////////////////////////////////////////// | |
17 | ||
f1d945a1 | 18 | |
19 | #include "AliFlowVector.h" //needed as include | |
20 | ||
882ffd6a | 21 | //class AliFlowTrackSimple; |
f1d945a1 | 22 | class AliFlowEventSimple; |
23 | class AliFlowLYZHist1; | |
24 | class AliFlowLYZHist2; | |
25 | class AliFlowCommonHist; | |
26 | class AliFlowCommonHistResults; | |
27 | ||
28 | class TH1F; | |
29 | class TH1D; | |
30 | class TProfile; | |
31 | class TProfile2D; | |
32 | class TObjArray; | |
33 | class TFile; | |
34 | class TComplex; | |
35 | class TString; | |
88e00a8a | 36 | class TList; |
f1d945a1 | 37 | class Riostream; |
38 | ||
f1d945a1 | 39 | |
40 | class AliFlowAnalysisWithLeeYangZeros { | |
41 | ||
42 | public: | |
43 | ||
48385911 | 44 | AliFlowAnalysisWithLeeYangZeros(); //default constructor |
45 | virtual ~AliFlowAnalysisWithLeeYangZeros(); //destructor | |
f1d945a1 | 46 | |
48385911 | 47 | Bool_t Init(); //defines variables and histograms |
48 | Bool_t Make(AliFlowEventSimple* anEvent); //calculates variables and fills histograms | |
49 | void GetOutputHistograms(TList *outputListHistos); //get pointers to all output histograms (called before Finish()) | |
50 | Bool_t Finish(); //saves histograms | |
51 | void WriteHistograms(TString* outputFileName); //writes histograms locally | |
52 | void WriteHistograms(TString outputFileName); //writes histograms locally | |
9d062fe3 | 53 | |
882ffd6a | 54 | Double_t GetQtheta(AliFlowVector aQ, Double_t aTheta); |
e8c3ff94 | 55 | |
9d062fe3 | 56 | void SetFirstRun(Bool_t kt) { this->fFirstRun = kt ; } |
57 | Bool_t GetFirstRun() const { return this->fFirstRun ; } | |
58 | void SetUseSum(Bool_t kt) { this->fUseSum = kt ; } | |
59 | Bool_t GetUseSum() const { return this->fUseSum ; } | |
60 | void SetDoubleLoop(Bool_t kt) { this->fDoubleLoop = kt ; } | |
61 | Bool_t GetDoubleLoop() const { return this->fDoubleLoop ; } | |
62 | void SetDebug(Bool_t kt) { this->fDebug = kt ; } | |
63 | Bool_t GetDebug() const { return this->fDebug ; } | |
64 | ||
65 | void SetEventNumber(Int_t n) { this->fEventNumber = n; } | |
66 | Int_t GetEventNumber() const { return this->fEventNumber; } | |
67 | void SetQ2sum(Double_t d) { this->fQ2sum = d; } | |
80f72ed6 | 68 | Double_t GetQ2sum() const { return this->fQ2sum; } |
f1d945a1 | 69 | |
70 | // Output | |
9d062fe3 | 71 | TList* GetHistList() const { return this->fHistList ; } |
72 | AliFlowCommonHist* GetCommonHists() const { return this->fCommonHists; } | |
80f72ed6 | 73 | void SetCommonHists(AliFlowCommonHist* const aCommonHist) |
9d062fe3 | 74 | { this->fCommonHists = aCommonHist; } |
75 | AliFlowCommonHistResults* GetCommonHistsRes() const | |
76 | { return this->fCommonHistsRes; } | |
80f72ed6 | 77 | void SetCommonHistsRes(AliFlowCommonHistResults* const aCommonHistResult) |
9d062fe3 | 78 | { this->fCommonHistsRes = aCommonHistResult; } |
79 | //AliFlowLYZHist1* GetHist1() const {return this->fHist1; } | |
80f72ed6 | 80 | void SetHist1(AliFlowLYZHist1* const aLYZHist1[]) |
9d062fe3 | 81 | {for (Int_t i=0;i<5;i++) {this->fHist1[i] = aLYZHist1[i];} } |
82 | //AliFlowLYZHist2* GetHist2() const {return this->fHist2; } | |
80f72ed6 | 83 | void SetHist2RP(AliFlowLYZHist2* const aLYZHist2RP[]) |
e8c3ff94 | 84 | {for (Int_t i=0;i<5;i++) {this->fHist2RP[i] = aLYZHist2RP[i];} } |
80f72ed6 | 85 | void SetHist2POI(AliFlowLYZHist2* const aLYZHist2POI[]) |
e8c3ff94 | 86 | {for (Int_t i=0;i<5;i++) {this->fHist2POI[i] = aLYZHist2POI[i];} } |
9d062fe3 | 87 | |
88 | TProfile* GetHistProVtheta() const {return this->fHistProVtheta; } | |
80f72ed6 | 89 | void SetHistProVtheta(TProfile* const aHistProVtheta) |
9d062fe3 | 90 | { this->fHistProVtheta = aHistProVtheta; } |
e8c3ff94 | 91 | TProfile* GetHistProVetaRP() const {return this->fHistProVetaRP; } |
80f72ed6 | 92 | void SetHistProVetaRP(TProfile* const aHistProVetaRP) |
e8c3ff94 | 93 | {this->fHistProVetaRP = aHistProVetaRP; } |
94 | TProfile* GetHistProVetaPOI() const {return this->fHistProVetaPOI; } | |
80f72ed6 | 95 | void SetHistProVetaPOI(TProfile* const aHistProVetaPOI) |
e8c3ff94 | 96 | {this->fHistProVetaPOI = aHistProVetaPOI; } |
97 | TProfile* GetHistProVPtRP() const {return this->fHistProVPtRP;} | |
80f72ed6 | 98 | void SetHistProVPtRP(TProfile* const aHistProVPtRP) |
e8c3ff94 | 99 | {this->fHistProVPtRP = aHistProVPtRP; } |
100 | TProfile* GetHistProVPtPOI() const {return this->fHistProVPtPOI;} | |
80f72ed6 | 101 | void SetHistProVPtPOI(TProfile* const aHistProVPtPOI) |
e8c3ff94 | 102 | {this->fHistProVPtPOI = aHistProVPtPOI; } |
9d062fe3 | 103 | TProfile* GetHistProR0theta() const {return this->fHistProR0theta; } |
80f72ed6 | 104 | void SetHistProR0theta(TProfile* const aHistProR0theta) |
9d062fe3 | 105 | {this->fHistProR0theta = aHistProR0theta; } |
106 | TProfile* GetHistProReDenom() const {return this->fHistProReDenom; } | |
80f72ed6 | 107 | void SetHistProReDenom(TProfile* const aHistProReDenom) |
9d062fe3 | 108 | {this->fHistProReDenom = aHistProReDenom; } |
109 | TProfile* GetHistProImDenom() const {return this->fHistProImDenom; } | |
80f72ed6 | 110 | void SetHistProImDenom(TProfile* const aHistProImDenom) |
9d062fe3 | 111 | {this->fHistProImDenom = aHistProImDenom; } |
112 | TProfile* GetHistProReDtheta() const {return this->fHistProReDtheta; } | |
80f72ed6 | 113 | void SetHistProReDtheta(TProfile* const aHistProReDtheta) |
9d062fe3 | 114 | {this->fHistProReDtheta = aHistProReDtheta; } |
115 | TProfile* GetHistProImDtheta() const {return this->fHistProImDtheta; } | |
80f72ed6 | 116 | void SetHistProImDtheta(TProfile* const aHistProImDtheta) |
9d062fe3 | 117 | {this->fHistProImDtheta = aHistProImDtheta; } |
80f72ed6 | 118 | TH1F* GetHistQsumforChi() const {return this->fHistQsumforChi; } |
119 | void SetHistQsumforChi(TH1F* const aHistQsumforChi) | |
9d062fe3 | 120 | {this->fHistQsumforChi = aHistQsumforChi; } |
121 | ||
80f72ed6 | 122 | void SetFirstRunList(TList* const list) { this->fFirstRunList = list; } |
123 | TList* GetFirstRunList() const { return this->fFirstRunList; } | |
f1d945a1 | 124 | |
153c1b38 | 125 | TComplex GetGrtheta(AliFlowEventSimple* anEvent, Double_t aR, Double_t aTheta); |
126 | TComplex GetDiffFlow(AliFlowEventSimple* anEvent, Double_t aR, Int_t theta); | |
127 | ||
128 | ||
f1d945a1 | 129 | private: |
130 | ||
9d062fe3 | 131 | AliFlowAnalysisWithLeeYangZeros(const AliFlowAnalysisWithLeeYangZeros& aAnalysis); // copy constructor |
882ffd6a | 132 | AliFlowAnalysisWithLeeYangZeros& operator=(const AliFlowAnalysisWithLeeYangZeros& aAnalysis); //assignment operator |
f1d945a1 | 133 | |
0092f3c2 | 134 | Bool_t MakeControlHistograms(AliFlowEventSimple* anEvent); |
135 | Bool_t FillFromFlowEvent(AliFlowEventSimple* anEvent); | |
136 | Bool_t SecondFillFromFlowEvent(AliFlowEventSimple* anEvent); | |
f1d945a1 | 137 | |
f1d945a1 | 138 | #ifndef __CINT__ |
f1d945a1 | 139 | |
882ffd6a | 140 | TVector2* fQsum; // flow vector sum |
80f72ed6 | 141 | Double_t fQ2sum; // flow vector sum squared |
882ffd6a | 142 | |
f1d945a1 | 143 | #endif /*__CINT__*/ |
144 | ||
80f72ed6 | 145 | Int_t fEventNumber; // event counter |
882ffd6a | 146 | |
80f72ed6 | 147 | Bool_t fFirstRun ; // flag for lyz analysis: true=first run over data, false=second run |
148 | Bool_t fUseSum ; // flag for lyz analysis: true=use sum gen.function, false=use product gen.function | |
149 | Bool_t fDoubleLoop ; // flag for studying non flow effects | |
150 | Bool_t fDebug ; // flag for lyz analysis: more print statements | |
882ffd6a | 151 | |
80f72ed6 | 152 | TList* fHistList; //list to hold all output histograms |
153 | TList* fFirstRunList; //list from first run output | |
9d062fe3 | 154 | |
80f72ed6 | 155 | TProfile* fHistProVtheta; //hist of V(theta) |
156 | TProfile* fHistProVetaRP; //hist of v(eta) for RP selection | |
157 | TProfile* fHistProVetaPOI; //hist of v(eta) for POI selection | |
158 | TProfile* fHistProVPtRP; //hist of v(pt) for RP selection | |
159 | TProfile* fHistProVPtPOI; //hist of v(pt) for POI selection | |
160 | TProfile* fHistProR0theta; //hist of r0(theta) | |
161 | TProfile* fHistProReDenom; //hist of the real part of the denominator | |
162 | TProfile* fHistProImDenom; //hist of the imaginary part of the denominator | |
163 | TProfile* fHistProReDtheta; //hist of the real part of D^theta | |
164 | TProfile* fHistProImDtheta; //hist of the imaginary part of D^theta | |
165 | TH1F* fHistQsumforChi; //hist of sum of Q-vectors and the sum of the square of Q-vectors | |
9d062fe3 | 166 | |
167 | ||
f1d945a1 | 168 | //class AliFlowLYZHist1 defines the histograms: fHistProGtheta, fHistProReGtheta, fHistProImGtheta |
80f72ed6 | 169 | AliFlowLYZHist1* fHist1[5]; //array of hist1 |
f1d945a1 | 170 | |
171 | //class AliFlowLYZHist1 defines the histograms: fHistProReNumer, fHistProImNumer, fHistProReNumerPt, | |
172 | //fHistProImNumerPt, fHistProReNumer2D, fHistProImNumer2D. | |
80f72ed6 | 173 | AliFlowLYZHist2* fHist2RP[5]; //array of hist2 |
174 | AliFlowLYZHist2* fHist2POI[5]; //array of hist2 | |
f1d945a1 | 175 | |
80f72ed6 | 176 | AliFlowCommonHist* fCommonHists; //control histograms |
177 | AliFlowCommonHistResults* fCommonHistsRes; //final results histograms | |
f1d945a1 | 178 | |
9d062fe3 | 179 | ClassDef(AliFlowAnalysisWithLeeYangZeros,1) // macro for rootcint |
153c1b38 | 180 | }; |
f1d945a1 | 181 | |
182 | ||
183 | #endif | |
882ffd6a | 184 |