StFemtoEvent.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. /**
  2. * \class StFemtoEvent
  3. * \brief Holds parameters of the current event
  4. *
  5. * The StFemtoEvent class stores parameters of event. In order to work
  6. * in a standalone mode one should define _VANILLA_ROOT_ global variable
  7. * at the compilation and run times.
  8. *
  9. * \author Grigory Nigmatklov, Nikita Ermakov; e-mail: nigmatkulov@gmail.com
  10. * \date June 28, 2018
  11. */
  12. #ifndef StFemtoEvent_h
  13. #define StFemtoEvent_h
  14. // C++ headers
  15. #include <vector>
  16. #include <limits>
  17. // ROOT headers
  18. #include "TObject.h"
  19. #include "TVector3.h"
  20. //_________________
  21. class StFemtoEvent : public TObject {
  22. public:
  23. /// Default constructor
  24. StFemtoEvent();
  25. /// Copy constructor
  26. StFemtoEvent(const StFemtoEvent &copy);
  27. /// Destructor
  28. virtual ~StFemtoEvent() { /* emtpy */ }
  29. /// Print some event information
  30. void print();
  31. //
  32. // Setters
  33. //
  34. /// Set event ID
  35. void setEventId(const Int_t& id) { mEventId = id; }
  36. /// Set run ID
  37. void setRunId(const Int_t& id) { mRunId = id; }
  38. /// Set refMult
  39. void setRefMult(const Int_t& m);
  40. /// Set refMult2
  41. void setRefMult2(const Int_t& m);
  42. /// Set refMultCorr(ected) from StRefMult
  43. void setRefMultCorr(const Float_t& rf);
  44. /// Set refMultCorrWeight from StRefMult
  45. void setRefMultCorrWeight(const Float_t& w);
  46. /// Set refMult of positive particles
  47. void setRefMultPos(const Int_t& m);
  48. /// Set refMult2 of positive particles
  49. void setRefMult2Pos(const Int_t& m);
  50. /// Set gRefMult
  51. void setGRefMult(const Int_t& m);
  52. /// Set cent16
  53. void setCent16(const Int_t& c) { mCent16 = (Char_t)c; }
  54. /// Set number of bTofHits (number of hits in TOF trays)
  55. void setNumberOfBTofHit(const Int_t& m);
  56. /// Set number of tracks that matched TOF
  57. void setNumberOfTofMatched(const Int_t& m);
  58. /// Set number of tracks that matched BEMC
  59. void setNumberOfBEMCMatched(const Int_t& m);
  60. /// Set number of primary tracks in event
  61. void setNumberOfPrimaryTracks(const Int_t& m);
  62. /// Set number of global tracks in event
  63. void setNumberOfGlobalTracks(const Int_t& m);
  64. /// Set east ZDC ADC sum
  65. void setZdcSumAdcEast(const Float_t& x);
  66. /// Set west ZDC ADC sum
  67. void setZdcSumAdcWest(const Float_t& x);
  68. /// Set ADC of east ZDC horizontal i-th strip
  69. void setZdcSmdEastHorizontal(const Int_t& i, const Float_t& x);
  70. /// Set ADC of east ZDC vertical i-th strip
  71. void setZdcSmdEastVertical(const Int_t& i, const Float_t& x);
  72. /// Set ADC of west ZDC horizontal i-th strip
  73. void setZdcSmdWestHorizontal(const Int_t& i, const Float_t& x);
  74. /// Set ADC of west ZDC vertical i-th strip
  75. void setZdcSmdWestVertical(const Int_t& i, const Float_t& x);
  76. /// Set ADC of east BBC i-th PMT
  77. void setBbcAdcEast(const Int_t& i, const UShort_t& x);
  78. /// Set ADC of west BBC i-th PMT
  79. void setBbcAdcWest(const Int_t& i, const UShort_t& x);
  80. /// Set magnetic field
  81. void setMagneticField(const Float_t& f) { mMagField = f; }
  82. /// Set magnetic field
  83. void setBField(const Float_t& f) { setMagneticField( f ); }
  84. /// Set primary vertex position (x,y,z)
  85. void setPrimaryVertexPosition(const Float_t& x, const Float_t& y, const Float_t& z);
  86. /// Set x position of primary vertex
  87. void setPrimaryVertexX(const Float_t& x) { mVertexPositionX = x; }
  88. /// Set y position of primary vertex
  89. void setPrimaryVertexY(const Float_t& y) { mVertexPositionY = y; }
  90. /// Set z position of primary vertex
  91. void setPrimaryVertexZ(const Float_t& z) { mVertexPositionZ = z; }
  92. /// Set number of primary vertices in event
  93. void setNumberOfPrimaryVertices(const Int_t& mult);
  94. /// Set transverse sphericity |eta|<0.5
  95. void setTransverseSphericity(const Float_t& sph);
  96. /// Set transverse sphericity |eta|<1
  97. void setTransverseSphericity2(const Float_t& sph);
  98. /// Set z position of primary vertex estimated by VPD
  99. void setVpdVz(const Float_t& vz) { mVpdVz = vz; }
  100. /// Set primary vertex ranking
  101. void setPrimaryVertexRanking(const Float_t& ranking);
  102. /// Add trigger
  103. void addTriggerId(const UInt_t& id);
  104. /// Add trigger
  105. void setTriggerId(const UInt_t& id);
  106. /// Add list (std::vector) of triggers
  107. void setTriggerIds(std::vector<unsigned int> ids) { mTriggerIds = ids; }
  108. //
  109. // Getters
  110. //
  111. /// Return event ID
  112. Int_t eventId() const { return mEventId; }
  113. /// Return run ID
  114. Int_t runId() const { return mRunId; }
  115. /// Return year
  116. Int_t year() const { return ( (mRunId / 1000000) - 1 + 2000 ); }
  117. /// Return day
  118. Int_t day() const { return ( (mRunId % 1000000) / 1000 ); }
  119. /// Return refMult
  120. Int_t refMult() const { return (Int_t)mRefMult; }
  121. /// Return refMult2
  122. Int_t refMult2() const { return (Int_t)mRefMult2;}
  123. /// Return refMultCorr(ected) from StRefMultCorr
  124. Float_t refMultCorr() const { return (Float_t)mRefMultCorr * 0.1; }
  125. /// Return refMultCorrWeight from StRefMultCorr
  126. Float_t refMultCorrWeight() const{ return (Float_t)mRefMultCorrWeight * 0.0001; }
  127. /// Return gRefMult (refMult estimated by global tracks)
  128. UInt_t gRefMult() const { return (UInt_t)mGRefMult; }
  129. /// Return centrality for 9 bins:
  130. /// 8 = 0-5%
  131. /// 7 = 5-10%
  132. /// 6 = 10-20%
  133. /// 5 = 20-30%
  134. /// 4 = 30-40%
  135. /// 3 = 40-50%
  136. /// 2 = 50-60%
  137. /// 1 = 60-70%
  138. /// 0 = 70-80%
  139. Int_t cent9() const;
  140. /// Return centrality for 16 bins:
  141. /// 15 = 0-5%
  142. /// 14 = 5-10%
  143. /// 13 = 10-15%
  144. /// 12 = 15-20%
  145. /// 11 = 20-25%
  146. /// 10 = 25-30%
  147. /// 9 = 30-35%
  148. /// 8 = 35-40%
  149. /// 7 = 40-45%
  150. /// 6 = 45-50%
  151. /// 5 = 50-55%
  152. /// 4 = 55-60%
  153. /// 3 = 60-65%
  154. /// 2 = 65-70%
  155. /// 1 = 70-75%
  156. /// 0 = 75-80%
  157. Int_t cent16() const { return (Int_t)mCent16; }
  158. /// Return refMult estimated by positive tracks
  159. Int_t refMultPos() const { return (Int_t)mRefMultPos; }
  160. /// Return refMult estimated by negative tracks
  161. Int_t refMultNeg() const { return ( refMult() - refMultPos() ); }
  162. /// Return refMult2 estimated by positive tracks
  163. Int_t refMult2Pos() const { return (Int_t)mRefMult2Pos; }
  164. /// Return refMult2 estimated by negative tracks
  165. Int_t refMult2Neg() const { return ( refMult2() - refMult2Pos() ); }
  166. /// Return sum of ADC for east ZDC
  167. Float_t zdcSumAdcEast() const { return (Float_t)mZdcSumAdcEast; }
  168. /// Return sum of ADC for west ZDC
  169. Float_t zdcSumAdcWest() const { return (Float_t)mZdcSumAdcWest; }
  170. /// Return ADC for i-th horizontal strip in east ZDC
  171. Float_t zdcSmdEastHorizontal(const Int_t& i) const
  172. { return (Float_t)mZdcSmdEastHorizontal[i]; }
  173. /// Return ADC for i-th vertical strip in east ZDC
  174. Float_t zdcSmdEastVertical(const Int_t& i) const
  175. { return (Float_t)mZdcSmdEastVertical[i]; }
  176. /// Return ADC for i-th horizontal strip in west ZDC
  177. Float_t zdcSmdWestHorizontal(const Int_t& i) const
  178. { return (Float_t)mZdcSmdWestHorizontal[i]; }
  179. /// Return ADC for i-th vertical strip in west ZDC
  180. Float_t zdcSmdWestVertical(const Int_t& i) const
  181. { return (Float_t)mZdcSmdWestVertical[i]; }
  182. /// Return ADC for i-th PMT box of east BBC
  183. UShort_t bbcAdcEast(const Int_t& i) const
  184. { return mBbcAdcEast[i]; }
  185. /// Return ADC for i-th PMT box of west BBC
  186. UShort_t bbcAdcWest(const Int_t& i) const
  187. { return mBbcAdcWest[i]; }
  188. /// Return number of hits in TOF (in trays)
  189. UShort_t numberOfBTofHit() const { return mNumberOfBTofHit; }
  190. /// Return number of primary tracks
  191. UShort_t numberOfPrimaryTracks() const { return mNumberOfPrimaryTracks; }
  192. /// Return number of global tracks
  193. UShort_t numberOfGlobalTracks() const { return mNumberOfGlobalTracks; }
  194. /// Return number of tracks that matched TOF
  195. UShort_t numberOfTofMatched() const { return mNumberOfTofMatched; }
  196. /// Return magnetic field
  197. Float_t magneticField() const { return mMagField; }
  198. /// Return postion of primary vertex (x,y,z)
  199. TVector3 primaryVertex() const { return TVector3(mVertexPositionX, mVertexPositionY, mVertexPositionZ); }
  200. /// Return postion of primary vertex (x,y,z)
  201. TVector3 vertexPosition() const { return primaryVertex(); }
  202. /// Return number of reconstructed primary vertices in event
  203. UInt_t numberOfPrimaryVertices() const { return (UInt_t)mNumberOfPrimaryVertices; }
  204. /// Return transverse sphericity |eta|<0.5
  205. Float_t transverseSphericity() const { return (Float_t)mTransverseSphericity * 0.01; }
  206. /// Return transverse sphericity |eta|<1
  207. Float_t transverseSphericity2() const { return (Float_t)mTransverseSphericity2 * 0.01; }
  208. /// Return radial position of primary vertex
  209. Float_t vertexPositionR() const { return primaryVertex().Perp(); }
  210. /// Return z postion of primary vertex estimated by VPD
  211. Float_t vpdVz() const { return mVpdVz; }
  212. /// Return list (std::vector) of trigger IDs
  213. std::vector<unsigned int> triggerIds() const { return mTriggerIds; }
  214. /// Check if trigger ID is in trigger list
  215. Bool_t isTrigger(const unsigned int& id) const;
  216. /// Return primary vertex ranking. FemtoDst encoding:
  217. /// -10 = x < -10e9
  218. /// -9 = -10e9 <= x < -10e6
  219. /// -8 = -10e6 <= x < -10e3;
  220. /// -7 = -10e3 <= x < -10e2
  221. /// -6 = -10e2 <= x < -10
  222. /// -5 = -10 <= x < -5
  223. /// -4 = -5 <= x < -4
  224. /// -3 = -4 <= x < -3
  225. /// -2 = -3 <= x < -2
  226. /// -1 = -2 <= x < -1
  227. /// 0 = -1 <= x < 1
  228. /// 1 = 1 <= x < 2
  229. /// 2 = 2 <= x < 3
  230. /// 3 = 3 <= x < 4
  231. /// 4 = 4 <= x < 5
  232. /// 5 = 5 <= x < 10
  233. /// 6 = 10 <= x < 10e2
  234. /// 7 = 10e2 <= x < 10e3
  235. /// 8 = 10e3 <= x < 10e6
  236. /// 9 = 10e6 <= x < 10e9
  237. /// 10 = 10e9 <= x
  238. Float_t ranking() const
  239. { return (Float_t)mPrimaryVertexRanking; }
  240. private:
  241. /// Event ID
  242. Int_t mEventId;
  243. /// Run ID
  244. Int_t mRunId;
  245. /// refMult
  246. UShort_t mRefMult;
  247. /// mRefMultCorr * 10
  248. UShort_t mRefMultCorr;
  249. /// mRefMultCorrWight * 10000
  250. UShort_t mRefMultCorrWeight;
  251. // n positive for refMult
  252. UShort_t mRefMultPos;
  253. /// refMult for |eta| < 1.0
  254. UShort_t mRefMult2;
  255. /// n positive for refMult2
  256. UShort_t mRefMult2Pos;
  257. /// mGRefMult
  258. UShort_t mGRefMult;
  259. /// Centrality for 16 bins (-1 if not defined)
  260. Char_t mCent16;
  261. /// Number of primary tracks in muEvent
  262. UShort_t mNumberOfPrimaryTracks;
  263. /// Number of global tracks in muEvent
  264. UShort_t mNumberOfGlobalTracks;
  265. /// btofTrayMultiplicity
  266. UShort_t mNumberOfBTofHit;
  267. /// Number of TOF matched tracks
  268. UShort_t mNumberOfTofMatched;
  269. /// Number of BEMC matched tracks
  270. UShort_t mNumberOfBEMCMatched;
  271. /// Magnetic field
  272. Float_t mMagField;
  273. /// Primary vertex position
  274. Float_t mVertexPositionX, mVertexPositionY, mVertexPositionZ;
  275. /// VpdVz
  276. Float_t mVpdVz;
  277. /// Primary vertex ranking according to detector-based weighting procedure. FemtoDst encoding:
  278. /// -10 = x < -10e9
  279. /// -9 = -10e9 <= x < -10e6
  280. /// -8 = -10e6 <= x < -10e3;
  281. /// -7 = -10e3 <= x < -10e2
  282. /// -6 = -10e2 <= x < -10
  283. /// -5 = -10 <= x < -5
  284. /// -4 = -5 <= x < -4
  285. /// -3 = -4 <= x < -3
  286. /// -2 = -3 <= x < -2
  287. /// -1 = -2 <= x < -1
  288. /// 0 = -1 <= x < 1
  289. /// 1 = 1 <= x < 2
  290. /// 2 = 2 <= x < 3
  291. /// 3 = 3 <= x < 4
  292. /// 4 = 4 <= x < 5
  293. /// 5 = 5 <= x < 10
  294. /// 6 = 10 <= x < 10e2
  295. /// 7 = 10e2 <= x < 10e3
  296. /// 8 = 10e3 <= x < 10e6
  297. /// 9 = 10e6 <= x < 10e9
  298. /// 10 = 10e9 <= x
  299. Char_t mPrimaryVertexRanking;
  300. /// Number of primary vertices in the muEvent
  301. UChar_t mNumberOfPrimaryVertices;
  302. /// Transverse sphericity: pTrk with p>0.15 GeV, |eta|<0.5, nHits>10
  303. Char_t mTransverseSphericity;
  304. /// Transverse sphericity: pTrk with p>0.15 GeV, |eta|<1, nHits>10
  305. Char_t mTransverseSphericity2;
  306. /// List (std::vector) of triggers that were fired
  307. /// for the current event
  308. std::vector<unsigned int> mTriggerIds;
  309. /// Sum of east ZDC ADC
  310. UShort_t mZdcSumAdcEast;
  311. /// Sum of west ZDC ADC
  312. UShort_t mZdcSumAdcWest;
  313. /// ADC of east ZDC i-th horizontal strip
  314. UShort_t mZdcSmdEastHorizontal[8];
  315. /// ADC of east ZDC i-th vertical strip
  316. UShort_t mZdcSmdEastVertical[8];
  317. /// ADC of west ZDC i-th horizontal strip
  318. UShort_t mZdcSmdWestHorizontal[8];
  319. /// ADC of west ZDC i-th vertical strip
  320. UShort_t mZdcSmdWestVertical[8];
  321. /// ADC of east BBC i-th PMT box
  322. UShort_t mBbcAdcEast[24];
  323. /// ADC of west BBC i-th PMT box
  324. UShort_t mBbcAdcWest[24];
  325. ClassDef(StFemtoEvent, 2)
  326. };
  327. #endif // StFemtoEvent_h