MpdFemtoModelBPLCMS3DCorrFctn.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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 11, 2020
  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. MpdFemtoModelBPLCMS3DCorrFctnKt(const char* title = "hBPLCMSCorrFctn",
  34. const int& nBins = 80, const double& qLo = -0.4, const double& qHi = 0.4,
  35. const bool isUseDenominator = true);
  36. /// Copy constructor
  37. MpdFemtoModelBPLCMS3DCorrFctnKt(const MpdFemtoModelBPLCMS3DCorrFctnKt& corrFctn);
  38. /// Assignment operator
  39. MpdFemtoModelBPLCMS3DCorrFctnKt& operator=(const MpdFemtoModelBPLCMS3DCorrFctnKt& corrFctn);
  40. /// Destructor
  41. virtual ~MpdFemtoModelBPLCMS3DCorrFctnKt();
  42. /// Method that allows front-loading model manager
  43. virtual void connectToManager(MpdFemtoModelManager *manager);
  44. /// Make report
  45. virtual MpdFemtoString report();
  46. /// Add real pair
  47. virtual void addRealPair(MpdFemtoPair* pair);
  48. /// Add mixed pair
  49. virtual void addMixedPair(MpdFemtoPair* pair);
  50. /// Begin event
  51. virtual void eventBegin(const MpdFemtoEvent* event);
  52. /// Event end
  53. virtual void eventEnd(const MpdFemtoEvent* event);
  54. /// Finish
  55. virtual void finish();
  56. /// Return i-th histogram for numerator
  57. TH3F* numerator() { return ( mNumerator ) ? mNumerator : nullptr; }
  58. /// Return i-th histogram for denominator
  59. TH3F* denominator() { return ( mDenominator ) ? mDenominator : nullptr; }
  60. /// Return i-th weighted numerator
  61. TH3F* numeratorWeighted() { return ( mNumeratorWeighted ) ? mNumeratorWeighted : nullptr; }
  62. /// Return i-th weighted numerator
  63. TH3F* denominatorWeighted() { return ( mDenominatorWeighted.at(i) ) ? mDenominatorWeighted : nullptr; }
  64. /// Return i-th qInv weighted numerator
  65. TH3F* numeratorQinvWeighted() { return ( mNumeratorQinvWeighted ) ? mNumeratorQinvWeighted : nullptr; }
  66. /// Return i-th weighted numerator
  67. TH3F* denominatorQinvWeighted() { return ( mDenominatorQinvWeighted ) ? mDenominatorQinvWeighted : nullptr; }
  68. /// Write histograms
  69. virtual void writeOutHistos();
  70. /// Return output list
  71. virtual TList* getOutputList();
  72. /// Set use/not use denominators
  73. void setUseDenominator(bool useDen) { mIsUseDenominator = useDen; }
  74. /// Clone correlation function
  75. virtual MpdFemtoModelBPLCMS3DCorrFctnKt* clone() const {
  76. return new MpdFemtoModelBPLCMS3DCorrFctnKt(*this);
  77. }
  78. protected:
  79. /// Pointer to the model manager that performs femtoscopic
  80. /// weight calculation
  81. MpdFemtoModelManager *mManager;
  82. /// Numerator made with pairs from the same event with femtoscopic weight
  83. TH3F* mNumeratorWeighted;
  84. /// Numerator made with pairs from the same event without weights
  85. TH3F* mNumerator;
  86. /// Numerator made with pairs from the same event with Qinv weight
  87. TH3F* mNumeratorQinvWeighted;
  88. /// Denominator made with mixed pairs with femtoscopic weight
  89. TH3F* mDenominatorWeighted;
  90. /// Denominator made with mixed pairs without weights
  91. TH3F* mDenominator;
  92. /// Denominator made with pairs from the same event with Qinv weight
  93. TH3F* mDenominatorQinvWeighted;
  94. /// Use denominator (default true)
  95. bool mIsUseDenominator;
  96. ClassDef(MpdFemtoModelBPLCMS3DCorrFctnKt, 1)
  97. };
  98. #endif // MpdFemtoModelBPLCMS3DCorrFctnKt_h