00001
00002
00003
00004
00005
00006
00008
00009
00010
00012
00013 #ifndef StFlowLeeYangZerosMaker_H
00014 #define StFlowLeeYangZerosMaker_H
00015 #include <Stiostream.h>
00016 #include "StMaker.h"
00017 #include "StFlowMaker/StFlowConstants.h"
00018 #include "TVector2.h"
00019 #include "TComplex.h"
00020 #include "TString.h"
00021
00022 class StFlowEvent;
00023 class StFlowSelection;
00024 class TH1F;
00025 class TH1D;
00026 class TProfile;
00027 class TProfile2D;
00028
00029 class StFlowLeeYangZerosMaker : public StMaker {
00030
00039 public:
00040
00042 StFlowLeeYangZerosMaker(const Char_t* name="FlowLeeYangZeros");
00043
00045 StFlowLeeYangZerosMaker(const Char_t* name,
00046 const StFlowSelection& pFlowSelect);
00047 StFlowLeeYangZerosMaker(const StFlowLeeYangZerosMaker &from) {};
00048
00050 virtual ~StFlowLeeYangZerosMaker();
00051
00052 Int_t Init();
00053 Int_t Make();
00054 Int_t Finish();
00055 void SetHistoRanges(Bool_t ftpc_included = kFALSE);
00056 void SetPtRange_for_vEta(Float_t lo, Float_t hi);
00057 void SetEtaRange_for_vPt(Float_t lo, Float_t hi);
00058 static void SetV1Mixed(Bool_t);
00059 virtual const char *GetCVS() const {static const char cvs[]=
00060 "Tag $Name: $ $Id: StFlowLeeYangZerosMaker.h, "__DATE__" "__TIME__ ;
00061 return cvs;}
00062
00063 private:
00064
00065 Bool_t FillFromFlowEvent();
00066 void FillParticleHistograms();
00067 Bool_t mZeroPass;
00068 Bool_t mFirstPass;
00069 static Bool_t mV1Mixed;
00070 #ifndef __CINT__
00071 TVector2 mQ[Flow::nSels][Flow::nHars];
00072 TVector2 mqTPC[Flow::nSels][Flow::nHars];
00073 TVector2 mqTPCE[Flow::nSels][Flow::nHars];
00074 TVector2 mqTPCW[Flow::nSels][Flow::nHars];
00075 Double_t mQ2[Flow::nSels][Flow::nHars];
00076 Float_t mQtheta[Flow::nSels][Flow::nHars][Flow::nTheta];
00077 Float_t mr0theta[Flow::nSels][Flow::nHars][Flow::nTheta];
00078 TComplex mGr0theta[Flow::nSels][Flow::nHars][Flow::nTheta];
00079 TComplex mV1neum[Flow::nTheta];
00080 TComplex mGV1r0theta[Flow::nTheta1][Flow::nTheta];
00081 #endif
00082 Int_t mNEvents;
00083 Int_t mMult;
00084 Int_t mPtBinsPart;
00085 TString xLabel;
00086 StFlowEvent* pFlowEvent;
00087 StFlowSelection* pFlowSelect;
00088
00089
00090 TH1D* mHistYieldPartPt;
00091 TH1D* mHistYieldPartEta;
00092 TH1F* mHistMult;
00093
00094
00095 struct histThetas {
00096 TH1D* mHistGtheta;
00097 TProfile* mHistProReGtheta;
00098 TProfile* mHistProImGtheta;
00099 TH1D* mHistReGtheta;
00100 TH1D* mHistImGtheta;
00101 TProfile2D* mHistReNumer2D;
00102 TProfile* mHistReNumerEta;
00103 TProfile2D* mHistImNumer2D;
00104 TProfile* mHistImNumerEta;
00105 };
00106
00107
00108 struct histFullHars {
00109 TProfile* mHistPro_vEta;
00110 TProfile* mHistPro_vPt;
00111 TProfile* mHistPro_Vtheta;
00112 TProfile* mHistPro_r0theta;
00113 TH1D* mHist_vEta;
00114 TH1D* mHist_vPt;
00115 TH1D* mHist_Vtheta;
00116 TH1D* mHist_r0theta;
00117 TProfile* mHistReDenom;
00118 TProfile* mHistImDenom;
00119 TProfile* mHistCentX;
00120 TProfile* mHistCentY;
00121 TProfile* mHistQCent;
00122 struct histThetas histTheta[Flow::nTheta];
00123 };
00124
00125
00126 struct histFulls;
00127 friend struct histFulls;
00128 struct histFulls {
00129 TProfile* mHistPro_V;
00130 TProfile* mHistPro_vr0;
00131 TH1D* mHist_V;
00132 TH1D* mHist_vr0;
00133 TH1F* mHist_v;
00134 struct histFullHars histFullHar[Flow::nHars];
00135 };
00136 struct histFulls histFull[Flow::nSels];
00137
00138 TString MakerName;
00139
00140 Float_t mEtaMin;
00141 Float_t mEtaMax;
00142 Int_t mNEtaBins;
00143
00144 Float_t mPtRange_for_vEta[2];
00145 Float_t mEtaRange_for_vPt[2];
00146
00147
00148
00149
00150
00151
00152 ClassDef(StFlowLeeYangZerosMaker,0)
00153 };
00154
00155 inline void StFlowLeeYangZerosMaker::SetV1Mixed(Bool_t V1Mixed) { mV1Mixed = V1Mixed; }
00156
00157 #endif