MpdFemtoModelWeightGeneratorLednicky.h 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. //
  2. // Femtoscopic weight generator that called Richard Lednicky's code
  3. //
  4. #ifndef MpdFemtoModelWeightGeneratorLednicky_h
  5. #define MpdFemtoModelWeightGeneratorLednicky_h
  6. // MpdFemtoMaker headers
  7. // Base
  8. #include "MpdFemtoBaseModelWeightGenerator.h"
  9. // Infrastructure
  10. #include "MpdFemtoTypes.h"
  11. //_________________
  12. class MpdFemtoModelWeightGeneratorLednicky : public MpdFemtoBaseModelWeightGenerator {
  13. public:
  14. /// Default constructor
  15. MpdFemtoModelWeightGeneratorLednicky();
  16. /// Copy constructor
  17. MpdFemtoModelWeightGeneratorLednicky(const MpdFemtoModelWeightGeneratorLednicky &aWeight);
  18. /// Assignment operator
  19. MpdFemtoModelWeightGeneratorLednicky& operator=(const MpdFemtoModelWeightGeneratorLednicky& aWeight);
  20. /// Destructor
  21. ~MpdFemtoModelWeightGeneratorLednicky();
  22. /// Generate femtoscopic weight
  23. virtual double generateWeight(MpdFemtoPair *aPair);
  24. /// Set pair type
  25. virtual void setPairType(const int& aPairType);
  26. /// Set pair type from the given pair
  27. virtual void setPairTypeFromPair(MpdFemtoPair *aPair);
  28. /// Return pair type
  29. virtual int pairType() const {
  30. return mPairType;
  31. }
  32. /// Return kStar
  33. virtual double kStar() const {
  34. return MpdFemtoBaseModelWeightGenerator::kStar();
  35. }
  36. /// Return kStarOut
  37. virtual double kStarOut() const {
  38. return MpdFemtoBaseModelWeightGenerator::kStarOut();
  39. }
  40. /// Return kStarSide
  41. virtual double kStarSide() const {
  42. return MpdFemtoBaseModelWeightGenerator::kStarSide();
  43. }
  44. /// Return kStarLong
  45. virtual double kStarLong() const {
  46. return MpdFemtoBaseModelWeightGenerator::kStarLong();
  47. }
  48. /// Return rStar
  49. virtual double rStar() const {
  50. return MpdFemtoBaseModelWeightGenerator::rStar();
  51. }
  52. /// Return rStarOut
  53. virtual double rStarOut() const {
  54. return MpdFemtoBaseModelWeightGenerator::rStarOut();
  55. }
  56. /// Return rStarSide
  57. virtual double rStarSide() const {
  58. return MpdFemtoBaseModelWeightGenerator::rStarSide();
  59. }
  60. /// Return rStarLong
  61. virtual double rStarLong() const {
  62. return MpdFemtoBaseModelWeightGenerator::rStarLong();
  63. }
  64. /// Clone generator
  65. virtual MpdFemtoBaseModelWeightGenerator* clone() const {
  66. MpdFemtoBaseModelWeightGenerator* tmp = new MpdFemtoModelWeightGeneratorLednicky(*this);
  67. return tmp;
  68. }
  69. // Calculation mode
  70. // Default is CoulOn, QuantumOn, StrongOn, 3BodyOff, Square, T0ApproxOff
  71. /// Set default parameters
  72. void setDefaultCalcPar() {
  73. mItest = 1;
  74. mIqs = 1;
  75. mIsi = 1;
  76. mI3c = 0;
  77. mIch = 1;
  78. fsiInit();
  79. mSphereApp = false;
  80. mT0App = false;
  81. }
  82. /// Set to calculate Coulomb
  83. void setCoulOn() {
  84. mItest = 1;
  85. mIch = 1;
  86. fsiInit();
  87. }
  88. /// Set not to calculate Coulomb
  89. void setCoulOff() {
  90. mItest = 1;
  91. mIch = 0;
  92. fsiInit();
  93. }
  94. /// Set turn Quantum Statistics ON
  95. void setQuantumOn() {
  96. mItest = 1;
  97. mIqs = 1;
  98. fsiInit();
  99. }
  100. /// Set turn Quantum Statistics OFF
  101. void setQuantumOff() {
  102. mItest = 1;
  103. mIqs = 0;
  104. fsiInit();
  105. }
  106. /// Set turn Strong Interaction ON
  107. void setStrongOn() {
  108. mItest = 1;
  109. mIsi = 1;
  110. fsiInit();
  111. }
  112. /// Set turn Strong Interaction OFF
  113. void setStrongOff() {
  114. mItest = 1;
  115. mIsi = 0;
  116. fsiInit();
  117. }
  118. /// Set three-body interaction ON
  119. void set3BodyOn() {
  120. mItest = 1;
  121. mI3c = 1;
  122. fsiInit();
  123. fsiNucl();
  124. }
  125. /// Set three-body interaction OFF
  126. void set3BodyOff() {
  127. mItest = 1;
  128. mI3c = 0;
  129. fsiInit();
  130. mWeightDen = 1.;
  131. fsiNucl();
  132. }
  133. /// Use Spherical wave approximation
  134. void setSphere() {
  135. mSphereApp = true;
  136. }
  137. /// Use use Square potential (only for p-p and pi+Pi-) otherwise, use spherical wave approx
  138. void setSquare() {
  139. mSphereApp = false;
  140. }
  141. /// Only with Spherical wave Approximation - this is default mode
  142. void setT0ApproxOff() {
  143. mT0App = false;
  144. }
  145. /// Only with Spherical wave Approximation - turned ON
  146. void setT0ApproxOn() {
  147. mT0App = true;
  148. }
  149. /// Test Lambda parameters
  150. void printLambdas() {
  151. ;
  152. }
  153. /// Set nuclear charge (for 3-body calculation)
  154. void setNuclCharge(const double& aNuclCharge) {
  155. mNuclCharge = aNuclCharge;
  156. fsiNucl();
  157. }
  158. /// Set nuclear mass (for 3-body calculation)
  159. void setNuclMass(const double& aNuclMass) {
  160. mNuclMass = aNuclMass;
  161. fsiNucl();
  162. }
  163. /// K+K- model type, Phi off/on
  164. void setKpKmModelType(const int& aModelType, const int& aPhi_OffOn) {
  165. mKpKmModel = aModelType;
  166. mPhi_OffOn = aPhi_OffOn;
  167. mNS_4 = 4;
  168. fsiSetKpKmModelType();
  169. }
  170. /// Make a report
  171. virtual MpdFemtoString report();
  172. protected:
  173. // FSI weight output
  174. /// normal weight
  175. double mWei;
  176. /// weight with nuclear influence
  177. double mWein;
  178. /// weight
  179. double mWeif;
  180. /// weight for the denominator
  181. double mWeightDen;
  182. // Setting parameters
  183. /// if set to 1 default parameters will be used
  184. int mItest;
  185. //int mNs;
  186. /// switch coulomb interaction on/off
  187. int mIch;
  188. /// switch quantum statistics on/off
  189. int mIqs;
  190. /// switch strong interaction on/off
  191. int mIsi;
  192. /// switch 3rd body influence on/off
  193. int mI3c;
  194. /// mass of the third body
  195. double mNuclMass;
  196. /// charge of the third body
  197. double mNuclCharge;
  198. /// use spherical approximation
  199. bool mSphereApp;
  200. /// use square well approximation
  201. bool mT0App;
  202. // Pair identification
  203. /// internal pair type code
  204. int mLL;
  205. /// sign of the 3rd body charge
  206. short mNuclChargeSign;
  207. /// are particle in right order ?
  208. bool mSwap;
  209. /// number of supported pairs
  210. int const mLLMax;
  211. /// name of the system
  212. char** mLLName;
  213. /// number of process pairs of each type
  214. int* mNumProcessPair;
  215. /// Number of unidentified pairs
  216. int mNumbNonId;
  217. // K+K- model type
  218. /// ij (i=1..4, j=1..4; see MpdFemtoFsiWeightLednicky.F)
  219. int mKpKmModel;
  220. /// 0->Phi Off,1->Phi On
  221. int mPhi_OffOn;
  222. /// Set NS is equal to 4
  223. int mNS_4;
  224. // Interface to the fortran functions
  225. // initialize K+K- model type
  226. void fsiSetKpKmModelType();
  227. void FsiSetKpKmModelType() {
  228. fsiSetKpKmModelType();
  229. }
  230. void fsiInit();
  231. void FsiInit() {
  232. fsiInit();
  233. }
  234. void fsiSetLL();
  235. void FsiSetLL() {
  236. fsiSetLL();
  237. }
  238. void fsiNucl();
  239. void FsiNucl() {
  240. fsiNucl();
  241. }
  242. bool setPid(const int& aPid1, const int& aPid2);
  243. bool SetPid(const int& aPid1, const int& aPid2) {
  244. return setPid(aPid1, aPid2);
  245. }
  246. ClassDef(MpdFemtoModelWeightGeneratorLednicky, 1)
  247. };
  248. #endif // MpdFemtoModelWeightGeneratorLednicky_h