MpdFemtoBPLCMS3DCorrFctnKt.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /**
  2. * \class MpdFemtoBPLCMS3DCorrFctnKt
  3. * \brief A class to calculate 3D correlation for pairs of identical particles.
  4. *
  5. * It also stored the weighted qinv per bin denominator histogram for the coulomb
  6. * correction.
  7. *
  8. * \author Grigory Nigmatkulov (NRNU MEPhI)
  9. * \date May 18, 2019
  10. * \email nigmatkulov@gmail.com
  11. */
  12. #ifndef MpdFemtoBPLCMS3DCorrFctnKt_h
  13. #define MpdFemtoBPLCMS3DCorrFctnKt_h
  14. // MpdFemtoMaker headers
  15. #include "MpdFemtoBaseCorrFctn.h"
  16. #include "MpdFemtoBasePairCut.h"
  17. #include "MpdFemtoString.h"
  18. // ROOT headers
  19. #include "TH3.h"
  20. //_________________
  21. class MpdFemtoBPLCMS3DCorrFctnKt : public MpdFemtoBaseCorrFctn {
  22. public:
  23. /// Parametrized constructor
  24. ///
  25. /// \param title Name of the histogram
  26. /// \param nBins Number of bins (will be used for out, side and long projections)
  27. /// \param qLo Minimum value of the q
  28. /// \param qHi Maximum value of the q
  29. /// \param ktBins Number of kT bins used in the analysis
  30. /// \param ktLo Minimum value of kT
  31. /// \param ktHi Maximum value of kT
  32. ///
  33. MpdFemtoBPLCMS3DCorrFctnKt(const char* title = "hBPLCMSCorrFctn",
  34. const int& nBins = 80, const double& qLo = -0.4, const double& qHi = 0.4,
  35. const int& ktBins = 10, const double& ktLo = 0.05, const double& ktHi = 1.05);
  36. /// Copy constructor
  37. MpdFemtoBPLCMS3DCorrFctnKt(const MpdFemtoBPLCMS3DCorrFctnKt& copy);
  38. /// Assignment operator
  39. MpdFemtoBPLCMS3DCorrFctnKt& operator=(const MpdFemtoBPLCMS3DCorrFctnKt& aCorrFctn);
  40. /// Destructor
  41. virtual ~MpdFemtoBPLCMS3DCorrFctnKt();
  42. /// Set histogram parameters (nbins, qLow, qHi)
  43. void setHistoParameters(const int& nBins = 80, const float& qLo = -0.4, const float& qHi = 0.4);
  44. /// Set kT range (nbins, ktLow, ktHi)
  45. void setKtRange(const int& nKtBins = 10, const float& kTLow = 0.05, const float& kTHi = 1.05);
  46. /// Report
  47. virtual MpdFemtoString report();
  48. /// Add real pair
  49. virtual void addRealPair(MpdFemtoPair* pair);
  50. /// Add mixed pair
  51. virtual void addMixedPair(MpdFemtoPair* pair);
  52. /// Event begin
  53. virtual void eventBegin(const MpdFemtoEvent* /* event*/) {
  54. /* empty */
  55. }
  56. /// Event end
  57. virtual void eventEnd(const MpdFemtoEvent* /* event*/) {
  58. /* empty */
  59. }
  60. /// Finish
  61. virtual void finish();
  62. /// Return i-th histogram for numerator
  63. TH3F* numerator(int i) {
  64. return (mNumerator[i]) ? mNumerator[i] : nullptr;
  65. }
  66. /// Return i-th histogram for denominator
  67. TH3F* denominator(int i) {
  68. return (mDenominator[i]) ? mDenominator[i] : nullptr;
  69. }
  70. /// Return i-th histogram with the q_{inv} weight
  71. TH3F* qInvWeight(int i) {
  72. return (mQinvHisto[i]) ? mQinvHisto[i] : nullptr;
  73. }
  74. /// Write histograms
  75. void writeOutHistos();
  76. /// Get output list
  77. virtual TList* getOutputList();
  78. /// Clone correalation function
  79. virtual MpdFemtoBaseCorrFctn* clone() const {
  80. return new MpdFemtoBPLCMS3DCorrFctnKt(*this);
  81. }
  82. private:
  83. /// Numerator
  84. TH3F* mNumerator[20];
  85. /// Denominator
  86. TH3F* mDenominator[20];
  87. /// qInv weighted denominator
  88. TH3F* mQinvHisto[20];
  89. /// Number of bins in the outward direction
  90. int mNQbins;
  91. /// qOut range
  92. float mQRange[2];
  93. /// Number of the kT bins
  94. int mNKtBins;
  95. /// kT step
  96. float mKtStep;
  97. /// kT range
  98. float mKtRange[2];
  99. ClassDef(MpdFemtoBPLCMS3DCorrFctnKt, 1)
  100. };
  101. #endif // #ifndef MpdFemtoBPLCMS3DCorrFctnKt_h