MpdFemtoModelBPLCMS3DCorrFctnKt.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. /**
  2. * \class MpdFemtoModelBPLCMS3DCorrFctnKt
  3. * \brief Three-dimensional Bertsch-Pratt correlation function in LCMS for the model estimations
  4. *
  5. * Three-dimensional Bertsch-Pratt correlation function which will store
  6. * numerators (from same event) and denominatros (from mixed events) with
  7. * and without femtoscopic weights
  8. *
  9. * \author Grigory Nigmatkulov (NRNU MEPhI)
  10. * \date May 18, 2019
  11. * \email nigmatkulov@gmail.com
  12. */
  13. #ifndef MpdFemtoModelBPLCMS3DCorrFctnKt_h
  14. #define MpdFemtoModelBPLCMS3DCorrFctnKt_h
  15. // MpdFemtoMaker headers
  16. // Base
  17. #include "MpdFemtoBaseCorrFctn.h"
  18. // C++ headers
  19. #include <vector>
  20. // Forward declarations
  21. class MpdFemtoPair;
  22. class MpdFemtoModelManager;
  23. class TH3F;
  24. //_________________
  25. class MpdFemtoModelBPLCMS3DCorrFctnKt : public MpdFemtoBaseCorrFctn {
  26. public:
  27. /// Parametrized constructor
  28. ///
  29. /// \param title Name of the histogram
  30. /// \param nBins Number of bins (will be used for out, side anMpd long projections)
  31. /// \param qLo Minimum value of the q
  32. /// \param qHi Maximum value of the q
  33. /// \param ktBins Number of kT bins used in the analysis
  34. /// \param ktLo Minimum value of kT
  35. /// \param ktHi Maximum value of kT
  36. ///
  37. MpdFemtoModelBPLCMS3DCorrFctnKt(const char* title = "hBPLCMSCorrFctn",
  38. const int& nBins = 80, const double& qLo = -0.4, const double& qHi = 0.4,
  39. const int& ktBins = 10, const double& ktLo = 0.05, const double& ktHi = 1.05,
  40. const bool isUseDenominator = true);
  41. /// Copy constructor
  42. MpdFemtoModelBPLCMS3DCorrFctnKt(const MpdFemtoModelBPLCMS3DCorrFctnKt& corrFctn);
  43. /// Assignment operator
  44. MpdFemtoModelBPLCMS3DCorrFctnKt& operator=(const MpdFemtoModelBPLCMS3DCorrFctnKt& corrFctn);
  45. /// Destructor
  46. virtual ~MpdFemtoModelBPLCMS3DCorrFctnKt();
  47. /// Method that allows front-loading model manager
  48. virtual void connectToManager(MpdFemtoModelManager *manager);
  49. /// Set kT range (nbins, ktLow, ktHi)
  50. void setKtRange(const int& nKtBins = 10, const float& kTLow = 0.05, const float& kTHi = 1.05);
  51. /// Make report
  52. virtual MpdFemtoString report();
  53. /// Add real pair
  54. virtual void addRealPair(MpdFemtoPair* pair);
  55. /// Add mixed pair
  56. virtual void addMixedPair(MpdFemtoPair* pair);
  57. /// Begin event
  58. virtual void eventBegin(const MpdFemtoEvent* event);
  59. /// Event end
  60. virtual void eventEnd(const MpdFemtoEvent* event);
  61. /// Finish
  62. virtual void finish();
  63. /// Return i-th histogram for numerator
  64. TH3F* numerator(int i) {
  65. return ( mNumerator.at(i) ) ? mNumerator.at(i) : nullptr;
  66. }
  67. /// Return i-th histogram for denominator
  68. TH3F* denominator(int i) {
  69. return ( mDenominator.at(i) ) ? mDenominator.at(i) : nullptr;
  70. }
  71. /// Return i-th weighted numerator
  72. TH3F* numeratorWeighted(int i) {
  73. return ( mNumeratorWeighted.at(i) ) ? mNumeratorWeighted.at(i) : nullptr;
  74. }
  75. /// Return i-th weighted numerator
  76. TH3F* denominatorWeighted(int i) {
  77. return ( mDenominatorWeighted.at(i) ) ? mDenominatorWeighted.at(i) : nullptr;
  78. }
  79. /// Return i-th qInv weighted numerator
  80. TH3F* numeratorQinvWeighted(int i) {
  81. return ( mNumeratorQinvWeighted.at(i) ) ? mNumeratorQinvWeighted.at(i) : nullptr;
  82. }
  83. /// Return i-th weighted numerator
  84. TH3F* denominatorQinvWeighted(int i) {
  85. return ( mDenominatorQinvWeighted.at(i) ) ? mDenominatorQinvWeighted.at(i) : nullptr;
  86. }
  87. /// Write histograms
  88. virtual void writeOutHistos();
  89. /// Return output list
  90. virtual TList* getOutputList();
  91. /// Set use/not use denominators
  92. void setUseDenominator(bool useDen) { mIsUseDenominator = useDen; }
  93. /// Clone correlation function
  94. virtual MpdFemtoModelBPLCMS3DCorrFctnKt* clone() const {
  95. return new MpdFemtoModelBPLCMS3DCorrFctnKt(*this);
  96. }
  97. protected:
  98. /// Pointer to the model manager that performs femtoscopic
  99. /// weight calculation
  100. MpdFemtoModelManager *mManager;
  101. /// Numerator made with pairs from the same event with femtoscopic weight
  102. std::vector< TH3F* > mNumeratorWeighted;
  103. /// Numerator made with pairs from the same event without weights
  104. std::vector< TH3F* > mNumerator;
  105. /// Numerator made with pairs from the same event with Qinv weight
  106. std::vector< TH3F* > mNumeratorQinvWeighted;
  107. /// Denominator made with mixed pairs with femtoscopic weight
  108. std::vector< TH3F* > mDenominatorWeighted;
  109. /// Denominator made with mixed pairs without weights
  110. std::vector< TH3F* > mDenominator;
  111. /// Denominator made with pairs from the same event with Qinv weight
  112. std::vector< TH3F* > mDenominatorQinvWeighted;
  113. /// Number of the kT bins
  114. int mNKtBins;
  115. /// kT step
  116. float mKtStep;
  117. /// kT range
  118. float mKtRange[2];
  119. /// Use denominator (default true)
  120. bool mIsUseDenominator;
  121. ClassDef(MpdFemtoModelBPLCMS3DCorrFctnKt, 2)
  122. };
  123. #endif // MpdFemtoModelBPLCMS3DCorrFctnKt_h