StFlowEvent.h 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740
  1. //////////////////////////////////////////////////////////////////////
  2. //
  3. // $Id: StFlowEvent.h,v 1.56 2009/11/24 19:23:03 posk Exp $
  4. //
  5. // Author: Raimond Snellings and Art Poskanzer
  6. // FTPC added by Markus Oldenburg, MPI, Dec 2000
  7. // Cumulants added by Aihong Tang, KSU, Nov 2001
  8. //
  9. //////////////////////////////////////////////////////////////////////
  10. //
  11. // Description: A subset of StEvent with flow functions
  12. //
  13. //////////////////////////////////////////////////////////////////////
  14. #ifndef StFlowEvent_h
  15. #define StFlowEvent_h
  16. #include "StObject.h"
  17. #include "StFlowTrackCollection.h"
  18. #include "StTrackTopologyMap.h"
  19. #include "StThreeVectorF.hh"
  20. #include "StEnumerations.h"
  21. #include "Rtypes.h"
  22. #include "TVector2.h"
  23. #include "TComplex.h"
  24. class StFlowSelection;
  25. class StFlowEvent : public StObject {
  26. public:
  27. StFlowEvent();
  28. virtual ~StFlowEvent();
  29. Double_t PhiWeight(Int_t selN, Int_t harN, StFlowTrack* pFlowTrack) const;
  30. Double_t PhiWeightRaw(Int_t selN, Int_t harN, StFlowTrack* pFlowTrack) const;
  31. Double_t Weight(Int_t selN, Int_t harN, StFlowTrack* pFlowTrack) const;
  32. Double_t ZDCSMD_PsiWgtEast();
  33. Double_t ZDCSMD_PsiWgtWest();
  34. Double_t ZDCSMD_PsiWgtFull();
  35. Int_t EventID() const;
  36. Int_t RunID() const;
  37. Double_t CenterOfMassEnergy() const;
  38. Double_t MagneticField() const;
  39. Short_t BeamMassNumberEast() const;
  40. Short_t BeamMassNumberWest() const;
  41. UInt_t OrigMult() const;
  42. UInt_t L0TriggerWord() const;
  43. UInt_t UncorrNegMult() const;
  44. UInt_t UncorrPosMult() const;
  45. UInt_t MultEta() const;
  46. UInt_t FlowEventMult() const;
  47. UInt_t Centrality() const;
  48. StThreeVectorF VertexPos() const;
  49. UInt_t Mult(StFlowSelection*);
  50. UInt_t MultPart(StFlowSelection*);
  51. TVector2 Q(StFlowSelection*);
  52. TVector2 NormQ(StFlowSelection* pFlowSelect);
  53. TVector2 QPart(StFlowSelection*);
  54. TVector2 ReCentEPPar(StFlowSelection*, const char*); // for ana
  55. TVector2 ReCentPar(StFlowSelection*, const char*); // for LYZ
  56. TVector2 ReCent(Int_t selN, Int_t harN, StFlowTrack* pFlowTrack) const;
  57. TVector2 ReCentEP(Int_t selN, Int_t harN, StFlowTrack* pFlowTrack) const;
  58. Float_t q(StFlowSelection*);
  59. Float_t MeanPt(StFlowSelection*);
  60. Float_t Qtheta(StFlowSelection*, Float_t theta);
  61. TComplex Grtheta(StFlowSelection*, Float_t r, Float_t theta);
  62. TComplex GV1r0theta(StFlowSelection*, Float_t r, Float_t theta1, Float_t theta);
  63. TComplex Gder_r0theta(StFlowSelection*, Float_t r, Float_t theta);
  64. Float_t Psi(StFlowSelection*);
  65. Float_t ZDCSMD_PsiCorr();
  66. Float_t ZDCSMD_PsiEst();
  67. Float_t ZDCSMD_PsiWst();
  68. Float_t ZDCSMD_GetPosition(int eastwest,int verthori,int strip);
  69. Double_t G_New(StFlowSelection* pFlowSelect, Double_t Zx, Double_t Zy);
  70. Double_t G_Mix(StFlowSelection* pFlowSelect, Double_t Z1x, Double_t Z1y, Double_t Z2x, Double_t Z2y);
  71. Double_t SumWeightSquare(StFlowSelection* pFlowSelect);
  72. Double_t PtAbsWgtValue(Double_t pt) const;
  73. Double_t EtaAbsWgtValue(Double_t eta) const;
  74. Float_t CTB() const;
  75. Float_t ZDCe() const;
  76. Float_t ZDCw() const;
  77. Float_t ZDCSMD(int eastwest,int verthori,int strip) const;
  78. Float_t PtWgtSaturation() const;
  79. Bool_t PtWgt() const;
  80. Bool_t EtaWgt() const;
  81. Bool_t FirstLastPhiWgt() const;
  82. Bool_t FirstLastPoints() const;
  83. Bool_t UseZDCSMD() const;
  84. Char_t* Pid();
  85. Bool_t EtaSubs() const;
  86. Bool_t RanSubs() const;
  87. Float_t V1TPCDetctWgtG_Mix(Int_t selN) const;
  88. Float_t V1FtpcEastDetctWgtG_Mix(Int_t selN) const;
  89. Float_t V1FtpcWestDetctWgtG_Mix(Int_t selN) const;
  90. Float_t V2TPCDetctWgtG_Mix(Int_t selN) const;
  91. Float_t V2FtpcEastDetctWgtG_Mix(Int_t selN) const;
  92. Float_t V2FtpcWestDetctWgtG_Mix(Int_t selN) const;
  93. StFlowTrackCollection* TrackCollection() const;
  94. void SetSelections();
  95. void SetPid(const Char_t*);
  96. void SetPidsDeviant();
  97. void SetPidsProb();
  98. void PrintSelectionList();
  99. void MakeSubEvents();
  100. void MakeEtaSubEvents();
  101. void SetEventID(const Int_t&);
  102. void SetRunID(const Int_t&);
  103. void SetCenterOfMassEnergy(const Double_t&);
  104. void SetMagneticField(const Double_t&);
  105. void SetBeamMassNumberEast(const Short_t&);
  106. void SetBeamMassNumberWest(const Short_t&);
  107. void SetOrigMult(const UInt_t&);
  108. void SetL0TriggerWord(const UInt_t&);
  109. void SetUncorrPosMult(const UInt_t&);
  110. void SetUncorrNegMult(const UInt_t&);
  111. void SetMultEta(const UInt_t&);
  112. void SetCentrality();
  113. void SetVertexPos(const StThreeVectorF&);
  114. void SetCTB(const Float_t ctb);
  115. void SetZDCe(const Float_t zdce);
  116. void SetZDCw(const Float_t zdcw);
  117. void SetZDCSMD(int eastwest,int verthori,int strip,const Float_t zdcsmd);
  118. #ifndef __CINT__
  119. void SetPhiWeightFarEast(const Flow::PhiWgt_t &pPhiWgt);
  120. void SetPhiWeightEast(const Flow::PhiWgt_t &pPhiWgt);
  121. void SetPhiWeightWest(const Flow::PhiWgt_t &pPhiWgt);
  122. void SetPhiWeightFarWest(const Flow::PhiWgt_t &pPhiWgt);
  123. void SetPhiWeightFtpcFarEast(const Flow::PhiWgtFtpc_t &pPhiWgt);
  124. void SetPhiWeightFtpcEast(const Flow::PhiWgtFtpc_t &pPhiWgt);
  125. void SetPhiWeightFtpcWest(const Flow::PhiWgtFtpc_t &pPhiWgt);
  126. void SetPhiWeightFtpcFarWest(const Flow::PhiWgtFtpc_t &pPhiWgt);
  127. void SetZDCSMD_PsiWeightWest(const Flow::ZDCSMD_PsiWgt_t& ZDCSMD_PsiWgtWest);
  128. void SetZDCSMD_PsiWeightEast(const Flow::ZDCSMD_PsiWgt_t& ZDCSMD_PsiWgtEast);
  129. void SetZDCSMD_PsiWeightFull(const Flow::ZDCSMD_PsiWgt_t& ZDCSMD_PsiWgtFull);
  130. void SetZDCSMD_BeamCenter(Double_t ex,Double_t ey,Double_t wx,Double_t wy);
  131. void SetReCentX(const Flow::ReCent_t &pReCentX);
  132. void SetReCentY(const Flow::ReCent_t &pReCentY);
  133. #endif
  134. static void SetEtaTpcCut(Float_t lo, Float_t hi, Int_t harN, Int_t selN);
  135. //#Added by jcampbell
  136. static Float_t EtaTpcCut(Int_t lowOrHigh, Int_t harN, Int_t selN);
  137. static Float_t Etaq2Cut(Int_t lowOrHigh);
  138. static void SetEtaq2Cut(Float_t lo, Float_t hi);
  139. static void SetEtaGap(Float_t gap);
  140. static void SetPtTpcCut(Float_t lo, Float_t hi, Int_t harN, Int_t selN);
  141. static void SetEtaFtpcCut(Float_t lo_neg, Float_t hi_neg,
  142. Float_t lo_pos, Float_t hi_pos,
  143. Int_t harN, Int_t selN);
  144. static void SetPtFtpcCut(Float_t lo, Float_t hi, Int_t harN, Int_t selN);
  145. static void SetPiPlusCut(Float_t lo, Float_t hi);
  146. static void SetPiMinusCut(Float_t lo, Float_t hi);
  147. static void SetProtonCut(Float_t lo, Float_t hi);
  148. static void SetAntiProtonCut(Float_t lo, Float_t hi);
  149. static void SetKPlusCut(Float_t lo, Float_t hi);
  150. static void SetKMinusCut(Float_t lo, Float_t hi);
  151. static void SetElectronCut(Float_t lo, Float_t hi);
  152. static void SetPositronCut(Float_t lo, Float_t hi);
  153. static void SetDeuteronCut(Float_t lo, Float_t hi);
  154. static void SetAntiDeuteronCut(Float_t lo, Float_t hi);
  155. static void SetDcaGlobalTpcCut(Float_t lo, Float_t hi);
  156. static void SetDcaGlobalFtpcCut(Float_t lo, Float_t hi);
  157. static void SetProbPid();
  158. static void SetEtaSubs();
  159. static void SetRanSubs();
  160. static void SetPtWgtSaturation(Float_t);
  161. static void SetPtWgt(Bool_t);
  162. static void SetEtaWgt(Bool_t);
  163. static void SetFirstLastPhiWgt();
  164. static void SetFirstLastPoints();
  165. static void SetUseZDCSMD(Bool_t);
  166. static void SetV1TPCDetctWgtG_Mix(Float_t val, Int_t selN);
  167. static void SetV1FtpcEastDetctWgtG_Mix(Float_t val, Int_t selN);
  168. static void SetV1FtpcWestDetctWgtG_Mix(Float_t val, Int_t selN);
  169. static void SetV2TPCDetctWgtG_Mix(Float_t val, Int_t selN);
  170. static void SetV2FtpcEastDetctWgtG_Mix(Float_t val, Int_t selN);
  171. static void SetV2FtpcWestDetctWgtG_Mix(Float_t val, Int_t selN);
  172. static Bool_t ProbPid();
  173. private:
  174. Int_t mEventID; // ID of the event
  175. Int_t mRunID; // ID of the run
  176. Double_t mMagneticField; //
  177. Double_t mCenterOfMassEnergy; //
  178. Short_t mBeamMassNumberEast; //
  179. Short_t mBeamMassNumberWest; //
  180. UInt_t mOrigMult; // number of tracks
  181. UInt_t mL0TriggerWord; // L0 trigger word
  182. UInt_t mUncorrNegMult; // number of h-
  183. UInt_t mUncorrPosMult; // number of h+
  184. UInt_t mMultEta; // number of tracks
  185. // with pos. flag in 1.5 unit of eta
  186. UInt_t mCentrality; // centrality bin
  187. StThreeVectorF mVertexPos; // primary vertex position
  188. Float_t mCTB; // CTB value sum
  189. Float_t mZDCe; // ZDC east
  190. Float_t mZDCw; // ZDC west
  191. Float_t mZDCSMD[2][2][8]; // ZDCSMD
  192. static Double_t mZDCSMDCenterex,mZDCSMDCenterey; // ZDCSMD Beam Center
  193. static Double_t mZDCSMDCenterwx,mZDCSMDCenterwy; // ZDCSMD Beam Center
  194. static Float_t mEtaTpcCuts[2][2][Flow::nSels]; // range absolute values
  195. static Float_t mEtaGap; // size of eta gap // # added by jmcampbell
  196. static Float_t mEtaq2Cuts[2]; // eta range for q2 cuts // # added by jmcampbell
  197. static Float_t mEtaFtpcCuts[4][2][Flow::nSels]; // range values
  198. static Float_t mPtTpcCuts[2][2][Flow::nSels]; // range
  199. static Float_t mPtFtpcCuts[2][2][Flow::nSels]; // range
  200. static Float_t mV1TPCDetctWgtG_Mix[Flow::nSels]; // detector wgt for G_Mix in v1{3} calc.
  201. static Float_t mV1FtpcEastDetctWgtG_Mix[Flow::nSels];
  202. static Float_t mV1FtpcWestDetctWgtG_Mix[Flow::nSels];
  203. static Float_t mV2TPCDetctWgtG_Mix[Flow::nSels];
  204. static Float_t mV2FtpcEastDetctWgtG_Mix[Flow::nSels];
  205. static Float_t mV2FtpcWestDetctWgtG_Mix[Flow::nSels];
  206. Flow::PhiWgt_t mPhiWgtFarEast; //!flattening weights FarEast
  207. Flow::PhiWgt_t mPhiWgtEast; //!flattening weights East
  208. Flow::PhiWgt_t mPhiWgtWest; //!flattening weights West
  209. Flow::PhiWgt_t mPhiWgtFarWest; //!flattening weights FarWest
  210. Flow::PhiWgtFtpc_t mPhiWgtFtpcFarEast; //!flattening weights Ftpc FarEast
  211. Flow::PhiWgtFtpc_t mPhiWgtFtpcEast; //!flattening weights Ftpc East
  212. Flow::PhiWgtFtpc_t mPhiWgtFtpcWest; //!flattening weights Ftpc West
  213. Flow::PhiWgtFtpc_t mPhiWgtFtpcFarWest; //!flattening weights Ftpc FarWest
  214. Flow::ZDCSMD_PsiWgt_t mZDCSMD_PsiWgtWest; //! ZDCSMD west Psi
  215. Flow::ZDCSMD_PsiWgt_t mZDCSMD_PsiWgtEast; //! ZDCSMD east Psi
  216. Flow::ZDCSMD_PsiWgt_t mZDCSMD_PsiWgtFull; //! ZDCSMD full Psi
  217. Flow::ReCent_t mReCentX; //! recentering parameters
  218. Flow::ReCent_t mReCentY; //! recentering parameters
  219. static Float_t mPiPlusCuts[2]; // PID cuts
  220. static Float_t mPtWgtSaturation; // saturation value for pt weighting
  221. static Bool_t mPtWgt; // flag for pt weighting
  222. static Bool_t mEtaWgt; // flag for y weighting for odd harmonics
  223. static Char_t mPid[10]; // h+, h-, pi-, pi+, pi, k+, k-, k, pr+, pr-, pr, e+, e-, e
  224. static Bool_t mProbPid; // flag for probability pid
  225. static Bool_t mEtaSubs; // flag for eta subevents
  226. static Bool_t mRanSubs; // flag for random subevents
  227. static Bool_t mFirstLastPhiWgt; // flag for using z of first and last points for reading phi weights
  228. static Bool_t mFirstLastPoints; // flag for using z of first and last points for generating phi weights
  229. static Bool_t mUseZDCSMD; // flag for using ZDC SMD for RP
  230. static Float_t mPiMinusCuts[2];
  231. static Float_t mProtonCuts[2];
  232. static Float_t mKMinusCuts[2];
  233. static Float_t mKPlusCuts[2];
  234. static Float_t mAntiProtonCuts[2];
  235. static Float_t mDeuteronCuts[2];
  236. static Float_t mAntiDeuteronCuts[2];
  237. static Float_t mElectronCuts[2];
  238. static Float_t mPositronCuts[2];
  239. static Float_t mDcaGlobalTpcCuts[2];
  240. static Float_t mDcaGlobalFtpcCuts[2];
  241. StFlowTrackCollection* pTrackCollection; //!
  242. ClassDef(StFlowEvent,1) // macro for rootcint
  243. };
  244. inline StFlowTrackCollection* StFlowEvent::TrackCollection() const {
  245. return pTrackCollection; }
  246. inline Int_t StFlowEvent::EventID() const { return mEventID; }
  247. inline Int_t StFlowEvent::RunID() const { return mRunID; }
  248. inline Double_t StFlowEvent::CenterOfMassEnergy() const { return mCenterOfMassEnergy; }
  249. inline Double_t StFlowEvent::MagneticField() const { return mMagneticField; }
  250. inline Short_t StFlowEvent::BeamMassNumberEast() const { return mBeamMassNumberEast; }
  251. inline Short_t StFlowEvent::BeamMassNumberWest() const { return mBeamMassNumberWest; }
  252. inline UInt_t StFlowEvent::OrigMult() const { return mOrigMult; }
  253. inline UInt_t StFlowEvent::L0TriggerWord() const { return mL0TriggerWord; }
  254. inline UInt_t StFlowEvent::UncorrNegMult() const { return mUncorrNegMult; }
  255. inline UInt_t StFlowEvent::UncorrPosMult() const { return mUncorrPosMult; }
  256. inline UInt_t StFlowEvent::MultEta() const { return mMultEta; }
  257. inline UInt_t StFlowEvent::FlowEventMult() const { return pTrackCollection->size(); }
  258. inline UInt_t StFlowEvent::Centrality() const { return mCentrality; }
  259. inline StThreeVectorF StFlowEvent::VertexPos() const { return mVertexPos; }
  260. inline Float_t StFlowEvent::CTB() const { return mCTB; }
  261. inline Float_t StFlowEvent::ZDCe() const { return mZDCe; }
  262. inline Float_t StFlowEvent::ZDCw() const { return mZDCw; }
  263. inline Float_t StFlowEvent::ZDCSMD(int eastwest,int verthori,int strip) const {return mZDCSMD[eastwest][verthori][strip-1];}
  264. inline Float_t StFlowEvent::PtWgtSaturation() const { return mPtWgtSaturation; }
  265. inline Bool_t StFlowEvent::PtWgt() const { return mPtWgt; }
  266. inline Bool_t StFlowEvent::EtaWgt() const { return mEtaWgt; }
  267. inline Bool_t StFlowEvent::FirstLastPhiWgt() const { return mFirstLastPhiWgt; }
  268. inline Bool_t StFlowEvent::FirstLastPoints() const { return mFirstLastPoints; }
  269. inline Char_t* StFlowEvent::Pid() { return mPid; }
  270. inline Bool_t StFlowEvent::ProbPid() { return mProbPid; }
  271. inline Bool_t StFlowEvent::EtaSubs() const { return mEtaSubs; }
  272. inline Bool_t StFlowEvent::RanSubs() const { return mRanSubs; }
  273. inline Bool_t StFlowEvent::UseZDCSMD() const { return mUseZDCSMD;}
  274. inline Float_t StFlowEvent::V1TPCDetctWgtG_Mix(Int_t selN) const {
  275. return mV1TPCDetctWgtG_Mix[selN]; }
  276. inline Float_t StFlowEvent::V1FtpcEastDetctWgtG_Mix(Int_t selN) const {
  277. return mV1FtpcEastDetctWgtG_Mix[selN]; }
  278. inline Float_t StFlowEvent::V1FtpcWestDetctWgtG_Mix(Int_t selN) const {
  279. return mV1FtpcWestDetctWgtG_Mix[selN]; }
  280. inline Float_t StFlowEvent::V2TPCDetctWgtG_Mix(Int_t selN) const {
  281. return mV2TPCDetctWgtG_Mix[selN]; }
  282. inline Float_t StFlowEvent::V2FtpcEastDetctWgtG_Mix(Int_t selN) const {
  283. return mV2FtpcEastDetctWgtG_Mix[selN]; }
  284. inline Float_t StFlowEvent::V2FtpcWestDetctWgtG_Mix(Int_t selN) const {
  285. return mV2FtpcWestDetctWgtG_Mix[selN]; }
  286. #ifndef __CINT__
  287. inline void StFlowEvent::SetPhiWeightFarEast(const Flow::PhiWgt_t& pPhiWgtFarEast) {
  288. memcpy (mPhiWgtFarEast, pPhiWgtFarEast, sizeof(Flow::PhiWgt_t)); }
  289. inline void StFlowEvent::SetPhiWeightEast(const Flow::PhiWgt_t& pPhiWgtEast) {
  290. memcpy (mPhiWgtEast, pPhiWgtEast, sizeof(Flow::PhiWgt_t)); }
  291. inline void StFlowEvent::SetPhiWeightWest(const Flow::PhiWgt_t& pPhiWgtWest) {
  292. memcpy (mPhiWgtWest, pPhiWgtWest, sizeof(Flow::PhiWgt_t)); }
  293. inline void StFlowEvent::SetPhiWeightFarWest(const Flow::PhiWgt_t& pPhiWgtFarWest) {
  294. memcpy (mPhiWgtFarWest, pPhiWgtFarWest, sizeof(Flow::PhiWgt_t)); }
  295. inline void StFlowEvent::SetPhiWeightFtpcFarEast(const Flow::PhiWgtFtpc_t& pPhiWgtFtpcFarEast) {
  296. memcpy (mPhiWgtFtpcFarEast, pPhiWgtFtpcFarEast, sizeof(Flow::PhiWgtFtpc_t)); }
  297. inline void StFlowEvent::SetPhiWeightFtpcEast(const Flow::PhiWgtFtpc_t& pPhiWgtFtpcEast) {
  298. memcpy (mPhiWgtFtpcEast, pPhiWgtFtpcEast, sizeof(Flow::PhiWgtFtpc_t)); }
  299. inline void StFlowEvent::SetPhiWeightFtpcWest(const Flow::PhiWgtFtpc_t& pPhiWgtFtpcWest) {
  300. memcpy (mPhiWgtFtpcWest, pPhiWgtFtpcWest, sizeof(Flow::PhiWgtFtpc_t)); }
  301. inline void StFlowEvent::SetPhiWeightFtpcFarWest(const Flow::PhiWgtFtpc_t& pPhiWgtFtpcFarWest) {
  302. memcpy (mPhiWgtFtpcFarWest, pPhiWgtFtpcFarWest, sizeof(Flow::PhiWgtFtpc_t)); }
  303. inline void StFlowEvent::SetZDCSMD_PsiWeightEast(const Flow::ZDCSMD_PsiWgt_t& ZDCSMD_PsiWgtEast) {
  304. memcpy (mZDCSMD_PsiWgtEast, ZDCSMD_PsiWgtEast, sizeof(Flow::ZDCSMD_PsiWgt_t)); }
  305. inline void StFlowEvent::SetZDCSMD_PsiWeightWest(const Flow::ZDCSMD_PsiWgt_t& ZDCSMD_PsiWgtWest) {
  306. memcpy (mZDCSMD_PsiWgtWest, ZDCSMD_PsiWgtWest, sizeof(Flow::ZDCSMD_PsiWgt_t)); }
  307. inline void StFlowEvent::SetZDCSMD_PsiWeightFull(const Flow::ZDCSMD_PsiWgt_t& ZDCSMD_PsiWgtFull) {
  308. memcpy (mZDCSMD_PsiWgtFull, ZDCSMD_PsiWgtFull, sizeof(Flow::ZDCSMD_PsiWgt_t)); }
  309. inline void StFlowEvent::SetZDCSMD_BeamCenter(Double_t ex,Double_t ey,Double_t wx,Double_t wy) {
  310. mZDCSMDCenterex = ex; mZDCSMDCenterey = ey; mZDCSMDCenterwx = wx; mZDCSMDCenterwy = wy;}
  311. inline void StFlowEvent::SetReCentX(const Flow::ReCent_t& pReCentX) {
  312. memcpy (mReCentX, pReCentX, sizeof(Flow::ReCent_t)); }
  313. inline void StFlowEvent::SetReCentY(const Flow::ReCent_t& pReCentY) {
  314. memcpy (mReCentY, pReCentY, sizeof(Flow::ReCent_t)); }
  315. #endif
  316. inline void StFlowEvent::SetEtaTpcCut(Float_t lo, Float_t hi, Int_t harN, Int_t selN)
  317. { mEtaTpcCuts[0][harN][selN] = lo; mEtaTpcCuts[1][harN][selN] = hi; }
  318. //# Added by jcampbell
  319. inline Float_t StFlowEvent::EtaTpcCut(Int_t lowOrHigh, Int_t harN, Int_t selN) {
  320. return lowOrHigh ? mEtaTpcCuts[1][harN][selN] : mEtaTpcCuts[0][harN][selN]; }
  321. //# Added by jcampbell
  322. inline Float_t StFlowEvent::Etaq2Cut(Int_t lowOrHigh) {
  323. return lowOrHigh ? mEtaq2Cuts[1] : mEtaq2Cuts[0]; }
  324. //# Added by jcampbell
  325. inline void StFlowEvent::SetEtaq2Cut(Float_t lo, Float_t hi) {
  326. mEtaq2Cuts[0] = lo; mEtaq2Cuts[1] = hi; }
  327. //# Added by jcampbell
  328. inline void StFlowEvent::SetEtaGap(Float_t gap) {
  329. mEtaGap = gap; }
  330. inline void StFlowEvent::SetPtTpcCut(Float_t lo, Float_t hi, Int_t harN, Int_t selN)
  331. { mPtTpcCuts[0][harN][selN] = lo; mPtTpcCuts[1][harN][selN] = hi; }
  332. inline void StFlowEvent::SetEtaFtpcCut(Float_t lo_neg, Float_t hi_neg,
  333. Float_t lo_pos, Float_t hi_pos,
  334. Int_t harN, Int_t selN)
  335. { mEtaFtpcCuts[0][harN][selN] = lo_neg; mEtaFtpcCuts[1][harN][selN] = hi_neg;
  336. mEtaFtpcCuts[2][harN][selN] = lo_pos; mEtaFtpcCuts[3][harN][selN] = hi_pos; }
  337. inline void StFlowEvent::SetPtFtpcCut(Float_t lo, Float_t hi, Int_t harN, Int_t selN)
  338. { mPtFtpcCuts[0][harN][selN] = lo; mPtFtpcCuts[1][harN][selN] = hi; }
  339. inline void StFlowEvent::SetEventID(const Int_t& id) { mEventID = id; }
  340. inline void StFlowEvent::SetRunID(const Int_t& id) { mRunID = id; }
  341. inline void StFlowEvent::SetMagneticField(const Double_t& mf) { mMagneticField = mf; }
  342. inline void StFlowEvent::SetCenterOfMassEnergy(const Double_t& cms) { mCenterOfMassEnergy = cms; }
  343. inline void StFlowEvent::SetBeamMassNumberEast(const Short_t& bme) { mBeamMassNumberEast = bme; }
  344. inline void StFlowEvent::SetBeamMassNumberWest(const Short_t& bmw) { mBeamMassNumberWest = bmw; }
  345. inline void StFlowEvent::SetOrigMult(const UInt_t& tracks) {
  346. mOrigMult = tracks; }
  347. inline void StFlowEvent::SetL0TriggerWord(const UInt_t& trigger) {
  348. mL0TriggerWord = trigger; }
  349. inline void StFlowEvent::SetUncorrNegMult(const UInt_t& negtracks) {
  350. mUncorrNegMult = negtracks; }
  351. inline void StFlowEvent::SetUncorrPosMult(const UInt_t& postracks) {
  352. mUncorrPosMult = postracks; }
  353. inline void StFlowEvent::SetMultEta(const UInt_t& goodtracks) {
  354. mMultEta = goodtracks; }
  355. inline void StFlowEvent::SetVertexPos(const StThreeVectorF& vertexPos) {
  356. mVertexPos = vertexPos; }
  357. inline void StFlowEvent::SetPiPlusCut(Float_t lo, Float_t hi) {
  358. mPiPlusCuts[0] = lo; mPiPlusCuts[1] = hi; }
  359. inline void StFlowEvent::SetPiMinusCut(Float_t lo, Float_t hi) {
  360. mPiMinusCuts[0] = lo; mPiMinusCuts[1] = hi; }
  361. inline void StFlowEvent::SetProtonCut(Float_t lo, Float_t hi) {
  362. mProtonCuts[0] = lo; mProtonCuts[1] = hi; }
  363. inline void StFlowEvent::SetKMinusCut(Float_t lo, Float_t hi) {
  364. mKMinusCuts[0] = lo; mKMinusCuts[1] = hi; }
  365. inline void StFlowEvent::SetKPlusCut(Float_t lo, Float_t hi) {
  366. mKPlusCuts[0] = lo; mKPlusCuts[1] = hi; }
  367. inline void StFlowEvent::SetAntiProtonCut(Float_t lo, Float_t hi) {
  368. mAntiProtonCuts[0] = lo; mAntiProtonCuts[1] = hi; }
  369. inline void StFlowEvent::SetDeuteronCut(Float_t lo, Float_t hi) {
  370. mDeuteronCuts[0] = lo; mDeuteronCuts[1] = hi; }
  371. inline void StFlowEvent::SetAntiDeuteronCut(Float_t lo, Float_t hi) {
  372. mAntiDeuteronCuts[0] = lo; mAntiDeuteronCuts[1] = hi; }
  373. inline void StFlowEvent::SetElectronCut(Float_t lo, Float_t hi) {
  374. mElectronCuts[0] = lo; mElectronCuts[1] = hi; }
  375. inline void StFlowEvent::SetPositronCut(Float_t lo, Float_t hi) {
  376. mPositronCuts[0] = lo; mPositronCuts[1] = hi; }
  377. inline void StFlowEvent::SetDcaGlobalTpcCut(Float_t lo, Float_t hi) {
  378. mDcaGlobalTpcCuts[0] = lo; mDcaGlobalTpcCuts[1] = hi; }
  379. inline void StFlowEvent::SetDcaGlobalFtpcCut(Float_t lo, Float_t hi) {
  380. mDcaGlobalFtpcCuts[0] = lo; mDcaGlobalFtpcCuts[1] = hi; }
  381. inline void StFlowEvent::SetCTB(const Float_t ctb) { mCTB = ctb; }
  382. inline void StFlowEvent::SetZDCe(const Float_t zdce) { mZDCe = zdce; }
  383. inline void StFlowEvent::SetZDCw(const Float_t zdcw) { mZDCw = zdcw; }
  384. inline void StFlowEvent::SetZDCSMD(int eastwest,int verthori,int strip,const Float_t zdcsmd) {
  385. mZDCSMD[eastwest][verthori][strip-1] = (zdcsmd >0.)? zdcsmd:0.;}
  386. inline void StFlowEvent::SetPid(const Char_t* pid) {
  387. strncpy(mPid, pid, 9); mPid[9] = '\0'; }
  388. inline void StFlowEvent::SetProbPid() { mProbPid = kTRUE; }
  389. inline void StFlowEvent::SetEtaSubs() { mEtaSubs = kTRUE; }
  390. inline void StFlowEvent::SetRanSubs() { mRanSubs = kTRUE; }
  391. inline void StFlowEvent::SetFirstLastPhiWgt() { mFirstLastPhiWgt = kTRUE; }
  392. inline void StFlowEvent::SetFirstLastPoints() { mFirstLastPoints = kTRUE; }
  393. inline void StFlowEvent::SetUseZDCSMD(Bool_t UseZDCSMD) { mUseZDCSMD = UseZDCSMD; }
  394. inline void StFlowEvent::SetPtWgtSaturation(Float_t PtWgtSaturation) { mPtWgtSaturation = PtWgtSaturation; }
  395. inline void StFlowEvent::SetPtWgt(Bool_t PtWgt) { mPtWgt = PtWgt; }
  396. inline void StFlowEvent::SetEtaWgt(Bool_t EtaWgt) { mEtaWgt = EtaWgt; }
  397. inline void StFlowEvent::SetV1TPCDetctWgtG_Mix(Float_t val, Int_t selN){
  398. mV1TPCDetctWgtG_Mix[selN]=val;}
  399. inline void StFlowEvent::SetV1FtpcEastDetctWgtG_Mix(Float_t val, Int_t selN){
  400. mV1FtpcEastDetctWgtG_Mix[selN]=val;}
  401. inline void StFlowEvent::SetV1FtpcWestDetctWgtG_Mix(Float_t val, Int_t selN){
  402. mV1FtpcWestDetctWgtG_Mix[selN]=val;}
  403. inline void StFlowEvent::SetV2TPCDetctWgtG_Mix(Float_t val, Int_t selN){
  404. mV2TPCDetctWgtG_Mix[selN]=val;}
  405. inline void StFlowEvent::SetV2FtpcEastDetctWgtG_Mix(Float_t val, Int_t selN){
  406. mV2FtpcEastDetctWgtG_Mix[selN]=val;}
  407. inline void StFlowEvent::SetV2FtpcWestDetctWgtG_Mix(Float_t val, Int_t selN){
  408. mV2FtpcWestDetctWgtG_Mix[selN]=val;}
  409. #endif
  410. //////////////////////////////////////////////////////////////////////
  411. //
  412. // $Log: StFlowEvent.h,v $
  413. // Revision 1.56 2009/11/24 19:23:03 posk
  414. // Added reCenter option to remove acceptance correlations instead of phiWgt.
  415. //
  416. // Revision 1.55 2007/02/06 18:57:54 posk
  417. // In Lee Yang Zeros method, introduced recentering of Q vector.
  418. // Reactivated eta symmetry cut.
  419. //
  420. // Revision 1.54 2006/07/06 16:56:01 posk
  421. // Calculation of v1 for selection=2 is done with mixed harmonics.
  422. //
  423. // Revision 1.53 2006/02/22 19:29:16 posk
  424. // Additions needed for the StFlowLeeYangZerosMaker
  425. //
  426. // Revision 1.52 2005/02/10 21:04:57 aihong
  427. // test mProbPid of StFlowEvent before launch calculation pid on fly
  428. //
  429. // Revision 1.51 2004/12/17 22:33:08 aihong
  430. // add in full Psi weight for ZDC SMD and fix a few bugs, done by Gang
  431. //
  432. // Revision 1.50 2004/12/17 15:50:08 aihong
  433. // check in v1{3} code
  434. //
  435. // Revision 1.49 2004/12/07 17:04:46 posk
  436. // Eliminated the very old mOnePhiWgt, which used one phiWgt histogram for flttening
  437. // instead of four.
  438. //
  439. // Revision 1.48 2004/11/16 21:22:22 aihong
  440. // removed old cumulant method
  441. //
  442. // Revision 1.47 2004/05/05 21:13:45 aihong
  443. // Gang's code for ZDC-SMD added
  444. //
  445. // Revision 1.46 2004/03/11 17:58:42 posk
  446. // Added Random Subs analysis method.
  447. //
  448. // Revision 1.45 2003/07/30 22:00:40 oldi
  449. // Eta cuts for event plane selection separated for FTPC east and west.
  450. // PtWgtSaturation parameter introduced (default set to 2. -> no change of default behavior).
  451. //
  452. // Revision 1.44 2003/06/18 17:00:59 posk
  453. // Event plane cuts now only odd and even, instead of different for each harmonic.
  454. //
  455. // Revision 1.43 2003/04/01 00:27:07 posk
  456. // Little q is now unweighted by pt or eta. Big Q is unaffected.
  457. //
  458. // Revision 1.42 2003/01/10 16:42:15 oldi
  459. // Several changes to comply with FTPC tracks:
  460. // - Switch to include/exclude FTPC tracks introduced.
  461. // The same switch changes the range of the eta histograms.
  462. // - Eta symmetry plots for FTPC tracks added and separated from TPC plots.
  463. // - PhiWgts and related histograms for FTPC tracks split in FarEast, East,
  464. // West, FarWest (depending on vertex.z()).
  465. // - Psi_Diff plots for 2 different selections and the first 2 harmonics added.
  466. // - Cut to exclude mu-events with no primary vertex introduced.
  467. // (This is possible for UPC events and FTPC tracks.)
  468. // - Global DCA cut for FTPC tracks added.
  469. // - Global DCA cuts for event plane selection separated for TPC and FTPC tracks.
  470. // - Charge cut for FTPC tracks added.
  471. //
  472. // Revision 1.41 2003/01/08 19:26:48 posk
  473. // PhiWgt hists sorted on sign of z of first and last points.
  474. // Version 6 of pico file.
  475. //
  476. // Revision 1.40 2002/05/23 18:54:11 posk
  477. // Moved centrality cuts into StFlowConstants
  478. //
  479. // Revision 1.39 2002/03/15 16:43:22 snelling
  480. // Added a method to recalculate the centrality in StFlowPicoEvent
  481. //
  482. // Revision 1.38 2002/03/14 18:51:50 snelling
  483. // Added new centralities
  484. //
  485. // Revision 1.37 2002/02/13 22:29:28 posk
  486. // Pt Weight now also weights Phi Weights. Added Eta Weight, default=FALSE.
  487. //
  488. // Revision 1.36 2002/02/01 23:06:26 snelling
  489. // Added entries for header information in flowPico (not everthing is available yet)
  490. //
  491. // Revision 1.35 2002/01/31 01:04:47 posk
  492. // *** empty log message ***
  493. //
  494. // Revision 1.34 2001/12/18 19:22:09 posk
  495. // "proton" and "antiproton" changed to "pr+" and "pr-".
  496. // Compiles on Solaris.
  497. //
  498. // Revision 1.33 2001/12/11 21:33:50 posk
  499. // Went from one to four sets of histograms for making the event plane isotropic.
  500. // StFlowEvent::PhiWeight() has changed arguments and return value.
  501. // The ptWgt saturates above 2 GeV/c.
  502. //
  503. // Revision 1.32 2001/11/09 21:10:42 posk
  504. // Switched from CERNLIB to TMath. Little q is now normalized.
  505. //
  506. // Revision 1.31 2001/11/02 04:49:52 aihong
  507. // add func. for cumulant maker
  508. //
  509. // Revision 1.30 2001/08/01 19:39:35 snelling
  510. // Added the trigger word
  511. //
  512. // Revision 1.29 2001/07/27 01:26:14 snelling
  513. // Added and changed variables for picoEvent. Changed trackCut class to StTrack
  514. //
  515. // Revision 1.28 2001/07/24 22:29:12 snelling
  516. // First attempt to get a standard root pico file again, added variables
  517. //
  518. // Revision 1.27 2001/06/07 20:06:20 posk
  519. // Global Dca cut for event plane particles.
  520. // Removed SetPtWgt().
  521. //
  522. // Revision 1.26 2001/06/06 13:02:58 rcwells
  523. // Added SetPtWgt(Bool_t) function to StFlowEvent
  524. //
  525. // Revision 1.25 2001/06/04 18:57:05 rcwells
  526. // Adding filling from HbtEvents
  527. //
  528. // Revision 1.24 2001/05/23 18:11:09 posk
  529. // Removed SetPids().
  530. //
  531. // Revision 1.23 2001/05/22 20:17:30 posk
  532. // Now can do pseudorapidity subevents.
  533. //
  534. // Revision 1.22 2001/04/03 17:47:23 oldi
  535. // Bug fix that excluded FTPC tracks from the determination of the reaction plane.
  536. //
  537. // Revision 1.21 2000/12/12 20:22:05 posk
  538. // Put log comments at end of files.
  539. // Deleted persistent StFlowEvent (old micro DST).
  540. //
  541. // Revision 1.20 2000/12/10 02:01:13 oldi
  542. // A new member (StTrackTopologyMap mTopology) was added to StFlowPicoTrack.
  543. // The evaluation of either a track originates from the FTPC or not is
  544. // unambiguous now. The evaluation itself is easily extendible for other
  545. // detectors (e.g. SVT+TPC). Old flowpicoevent.root files are treated as if
  546. // they contain TPC tracks only (backward compatibility).
  547. //
  548. // Revision 1.19 2000/12/08 17:03:38 oldi
  549. // Phi weights for both FTPCs included.
  550. //
  551. // Revision 1.18 2000/10/12 22:46:36 snelling
  552. // Added support for the new pDST's and the probability pid method
  553. //
  554. // Revision 1.16 2000/09/15 22:51:30 posk
  555. // Added pt weighting for event plane calcualtion.
  556. //
  557. // Revision 1.15 2000/09/05 16:11:32 snelling
  558. // Added global DCA, electron and positron
  559. //
  560. // Revision 1.14 2000/08/31 18:58:22 posk
  561. // For picoDST, added version number, runID, and multEta for centrality.
  562. // Added centrality cut when reading picoDST.
  563. // Added pt and eta selections for particles corr. wrt event plane.
  564. //
  565. // Revision 1.13 2000/08/09 21:38:23 snelling
  566. // PID added
  567. //
  568. // Revision 1.12 2000/08/05 22:07:18 fisyak
  569. // less restrictive selection for ROOTCINT
  570. //
  571. // Revision 1.11 2000/08/05 21:21:33 fisyak
  572. // hide from CINT inline functions
  573. //
  574. // Revision 1.10 2000/08/04 21:03:45 perev
  575. // Leaks + Clear() cleanup
  576. //
  577. // Revision 1.9 2000/06/30 14:48:32 posk
  578. // Using MessageMgr, changed Eta Symmetry cut.
  579. //
  580. // Revision 1.8 2000/06/20 16:34:25 snelling
  581. // fixed cout/streamer problem for mPhiWgt under Solaris
  582. //
  583. // Revision 1.7 2000/05/26 21:29:27 posk
  584. // Protected Track data members from overflow.
  585. //
  586. // Revision 1.5 2000/05/16 20:59:30 posk
  587. // Voloshin's flownanoevent.root added.
  588. //
  589. // Revision 1.4 2000/05/12 22:42:04 snelling
  590. // Additions for persistency and minor fix
  591. //
  592. // Revision 1.2 2000/03/15 23:28:51 posk
  593. // Added StFlowSelection.
  594. //
  595. // Revision 1.1 2000/03/02 23:02:50 posk
  596. // Changed extensions from .hh and .cc to .h and .cxx .
  597. //
  598. // Revision 1.10 2000/02/29 22:00:54 posk
  599. // Made SetPhiWeight inline, changed ImpactPar to Dca, etc.
  600. //
  601. // Revision 1.9 2000/02/18 22:49:55 posk
  602. // Added PID and centrality.
  603. //
  604. // Revision 1.5 1999/12/15 22:01:26 posk
  605. // Added StFlowConstants.hh
  606. //
  607. // Revision 1.4 1999/12/04 00:10:33 posk
  608. // Works with the new StEvent
  609. //
  610. // Revision 1.3 1999/11/30 18:52:52 snelling
  611. // First modification for the new StEvent
  612. //
  613. // Revision 1.2 1999/11/24 18:17:14 posk
  614. // Put the methods which act on the data in with the data in StFlowEvent.
  615. //
  616. // Revision 1.1 1999/11/04 19:02:06 snelling
  617. // First check in of StFlowMaker. It contains the common code from
  618. // StFlowTagMaker and StFlowAnalysisMaker.
  619. //
  620. //////////////////////////////////////////////////////////////////////