StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StFlowCumulantMaker.h
1 //
3 // $Id: StFlowCumulantMaker.h,v 1.8 2014/08/06 11:43:14 jeromel Exp $
4 //
5 // Authors: Aihong Tang, Kent State U. Oct 2001
6 // Frame adopted from Art and Raimond's StFlowAnalysisMaker.
7 //
9 //
10 // Description: Maker to analyze Flow using the new cumulant method.
11 // refer to Phy. Rev. C63 (2001) 054906 (old new method)
12 // and Phy. Rev. C64 (2001) 054901 (new new method)
13 // and nucl-ex/0110016 (Practical Guide)
15 // Anything that has "Mix" in it is for v1{3} calculation PRC 66 014905 (2002)
16 //
18 //
19 // Abreviations used:
20 // Cumul for Cumulant
21 // Diff for Diffeential
22 // Integ for Integrated
23 // Denom for Denominator
24 // Mix for mixed harmonics (for v1{3})
25 //
27 
28 #ifndef StFlowCumulantMaker_H
29 #define StFlowCumulantMaker_H
30 #include <Stiostream.h>
31 #include "StMaker.h"
32 #include "StFlowMaker/StFlowConstants.h"
33 #include "TString.h"
34 class StFlowEvent;
35 class StFlowSelection;
36 class TH1F;
37 class TH1D;
38 class TH2F;
39 class TH2D;
40 //class TH3F;
41 class TProfile;
42 class TProfile2D;
43 
44 class StFlowCumulantMaker : public StMaker {
45 
46 public:
47 
48  StFlowCumulantMaker(const Char_t* name="FlowCumulantAnalysis");
49  StFlowCumulantMaker(const Char_t* name,
50  const StFlowSelection& pFlowSelect);
52  virtual ~StFlowCumulantMaker();
53 
54  Int_t Init();
55  Int_t Make();
56  Int_t Finish();
57  void SetHistoRanges(Bool_t ftpc_included = kFALSE);
58 
59  virtual const char *GetCVS() const {static const char cvs[]=
60  "Tag $Name: $ $Id: StFlowCumulantMaker.h,v 1.8 2014/08/06 11:43:14 jeromel Exp $ built " __DATE__ " " __TIME__ ;
61  return cvs;}
62 
63 private:
64 
65  void FillFromFlowEvent();
66  void FillEventHistograms();
67  void FillParticleHistograms();
68 
69 #ifndef __CINT__
70  UInt_t mMult[Flow::nSels][Flow::nHars];
71  UInt_t mMultSub[Flow::nSels*Flow::nSubs][Flow::nHars];
72  Double_t mSqrtOfSumWgtSqr[Flow::nSels][Flow::nHars];
73 
74 #endif /*__CINT__*/
75  TString xLabel;
76  StFlowEvent* pFlowEvent;
77  StFlowSelection* pFlowSelect;
78 
79  Double_t profScale;
80  Double_t r0;
81  Double_t r0Sq;
82  Double_t r0Mix;
83  UInt_t m_M;
84 
85 
86  // for each harmonic and each selection
87  struct histFullHars {
88 
89  TProfile2D** mHistCumul2D;
90  TProfile** mHistCumulEta;
91  TProfile** mHistCumulPt;
92 
93  TProfile2D* mHistCumulMix2D;
94  TProfile* mHistCumulMixEta;
95  TProfile* mHistCumulMixPt;
96 
97 
98  TH2D** mHist_v2D;
99  TH1D** mHist_vEta;
100  TH1D** mHist_vPt;
101 
102  TH2D* mHistMix_v2D;
103  TH1D* mHistMix_vEta;
104  TH1D* mHistMix_vPt;
105 
106 
107  TProfile** mCumulG0Denom; //denominator in (82), <G>
108  TProfile** mCumulG0MixDenom;
109 
110  Double_t mIntegXz[Flow::nCumulIntegOrders*Flow::nCumulInteg_qMax];
111  Double_t mIntegYz[Flow::nCumulIntegOrders*Flow::nCumulInteg_qMax];
112  Double_t mDiffXz[Flow::nCumulDiffOrders*Flow::nCumulDiff_qMax];
113  Double_t mDiffYz[Flow::nCumulDiffOrders*Flow::nCumulDiff_qMax];
114  Double_t mCumulIntegG0[Flow::nCumulIntegOrders*Flow::nCumulInteg_qMax];
115  Double_t mCumulG0DenomRead[Flow::nCumulDiffOrders*Flow::nCumulDiff_qMax];
116 
117  Double_t mMixX1z[Flow::nCumulMixHar_pMax];
118  Double_t mMixY1z[Flow::nCumulMixHar_pMax];
119  Double_t mMixX2z[Flow::nCumulMixHar_qMax];
120  Double_t mMixY2z[Flow::nCumulMixHar_qMax];
121 
122  Double_t mCumulIntegG0Mix[Flow::nCumulMixHar_pMax*Flow::nCumulMixHar_qMax];
123  Double_t mCumulG0MixDenomRead[Flow::nCumulMixHar_pMax*Flow::nCumulMixHar_qMax];
124 
125 
126 
127  Double_t mMultSum;
128  Int_t mNEvent;
129  Double_t mMeanWgtSqrSum;
130 
131  TH1D* mHistMultSum; //histo for holding mMultSum.
132  TH1D* mHistNEvent;
133  TH1D* mHistMeanWgtSqrSum; // sum <w^2> over evts.
134 
135  TH1D** mHistCumulIntegG0Sum; //summation of G value.
136  TH1D** mHistCumulIntegG0MixSum; //summation of G value.
137 
138  };
139 
140  // for each selection
141  struct histFulls;
142  friend struct histFulls;
143 
144  struct histFulls {
145  TProfile** mHistCumul; //integrated cumulant from differential
146  TProfile* mHistCumulMix; //cumulant for mix 1st and 2nd hars.
147 
148  TH1D** mHist_v; //integrated flow from differential
149  TH1D* mHistMix_v; //integrated flow from differential
150 
151 
152  struct histFullHars histFullHar[Flow::nHars];
153  };
154  struct histFulls histFull[Flow::nSels];
155 
156  TString MakerName;
157 
158  Float_t mEtaMin;
159  Float_t mEtaMax;
160  Int_t mNEtaBins;
161  Int_t nPtBinsPart;
162 
163  ClassDef(StFlowCumulantMaker,0) // macro for rootcint
164 
165 };
166 
167 
168 #endif
169 
171 //
172 // $Log: StFlowCumulantMaker.h,v $
173 // Revision 1.8 2014/08/06 11:43:14 jeromel
174 // Suffix on literals need to be space (later gcc compiler makes it an error) - first wave of fixes
175 //
176 // Revision 1.7 2004/12/17 15:50:09 aihong
177 // check in v1{3} code
178 //
179 // Revision 1.6 2004/11/16 21:22:22 aihong
180 // removed old cumulant method
181 //
182 // Revision 1.5 2003/09/10 19:47:14 perev
183 // ansi corrs
184 //
185 // Revision 1.4 2003/09/02 17:58:11 perev
186 // gcc 3.2 updates + WarnOff
187 //
188 // Revision 1.3 2003/03/03 16:24:37 aihong
189 // blow up 4-part cumulant by 1000 in order to let error bars calculated by ROOT
190 //
191 // Revision 1.2 2003/01/10 16:40:47 oldi
192 // Several changes to comply with FTPC tracks:
193 // - Switch to include/exclude FTPC tracks introduced.
194 // The same switch changes the range of the eta histograms.
195 // - Eta symmetry plots for FTPC tracks added and separated from TPC plots.
196 // - PhiWgts and related histograms for FTPC tracks split in FarEast, East,
197 // West, FarWest (depending on vertex.z()).
198 // - Psi_Diff plots for 2 different selections and the first 2 harmonics added.
199 // - Cut to exclude mu-events with no primary vertex introduced.
200 // (This is possible for UPC events and FTPC tracks.)
201 // - Global DCA cut for FTPC tracks added.
202 // - Global DCA cuts for event plane selection separated for TPC and FTPC tracks.
203 // - Charge cut for FTPC tracks added.
204 //
205 // Revision 1.1 2002/05/19 18:58:00 aihong
206 // speed up cumulant
207 //
208 // Revision 1.8 2002/02/02 01:10:22 posk
209 // Added documentation
210 //
211 // Revision 1.7 2002/01/24 20:53:51 aihong
212 // add histograms for combining results from parallel jobs
213 //
214 // Revision 1.6 2002/01/14 23:42:48 posk
215 // Renamed ScalerProd histograms. Moved print commands to FlowMaker::Finish().
216 //
217 // Revision 1.5 2001/12/21 17:01:59 aihong
218 // minor changes
219 //
220 // Revision 1.4 2001/12/11 22:04:10 posk
221 // Four sets of phiWgt histograms.
222 // StFlowMaker StFlowEvent::PhiWeight() changes.
223 // Cumulant histogram names changed.
224 //
225 // Revision 1.3 2001/11/09 21:14:56 posk
226 // Switched from CERNLIB to TMath. Using global dca instead of dca.
227 //
228 // Revision 1.2 2001/11/08 03:12:24 aihong
229 // clean up redundant histograms
230 //
231 // Revision 1.1 2001/11/02 04:47:31 aihong
232 // install cumulant maker
233 //