MpdFemtoDeltaEtaDeltaPhiStarMinKt.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. /**
  2. * \class MpdFemtoDeltaEtaDeltaPhiStarMinKt
  3. * \brief Two-dimensional plot of $\Delta\eta$ vs. $\Delta\phi^{*}_{min}$
  4. *
  5. * Two-dimensional distribution of $\Deta\eta$ vs. $\Delta\phi^{*}_{min}$
  6. * of pairs constructed for real and mixed events
  7. *
  8. * \author Grigory Nigmatkulov (NRNU MEPhI)
  9. * \date May 18, 2019
  10. * \email nigmatkulov@gmail.com
  11. */
  12. #ifndef MpdFemtoDeltaEtaDeltaPhiStarMinKt_h
  13. #define MpdFemtoDeltaEtaDeltaPhiStarMinKt_h
  14. // MpdFemtoMaker headers
  15. // Base
  16. #include "MpdFemtoBaseCorrFctn.h"
  17. // ROOT headers
  18. #include "TH2.h"
  19. #include "TVector3.h"
  20. // C++ headers
  21. #include <vector>
  22. // Forward declarations
  23. class MpdFemtoPair;
  24. //_________________
  25. class MpdFemtoDeltaEtaDeltaPhiStarMinKt : public MpdFemtoBaseCorrFctn {
  26. public:
  27. /// Parametrized constructor
  28. ///
  29. /// \param title Name of the histogram
  30. /// \param nBinsEta Number of eta bins
  31. /// \param mEtaLo Minimum value of eta
  32. /// \param mEtaHi Maximum value of eta
  33. /// \param nBinsPhi Number of eta bins
  34. /// \param mPhiLo Minimum value of eta
  35. /// \param mPhiHi Maximum value of eta
  36. /// \param ktBins Number of kT bins used in the analysis
  37. /// \param ktLo Minimum value of kT
  38. /// \param ktHi Maximum value of kT
  39. ///
  40. MpdFemtoDeltaEtaDeltaPhiStarMinKt(const char* title = "hDeltaEtaDeltaPhiStarMin",
  41. const int& nBinsEta = 200, const double& etaLo = -0.5, const double& etaHi = 0.5,
  42. const int& nBinsPhi = 200, const double& phiLo = -0.5, const double& phiHi = 0.5,
  43. const int& ktBins = 10, const double& ktLo = 0.05, const double& ktHi = 1.05);
  44. /// Copy constructor
  45. MpdFemtoDeltaEtaDeltaPhiStarMinKt(const MpdFemtoDeltaEtaDeltaPhiStarMinKt& corrFctn);
  46. /// Assignment operator
  47. MpdFemtoDeltaEtaDeltaPhiStarMinKt& operator=(const MpdFemtoDeltaEtaDeltaPhiStarMinKt& corrFctn);
  48. /// Destructor
  49. virtual ~MpdFemtoDeltaEtaDeltaPhiStarMinKt();
  50. /// Set histogram parameters (nBinsEta, etaLow, etaHi, nBinsPhi, phiLow, phiHi)
  51. void setHistoParameters(const int& nBinsEta = 200, const double& etaLo = -0.1, const double& etaHi = 0.1,
  52. const int& nBinsPhi = 200, const double& phiLo = -0.1, const double& phiHi = 0.1);
  53. /// Set kT range (nbins, ktLow, ktHi)
  54. void setKtRange(const int& nKtBins = 10, const double& kTLow = 0.05, const double& kTHi = 1.05);
  55. /// Set number of points, inner and outer radii (in meters)
  56. void setRadiiParameters(const int& npoints = 4, const double& radiusLo = 0.5, const double& radiusHi = 2.);
  57. /// Set charges of the first and the second particles
  58. void setCharges(const int& charge1 = 1, const int& charge2 = 1);
  59. /// Set magnetic field (Tesla)
  60. void setBField(const double& bfield = -0.5);
  61. /// Make report
  62. virtual MpdFemtoString report();
  63. /// Add real pair
  64. virtual void addRealPair(MpdFemtoPair* pair);
  65. /// Add mixed pair
  66. virtual void addMixedPair(MpdFemtoPair* pair);
  67. /// Begin event
  68. virtual void eventBegin(const MpdFemtoEvent* event);
  69. /// Event end
  70. virtual void eventEnd(const MpdFemtoEvent* event);
  71. /// Finish
  72. virtual void finish();
  73. /// Return i-th histogram for numerator
  74. TH2F* numerator(unsigned int i) {
  75. return ( mNumerator.at(i)) ? mNumerator.at(i) : nullptr;
  76. }
  77. /// Return i-th histogram for denominator
  78. TH2F* denominator(unsigned int i) {
  79. return ( mDenominator.at(i)) ? mDenominator.at(i) : nullptr;
  80. }
  81. /// Write histograms
  82. virtual void writeOutHistos();
  83. /// Return output list
  84. virtual TList* getOutputList();
  85. /// Clone correlation function
  86. virtual MpdFemtoDeltaEtaDeltaPhiStarMinKt* clone() const {
  87. return new MpdFemtoDeltaEtaDeltaPhiStarMinKt(*this);
  88. }
  89. protected:
  90. /// Numerator made with pairs from the same event
  91. std::vector< TH2F* > mNumerator;
  92. /// Denominator made with mixed pairs
  93. std::vector< TH2F* > mDenominator;
  94. /// Number of eta bins
  95. int mEtaBins;
  96. /// Eta range
  97. double mEtaRange[2];
  98. /// Number of phi* bins
  99. int mPhiBins;
  100. /// Phi* range
  101. double mPhiRange[2];
  102. /// Charge of the first particle
  103. int mQ1;
  104. /// Charge of the second particle
  105. int mQ2;
  106. /// Step in radius (cm)
  107. double mRadiusStep;
  108. /// Inner and outer radii values
  109. double mRadii[2];
  110. /// Magnetic field
  111. double mBField;
  112. /// Momentum of the first particle
  113. TVector3 mMomentum1;
  114. /// Momentum of the second particle
  115. TVector3 mMomentum2;
  116. /// Number of the kT bins
  117. int mNKtBins;
  118. /// kT step
  119. double mKtStep;
  120. /// kT range
  121. double mKtRange[2];
  122. ClassDef(MpdFemtoDeltaEtaDeltaPhiStarMinKt, 1)
  123. };
  124. #endif // MpdFemtoDeltaEtaDeltaPhiStarMinKt_h