MpdFemtoKink.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. /**
  2. * \class MpdFemtoKink
  3. * \brief Main class holding kink information
  4. *
  5. * MpdFemtoKink holds all the necessary information about a kink
  6. *
  7. * \author Grigory Nigmatkulov (NRNU MEPhI)
  8. * \date May 18, 2019
  9. * \email nigmatkulov@gmail.com
  10. */
  11. #ifndef MpdFemtoKink_h
  12. #define MpdFemtoKink_h
  13. // MpdFemtoMaker headers
  14. #include "MpdFemtoTrack.h"
  15. #include "MpdFemtoTypes.h"
  16. // ROOT headers
  17. #include "TVector3.h"
  18. //_________________
  19. class MpdFemtoKink {
  20. public:
  21. /// Default constructor
  22. MpdFemtoKink();
  23. /// Copy constructor
  24. MpdFemtoKink(const MpdFemtoKink&);
  25. /// Copy constructor
  26. MpdFemtoKink& operator=(const MpdFemtoKink &k);
  27. /// Default destructor
  28. virtual ~MpdFemtoKink();
  29. //
  30. // Getters
  31. //
  32. float dcaParentDaughter() const {
  33. return mDcaParentDaughter;
  34. }
  35. float dcaDaughterPrimaryVertex() const {
  36. return mDaughter.gDCA().Mag();
  37. }
  38. float dcaParent2PrimaryVertex() const {
  39. return mParent.gDCA().Mag();
  40. }
  41. float hitDistanceParentDaughter() const {
  42. return mHitDistanceParentDaughter;
  43. }
  44. float hitDistanceParentVertex() const {
  45. return mHitDistanceParentVertex;
  46. }
  47. float deltaEnergy(int i = 0) const {
  48. return mDeltaEnergy[i];
  49. }
  50. float decayAngle() const {
  51. return mDecayAngle;
  52. }
  53. float decayAngleCM() const {
  54. return mDecayAngleCM;
  55. }
  56. MpdFemtoTrack daughter() const {
  57. return mDaughter;
  58. }
  59. MpdFemtoTrack parent() const {
  60. return mParent;
  61. }
  62. TVector3 position() const {
  63. return TVector3(mPositionX, mPositionY, mPositionZ);
  64. }
  65. TVector3 kinkPoint() const {
  66. return position();
  67. }
  68. TVector3 decayPoint() const {
  69. return position();
  70. }
  71. TVector3 primaryVertex() const {
  72. return mParent.primaryVertex();
  73. }
  74. //
  75. // Setters
  76. //
  77. void setDcaParentDaughter(const float& dca) {
  78. mDcaParentDaughter = dca;
  79. }
  80. void setHitDistanceParentDaugher(const float& dist) {
  81. mHitDistanceParentDaughter = dist;
  82. }
  83. void setHitDistanceParentVertex(const float& dist) {
  84. mHitDistanceParentVertex = dist;
  85. }
  86. void setDeltaEnergy(const int& i, const float& e) {
  87. mDeltaEnergy[i] = e;
  88. }
  89. void setDecayAngle(const float& angle) {
  90. mDecayAngle = angle;
  91. }
  92. void setDecayAngleCM(const float& angle) {
  93. mDecayAngleCM = angle;
  94. }
  95. void setDaugherHbtTrack(const MpdFemtoTrack& trk);
  96. void setParetntHbtTrack(const MpdFemtoTrack& trk);
  97. void setKinkPoint(const TVector3& pos) {
  98. mPositionX = pos.X();
  99. mPositionY = pos.Y();
  100. mPositionZ = pos.Z();
  101. }
  102. void setKinkPoint(const float& x, const float& y, const float& z) {
  103. mPositionX = x;
  104. mPositionY = y;
  105. mPositionZ = z;
  106. }
  107. void setPoint(const TVector3& pos) {
  108. setKinkPoint(pos);
  109. }
  110. void setPoint(const float& x, const float& y, const float& z) {
  111. setKinkPoint(x, y, z);
  112. }
  113. protected:
  114. /// DCA between parent and daugher
  115. float mDcaParentDaughter;
  116. /// Distance between parent track and daughter track
  117. float mHitDistanceParentDaughter;
  118. /// Distance between parent track and primary vertex
  119. float mHitDistanceParentVertex;
  120. /// Missed energy
  121. float mDeltaEnergy[3];
  122. /// Decay angles in the Lab frame
  123. float mDecayAngle;
  124. /// Decay angles in the CMS frame
  125. float mDecayAngleCM;
  126. /// Daughter track
  127. MpdFemtoTrack mDaughter;
  128. /// Parent track
  129. MpdFemtoTrack mParent;
  130. /// Decay point x of the kink
  131. float mPositionX;
  132. /// Decay point y of the kink
  133. float mPositionY;
  134. /// Decay point z of the kink
  135. float mPositionZ;
  136. ClassDef(MpdFemtoKink, 1)
  137. };
  138. #endif // #define MpdFemtoKink_h