MpdFemtoVertexMultAnalysis.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. /**
  2. * \class MpdFemtoVertexMultAnalysis
  3. * \brief Perform femtoscopic analysis using z- and multiplicity binnings
  4. *
  5. * Femtoscopic analysis which mixes events with respect to the logitudinal (z)
  6. * position of the primary vertex and event total multiplicity. These
  7. * parameters are only set via the constructor.
  8. *
  9. * Binning is done by using the mPicoEventCollectionVectorHideAway member
  10. * provided by the superclass AliFemtoSimpleAnalysis. It should be noted that
  11. * this member is not created or deleted by the superclass, so this class
  12. * deletes the member in its destructor.
  13. *
  14. * \author Grigory Nigmatkulov (NRNU MEPhI)
  15. * \date May 18, 2019
  16. * \email nigmatkulov@gmail.com
  17. */
  18. #ifndef MpdFemtoVertexMultAnalysis_h
  19. #define MpdFemtoVertexMultAnalysis_h
  20. // MpdFemtoMaker headers
  21. #include "MpdFemtoAnalysis.h"
  22. // ROOT headers
  23. #include "TList.h"
  24. //_________________
  25. class MpdFemtoVertexMultAnalysis : public MpdFemtoAnalysis {
  26. public:
  27. /// Constructor with parameters for event-mixing bins
  28. ///
  29. /// If the min/max values are backwards or equal, this class prints a warning
  30. /// but continues onward, potentially ignoring all events.
  31. MpdFemtoVertexMultAnalysis(unsigned int zVertexBins = 10,
  32. double zMin = -100.,
  33. double zMax = +100.,
  34. unsigned int multBins = 10,
  35. double multMin = -1.e9,
  36. double multMax = +1.e9);
  37. /// Copy constructor
  38. ///
  39. /// Copies the event-mixing binning parameters, creates a new event
  40. /// collection and resets the overflow & underflow members to 0.
  41. MpdFemtoVertexMultAnalysis(const MpdFemtoVertexMultAnalysis& copy);
  42. /// Assignment operator
  43. MpdFemtoVertexMultAnalysis& operator=(const MpdFemtoVertexMultAnalysis& copy);
  44. /// Destructor
  45. virtual ~MpdFemtoVertexMultAnalysis();
  46. /// Passes the event to MpdFemtoAnalysis::processEvent after
  47. /// determining which (if any) mixing buffer to use.
  48. virtual void processEvent(const MpdFemtoEvent* thisEvent);
  49. /// Returns reports of all cuts applied and correlation functions being done
  50. virtual MpdFemtoString report();
  51. /// Return a TList of analysis settings.
  52. ///
  53. /// The TList comprises TObjStrings describing the settings provided by the
  54. /// MpdFemtoAnalysis::ListSettings class followed by all event-mixing
  55. /// binning parameters.
  56. virtual TList* listSettings();
  57. /// Return a TList of objects to be written as output
  58. virtual TList* getOutputList();
  59. /// Return number of events that overflow max vertex z
  60. virtual unsigned int overflowVertexZ() {
  61. return mOverFlowVertexZ;
  62. }
  63. /// Return number of events that underflow min vertex z
  64. virtual unsigned int underflowVertexZ() {
  65. return mUnderFlowVertexZ;
  66. }
  67. /// Return number events that overflow max multiplicity
  68. virtual unsigned int overflowMult() {
  69. return mOverFlowMult;
  70. }
  71. /// Return number events that underflow min multiplicity
  72. virtual unsigned int underflowMult() {
  73. return mUnderFlowMult;
  74. }
  75. protected:
  76. /// Min/max z-vertex position allowed to be processed
  77. double mVertexZ[2];
  78. /// Number of VERTEX mixing bins in z-vertex in EventMixing Buffer
  79. unsigned int mVertexZBins;
  80. /// Number of events encountered which had too large z-vertex
  81. unsigned int mOverFlowVertexZ;
  82. /// Number of events encountered which had too small z-vertex
  83. unsigned int mUnderFlowVertexZ;
  84. /// Min/max multiplicity allowed for event to be processed
  85. double mMult[2];
  86. /// Number of multiplicity mixing bins in z-vertex in EventMixing Buffer
  87. unsigned int mMultBins;
  88. /// Number of events encountered which had too large multiplicity
  89. unsigned int mOverFlowMult;
  90. /// Number of events encountered which had too small multiplicity
  91. unsigned int mUnderFlowMult;
  92. ClassDef(MpdFemtoVertexMultAnalysis, 0)
  93. };
  94. #endif // #define MpdFemtoVertexMultAnalysis_h