MpdFemtoModelGausLCMSFreezeOutGenerator.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /**
  2. * \class MpdFemtoModelGausLCMSFreezeOutGenerator
  3. * \brief Generates freeze-out coordinates using Gaussian profile
  4. *
  5. * Freeze-out coordinates generator, generating a 3D gaussian ellipsoid in LCMS
  6. *
  7. * \author Grigory Nigmatkulov (NRNU MEPhI)
  8. * \date May 18, 2019
  9. * \email nigmatkulov@gmail.com
  10. */
  11. #ifndef MpdFemtoModelGausLCMSFreezeOutGenerator_h
  12. #define MpdFemtoModelGausLCMSFreezeOutGenerator_h
  13. // MpdFemtoMaker headers
  14. #include "MpdFemtoBaseModelFreezeOutGenerator.h"
  15. // ROOT headers
  16. #include "TRandom3.h"
  17. //_________________
  18. class MpdFemtoModelGausLCMSFreezeOutGenerator : public MpdFemtoBaseModelFreezeOutGenerator {
  19. public:
  20. /// Default constructor
  21. MpdFemtoModelGausLCMSFreezeOutGenerator();
  22. /// Copy construcotr
  23. MpdFemtoModelGausLCMSFreezeOutGenerator(const MpdFemtoModelGausLCMSFreezeOutGenerator &aModel);
  24. /// Assignment operator
  25. MpdFemtoModelGausLCMSFreezeOutGenerator& operator=(const MpdFemtoModelGausLCMSFreezeOutGenerator &aModel);
  26. /// Default destructor
  27. virtual ~MpdFemtoModelGausLCMSFreezeOutGenerator();
  28. /// Generate freeze-out coordinate (x,y,z,t)
  29. virtual void generateFreezeOut(MpdFemtoPair *aPair);
  30. /// Generate freeze-out coordinate (x,y,z,t)
  31. virtual void GenerateFreezeOut(MpdFemtoPair *aPair) {
  32. generateFreezeOut(aPair);
  33. }
  34. /// Set outward component
  35. void setSizeOut(const double& aSizeOut) {
  36. mSizeOut = aSizeOut;
  37. }
  38. /// Set sideward component
  39. void setSizeSide(const double& aSizeSide) {
  40. mSizeSide = aSizeSide;
  41. }
  42. /// Set longitudinal component
  43. void setSizeLong(const double& aSizeLong) {
  44. mSizeLong = aSizeLong;
  45. }
  46. /// Return outward component
  47. double sizeOut() const {
  48. return mSizeOut;
  49. }
  50. /// Return sideward component
  51. double sizeSide() const {
  52. return mSizeSide;
  53. }
  54. /// Return longitudinal component
  55. double sizeLong() const {
  56. return mSizeLong;
  57. }
  58. /// Clone generator
  59. virtual MpdFemtoBaseModelFreezeOutGenerator* clone() const {
  60. return generator();
  61. }
  62. protected:
  63. /// Size of the source in the out direction
  64. double mSizeOut;
  65. /// Size of the source in the side direction
  66. double mSizeSide;
  67. /// Size of the source in the long direction
  68. double mSizeLong;
  69. private:
  70. MpdFemtoBaseModelFreezeOutGenerator* generator() const {
  71. MpdFemtoBaseModelFreezeOutGenerator* tModel = new MpdFemtoModelGausLCMSFreezeOutGenerator(*this);
  72. return tModel;
  73. }
  74. ClassDef(MpdFemtoModelGausLCMSFreezeOutGenerator, 1);
  75. };
  76. #endif // MpdFemtoModelGausLCMSFreezeOutGenerator_h