StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StFlowLeeYangZerosMaker.h
1 //
3 // $Id: StFlowLeeYangZerosMaker.h,v 1.5 2014/08/06 11:43:14 jeromel Exp $
4 //
5 // Authors: Markus Oldenberg and Art Poskanzer, LBNL
6 //
8 //
9 // Description: Maker to analyze Flow by the LeeYangZeros method
10 //
12 
13 #ifndef StFlowLeeYangZerosMaker_H
14 #define StFlowLeeYangZerosMaker_H
15 #include <Stiostream.h>
16 #include "StMaker.h"
17 #include "StFlowMaker/StFlowConstants.h"
18 #include "TVector2.h"
19 #include "TComplex.h"
20 #include "TString.h"
21 //#include "StTimer.hh"
22 class StFlowEvent;
23 class StFlowSelection;
24 class TH1F;
25 class TH1D;
26 class TProfile;
27 class TProfile2D;
28 
30 
39 public:
40 
42  StFlowLeeYangZerosMaker(const Char_t* name="FlowLeeYangZeros");
43 
45  StFlowLeeYangZerosMaker(const Char_t* name,
46  const StFlowSelection& pFlowSelect);
48 
50  virtual ~StFlowLeeYangZerosMaker();
51 
52  Int_t Init();
53  Int_t Make();
54  Int_t Finish();
55  void SetHistoRanges(Bool_t ftpc_included = kFALSE);
56  void SetPtRange_for_vEta(Float_t lo, Float_t hi);
57  void SetEtaRange_for_vPt(Float_t lo, Float_t hi);
58  static void SetV1Mixed(Bool_t);
59  virtual const char *GetCVS() const {static const char cvs[]=
60  "Tag $Name: $ StFlowLeeYangZerosMaker.h, " __DATE__ " " __TIME__ ;
61  return cvs;}
62 
63 private:
64 
65  Bool_t FillFromFlowEvent();
66  void FillParticleHistograms();
67  Bool_t mZeroPass;
68  Bool_t mFirstPass;
69  static Bool_t mV1Mixed; // flag for v1 mixed harmonic
70 #ifndef __CINT__
71  TVector2 mQ[Flow::nSels][Flow::nHars];
72  TVector2 mqTPC[Flow::nSels][Flow::nHars];
73  TVector2 mqTPCE[Flow::nSels][Flow::nHars];
74  TVector2 mqTPCW[Flow::nSels][Flow::nHars];
75  Double_t mQ2[Flow::nSels][Flow::nHars];
76  Float_t mQtheta[Flow::nSels][Flow::nHars][Flow::nTheta];
77  Float_t mr0theta[Flow::nSels][Flow::nHars][Flow::nTheta];
78  TComplex mGr0theta[Flow::nSels][Flow::nHars][Flow::nTheta];
79  TComplex mV1neum[Flow::nTheta];
80  TComplex mGV1r0theta[Flow::nTheta1][Flow::nTheta];
81 #endif /*__CINT__*/
82  Int_t mNEvents;
83  Int_t mMult;
84  Int_t mPtBinsPart;
85  TString xLabel;
86  StFlowEvent* pFlowEvent;
87  StFlowSelection* pFlowSelect;
88 
89  // for single histograms
90  TH1D* mHistYieldPartPt;
91  TH1D* mHistYieldPartEta;
92  TH1F* mHistMult;
93 
94  // for each harmonic, each selection, and each theta
95  struct histThetas {
96  TH1D* mHistGtheta;
97  TProfile* mHistProReGtheta;
98  TProfile* mHistProImGtheta;
99  TH1D* mHistReGtheta;
100  TH1D* mHistImGtheta;
101  TProfile2D* mHistReNumer2D;
102  TProfile* mHistReNumerEta;
103  TProfile2D* mHistImNumer2D;
104  TProfile* mHistImNumerEta;
105  };
106 
107  // for each harmonic and each selection
108  struct histFullHars {
109  TProfile* mHistPro_vEta;
110  TProfile* mHistPro_vPt;
111  TProfile* mHistPro_Vtheta;
112  TProfile* mHistPro_r0theta;
113  TH1D* mHist_vEta;
114  TH1D* mHist_vPt;
115  TH1D* mHist_Vtheta;
116  TH1D* mHist_r0theta;
117  TProfile* mHistReDenom;
118  TProfile* mHistImDenom;
119  TProfile* mHistCentX;
120  TProfile* mHistCentY;
121  TProfile* mHistQCent;
122  struct histThetas histTheta[Flow::nTheta];
123  };
124 
125  // for each selection
126  struct histFulls;
127  friend struct histFulls;
128  struct histFulls {
129  TProfile* mHistPro_V;
130  TProfile* mHistPro_vr0;
131  TH1D* mHist_V;
132  TH1D* mHist_vr0;
133  TH1F* mHist_v;
134  struct histFullHars histFullHar[Flow::nHars];
135  };
136  struct histFulls histFull[Flow::nSels];
137 
138  TString MakerName;
139 
140  Float_t mEtaMin;
141  Float_t mEtaMax;
142  Int_t mNEtaBins;
143 
144  Float_t mPtRange_for_vEta[2];
145  Float_t mEtaRange_for_vPt[2];
146 
147 /* StTimer timeInit; */
148 /* StTimer timeEvent; */
149 /* StTimer timePart; */
150 /* StTimer timeFinish; */
151 
152  ClassDef(StFlowLeeYangZerosMaker,0) // macro for rootcint
153 };
154 
155 inline void StFlowLeeYangZerosMaker::SetV1Mixed(Bool_t V1Mixed) { mV1Mixed = V1Mixed; }
156 
157 #endif
virtual ~StFlowLeeYangZerosMaker()
Destructor.
StFlowLeeYangZerosMaker(const Char_t *name="FlowLeeYangZeros")
Default constructor.