1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
7 #ifndef ALIFLOWANALYSISWITHLEEYANGZEROS_H
8 #define ALIFLOWANALYSISWITHLEEYANGZEROS_H
10 ////////////////////////////////////////////////////////////////////
11 // Description: Maker to analyze Flow by the LeeYangZeros method
12 // One needs to do two runs over the data;
13 // First to calculate the integrated flow
14 // and in the second to calculate the differential flow
15 // Author: Naomi van der Kolk (kolk@nikhef.nl)
16 ////////////////////////////////////////////////////////////////////
19 #include "AliFlowVector.h" //needed as include
21 //class AliFlowTrackSimple;
22 class AliFlowEventSimple;
23 class AliFlowLYZHist1;
24 class AliFlowLYZHist2;
25 class AliFlowCommonHist;
26 class AliFlowCommonHistResults;
40 class AliFlowAnalysisWithLeeYangZeros {
44 AliFlowAnalysisWithLeeYangZeros(); //default constructor
45 virtual ~AliFlowAnalysisWithLeeYangZeros(); //destructor
47 Bool_t Init(); //defines variables and histograms
48 Bool_t Make(AliFlowEventSimple* anEvent); //calculates variables and fills histograms
49 void GetOutputHistograms(TList *outputListHistos); //get pointers to all output histograms (called before Finish())
50 Bool_t Finish(); //saves histograms
51 void WriteHistograms(TString* outputFileName); //writes histograms locally
52 void WriteHistograms(TString outputFileName); //writes histograms locally
54 Double_t GetQtheta(AliFlowVector aQ, Double_t aTheta);
56 void SetFirstRun(Bool_t kt) { this->fFirstRun = kt ; }
57 Bool_t GetFirstRun() const { return this->fFirstRun ; }
58 void SetUseSum(Bool_t kt) { this->fUseSum = kt ; }
59 Bool_t GetUseSum() const { return this->fUseSum ; }
60 void SetDoubleLoop(Bool_t kt) { this->fDoubleLoop = kt ; }
61 Bool_t GetDoubleLoop() const { return this->fDoubleLoop ; }
62 void SetDebug(Bool_t kt) { this->fDebug = kt ; }
63 Bool_t GetDebug() const { return this->fDebug ; }
65 void SetEventNumber(Int_t n) { this->fEventNumber = n; }
66 Int_t GetEventNumber() const { return this->fEventNumber; }
67 void SetQ2sum(Double_t d) { this->fQ2sum = d; }
68 Double_t GetQ2sum() const { return this->fQ2sum; }
71 TList* GetHistList() const { return this->fHistList ; }
72 AliFlowCommonHist* GetCommonHists() const { return this->fCommonHists; }
73 void SetCommonHists(AliFlowCommonHist* const aCommonHist)
74 { this->fCommonHists = aCommonHist; }
75 AliFlowCommonHistResults* GetCommonHistsRes() const
76 { return this->fCommonHistsRes; }
77 void SetCommonHistsRes(AliFlowCommonHistResults* const aCommonHistResult)
78 { this->fCommonHistsRes = aCommonHistResult; }
79 //AliFlowLYZHist1* GetHist1() const {return this->fHist1; }
80 void SetHist1(AliFlowLYZHist1* const aLYZHist1[])
81 {for (Int_t i=0;i<5;i++) {this->fHist1[i] = aLYZHist1[i];} }
82 //AliFlowLYZHist2* GetHist2() const {return this->fHist2; }
83 void SetHist2RP(AliFlowLYZHist2* const aLYZHist2RP[])
84 {for (Int_t i=0;i<5;i++) {this->fHist2RP[i] = aLYZHist2RP[i];} }
85 void SetHist2POI(AliFlowLYZHist2* const aLYZHist2POI[])
86 {for (Int_t i=0;i<5;i++) {this->fHist2POI[i] = aLYZHist2POI[i];} }
88 TProfile* GetHistProVtheta() const {return this->fHistProVtheta; }
89 void SetHistProVtheta(TProfile* const aHistProVtheta)
90 { this->fHistProVtheta = aHistProVtheta; }
91 TProfile* GetHistProVetaRP() const {return this->fHistProVetaRP; }
92 void SetHistProVetaRP(TProfile* const aHistProVetaRP)
93 {this->fHistProVetaRP = aHistProVetaRP; }
94 TProfile* GetHistProVetaPOI() const {return this->fHistProVetaPOI; }
95 void SetHistProVetaPOI(TProfile* const aHistProVetaPOI)
96 {this->fHistProVetaPOI = aHistProVetaPOI; }
97 TProfile* GetHistProVPtRP() const {return this->fHistProVPtRP;}
98 void SetHistProVPtRP(TProfile* const aHistProVPtRP)
99 {this->fHistProVPtRP = aHistProVPtRP; }
100 TProfile* GetHistProVPtPOI() const {return this->fHistProVPtPOI;}
101 void SetHistProVPtPOI(TProfile* const aHistProVPtPOI)
102 {this->fHistProVPtPOI = aHistProVPtPOI; }
103 TProfile* GetHistProR0theta() const {return this->fHistProR0theta; }
104 void SetHistProR0theta(TProfile* const aHistProR0theta)
105 {this->fHistProR0theta = aHistProR0theta; }
106 TProfile* GetHistProReDenom() const {return this->fHistProReDenom; }
107 void SetHistProReDenom(TProfile* const aHistProReDenom)
108 {this->fHistProReDenom = aHistProReDenom; }
109 TProfile* GetHistProImDenom() const {return this->fHistProImDenom; }
110 void SetHistProImDenom(TProfile* const aHistProImDenom)
111 {this->fHistProImDenom = aHistProImDenom; }
112 TProfile* GetHistProReDtheta() const {return this->fHistProReDtheta; }
113 void SetHistProReDtheta(TProfile* const aHistProReDtheta)
114 {this->fHistProReDtheta = aHistProReDtheta; }
115 TProfile* GetHistProImDtheta() const {return this->fHistProImDtheta; }
116 void SetHistProImDtheta(TProfile* const aHistProImDtheta)
117 {this->fHistProImDtheta = aHistProImDtheta; }
118 TH1F* GetHistQsumforChi() const {return this->fHistQsumforChi; }
119 void SetHistQsumforChi(TH1F* const aHistQsumforChi)
120 {this->fHistQsumforChi = aHistQsumforChi; }
122 void SetFirstRunList(TList* const list) { this->fFirstRunList = list; }
123 TList* GetFirstRunList() const { return this->fFirstRunList; }
125 TComplex GetGrtheta(AliFlowEventSimple* anEvent, Double_t aR, Double_t aTheta);
126 TComplex GetDiffFlow(AliFlowEventSimple* anEvent, Double_t aR, Int_t theta);
131 AliFlowAnalysisWithLeeYangZeros(const AliFlowAnalysisWithLeeYangZeros& aAnalysis); // copy constructor
132 AliFlowAnalysisWithLeeYangZeros& operator=(const AliFlowAnalysisWithLeeYangZeros& aAnalysis); //assignment operator
134 Bool_t MakeControlHistograms(AliFlowEventSimple* anEvent);
135 Bool_t FillFromFlowEvent(AliFlowEventSimple* anEvent);
136 Bool_t SecondFillFromFlowEvent(AliFlowEventSimple* anEvent);
140 TVector2* fQsum; // flow vector sum
141 Double_t fQ2sum; // flow vector sum squared
145 Int_t fEventNumber; // event counter
147 Bool_t fFirstRun ; // flag for lyz analysis: true=first run over data, false=second run
148 Bool_t fUseSum ; // flag for lyz analysis: true=use sum gen.function, false=use product gen.function
149 Bool_t fDoubleLoop ; // flag for studying non flow effects
150 Bool_t fDebug ; // flag for lyz analysis: more print statements
152 TList* fHistList; //list to hold all output histograms
153 TList* fFirstRunList; //list from first run output
155 TProfile* fHistProVtheta; //hist of V(theta)
156 TProfile* fHistProVetaRP; //hist of v(eta) for RP selection
157 TProfile* fHistProVetaPOI; //hist of v(eta) for POI selection
158 TProfile* fHistProVPtRP; //hist of v(pt) for RP selection
159 TProfile* fHistProVPtPOI; //hist of v(pt) for POI selection
160 TProfile* fHistProR0theta; //hist of r0(theta)
161 TProfile* fHistProReDenom; //hist of the real part of the denominator
162 TProfile* fHistProImDenom; //hist of the imaginary part of the denominator
163 TProfile* fHistProReDtheta; //hist of the real part of D^theta
164 TProfile* fHistProImDtheta; //hist of the imaginary part of D^theta
165 TH1F* fHistQsumforChi; //hist of sum of Q-vectors and the sum of the square of Q-vectors
168 //class AliFlowLYZHist1 defines the histograms: fHistProGtheta, fHistProReGtheta, fHistProImGtheta
169 AliFlowLYZHist1* fHist1[5]; //array of hist1
171 //class AliFlowLYZHist1 defines the histograms: fHistProReNumer, fHistProImNumer, fHistProReNumerPt,
172 //fHistProImNumerPt, fHistProReNumer2D, fHistProImNumer2D.
173 AliFlowLYZHist2* fHist2RP[5]; //array of hist2
174 AliFlowLYZHist2* fHist2POI[5]; //array of hist2
176 AliFlowCommonHist* fCommonHists; //control histograms
177 AliFlowCommonHistResults* fCommonHistsRes; //final results histograms
179 ClassDef(AliFlowAnalysisWithLeeYangZeros,1) // macro for rootcint