]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FLOW/AliFlowCommon/AliFlowAnalysisWithMixedHarmonics.h
updating task (E.Biolcati and F.Prino)
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowCommon / AliFlowAnalysisWithMixedHarmonics.h
CommitLineData
d66d46f7 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 * In this class azimuthal correlators in mixed harmonics *
9 * are implemented in terms of Q-vectors. This approach *
10 * doesn't require evaluation of nested loops. This class *
11 * can be used to: *
12 * *
13 * a) Extract subdominant harmonics (like v1 and v4); *
5c078806 14 * b) Study flow of two-particle resonances; *
15 * c) Study strong parity violation. *
d66d46f7 16 * *
17 * Author: Ante Bilandzic (abilandzic@gmail.com) *
18 *********************************************************/
19
20#ifndef ALIFLOWANALYSISWITHMIXEDHARMONICS_H
21#define ALIFLOWANALYSISWITHMIXEDHARMONICS_H
22
23#include "AliFlowCommonConstants.h" // needed as include
24#include "TMatrixD.h"
25
929098e4 26class TDirectoryFile;
d66d46f7 27class TList;
28class TFile;
929098e4 29class TH1F;
30class TH1D;
d66d46f7 31class TH2;
67a6b178 32class TH2D;
d66d46f7 33class TProfile;
34class TProfile2D;
35
36class AliFlowEventSimple;
37class AliFlowCommonHist;
38class AliFlowCommonHistResults;
39
40//================================================================================================================
41
42class AliFlowAnalysisWithMixedHarmonics
43{
44 public:
45 AliFlowAnalysisWithMixedHarmonics();
46 virtual ~AliFlowAnalysisWithMixedHarmonics();
47 // 0.) Methods called in the constructor:
5c078806 48 virtual void InitializeArrays();
d66d46f7 49 // 1.) Method Init() and methods called within Init():
50 virtual void Init();
51 virtual void CrossCheckSettings();
52 virtual void AccessConstants();
53 virtual void BookAndNestAllLists();
54 virtual void BookProfileHoldingSettings();
55 virtual void BookCommonHistograms();
56 virtual void BookAllEventByEventQuantities();
57 virtual void BookAllAllEventQuantities();
58 virtual void BookAndFillWeightsHistograms();
5c078806 59 // 2.) Method Make() and methods called within Make():
d66d46f7 60 virtual void Make(AliFlowEventSimple *anEvent);
61 virtual void CheckPointersUsedInMake();
62 virtual void Calculate3pCorrelator();
63 virtual void CalculateNonIsotropicTerms();
5c078806 64 virtual void CalculateDifferential3pCorrelator();
d66d46f7 65 virtual void ResetEventByEventQuantities();
66 // 3.) Method Finish() and methods called within Finish():
67 virtual void Finish();
68 virtual void CheckPointersUsedInFinish();
69 virtual void AccessSettings();
d66d46f7 70 virtual void CorrectForDetectorEffects();
e558a733 71 virtual void CorrectForDetectorEffectsVsM();
5c078806 72 virtual void PrintOnTheScreen();
d66d46f7 73 // 4.) Method GetOutputHistograms and method called within it:
74 virtual void GetOutputHistograms(TList *outputListHistos);
ecac11c2 75 virtual void GetPointersForBaseHistograms();
d66d46f7 76 virtual void GetPointersForCommonHistograms();
ecac11c2 77 virtual void GetPointersForAllEventProfiles();
d66d46f7 78 virtual void GetPointersForResultsHistograms();
79 // 5.) Other methods:
80 virtual void WriteHistograms(TString outputFileName);
81 virtual void WriteHistograms(TDirectoryFile *outputFileName);
82 // 6.) Setters and getters:
83 void SetHistList(TList* const hl) {this->fHistList = hl;}
84 TList* GetHistList() const {return this->fHistList;}
85 void SetHistListName(const char *hln) {this->fHistListName->Append(*hln);};
86 TString *GetHistListName() const {return this->fHistListName;};
87 void SetAnalysisLabel(const char *al) {this->fAnalysisLabel->Append(*al);};
88 TString *GetAnalysisLabel() const {return this->fAnalysisLabel;};
89 void SetAnalysisSettings(TProfile* const as) {this->fAnalysisSettings = as;};
ecac11c2 90 TProfile* GetAnalysisSettings() const {return this->fAnalysisSettings;};
d66d46f7 91 void SetCorrelatorInteger(Int_t const ci) {this->fCorrelatorInteger = ci;};
92 Int_t GetCorrelatorInteger() const {return this->fCorrelatorInteger;};
93 void SetNoOfMultipicityBins(Int_t const nomb) {this->fNoOfMultipicityBins = nomb;};
94 Int_t GetNoOfMultipicityBins() const {return this->fNoOfMultipicityBins;};
95 void SetMultipicityBinWidth(Double_t const mbw) {this->fMultipicityBinWidth = mbw;};
96 Double_t GetMultipicityBinWidth() const {return this->fMultipicityBinWidth;};
97 void SetMinMultiplicity(Double_t const mm) {this->fMinMultiplicity = mm;};
98 Double_t GetMinMultiplicity() const {return this->fMinMultiplicity;};
99 void SetCorrectForDetectorEffects(Bool_t const cfde) {this->fCorrectForDetectorEffects = cfde;};
100 Bool_t GetCorrectForDetectorEffects() const {return this->fCorrectForDetectorEffects;};
5c078806 101 void SetPrintOnTheScreen(Bool_t const pots) {this->fPrintOnTheScreen = pots;};
102 Bool_t GetPrintOnTheScreen() const {return this->fPrintOnTheScreen;};
d66d46f7 103 void SetCommonHists(AliFlowCommonHist* const ch) {this->fCommonHists = ch;};
104 AliFlowCommonHist* GetCommonHists() const {return this->fCommonHists;};
105 void SetWeightsList(TList* const wl) {this->fWeightsList = (TList*)wl->Clone();}
106 TList* GetWeightsList() const {return this->fWeightsList;}
107 void SetUsePhiWeights(Bool_t const uPhiW) {this->fUsePhiWeights = uPhiW;};
108 Bool_t GetUsePhiWeights() const {return this->fUsePhiWeights;};
109 void SetUsePtWeights(Bool_t const uPtW) {this->fUsePtWeights = uPtW;};
110 Bool_t GetUsePtWeights() const {return this->fUsePtWeights;};
111 void SetUseEtaWeights(Bool_t const uEtaW) {this->fUseEtaWeights = uEtaW;};
112 Bool_t GetUseEtaWeights() const {return this->fUseEtaWeights;};
113 void SetUseParticleWeights(TProfile* const uPW) {this->fUseParticleWeights = uPW;};
114 TProfile* GetUseParticleWeights() const {return this->fUseParticleWeights;};
115 void SetPhiWeights(TH1F* const histPhiWeights) {this->fPhiWeights = histPhiWeights;};
116 TH1F* GetPhiWeights() const {return this->fPhiWeights;};
117 void SetPtWeights(TH1D* const histPtWeights) {this->fPtWeights = histPtWeights;};
118 TH1D* GetPtWeights() const {return this->fPtWeights;};
119 void SetEtaWeights(TH1D* const histEtaWeights) {this->fEtaWeights = histEtaWeights;};
120 TH1D* GetEtaWeights() const {return this->fEtaWeights;};
ecac11c2 121 void SetProfileList(TList* const plist) {this->fProfileList = plist;}
122 TList* GetProfileList() const {return this->fProfileList;}
d66d46f7 123 void Set3pCorrelatorPro(TProfile* const s3pPro) {this->f3pCorrelatorPro = s3pPro;};
124 TProfile* Get3pCorrelatorPro() const {return this->f3pCorrelatorPro;};
ecac11c2 125 void SetNonIsotropicTermsPro(TProfile* const nitPro) {this->fNonIsotropicTermsPro = nitPro;};
d66d46f7 126 TProfile* GetNonIsotropicTermsPro() const {return this->fNonIsotropicTermsPro;};
ecac11c2 127 void Set3pCorrelatorVsMPro(TProfile* const s3pVsMPro) {this->f3pCorrelatorVsMPro = s3pVsMPro;};
d66d46f7 128 TProfile* Get3pCorrelatorVsMPro() const {return this->f3pCorrelatorVsMPro;};
ecac11c2 129 void SetNonIsotropicTermsVsMPro(TProfile2D* const nitVsMPro) {this->fNonIsotropicTermsVsMPro = nitVsMPro;};
d66d46f7 130 TProfile2D* GetNonIsotropicTermsVsMPro() const {return this->fNonIsotropicTermsVsMPro;};
131 void SetResultsList(TList* const rlist) {this->fResultsList = rlist;}
5c078806 132 TList* GetResultsList() const {return this->fResultsList;}
133 void Set3pCorrelatorHist(TH1D* const s3pHist) {this->f3pCorrelatorHist = s3pHist;};
e558a733 134 TH1D* Get3pCorrelatorHist() const {return this->f3pCorrelatorHist;};
135 void Set3pCorrelatorVsMHist(TH1D* const s3pVsMHist) {this->f3pCorrelatorVsMHist = s3pVsMHist;};
136 TH1D* Get3pCorrelatorVsMHist() const {return this->f3pCorrelatorVsMHist;};
d66d46f7 137 void SetDetectorBiasHist(TH1D* const dbHist) {this->fDetectorBiasHist = dbHist;};
138 TH1D* GetDetectorBiasHist() const {return this->fDetectorBiasHist;};
d66d46f7 139 void SetDetectorBiasVsMHist(TH1D* const dbVsMHist) {this->fDetectorBiasVsMHist = dbVsMHist;};
140 TH1D* GetDetectorBiasVsMHist() const {return this->fDetectorBiasVsMHist;};
5c078806 141 void Set3pCorrelatorVsPtSumDiffPro(TProfile* const s3pcvpsd, Int_t const sd) {this->f3pCorrelatorVsPtSumDiffPro[sd] = s3pcvpsd;};
142 TProfile* Get3pCorrelatorVsPtSumDiffPro(Int_t sd) const {return this->f3pCorrelatorVsPtSumDiffPro[sd];};
143
d66d46f7 144 private:
145 AliFlowAnalysisWithMixedHarmonics(const AliFlowAnalysisWithMixedHarmonics& afawQc);
146 AliFlowAnalysisWithMixedHarmonics& operator=(const AliFlowAnalysisWithMixedHarmonics& afawQc);
147 // 0.) Base:
148 TList *fHistList; // base list to hold all output objects
149 TString *fHistListName; // name of base list
150 TString *fAnalysisLabel; // analysis label
151 TProfile *fAnalysisSettings; // profile to hold analysis settings
152 Int_t fCorrelatorInteger; // integer n in cos[n(2phi1-phi2-phi3)]
153 Int_t fNoOfMultipicityBins; // number of multiplicity bins
154 Double_t fMultipicityBinWidth; // width of multiplicity bin
155 Double_t fMinMultiplicity; // minimal multiplicity
156 Bool_t fCorrectForDetectorEffects; // correct 3-p correlator for detector effects
5c078806 157 Bool_t fPrintOnTheScreen; // print or not the final results on the screen
d66d46f7 158 // 1.) Common:
159 AliFlowCommonHist *fCommonHists; // common control histograms (filled only with events with 3 or more tracks for 3-p correlators)
160 Int_t fnBinsPhi; // number of phi bins
161 Double_t fPhiMin; // minimum phi
162 Double_t fPhiMax; // maximum phi
163 Double_t fPhiBinWidth; // bin width for phi histograms
164 Int_t fnBinsPt; // number of pt bins
165 Double_t fPtMin; // minimum pt
166 Double_t fPtMax; // maximum pt
167 Double_t fPtBinWidth; // bin width for pt histograms
168 Int_t fnBinsEta; // number of eta bins
169 Double_t fEtaMin; // minimum eta
170 Double_t fEtaMax; // maximum eta
171 Double_t fEtaBinWidth; // bin width for eta histograms
172 // 2a.) Particle weights:
173 TList *fWeightsList; // list to hold all histograms with particle weights: fUseParticleWeights, fPhiWeights, fPtWeights and fEtaWeights
174 Bool_t fUsePhiWeights; // use phi weights
175 Bool_t fUsePtWeights; // use pt weights
176 Bool_t fUseEtaWeights; // use eta weights
177 TProfile *fUseParticleWeights; // profile with three bins to hold values of fUsePhiWeights, fUsePtWeights and fUseEtaWeights
178 TH1F *fPhiWeights; // histogram holding phi weights
179 TH1D *fPtWeights; // histogram holding phi weights
180 TH1D *fEtaWeights; // histogram holding phi weights
181 // 3.) Event-by-event quantities:
182 TMatrixD *fReQnk; // fReQ[n][k] = Re[Q_{n,k}] = sum_{i=1}^{M} w_{i}^{k} cos(n*phi_{i})
183 TMatrixD *fImQnk; // fImQ[n][k] = Im[Q_{n,k}] = sum_{i=1}^{M} w_{i}^{k} sin(n*phi_{i})
184 TMatrixD *fSpk; // fS[p][k] = S_{p,k} = (sum_{i=1}^{M} w_{i}^{k})^{p+1} // note p+1 in the power to use 0th index in p in non-trivial way
5c078806 185 TProfile *fRePEBE[2]; // real part of p_n vs [(p1+p2)/2,|p1-p2|]
186 TProfile *fImPEBE[2]; // imaginary part of p_n vs [(p1+p2)/2,|p1-p2|]
d66d46f7 187 // 4.) Profiles:
ecac11c2 188 TList *fProfileList; // list holding all all-event profiles
5c078806 189 TProfile *f3pCorrelatorPro; // 3-p correlator <<cos[n(2phi1-phi2-phi3)]>> not corrected for detector effects
190 TProfile *fNonIsotropicTermsPro; // non-isotropic terms in the decomposition of 3-p correlator <<cos[n(2phi1-phi2-phi3)]>>
191 TProfile *f3pCorrelatorVsMPro; // 3-p correlator <<cos[n(2phi1-phi2-phi3)]>> vs multiplicity
192 TProfile2D *fNonIsotropicTermsVsMPro; // non-isotropic terms in the decomposition of <cos[n(2phi1-phi2-phi3)]> vs multiplicity
193 TProfile *f3pCorrelatorVsPtSumDiffPro[2]; // differential 3-p correlator <<cos[n(2phi1-psi2-psi3)]>> vs [(p1+p2)/2,|p1-p2|]
d66d46f7 194 // 5.) Final results:
195 TList *fResultsList; // list holding objects with final results
5c078806 196 TH1D *f3pCorrelatorHist; // 3-p correlator <<cos[n(2phi1-phi2-phi3)]>> corrected for detector effects
d66d46f7 197 TH1D *fDetectorBiasHist; // bias comming from detector inefficiencies to 3-p correlator <<cos[n(2phi1-phi2-phi3)]>> (in %)
e558a733 198 TH1D *f3pCorrelatorVsMHist; // 3-p correlator <<cos[n(2phi1-phi2-phi3)]>> vs multiplicity corrected for detector effects
d66d46f7 199 TH1D *fDetectorBiasVsMHist; // bias comming from detector inefficiencies to 3-p correlator <<cos[n(2phi1-phi2-phi3)]>> (in %) versus multiplicity
5c078806 200
d66d46f7 201 ClassDef(AliFlowAnalysisWithMixedHarmonics, 0);
202
203};
204
205//================================================================================================================
206
207#endif
208
209
210
211
212