Advertisement
Guest User

Untitled

a guest
Jan 14th, 2020
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 3.93 KB | None | 0 0
  1. diff --git include/Pythia8Plugins/LHAPDF6.h include/Pythia8Plugins/LHAPDF6.h
  2. index 8179885..7993df9 100644
  3. --- include/Pythia8Plugins/LHAPDF6.h
  4. +++ include/Pythia8Plugins/LHAPDF6.h
  5. @@ -120,20 +120,22 @@ private:
  6.  
  7.    // Check whether x and Q2 values fall inside the fit bounds.
  8.    bool insideBounds(double x, double Q2) {
  9. -    return (x > pdf->xMin()  &&  x < pdf->xMax()
  10. -            && Q2 > pdf->q2Min() && Q2 < pdf->q2Max());}
  11. +    return (x > _xMin  &&  x < _xMax && Q2 > _q2Min && Q2 < _q2Max;}
  12.  
  13.    // Return the running alpha_s shipped with the LHAPDF set.
  14.    double alphaS(double Q2) { return pdf->alphasQ2(Q2); }
  15.  
  16.    // Return quark masses used in the PDF fit.
  17.    double muPDFSave, mdPDFSave, mcPDFSave, msPDFSave, mbPDFSave;
  18. +  double _xMin, _xMax, _q2Min, _q2Max;
  19.    double mQuarkPDF(int id) {
  20. -    if (abs(id) == 1) return mdPDFSave;
  21. -    if (abs(id) == 2) return muPDFSave;
  22. -    if (abs(id) == 3) return msPDFSave;
  23. -    if (abs(id) == 4) return mcPDFSave;
  24. -    if (abs(id) == 5) return mbPDFSave;
  25. +    switch(abs(id)){
  26. +      case 1: return mdPDFSave;
  27. +      case 2: return muPDFSave;
  28. +      case 3: return msPDFSave;
  29. +      case 4: return mcPDFSave;
  30. +      case 5: return mbPDFSave;
  31. +    }
  32.      return -1.;
  33.   }
  34.  
  35. @@ -179,6 +181,12 @@ void LHAPDF6::init(string setName, int member, Info *info) {
  36.    pdf = (*pdfs)[member];
  37.    isSet = true;
  38.  
  39. +  // Save {x, q2}{Min, Max}
  40. +  _xMax =_xMax;
  41. +  _xMin =_xMin;
  42. +  _q2Max =_q2Max;
  43. +  _q2Min =_q2Min;
  44. +
  45.    // Store quark masses used in PDF fit.
  46.    muPDFSave = pdf->info().get_entry_as<double>("MUp");
  47.    mdPDFSave = pdf->info().get_entry_as<double>("MDown");
  48. @@ -197,10 +205,10 @@ void LHAPDF6::init(string setName, int member, Info *info) {
  49.  void LHAPDF6::xfUpdate(int, double x, double Q2) {
  50.  
  51.    // Freeze at boundary value if PDF is evaluated outside the fit region.
  52. -  if (x < pdf->xMin() && !extrapol) x = pdf->xMin();
  53. -  if (x > pdf->xMax() )    x = pdf->xMax();
  54. -  if (Q2 < pdf->q2Min() ) Q2 = pdf->q2Min();
  55. -  if (Q2 > pdf->q2Max() ) Q2 = pdf->q2Max();
  56. +  if (x <_xMin && !extrapol) x =_xMin;
  57. +  if (x >_xMax)    x =_xMax;
  58. +  if (Q2 <_q2Min) Q2 =_q2Min;
  59. +  if (Q2 >_q2Max) Q2 =_q2Max;
  60.  
  61.    // Update values.
  62.    xg     = pdf->xfxQ2(21, x, Q2);
  63. @@ -233,12 +241,10 @@ void LHAPDF6::calcPDFEnvelope(int idNow, double xNow, double Q2NowIn,
  64.    int valSea) {
  65.  
  66.    // Freeze at boundary value if PDF is evaluated outside the fit region.
  67. -  double x1 = (xNow < pdf->xMin() && !extrapol)
  68. -            ? pdf->xMin() : xNow;
  69. -  if (x1 > pdf->xMax() ) x1 = pdf->xMax();
  70. -  double Q2Now = (Q2NowIn < pdf->q2Min() )
  71. -               ? pdf->q2Min() : Q2NowIn;
  72. -  if (Q2Now > pdf->q2Max() ) Q2Now = pdf->q2Max();
  73. +  double x1 = (xNow <_xMin && !extrapol) ?_xMin : xNow;
  74. +  if (x1 >_xMax ) x1 =_xMax;
  75. +  double Q2Now = (Q2NowIn <_q2Min ) ? _q2Min : Q2NowIn;
  76. +  if (Q2Now >_q2Max ) Q2Now =_q2Max;
  77.  
  78.    // Loop over the members.
  79.    vector<double> xfCalc((*pdfs).size());
  80. @@ -270,15 +276,12 @@ void LHAPDF6::calcPDFEnvelope(pair<int,int> idNows, pair<double,double> xNows,
  81.    double Q2NowIn, int valSea) {
  82.  
  83.    // Freeze at boundary value if PDF is evaluated outside the fit region.
  84. -  double x1 = (xNows.first < pdf->xMin() && !extrapol)
  85. -            ? pdf->xMin() : xNows.first;
  86. -  if (x1 > pdf->xMax() ) x1 = pdf->xMax();
  87. -  double x2 = (xNows.second < pdf->xMin() && !extrapol)
  88. -            ? pdf->xMin() : xNows.second;
  89. -  if (x2 > pdf->xMax() ) x2 = pdf->xMax();
  90. -  double Q2Now = (Q2NowIn < pdf->q2Min() )
  91. -               ? pdf->q2Min() : Q2NowIn;
  92. -  if (Q2Now > pdf->q2Max() ) Q2Now = pdf->q2Max();
  93. +  double x1 = (xNows.first <_xMin && !extrapol) ?_xMin : xNows.first;
  94. +  if (x1 >_xMax ) x1 =_xMax;
  95. +  double x2 = (xNows.second <_xMin && !extrapol) ?_xMin : xNows.second;
  96. +  if (x2 >_xMax ) x2 =_xMax;
  97. +  double Q2Now = (Q2NowIn <_q2Min ) ?_q2Min : Q2NowIn;
  98. +  if (Q2Now >_q2Max ) Q2Now =_q2Max;
  99.  
  100.    // Loop over the members.
  101.    vector<double> xfCalc((*pdfs).size());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement