1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
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.
9 #ifndef ALIFLOWANALYSISWITHMCEVENTPLANE_H
10 #define ALIFLOWANALYSISWITHMCEVENTPLANE_H
16 class AliFlowTrackSimple;
17 class AliFlowEventSimple;
18 class AliFlowCommonHist;
19 class AliFlowCommonHistResults;
33 class AliFlowAnalysisWithMCEventPlane {
37 AliFlowAnalysisWithMCEventPlane(); //default constructor
38 virtual ~AliFlowAnalysisWithMCEventPlane(); //destructor
40 void WriteHistograms(TString* outputFileName);
41 void WriteHistograms(TString outputFileName);
42 void WriteHistograms(TDirectoryFile *outputFileName);
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
48 void SetDebug(Bool_t kt) { this->fDebug = kt ; }
49 Bool_t GetDebug() const { return this->fDebug ; }
51 void SetEventNumber(Int_t n) { this->fEventNumber = n; }
52 Int_t GetEventNumber() const { return this->fEventNumber; }
55 TList* GetHistList() const { return this->fHistList ; }
56 AliFlowCommonHist* GetCommonHists() const { return this->fCommonHists; }
57 void SetCommonHists(AliFlowCommonHist* const aCommonHist)
58 { this->fCommonHists = aCommonHist; }
59 AliFlowCommonHistResults* GetCommonHistsRes() const { return this->fCommonHistsRes; }
60 void SetCommonHistsRes( AliFlowCommonHistResults* const aCommonHistResult )
61 { this->fCommonHistsRes = aCommonHistResult; }
64 TH1F* GetHistRP() const {return this->fHistRP; }
65 void SetHistRP(TH1F* const aHistRP) {this->fHistRP = aHistRP; }
67 TProfile* GetHistProIntFlow() const {return this->fHistProIntFlow; }
68 void SetHistProIntFlow(TProfile* const aHistProIntFlow)
69 {this->fHistProIntFlow = aHistProIntFlow; }
71 TProfile* GetHistProIntFlowVsM() const {return this->fHistProIntFlowVsM; }
72 void SetHistProIntFlowVsM(TProfile* const aHistProIntFlowVsM)
73 {this->fHistProIntFlowVsM = aHistProIntFlowVsM; }
75 TProfile2D* GetHistProDiffFlowPtEtaRP() const {return this->fHistProDiffFlowPtEtaRP; }
76 void SetHistProDiffFlowPtEtaRP(TProfile2D* const aHistProDiffFlowPtEtaRP)
77 {this->fHistProDiffFlowPtEtaRP = aHistProDiffFlowPtEtaRP; }
79 TProfile* GetHistProDiffFlowPtRP() const {return this->fHistProDiffFlowPtRP; }
80 void SetHistProDiffFlowPtRP(TProfile* const aHistProDiffFlowPtRP)
81 {this->fHistProDiffFlowPtRP = aHistProDiffFlowPtRP; }
83 TProfile* GetHistProDiffFlowEtaRP() const {return this->fHistProDiffFlowEtaRP; }
84 void SetHistProDiffFlowEtaRP(TProfile* const aHistProDiffFlowEtaRP)
85 {this->fHistProDiffFlowEtaRP = aHistProDiffFlowEtaRP; }
87 TProfile2D* GetHistProDiffFlowPtEtaPOI()const {return this->fHistProDiffFlowPtEtaPOI; }
88 void SetHistProDiffFlowPtEtaPOI(TProfile2D* const aHistProDiffFlowPtEtaPOI)
89 {this->fHistProDiffFlowPtEtaPOI = aHistProDiffFlowPtEtaPOI; }
91 TProfile* GetHistProDiffFlowPtPOI()const {return this->fHistProDiffFlowPtPOI; }
92 void SetHistProDiffFlowPtPOI(TProfile* const aHistProDiffFlowPtPOI)
93 {this->fHistProDiffFlowPtPOI = aHistProDiffFlowPtPOI; }
95 TProfile* GetHistProDiffFlowEtaPOI()const {return this->fHistProDiffFlowEtaPOI; }
96 void SetHistProDiffFlowEtaPOI(TProfile* const aHistProDiffFlowEtaPOI)
97 {this->fHistProDiffFlowEtaPOI = aHistProDiffFlowEtaPOI; }
99 TH1D* GetHistSpreadOfFlow()const {return this->fHistSpreadOfFlow; }
100 void SetHistSpreadOfFlow(TH1D* const aHistSpreadOfFlow)
101 {this->fHistSpreadOfFlow = aHistSpreadOfFlow; }
104 void SetHarmonic(Int_t const harmonic) {this->fHarmonic = harmonic;};
105 Int_t GetHarmonic() const {return this->fHarmonic;};
109 virtual void InitalizeArraysForMixedHarmonics();
110 virtual void BookObjectsForMixedHarmonics();
111 virtual void EvaluateMixedHarmonics(AliFlowEventSimple* anEvent);
112 virtual void GetOutputHistoramsForMixedHarmonics(TList *mixedHarmonicsList);
113 // b) setters and getters:
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;};
120 void SetPairCorrelator(TProfile* const spc, Int_t const cs) {this->fPairCorrelator[cs] = spc;};
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;};
136 void SetXinPairAngle(Double_t const xipa) {this->fXinPairAngle = xipa;};
137 Double_t GetXinPairAngle() const {return this->fXinPairAngle;};
141 AliFlowAnalysisWithMCEventPlane(const AliFlowAnalysisWithMCEventPlane& aAnalysis); //copy constructor
142 AliFlowAnalysisWithMCEventPlane& operator=(const AliFlowAnalysisWithMCEventPlane& aAnalysis); //assignment operator
146 TVector2* fQsum; // flow vector sum
147 Double_t fQ2sum; // flow vector sum squared
150 Int_t fEventNumber; // event counter
151 Bool_t fDebug ; //! flag for lyz analysis: more print statements
153 TList* fHistList; //list to hold all output histograms
155 AliFlowCommonHist* fCommonHists; // hist
156 AliFlowCommonHistResults* fCommonHistsRes; // hist
158 TH1F* fHistRP; // reaction plane
159 TProfile* fHistProIntFlow; // profile used to calculate the integrated flow of RP particles
160 TProfile* fHistProIntFlowVsM; // profile used to calculate the integrated flow of RP particles vs multiplicity
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
166 TProfile* fHistProDiffFlowEtaPOI; // profile used to calculate the differential flow (Eta) of POI particles
167 TH1D* fHistSpreadOfFlow; // histogram filled with reference flow calculated e-b-e
168 Int_t fHarmonic; // harmonic
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
182 Double_t fXinPairAngle; // x in definition phi_{pair} = x*phi1+(1-x)*phi2
184 ClassDef(AliFlowAnalysisWithMCEventPlane,0) // Analyse particle distribution versus MC reaction plane