MpdFemtoBasePairCut.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /**
  2. * \class MpdFemtoBasePairCut
  3. * \brief The pure virtual base class for the pair cut
  4. *
  5. * All pair cuts must inherit from this one
  6. *
  7. *
  8. * \author Grigory Nigmatkulov (NRNU MEPhI)
  9. * \date May 18, 2019
  10. * \email nigmatkulov@gmail.com
  11. */
  12. #ifndef MpdFemtoBasePairCut_h
  13. #define MpdFemtoBasePairCut_h
  14. // C++ headers
  15. #include <string>
  16. // Forward declaration
  17. class MpdFemtoBaseAnalysis;
  18. // MpdFemtoMaker headers
  19. #include "MpdFemtoString.h"
  20. #include "MpdFemtoEvent.h"
  21. #include "MpdFemtoPair.h"
  22. #include "MpdFemtoCutMonitorHandler.h"
  23. // ROOT headers
  24. #include "TList.h"
  25. #include "TObjString.h"
  26. //_________________
  27. class MpdFemtoBasePairCut : public MpdFemtoCutMonitorHandler {
  28. public:
  29. /// Default constructor
  30. MpdFemtoBasePairCut();
  31. /// Copy constructor
  32. MpdFemtoBasePairCut(const MpdFemtoBasePairCut& c);
  33. /// Assignment operator
  34. MpdFemtoBasePairCut& operator=(const MpdFemtoBasePairCut& c);
  35. /// Default destructor
  36. virtual ~MpdFemtoBasePairCut() {
  37. /* no-op */
  38. }
  39. /// Returns true in pair passed the cut and false if not
  40. virtual bool pass(const MpdFemtoPair* pair) = 0;
  41. /// User-written method to return string describing cuts
  42. virtual MpdFemtoString report() = 0;
  43. /// Returns a TList with settings
  44. virtual TList *listSettings() = 0;
  45. /// Declare event start
  46. virtual void eventBegin(const MpdFemtoEvent*) {
  47. /* no-op */
  48. }
  49. /// Declare event end
  50. virtual void eventEnd(const MpdFemtoEvent*) {
  51. /* no-op */
  52. }
  53. /// Clone pair cut
  54. virtual MpdFemtoBasePairCut* clone() {
  55. return nullptr;
  56. }
  57. /// The following allows "back-pointing" from the CorrFctn
  58. /// to the "parent" Analysis
  59. friend class MpdFemtoBaseAnalysis;
  60. /// Return pointer to the analysis
  61. MpdFemtoBaseAnalysis* hbtAnalysis() {
  62. return mBaseAnalysis;
  63. }
  64. /// Set analysis
  65. void setAnalysis(MpdFemtoBaseAnalysis* ana) {
  66. mBaseAnalysis = ana;
  67. }
  68. protected:
  69. /// Pointer to the base analysis
  70. MpdFemtoBaseAnalysis* mBaseAnalysis; //!<!
  71. ClassDef(MpdFemtoBasePairCut, 0)
  72. };
  73. //_________________
  74. inline MpdFemtoBasePairCut::MpdFemtoBasePairCut() : MpdFemtoCutMonitorHandler(), mBaseAnalysis() {
  75. /* empty */
  76. }
  77. //_________________
  78. inline MpdFemtoBasePairCut::MpdFemtoBasePairCut(const MpdFemtoBasePairCut& /* c */) : MpdFemtoCutMonitorHandler(), mBaseAnalysis(nullptr) {
  79. /* empty */
  80. }
  81. //_________________
  82. inline MpdFemtoBasePairCut& MpdFemtoBasePairCut::operator=(const MpdFemtoBasePairCut& c) {
  83. if (this != &c) {
  84. mBaseAnalysis = c.mBaseAnalysis;
  85. }
  86. return *this;
  87. }
  88. #endif // #define MpdFemtoBasePairCut_h