]>
Commit | Line | Data |
---|---|---|
f1d945a1 | 1 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
2 | * See cxx source for full Copyright notice */ | |
fbdb53fa | 3 | // Description: Maker to analyze Flow from the generated MC reaction plane. |
4 | // This class is used to get the real value of the flow | |
5 | // to compare the other methods to when analysing simulated events. | |
f1d945a1 | 6 | |
7 | /* $Id$ */ | |
8 | ||
45cdbef2 | 9 | #ifndef ALIFLOWANALYSISWITHMCEVENTPLANE_H |
10 | #define ALIFLOWANALYSISWITHMCEVENTPLANE_H | |
f1d945a1 | 11 | |
fbdb53fa | 12 | class TVector2; |
13 | class TString; | |
929098e4 | 14 | class TDirectoryFile; |
f1d945a1 | 15 | |
16 | class AliFlowTrackSimple; | |
17 | class AliFlowEventSimple; | |
18 | class AliFlowCommonHist; | |
19 | class AliFlowCommonHistResults; | |
20 | ||
21 | class TH1F; | |
22 | class TH1D; | |
23 | class TProfile; | |
24 | class TProfile2D; | |
25 | class TObjArray; | |
26 | class TFile; | |
28ca24ad | 27 | class TList; |
f1d945a1 | 28 | class TComplex; |
29 | class Riostream; | |
30 | ||
31 | ||
f1d945a1 | 32 | |
33 | class AliFlowAnalysisWithMCEventPlane { | |
34 | ||
35 | public: | |
36 | ||
28ca24ad | 37 | AliFlowAnalysisWithMCEventPlane(); //default constructor |
f1d945a1 | 38 | virtual ~AliFlowAnalysisWithMCEventPlane(); //destructor |
39 | ||
bb26a78c | 40 | void WriteHistograms(TString* outputFileName); |
b0fda271 | 41 | void WriteHistograms(TString outputFileName); |
ad87ae62 | 42 | void WriteHistograms(TDirectoryFile *outputFileName); |
205ff969 | 43 | void Init(); //defines variables and histograms |
44 | void Make(AliFlowEventSimple* anEvent); //calculates variables and fills histograms | |
45 | void GetOutputHistograms(TList *outputListHistos); //get pointers to all output histograms (called before Finish()) | |
46 | void Finish(); //saves histograms | |
bb26a78c | 47 | |
9d062fe3 | 48 | void SetDebug(Bool_t kt) { this->fDebug = kt ; } |
49 | Bool_t GetDebug() const { return this->fDebug ; } | |
f1d945a1 | 50 | |
9d062fe3 | 51 | void SetEventNumber(Int_t n) { this->fEventNumber = n; } |
52 | Int_t GetEventNumber() const { return this->fEventNumber; } | |
f1d945a1 | 53 | |
54 | // Output | |
9d062fe3 | 55 | TList* GetHistList() const { return this->fHistList ; } |
56 | AliFlowCommonHist* GetCommonHists() const { return this->fCommonHists; } | |
fbdb53fa | 57 | void SetCommonHists(AliFlowCommonHist* const aCommonHist) |
9d062fe3 | 58 | { this->fCommonHists = aCommonHist; } |
b7cb54d5 | 59 | AliFlowCommonHistResults* GetCommonHistsRes() const { return this->fCommonHistsRes; } |
fbdb53fa | 60 | void SetCommonHistsRes( AliFlowCommonHistResults* const aCommonHistResult ) |
9d062fe3 | 61 | { this->fCommonHistsRes = aCommonHistResult; } |
f1d945a1 | 62 | |
9d062fe3 | 63 | //histograms |
fbdb53fa | 64 | TH1F* GetHistRP() const {return this->fHistRP; } |
65 | void SetHistRP(TH1F* const aHistRP) {this->fHistRP = aHistRP; } | |
45cdbef2 | 66 | |
fbdb53fa | 67 | TProfile* GetHistProIntFlow() const {return this->fHistProIntFlow; } |
68 | void SetHistProIntFlow(TProfile* const aHistProIntFlow) | |
b7cb54d5 | 69 | {this->fHistProIntFlow = aHistProIntFlow; } |
9cc9e6cc | 70 | |
10a70cd5 | 71 | TProfile* GetHistProIntFlowVsM() const {return this->fHistProIntFlowVsM; } |
72 | void SetHistProIntFlowVsM(TProfile* const aHistProIntFlowVsM) | |
73 | {this->fHistProIntFlowVsM = aHistProIntFlowVsM; } | |
74 | ||
fbdb53fa | 75 | TProfile2D* GetHistProDiffFlowPtEtaRP() const {return this->fHistProDiffFlowPtEtaRP; } |
76 | void SetHistProDiffFlowPtEtaRP(TProfile2D* const aHistProDiffFlowPtEtaRP) | |
9cc9e6cc | 77 | {this->fHistProDiffFlowPtEtaRP = aHistProDiffFlowPtEtaRP; } |
45cdbef2 | 78 | |
fbdb53fa | 79 | TProfile* GetHistProDiffFlowPtRP() const {return this->fHistProDiffFlowPtRP; } |
80 | void SetHistProDiffFlowPtRP(TProfile* const aHistProDiffFlowPtRP) | |
b7cb54d5 | 81 | {this->fHistProDiffFlowPtRP = aHistProDiffFlowPtRP; } |
45cdbef2 | 82 | |
fbdb53fa | 83 | TProfile* GetHistProDiffFlowEtaRP() const {return this->fHistProDiffFlowEtaRP; } |
84 | void SetHistProDiffFlowEtaRP(TProfile* const aHistProDiffFlowEtaRP) | |
b7cb54d5 | 85 | {this->fHistProDiffFlowEtaRP = aHistProDiffFlowEtaRP; } |
9cc9e6cc | 86 | |
fbdb53fa | 87 | TProfile2D* GetHistProDiffFlowPtEtaPOI()const {return this->fHistProDiffFlowPtEtaPOI; } |
88 | void SetHistProDiffFlowPtEtaPOI(TProfile2D* const aHistProDiffFlowPtEtaPOI) | |
9cc9e6cc | 89 | {this->fHistProDiffFlowPtEtaPOI = aHistProDiffFlowPtEtaPOI; } |
45cdbef2 | 90 | |
fbdb53fa | 91 | TProfile* GetHistProDiffFlowPtPOI()const {return this->fHistProDiffFlowPtPOI; } |
92 | void SetHistProDiffFlowPtPOI(TProfile* const aHistProDiffFlowPtPOI) | |
b7cb54d5 | 93 | {this->fHistProDiffFlowPtPOI = aHistProDiffFlowPtPOI; } |
45cdbef2 | 94 | |
fbdb53fa | 95 | TProfile* GetHistProDiffFlowEtaPOI()const {return this->fHistProDiffFlowEtaPOI; } |
96 | void SetHistProDiffFlowEtaPOI(TProfile* const aHistProDiffFlowEtaPOI) | |
4f678629 | 97 | {this->fHistProDiffFlowEtaPOI = aHistProDiffFlowEtaPOI; } |
98 | ||
fbdb53fa | 99 | TH1D* GetHistSpreadOfFlow()const {return this->fHistSpreadOfFlow; } |
100 | void SetHistSpreadOfFlow(TH1D* const aHistSpreadOfFlow) | |
4f678629 | 101 | {this->fHistSpreadOfFlow = aHistSpreadOfFlow; } |
102 | ||
afa4af05 | 103 | // harmonic: |
104 | void SetHarmonic(Int_t const harmonic) {this->fHarmonic = harmonic;}; | |
105 | Int_t GetHarmonic() const {return this->fHarmonic;}; | |
b3a29c75 | 106 | |
4740c6b8 | 107 | // mixed harmonics: |
b3a29c75 | 108 | // a) methods: |
4740c6b8 | 109 | virtual void InitalizeArraysForMixedHarmonics(); |
110 | virtual void BookObjectsForMixedHarmonics(); | |
111 | virtual void EvaluateMixedHarmonics(AliFlowEventSimple* anEvent); | |
112 | virtual void GetOutputHistoramsForMixedHarmonics(TList *mixedHarmonicsList); | |
b3a29c75 | 113 | // b) setters and getters: |
4740c6b8 | 114 | void SetMixedHarmonicsList(TList* const mhl) {this->fMixedHarmonicsList = mhl;} |
115 | TList* GetMixedHarmonicsList() const {return this->fMixedHarmonicsList;} | |
116 | void SetEvaluateMixedHarmonics(Bool_t const emh) {this->fEvaluateMixedHarmonics = emh;}; | |
117 | Bool_t GetEvalauteMixedHarmonics() const {return this->fEvaluateMixedHarmonics;}; | |
118 | void SetMixedHarmonicsSettings(TProfile* const mhs) {this->fMixedHarmonicsSettings = mhs;}; | |
119 | TProfile* GetMixedHarmonicsSettings() const {return this->fMixedHarmonicsSettings;}; | |
b3a29c75 | 120 | void SetPairCorrelator(TProfile* const spc, Int_t const cs) {this->fPairCorrelator[cs] = spc;}; |
4740c6b8 | 121 | TProfile* GetPairCorrelator(Int_t const cs) const {return this->fPairCorrelator[cs];}; |
122 | void SetPairCorrelatorVsM(TProfile* const spcVsM, Int_t const cs) {this->fPairCorrelatorVsM[cs] = spcVsM;}; | |
123 | TProfile* GetPairCorrelatorVsM(Int_t const cs) const {return this->fPairCorrelatorVsM[cs];}; | |
124 | void SetnBinsMult(Int_t const nbm) {this->fnBinsMult = nbm;}; | |
125 | Int_t GetnBinsMult() const {return this->fnBinsMult;}; | |
126 | void SetMinMult(Double_t const minm) {this->fMinMult = minm;}; | |
127 | Double_t GetMinMult() const {return this->fMinMult;}; | |
128 | void SetMaxMult(Double_t const maxm) {this->fMaxMult = maxm;}; | |
129 | Double_t GetMaxMult() const {return this->fMaxMult;}; | |
130 | void SetPairCorrelatorVsPtSumDiff(TProfile* const spcVspsd, Int_t const cs, Int_t const sd) {this->fPairCorrelatorVsPtSumDiff[cs][sd] = spcVspsd;}; | |
131 | TProfile* GetPairCorrelatorVsPtSumDiff(Int_t const cs, Int_t const sd) const {return this->fPairCorrelatorVsPtSumDiff[cs][sd];}; | |
132 | void SetNinCorrelator(Int_t const n) {this->fNinCorrelator = n;}; | |
133 | Int_t GetNinCorrelator() const {return this->fNinCorrelator;}; | |
134 | void SetMinCorrelator(Int_t const m) {this->fMinCorrelator = m;}; | |
135 | Int_t GetMinCorrelator() const {return this->fMinCorrelator;}; | |
b3a29c75 | 136 | void SetXinPairAngle(Double_t const xipa) {this->fXinPairAngle = xipa;}; |
137 | Double_t GetXinPairAngle() const {return this->fXinPairAngle;}; | |
138 | ||
f1d945a1 | 139 | private: |
af795c87 | 140 | |
00731146 | 141 | AliFlowAnalysisWithMCEventPlane(const AliFlowAnalysisWithMCEventPlane& aAnalysis); //copy constructor |
142 | AliFlowAnalysisWithMCEventPlane& operator=(const AliFlowAnalysisWithMCEventPlane& aAnalysis); //assignment operator | |
af795c87 | 143 | |
f1d945a1 | 144 | |
145 | #ifndef __CINT__ | |
00731146 | 146 | TVector2* fQsum; // flow vector sum |
147 | Double_t fQ2sum; // flow vector sum squared | |
f1d945a1 | 148 | #endif /*__CINT__*/ |
149 | ||
00731146 | 150 | Int_t fEventNumber; // event counter |
f1d945a1 | 151 | Bool_t fDebug ; //! flag for lyz analysis: more print statements |
152 | ||
28ca24ad | 153 | TList* fHistList; //list to hold all output histograms |
f1d945a1 | 154 | |
fbdb53fa | 155 | AliFlowCommonHist* fCommonHists; // hist |
156 | AliFlowCommonHistResults* fCommonHistsRes; // hist | |
45cdbef2 | 157 | |
9cc9e6cc | 158 | TH1F* fHistRP; // reaction plane |
159 | TProfile* fHistProIntFlow; // profile used to calculate the integrated flow of RP particles | |
10a70cd5 | 160 | TProfile* fHistProIntFlowVsM; // profile used to calculate the integrated flow of RP particles vs multiplicity |
9cc9e6cc | 161 | TProfile2D* fHistProDiffFlowPtEtaRP; // profile used to calculate the differential flow (Pt,Eta) of RP particles |
162 | TProfile* fHistProDiffFlowPtRP; // profile used to calculate the differential flow (Pt) of RP particles | |
163 | TProfile* fHistProDiffFlowEtaRP; // profile used to calculate the differential flow (Eta) of RP particles | |
164 | TProfile2D* fHistProDiffFlowPtEtaPOI; // profile used to calculate the differential flow (Pt,Eta) of POI particles | |
165 | TProfile* fHistProDiffFlowPtPOI; // profile used to calculate the differential flow (Pt) of POI particles | |
4f678629 | 166 | TProfile* fHistProDiffFlowEtaPOI; // profile used to calculate the differential flow (Eta) of POI particles |
b3a29c75 | 167 | TH1D* fHistSpreadOfFlow; // histogram filled with reference flow calculated e-b-e |
afa4af05 | 168 | Int_t fHarmonic; // harmonic |
b3a29c75 | 169 | |
4740c6b8 | 170 | // mixed harmonics: |
171 | TList *fMixedHarmonicsList; // list to hold all objects relevant for mixed harmonics | |
172 | Bool_t fEvaluateMixedHarmonics; // evaluate and store objects relevant for mixed harmonics | |
173 | TProfile *fMixedHarmonicsSettings; // profile used to hold all flags relevant for the mixed harmonics | |
174 | TProfile *fPairCorrelator[2]; // profiles used to calculate <cos[m*phi_{pair}-n*RP]> and <sin[m*phi_{pair}-n*RP]> (0 = cos, 1 = sin), where phi_{pair} = x*phi1+(1-x)*phi2 | |
175 | TProfile *fPairCorrelatorVsM[2]; // <cos[m*phi_{pair}-n*RP]> and <sin[m*phi_{pair}-n*RP]> versus multiplicity (0 = cos, 1 = sin), where phi_{pair} = x*phi1+(1-x)*phi2 | |
176 | Int_t fnBinsMult; // number of multiplicity bins for mixed harmonics analysis versus multiplicity | |
177 | Double_t fMinMult; // minimal multiplicity for mixed harmonics analysis versus multiplicity | |
178 | Double_t fMaxMult; // maximal multiplicity for mixed harmonics analysis versus multiplicity | |
179 | TProfile *fPairCorrelatorVsPtSumDiff[2][2]; // <cos/sin[m*phi_{pair}-n*RP]> vs (1/2)(pt1+pt2) (0) and |pt1-pt2| (1), where phi_{pair} = x*phi1+(1-x)*phi2 | |
180 | Int_t fNinCorrelator; // n in <cos[m*phi_{pair}-n*RP]> and <sin[m*phi_{pair}-n*RP]>, where phi_{pair} = x*phi1+(1-x)*phi2 | |
181 | Int_t fMinCorrelator; // m in <cos[m*phi_{pair}-n*RP]> and <sin[m*phi_{pair}-n*RP]>, where phi_{pair} = x*phi1+(1-x)*phi2 | |
b3a29c75 | 182 | Double_t fXinPairAngle; // x in definition phi_{pair} = x*phi1+(1-x)*phi2 |
183 | ||
c109b8c7 | 184 | ClassDef(AliFlowAnalysisWithMCEventPlane,0) // Analyse particle distribution versus MC reaction plane |
4740c6b8 | 185 | |
186 | }; | |
d7671632 | 187 | |
f1d945a1 | 188 | |
189 | #endif | |
af795c87 | 190 | |
191 |