]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FLOW/AliFlowCommon/AliFlowAnalysisWithNestedLoops.h
fill the refmult
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowCommon / AliFlowAnalysisWithNestedLoops.h
CommitLineData
83bc3e95 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 * Only in this class nested loops are used for flow analysis. *
9 * Nested loops are used to evaluate: *
10 * *
5c078806 11 * a) Distribution of relative angle difference (phi1-phi2); *
12 * b) Cross-check the results for mixed harmonics. *
83bc3e95 13 * *
14 * Author: Ante Bilandzic (abilandzic@gmail.com) *
15 ***************************************************************/
16
17#ifndef ALIFLOWANALYSISNESTEDLOOPS_H
18#define ALIFLOWANALYSISNESTEDLOOPS_H
19
20#include "AliFlowCommonConstants.h" // needed as include
21
22class TList;
929098e4 23class TDirectoryFile;
24class TH1F;
25class TH1D;
83bc3e95 26class TProfile;
27
28class AliFlowEventSimple;
29class AliFlowCommonHist;
30class AliFlowCommonHistResults;
31
32//================================================================================================================
33
34class AliFlowAnalysisWithNestedLoops
35{
36 public:
37 AliFlowAnalysisWithNestedLoops();
38 virtual ~AliFlowAnalysisWithNestedLoops();
39 // 0.) Methods called in the constructor:
5c078806 40 virtual void InitializeArraysForMH();
83bc3e95 41 // 1.) Method Init() and methods called within Init():
42 virtual void Init();
43 virtual void CrossCheckSettings();
44 virtual void AccessConstants();
45 virtual void BookAndNestAllLists();
5c078806 46 virtual void BookAndFillProfileHoldingSettings();
83bc3e95 47 virtual void BookCommonHistograms();
5c078806 48 virtual void BookEverythingForRAD(); // RAD = relative angle distribution phi1-phi2
49 virtual void BookEverythingForMH(); // MH = Mixed Harmonics
83bc3e95 50 virtual void BookAndFillWeightsHistograms();
51 // 2.) Method Make() and methods called within Make():
52 virtual void Make(AliFlowEventSimple *anEvent);
53 virtual void CheckPointersUsedInMake();
5c078806 54 virtual void EvaluateNestedLoopsForRAD(AliFlowEventSimple *anEvent);
55 virtual void EvaluateNestedLoopsForMH(AliFlowEventSimple *anEvent);
83bc3e95 56 // 3.) Method Finish() and methods called within Finish():
57 virtual void Finish();
58 virtual void CheckPointersUsedInFinish();
5c078806 59 virtual void AccessSettings();
60 virtual void PrintOnTheScreen();
83bc3e95 61 // 4.) Method GetOutputHistograms and method called within it:
62 virtual void GetOutputHistograms(TList *outputListHistos);
5c078806 63 virtual void GetPointersForBaseHistograms();
83bc3e95 64 virtual void GetPointersForCommonHistograms();
5c078806 65 virtual void GetPointersForRAD();
66 virtual void GetPointersForMH();
83bc3e95 67 // 5.) Other methods:
68 virtual void WriteHistograms(TString outputFileName);
69 virtual void WriteHistograms(TDirectoryFile *outputFileName);
5c078806 70 virtual void CheckPointersForRAD(TString where);
71 virtual void CheckPointersForMH(TString where);
83bc3e95 72 // 6.) Setters and getters:
73 void SetHistList(TList* const hl) {this->fHistList = hl;}
74 TList* GetHistList() const {return this->fHistList;}
75 void SetHistListName(const char *hln) {this->fHistListName->Append(*hln);};
76 TString *GetHistListName() const {return this->fHistListName;};
77 void SetAnalysisLabel(const char *al) {this->fAnalysisLabel->Append(*al);};
78 TString *GetAnalysisLabel() const {return this->fAnalysisLabel;};
79 void SetAnalysisSettings(TProfile* const as) {this->fAnalysisSettings = as;};
80 TProfile* GetAnalysisSettings() const {return this->fAnalysisSettings;};
5c078806 81 void SetPrintOnTheScreen(Bool_t const pots) {this->fPrintOnTheScreen = pots;};
82 Bool_t GetPrintOnTheScreen() const {return this->fPrintOnTheScreen;};
83bc3e95 83 void SetCommonHists(AliFlowCommonHist* const ch) {this->fCommonHists = ch;};
84 AliFlowCommonHist* GetCommonHists() const {return this->fCommonHists;};
85 void SetWeightsList(TList* const wl) {this->fWeightsList = (TList*)wl->Clone();}
86 TList* GetWeightsList() const {return this->fWeightsList;}
87 void SetUsePhiWeights(Bool_t const uPhiW) {this->fUsePhiWeights = uPhiW;};
88 Bool_t GetUsePhiWeights() const {return this->fUsePhiWeights;};
89 void SetUsePtWeights(Bool_t const uPtW) {this->fUsePtWeights = uPtW;};
90 Bool_t GetUsePtWeights() const {return this->fUsePtWeights;};
91 void SetUseEtaWeights(Bool_t const uEtaW) {this->fUseEtaWeights = uEtaW;};
92 Bool_t GetUseEtaWeights() const {return this->fUseEtaWeights;};
93 void SetUseParticleWeights(TProfile* const uPW) {this->fUseParticleWeights = uPW;};
94 TProfile* GetUseParticleWeights() const {return this->fUseParticleWeights;};
95 void SetPhiWeights(TH1F* const histPhiWeights) {this->fPhiWeights = histPhiWeights;};
96 TH1F* GetPhiWeights() const {return this->fPhiWeights;};
97 void SetPtWeights(TH1D* const histPtWeights) {this->fPtWeights = histPtWeights;};
98 TH1D* GetPtWeights() const {return this->fPtWeights;};
99 void SetEtaWeights(TH1D* const histEtaWeights) {this->fEtaWeights = histEtaWeights;};
100 TH1D* GetEtaWeights() const {return this->fEtaWeights;};
5c078806 101 void SetListRAD(TList* const lRAD) {this->fListRAD = lRAD;}
102 TList* GetListRAD() const {return this->fListRAD;}
103 void SetEvaluateNestedLoopsForRAD(Bool_t const enlfRAD) {this->fEvaluateNestedLoopsForRAD = enlfRAD;};
104 Bool_t GetEvaluateNestedLoopsForRAD() const {return this->fEvaluateNestedLoopsForRAD;};
83bc3e95 105 void SetRelativeAngleDistribution(TH1D* const rad) {this->fRelativeAngleDistribution = rad;};
5c078806 106 TH1D* GetRelativeAngleDistribution() const {return this->fRelativeAngleDistribution;};
107 // QC:
108 // ...
109 // MH:
110 void SetListMH(TList* const lMH) {this->fListMH = lMH;}
111 TList* GetListMH() const {return this->fListMH;}
112 void SetEvaluateNestedLoopsForMH(Bool_t const enlfMH) {this->fEvaluateNestedLoopsForMH = enlfMH;};
113 Bool_t GetEvaluateNestedLoopsForMH() const {return this->fEvaluateNestedLoopsForMH;};
114 void SetCorrelatorIntegerMH(Int_t const ciMH) {this->fCorrelatorIntegerMH = ciMH;};
115 Int_t GetCorrelatorIntegerMH() const {return this->fCorrelatorIntegerMH;};
116 void Set3pCorrelatorVsPtSumDiffDirectPro(TProfile* const s3pcvpsdd, Int_t const sd) {this->f3pCorrelatorVsPtSumDiffDirectPro[sd] = s3pcvpsdd;};
117 TProfile* Get3pCorrelatorVsPtSumDiffDirectPro(Int_t sd) const {return this->f3pCorrelatorVsPtSumDiffDirectPro[sd];};
118 void SetCrossCheckInPtSumBinNo(Int_t const ccipsbn) {this->fCrossCheckInPtSumBinNo = ccipsbn;};
119 Int_t GetCrossCheckInPtSumBinNo() const {return this->fCrossCheckInPtSumBinNo;};
120 void SetCrossCheckInPtDiffBinNo(Int_t const ccipdbn) {this->fCrossCheckInPtDiffBinNo = ccipdbn;};
121 Int_t GetCrossCheckInPtDiffBinNo() const {return this->fCrossCheckInPtDiffBinNo;};
83bc3e95 122
123 private:
124 AliFlowAnalysisWithNestedLoops(const AliFlowAnalysisWithNestedLoops& afawQc);
125 AliFlowAnalysisWithNestedLoops& operator=(const AliFlowAnalysisWithNestedLoops& afawQc);
126 // 0.) Base:
127 TList *fHistList; // base list to hold all output objects
128 TString *fHistListName; // name of base list
129 TString *fAnalysisLabel; // analysis label
130 TProfile *fAnalysisSettings; // profile to hold analysis settings
5c078806 131 Bool_t fPrintOnTheScreen; // print or not on the screen
83bc3e95 132 // 1.) Common:
133 AliFlowCommonHist *fCommonHists; // common control histograms (filled only with events with 3 or more tracks for 3-p correlators)
134 Int_t fnBinsPhi; // number of phi bins
135 Double_t fPhiMin; // minimum phi
136 Double_t fPhiMax; // maximum phi
137 Double_t fPhiBinWidth; // bin width for phi histograms
138 Int_t fnBinsPt; // number of pt bins
139 Double_t fPtMin; // minimum pt
140 Double_t fPtMax; // maximum pt
141 Double_t fPtBinWidth; // bin width for pt histograms
142 Int_t fnBinsEta; // number of eta bins
143 Double_t fEtaMin; // minimum eta
144 Double_t fEtaMax; // maximum eta
145 Double_t fEtaBinWidth; // bin width for eta histograms
146 // 2a.) Particle weights:
147 TList *fWeightsList; // list to hold all histograms with particle weights: fUseParticleWeights, fPhiWeights, fPtWeights and fEtaWeights
148 Bool_t fUsePhiWeights; // use phi weights
149 Bool_t fUsePtWeights; // use pt weights
150 Bool_t fUseEtaWeights; // use eta weights
151 TProfile *fUseParticleWeights; // profile with three bins to hold values of fUsePhiWeights, fUsePtWeights and fUseEtaWeights
152 TH1F *fPhiWeights; // histogram holding phi weights
153 TH1D *fPtWeights; // histogram holding phi weights
154 TH1D *fEtaWeights; // histogram holding phi weights
5c078806 155 // 3.) Relative angle distribution (RAD):
156 TList *fListRAD; // list holding objects for calculation of relative angle distribution phi1-phi2
157 Bool_t fEvaluateNestedLoopsForRAD; // evaluate nested loops for relative angle distribution
83bc3e95 158 TH1D *fRelativeAngleDistribution; // distribution of phi1-phi2 for all distinct pairs of particles
5c078806 159 // 4.) Debugging and cross-checking QC:
160 // ...
161 // 5.) Debugging and cross-checking MH:
162 TList *fListMH; // list holding objects relevant for debugging and cross-checking of MH class
163 Bool_t fEvaluateNestedLoopsForMH; // evaluate nested loops for mixed harmonics
164 Int_t fCorrelatorIntegerMH; // integer n in cos[n(2phi1-psi2-psi3)]
165 TProfile *f3pCorrelatorVsPtSumDiffDirectPro[2]; // differential 3-p correlator cos[n(2phi1-psi2-psi3)] vs [(p1+p2)/2,|p1-p2|]
166 Int_t fCrossCheckInPtSumBinNo; // print on the screen result of cos[n(2phi1-psi2-psi3)] vs (p1+p2)/2 in this bin number
167 Int_t fCrossCheckInPtDiffBinNo; // print on the screen result of cos[n(2phi1-psi2-psi3)] vs |p1-p2| in this bin number
83bc3e95 168
169 ClassDef(AliFlowAnalysisWithNestedLoops, 0);
83bc3e95 170};
171
172//================================================================================================================
173
174#endif
175
176
177
178
179