MpdFemtoSmearPair.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /**
  2. * \class MpdFemtoSmearPair
  3. * \brief Class that returns a MpdFemtoPair with smeared momentum
  4. *
  5. * Given a MpdFemtoPair, this class provides a corresponding
  6. * MpdFemtoPair whose constituent MpdFemtoParticles' momenta have been
  7. * smeared according to a parameterization of the STAR momentum
  8. * resolution.
  9. *
  10. * \author Grigory Nigmatkulov (NRNU MEPhI)
  11. * \date May 18, 2019
  12. * \email nigmatkulov@gmail.com
  13. */
  14. #ifndef MpdFemtoSmearPair_h
  15. #define MpdFemtoSmearPair_h
  16. // MpdFemtoMaker headers
  17. #include "MpdFemtoPair.h"
  18. // ROOT headers
  19. #include "TLorentzVector.h"
  20. #include "TRandom3.h"
  21. //_________________
  22. class MpdFemtoSmearPair {
  23. public:
  24. /// Default constructor
  25. MpdFemtoSmearPair();
  26. /// Constructor that takes unsmeared pair
  27. MpdFemtoSmearPair(const MpdFemtoPair* unSmearedPair);
  28. /// Destructor
  29. virtual ~MpdFemtoSmearPair() {
  30. /* empty */
  31. }
  32. /// Essentially same as c'tor
  33. void setUnsmearedPair(const MpdFemtoPair* unSmearedPair);
  34. /// Access to the smeared pair
  35. MpdFemtoPair& smearedPair() {
  36. return mSmearedPair;
  37. }
  38. //========= Resolution parameters ==========
  39. /// pT resolution parameterized by d(pT) = Frac*pT
  40. void setFractionalPtRes(double val) {
  41. mFracPtRes = val;
  42. }
  43. /// phi resolution parameterized d(phi)= by a+b*P^alpha
  44. void setPhiRes_a(double val) {
  45. mPhi_a = val;
  46. }
  47. /// phi resolution parameterized d(phi)= by a+b*P^alpha
  48. void setPhiRes_b(double val) {
  49. mPhi_b = val;
  50. }
  51. /// phi resolution parameterized d(phi)= by a+b*P^alpha
  52. void setPhiRes_alpha(double val) {
  53. mPhi_alpha = val;
  54. }
  55. /// phi resolution parameterized by d(theta) = a+b*P^alpha
  56. void setThetaRes_a(double val) {
  57. mTheta_a = val;
  58. }
  59. /// phi resolution parameterized by d(theta) = a+b*P^alpha
  60. void setThetaRes_b(double val) {
  61. mTheta_b = val;
  62. }
  63. /// phi resolution parameterized by d(theta) = a+b*P^alpha
  64. void setThetaRes_alpha(double val) {
  65. mTheta_alpha = val;
  66. }
  67. /// Return smeared four-momentum of the pair
  68. TLorentzVector smearedMomentum(TLorentzVector input);
  69. private:
  70. /// Pair with smeared parameters
  71. MpdFemtoPair mSmearedPair;
  72. /// The first particle
  73. MpdFemtoParticle mParticle1;
  74. /// The second particle
  75. MpdFemtoParticle mParticle2;
  76. /// Pair resolution parameters
  77. double mFracPtRes;
  78. /// Parameter phi_a
  79. double mPhi_a;
  80. /// Parameter phi_b
  81. double mPhi_b;
  82. /// Parameter phi_alpha
  83. double mPhi_alpha;
  84. /// Parameter theta_a
  85. double mTheta_a;
  86. /// Parameter theta_b
  87. double mTheta_b;
  88. /// Parameter theta_alpha
  89. double mTheta_alpha;
  90. /// Random value
  91. TRandom3* mHbtRandom;
  92. /// Setup
  93. void setup();
  94. ClassDef(MpdFemtoSmearPair, 0)
  95. };
  96. #endif // #define MpdFemtoSmearPair_h