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