MpdFemtoBaseCorrFctn.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /**
  2. * \class MpdFemtoBaseCorrFctn
  3. * \brief The pure-virtual base class for correlation functions
  4. *
  5. * All correlation function classes must inherit from this one.
  6. * This class has a optional pointers to the "parent" analysis and
  7. * a pair cut
  8. *
  9. * \author Grigory Nigmatkulov (NRNU MEPhI)
  10. * \date May 18, 2019
  11. * \email nigmatkulov@gmail.com
  12. */
  13. #ifndef MpdFemtoBaseCorrFctn_h
  14. #define MpdFemtoBaseCorrFctn_h
  15. // C++ headers
  16. #include <iostream>
  17. // MpdFemtoMaker headers
  18. // Base
  19. #include "MpdFemtoBaseAnalysis.h"
  20. #include "MpdFemtoBasePairCut.h"
  21. // Real
  22. #include "MpdFemtoEvent.h"
  23. #include "MpdFemtoPair.h"
  24. #include "MpdFemtoTriplet.h"
  25. // ROOT headers
  26. #include "TList.h"
  27. //_________________
  28. class MpdFemtoBaseCorrFctn {
  29. public:
  30. /// Default constuctor
  31. MpdFemtoBaseCorrFctn();
  32. /// Copy constructor
  33. MpdFemtoBaseCorrFctn(const MpdFemtoBaseCorrFctn& copy);
  34. /// Assignment operator
  35. MpdFemtoBaseCorrFctn& operator=(const MpdFemtoBaseCorrFctn& copy);
  36. /// Default destructor
  37. virtual ~MpdFemtoBaseCorrFctn() {
  38. /* no-op */
  39. }
  40. /// Report
  41. virtual MpdFemtoString report() = 0;
  42. /// Add real pair
  43. virtual void addRealPair(MpdFemtoPair*);
  44. /// Add mixed pair
  45. virtual void addMixedPair(MpdFemtoPair*);
  46. /// Add real triplet
  47. virtual void addRealTriplet(const MpdFemtoTriplet*);
  48. /// Add mixed triplet
  49. virtual void addMixedTriplet(const MpdFemtoTriplet*);
  50. /// Not Implemented - Add particle with options
  51. virtual void addFirstParticle(MpdFemtoParticle *particle, bool mixing);
  52. /// Not Implemented - Add particle
  53. virtual void addSecondParticle(MpdFemtoParticle *particle);
  54. /// Event start
  55. virtual void eventBegin(const MpdFemtoEvent*) {
  56. /* no-op */
  57. }
  58. /// Event end
  59. virtual void eventEnd(const MpdFemtoEvent*) {
  60. /* no-op */
  61. }
  62. /// Finish method
  63. virtual void finish() = 0;
  64. /// Return output list
  65. virtual TList* getOutputList() = 0;
  66. /// Return correlation function clone
  67. virtual MpdFemtoBaseCorrFctn* clone() const = 0;
  68. /// Return pointer to the pair cut
  69. virtual MpdFemtoBasePairCut* getPairCut() {
  70. return mPairCut;
  71. }
  72. // The following allows "back-pointing" from the CorrFctn to the "parent" Analysis
  73. friend class MpdFemtoBaseAnalysis;
  74. /// Return a pointer to the analysis
  75. MpdFemtoBaseAnalysis* hbtAnalysis() {
  76. return mBaseAnalysis;
  77. }
  78. /// Set analysis
  79. void setAnalysis(MpdFemtoBaseAnalysis* ana) {
  80. mBaseAnalysis = ana;
  81. }
  82. /// Set pair cut
  83. void setPairSelectionCut(MpdFemtoBasePairCut *cut) {
  84. mPairCut = cut;
  85. }
  86. protected:
  87. /// Pointer to the base analysis
  88. MpdFemtoBaseAnalysis* mBaseAnalysis; //!
  89. /// Pointer to the base pair cut
  90. MpdFemtoBasePairCut* mPairCut; //!
  91. private:
  92. ClassDef(MpdFemtoBaseCorrFctn, 0)
  93. };
  94. #endif // #define MpdFemtoBaseCorrFctn_h