MpdFemtoBaseModelWeightGenerator.h 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. /**
  2. * \class MpdFemtoBaseModelWeightGenerator
  3. * \brief Base class fo the femtoscopic weight generators
  4. *
  5. * Abstract base class for femtoscopic weight generator
  6. *
  7. * \author Grigory Nigmatkulov (NRNU MEPhI)
  8. * \date May 18, 2019
  9. * \email nigmatkulov@gmail.com
  10. */
  11. #ifndef MpdFemtoBaseModelWeightGenerator_h
  12. #define MpdFemtoBaseModelWeightGenerator_h
  13. // ROOT headers
  14. #include "TRandom3.h"
  15. // Forward declaration
  16. class MpdFemtoPair;
  17. //_________________
  18. class MpdFemtoBaseModelWeightGenerator {
  19. public:
  20. /// Default constructor
  21. MpdFemtoBaseModelWeightGenerator();
  22. /// Copy constructor
  23. MpdFemtoBaseModelWeightGenerator(const MpdFemtoBaseModelWeightGenerator &aModel);
  24. /// Assignment operator
  25. MpdFemtoBaseModelWeightGenerator& operator=(const MpdFemtoBaseModelWeightGenerator &aModel);
  26. /// Destructor
  27. virtual ~MpdFemtoBaseModelWeightGenerator();
  28. /// Generate femtoscopic weight
  29. virtual double generateWeight(MpdFemtoPair *aPair) = 0;
  30. /// Set pair type
  31. virtual void setPairType(const int& aPairType) {
  32. mPairType = aPairType;
  33. }
  34. /// Set pair type from pair
  35. virtual void setPairTypeFromPair(MpdFemtoPair *aPair) {
  36. mPairType = pairTypeFromPair(aPair);
  37. }
  38. /// Return pair type
  39. virtual int pairType() const {
  40. return mPairType;
  41. }
  42. /// Return pair type from a pair
  43. virtual int pairTypeFromPair(MpdFemtoPair *aPair);
  44. /// Return KStar
  45. virtual double kStar() const {
  46. return mKStar;
  47. }
  48. /// Return KStarOut
  49. virtual double kStarOut() const {
  50. return mKStarOut;
  51. }
  52. /// Return KStarSide
  53. virtual double kStarSide() const {
  54. return mKStarSide;
  55. }
  56. /// Return kStarLong
  57. virtual double kStarLong() const {
  58. return mKStarLong;
  59. }
  60. /// Return RStar
  61. virtual double rStar() const {
  62. return mRStar;
  63. }
  64. /// Return RStarOut
  65. virtual double rStarOut() const {
  66. return mRStarOut;
  67. }
  68. /// Return RStarSide
  69. virtual double rStarSide() const {
  70. return mRStarSide;
  71. }
  72. /// Return RStarLong
  73. virtual double rStarLong() const {
  74. return mRStarLong;
  75. }
  76. /// Clone model weight generator
  77. virtual MpdFemtoBaseModelWeightGenerator* clone() const {
  78. return nullptr;
  79. }
  80. /// Identical pion pair type
  81. static int pionPlusPionPlus() {
  82. return fgkPionPlusPionPlus;
  83. }
  84. /// Identical pion pair type
  85. static int PionPlusPionPlus() {
  86. return pionPlusPionPlus();
  87. }
  88. /// Non-identcial pion pair type
  89. static int pionPlusPionMinus() {
  90. return fgkPionPlusPionMinus;
  91. }
  92. /// Non-identcial pion pair type
  93. static int PionPlusPionMinus() {
  94. return pionPlusPionMinus();
  95. }
  96. /// Identical kaon pair type
  97. static int kaonPlusKaonPlus() {
  98. return fgkKaonPlusKaonPlus;
  99. }
  100. /// Identical kaon pair type
  101. static int KaonPlusKaonPlus() {
  102. return kaonPlusKaonPlus();
  103. }
  104. /// Non-identical kaon pair type
  105. static int kaonPlusKaonMinus() {
  106. return fgkKaonPlusKaonMinus;
  107. }
  108. /// Non-identical kaon pair type
  109. static int KaonPlusKaonMinus() {
  110. return kaonPlusKaonMinus();
  111. }
  112. /// Identical proton pair type
  113. static int protonProton() {
  114. return fgkProtonProton;
  115. }
  116. /// Identical proton pair type
  117. static int ProtonProton() {
  118. return protonProton();
  119. }
  120. /// Proton-Antiproton pair type
  121. static int protonAntiproton() {
  122. return fgkProtonAntiproton;
  123. }
  124. /// Proton-Antiproton pair type
  125. static int ProtonAntiproton() {
  126. return protonAntiproton();
  127. }
  128. /// pi+K+ pair type
  129. static int pionPlusKaonPlus() {
  130. return fgkPionPlusKaonPlus;
  131. }
  132. /// pi+K+ pair type
  133. static int PionPlusKaonPlus() {
  134. return pionPlusKaonPlus();
  135. }
  136. /// pi+K- pair type
  137. static int pionPlusKaonMinus() {
  138. return fgkPionPlusKaonMinus;
  139. }
  140. /// pi+K- pair type
  141. static int PionPlusKaonMinus() {
  142. return pionPlusKaonMinus();
  143. }
  144. /// pi+p pair type
  145. static int pionPlusProton() {
  146. return fgkPionPlusProton;
  147. }
  148. /// pi+p pair type
  149. static int PionPlusProton() {
  150. return pionPlusProton();
  151. }
  152. /// pi+antiproton pair type
  153. static int pionPlusAntiproton() {
  154. return fgkPionPlusAntiproton;
  155. }
  156. /// pi+antiproton pair type
  157. static int PionPlusAntiproton() {
  158. return pionPlusAntiproton();
  159. }
  160. /// K+p pair type
  161. static int kaonPlusProton() {
  162. return fgkKaonPlusProton;
  163. }
  164. /// K+p pair type
  165. static int KaonPlusProton() {
  166. return kaonPlusProton();
  167. }
  168. /// K+antiproton pair type
  169. static int kaonPlusAntiproton() {
  170. return fgkKaonPlusAntiproton;
  171. }
  172. /// K+antiproton pair type
  173. static int KaonPlusAntiproton() {
  174. return kaonPlusAntiproton();
  175. }
  176. /// None pair type
  177. static int pairTypeNone() {
  178. return fgkPairTypeNone;
  179. }
  180. /// None pair type
  181. static int PairTypeNone() {
  182. return pairTypeNone();
  183. }
  184. /// LambdaLambda pair type
  185. static int lambdaLambda() {
  186. return fgkLambdaLambda;
  187. }
  188. /// LambdaLambda pair type
  189. static int LambdaLambda() {
  190. return lambdaLambda();
  191. }
  192. /// AntilambdaAntilambda pair type
  193. static int antilambdaAntilambda() {
  194. return fgkAntilambdaAntilambda;
  195. }
  196. /// AntilambdaAntilambda pair type
  197. static int AntilambdaAntilambda() {
  198. return antilambdaAntilambda();
  199. }
  200. /// LambdaAntilambda pair type
  201. static int lambdaAntilambda() {
  202. return fgkLambdaAntilambda;
  203. }
  204. /// LambdaAntilambda pair type
  205. static int LambdaAntilambda() {
  206. return lambdaAntilambda();
  207. }
  208. protected:
  209. /// no pair type set - read from model
  210. static const int fgkPairTypeNone;
  211. /// identical pion pair
  212. static const int fgkPionPlusPionPlus;
  213. /// non-identical pion pair
  214. static const int fgkPionPlusPionMinus;
  215. /// identical kaon pair
  216. static const int fgkKaonPlusKaonPlus;
  217. /// non-identical kaon pair
  218. static const int fgkKaonPlusKaonMinus;
  219. /// identical proton pair
  220. static const int fgkProtonProton;
  221. /// non-identical proton pair
  222. static const int fgkProtonAntiproton;
  223. /// same-charge pion kaon pair
  224. static const int fgkPionPlusKaonPlus;
  225. /// opposite-charge pion kaon pair
  226. static const int fgkPionPlusKaonMinus;
  227. /// same-charge pion proton pair
  228. static const int fgkPionPlusProton;
  229. /// opposite-chare pion proton pair
  230. static const int fgkPionPlusAntiproton;
  231. /// same-charge kaon proton pair
  232. static const int fgkKaonPlusProton;
  233. /// opposite-charge kaon proton pair
  234. static const int fgkKaonPlusAntiproton;
  235. /// same-type lambdas
  236. static const int fgkLambdaLambda;
  237. /// same-type antilambdas
  238. static const int fgkAntilambdaAntilambda;
  239. /// non-same-type lambdas
  240. static const int fgkLambdaAntilambda;
  241. /// Type of the pair for which the calculation is done
  242. int mPairType;
  243. /// Relative momentum out component in PRF
  244. float mKStarOut;
  245. /// Relative momentum side component in PRF
  246. float mKStarSide;
  247. /// Relative momentum long component in PRF
  248. float mKStarLong;
  249. /// Relative momentum magnitude
  250. float mKStar;
  251. /// Relative separation out component in PRF
  252. float mRStarOut;
  253. /// Relative separation side component in PRF
  254. float mRStarSide;
  255. /// Relative separation long component in PRF
  256. float mRStarLong;
  257. /// Relative separation magnitude
  258. float mRStar;
  259. private:
  260. ClassDef(MpdFemtoBaseModelWeightGenerator, 1);
  261. };
  262. #endif // MpdFemtoBaseModelWeightGenerator_h