49 return "VUB_BLNPHYBRID";
62 <<
"EvtVubBLNPHybrid generator expected "
64 <<
" arguments but found: " <<
getNArg()
65 <<
"\nWill terminate execution!" << endl;
69 <<
"EvtVubBLNPHybrid: generate B -> Xu l nu events "
70 <<
"without using the hybrid reweighting." << endl;
75 <<
"EvtVubBLNPHybrid could not read number of bins for "
76 <<
"all variables used in the reweighting\n"
77 <<
"Will terminate execution!" << endl;
107 const double xlow = 0;
108 const double xhigh =
m_mBB;
109 const int aSize = 10000;
112 m_pf.resize( aSize );
113 for (
int i = 0; i < aSize; i++ ) {
114 double what = xlow + (double)( i + 0.5 ) / ( (double)aSize ) *
121 for (
size_t i = 0; i <
m_pf.size(); i++ ) {
141 ( 11.0 / 9.0 *
m_CF + 79.0 / 54.0 *
m_CA ) * nf * nf;
143 m_zeta3 = 1.0 + 1 / 8.0 + 1 / 27.0 + 1 / 64.0;
149 ( ( 245.0 / 24.0 - 67.0 / 54.0 * M_PI * M_PI +
150 +11.0 / 180.0 * pow( M_PI, 4 ) + 11.0 / 6.0 *
m_zeta3 ) *
152 +( -209.0 / 108.0 + 5.0 / 27.0 * M_PI * M_PI -
155 ( -55.0 / 24.0 + 2 *
m_zeta3 ) *
m_CF * nf - nf * nf / 27.0 );
159 ( ( 3.0 / 16.0 - M_PI * M_PI / 4.0 + 3 *
m_zeta3 ) *
m_CF +
160 ( 1549.0 / 432.0 + 7.0 / 48.0 * M_PI * M_PI - 11.0 / 4.0 *
m_zeta3 ) *
162 ( 125.0 / 216.0 + M_PI * M_PI / 24.0 ) * nf );
173 pow(
Gamma( 0.5 + 0.5 *
m_b ), 2 ) -
222 if (
getNArg() < expectArgs ) {
224 <<
" finds " <<
getNArg() <<
" arguments, expected " << expectArgs
225 <<
". Something is wrong with the tables of weights or thresholds."
226 <<
"\nWill terminate execution!" << endl;
252 EvtParticle *xuhad(
nullptr ), *lepton(
nullptr ), *neutrino(
nullptr );
254 double EX( 0. ), sh( 0. ), El( 0. ), ml( 0. );
255 double Pp, Pm, Pl, pdf, qsq, mpi, ratemax;
257 double xhigh, xlow, what;
266 neutrino = Bmeson->
getDaug( 2 );
276 while ( what > xhigh || what < xlow ) {
278 what = xlow + what * ( xhigh - xlow );
292 EX = 0.5 * ( Pm + Pp );
294 El = 0.5 * (
m_mBB - Pl );
302 if ( ( Pp > 0 ) && ( Pp <= Pl ) && ( Pl <= Pm ) && ( Pm <
m_mBB ) &&
303 ( El > ml ) && ( sh > 4 * mpi * mpi ) ) {
305 pdf =
rate3( Pp, Pl, Pm );
307 if ( pdf >= testRan )
344 sttmp = sqrt( 1 - ctH * ctH );
345 ptmp = sqrt( EX * EX - sh );
346 double pHB[4] = { EX, ptmp * sttmp * cos( phH ), ptmp * sttmp * sin( phH ),
348 p4.
set( pHB[0], pHB[1], pHB[2], pHB[3] );
349 xuhad->init(
getDaug( 0 ), p4 );
361 xuhad->setLifetime( what / 10000. );
367 double pWB[4] = {
m_mBB - EX, -pHB[1], -pHB[2], -pHB[3] };
373 double beta = ptmp / pWB[0];
374 double gamma = pWB[0] / sqrt( mW2 );
378 ptmp = ( mW2 - ml * ml ) / 2 / sqrt( mW2 );
379 pLW[0] = sqrt( ml * ml + ptmp * ptmp );
381 double ctL = ( El - gamma * pLW[0] ) / beta / gamma / ptmp;
386 sttmp = sqrt( 1 - ctL * ctL );
389 double xW[3] = { -pWB[2], pWB[1], 0 };
391 double zW[3] = { pWB[1] / apWB, pWB[2] / apWB, pWB[3] / apWB };
393 double lx = sqrt( xW[0] * xW[0] + xW[1] * xW[1] );
394 for ( j = 0; j < 2; j++ )
398 double yW[3] = { -pWB[1] * pWB[3], -pWB[2] * pWB[3],
399 pWB[1] * pWB[1] + pWB[2] * pWB[2] };
400 double ly = sqrt( yW[0] * yW[0] + yW[1] * yW[1] + yW[2] * yW[2] );
401 for ( j = 0; j < 3; j++ )
407 for ( j = 0; j < 3; j++ )
408 pLW[j + 1] = sttmp * cos( phL ) * ptmp * xW[j] +
409 sttmp * sin( phL ) * ptmp * yW[j] + ctL * ptmp * zW[j];
415 double appLB = beta * gamma * pLW[0] + gamma * ctL * apLW;
417 ptmp = sqrt( El * El - ml * ml );
418 double ctLL = appLB / ptmp;
425 double pLB[4] = { El, 0, 0, 0 };
426 double pNB[4] = { pWB[0] - El, 0, 0, 0 };
428 for ( j = 1; j < 4; j++ ) {
429 pLB[j] = pLW[j] + ( ctLL * ptmp - ctL * apLW ) / apWB * pWB[j];
430 pNB[j] = pWB[j] - pLB[j];
433 p4.
set( pLB[0], pLB[1], pLB[2], pLB[3] );
434 lepton->init(
getDaug( 1 ), p4 );
436 p4.
set( pNB[0], pNB[1], pNB[2], pNB[3] );
456 if ( doneJS * done1 * done2 * done3 == 0.0 ) {
467 double answer = factor * ( (
m_mBB + Pl - Pp - Pm ) * ( Pm - Pl ) * f1 +
468 2 * ( Pl - Pp ) * ( Pm - Pl ) * f2 +
469 (
m_mBB - Pm ) * ( Pm - Pp ) * f3 );
474 double mubar,
double doneJS,
double done1 )
476 std::vector<double> vars( 12 );
479 for (
int j = 2; j < 12; j++ ) {
483 double y = ( Pm - Pp ) / (
m_mBB - Pp );
484 double ah =
m_CF *
alphas( muh, vars ) / 4 / M_PI;
485 double ai =
m_CF *
alphas( mui, vars ) / 4 / M_PI;
486 double abar =
m_CF *
alphas( mubar, vars ) / 4 / M_PI;
489 double t1 = -4 * ai / ( Pp -
m_Lbar ) *
490 ( 2 * log( ( Pp -
m_Lbar ) / mui ) + 1 );
491 double t2 = 1 +
dU1nlo( muh, mui ) +
anlo( muh, mui ) * log( y );
492 double t3 = -4.0 * pow( log( y *
m_mb / muh ), 2 ) +
493 10.0 * log( y *
m_mb / muh ) - 4.0 * log( y ) -
494 2.0 * log( y ) / ( 1 - y ) - 4.0 *
PolyLog( 2, 1 - y ) -
495 M_PI * M_PI / 6.0 - 12.0;
496 double t4 = 2 * pow( log( y *
m_mb * Pp / ( mui * mui ) ), 2 ) -
497 3 * log( y *
m_mb * Pp / ( mui * mui ) ) + 7 - M_PI * M_PI;
499 double t5 = -
wS( Pp ) + 2 *
t( Pp ) +
500 ( 1.0 / y - 1.0 ) * (
u( Pp ) -
v( Pp ) );
501 double t6 = -( lambda1 + 3.0 *
m_lambda2 ) / 3.0 +
502 1.0 / pow( y, 2 ) * ( 4.0 / 3.0 * lambda1 - 2.0 *
m_lambda2 );
504 double shapePp =
Shat( Pp, vars );
506 double answer = ( t2 + ah * t3 + ai * t4 ) * shapePp + ai * doneJS +
511 answer = answer + t1;
516 double mubar,
double done3 )
518 std::vector<double> vars( 12 );
521 for (
int j = 2; j < 12; j++ ) {
525 double y = ( Pm - Pp ) / (
m_mBB - Pp );
527 double ah =
m_CF *
alphas( muh, vars ) / 4 / M_PI;
528 double abar =
m_CF *
alphas( mubar, vars ) / 4 / M_PI;
530 double t6 = -
wS( Pp ) - 2 *
t( Pp ) + 1.0 / y * (
t( Pp ) +
v( Pp ) );
531 double t7 = 1 / pow( y, 2 ) * ( 2.0 / 3.0 * lambda1 + 4.0 *
m_lambda2 ) -
532 1 / y * ( 2.0 / 3.0 * lambda1 + 3.0 / 2.0 *
m_lambda2 );
534 double shapePp =
Shat( Pp, vars );
536 double answer = ah * log( y ) / ( 1 - y ) * shapePp +
544 double ,
double mubar,
double done2 )
546 std::vector<double> vars( 12 );
549 for (
int j = 2; j < 12; j++ ) {
553 double y = ( Pm - Pp ) / (
m_mBB - Pp );
555 double abar =
m_CF *
alphas( mubar, vars ) / 4 / M_PI;
557 double t7 = 1.0 / pow( y, 2 ) * ( -2.0 / 3.0 * lambda1 +
m_lambda2 );
559 double shapePp =
Shat( Pp, vars );
561 double answer = 1.0 / ( Pm - Pp ) *
m_flag2 * 0.5 * y * abar * done2 +
568 std::vector<double> vars( 12 );
571 for (
int j = 2; j < 12; j++ ) {
575 double lowerlim = 0.001 * Pp;
576 double upperlim = ( 1.0 - 0.001 ) * Pp;
580 return integ.
evaluate( lowerlim, upperlim );
585 std::vector<double> vars( 12 );
588 for (
int j = 2; j < 12; j++ ) {
592 double lowerlim = 0.001 * Pp;
593 double upperlim = ( 1.0 - 0.001 ) * Pp;
597 return integ.
evaluate( lowerlim, upperlim );
602 std::vector<double> vars( 12 );
605 for (
int j = 2; j < 12; j++ ) {
609 double lowerlim = 0.001 * Pp;
610 double upperlim = ( 1.0 - 0.001 ) * Pp;
614 return integ.
evaluate( lowerlim, upperlim );
619 std::vector<double> vars( 12 );
622 for (
int j = 2; j < 12; j++ ) {
626 double lowerlim = 0.001 * Pp;
627 double upperlim = ( 1.0 - 0.001 ) * Pp;
631 return integ.
evaluate( lowerlim, upperlim );
636 return Shat( what, vars ) *
g1( what, vars );
641 return Shat( what, vars ) *
g2( what, vars );
646 return Shat( what, vars ) *
g3( what, vars );
653 double mui = vars[2];
654 double mBB = vars[5];
656 double y = ( Pm - Pp ) / ( mBB - Pp );
658 return 1 / ( Pp - what ) * (
Shat( what, vars ) -
Shat( Pp, vars ) ) *
659 ( 4 * log( y * mb * ( Pp - what ) / ( mui * mui ) ) - 3 );
666 double mBB = vars[5];
667 double y = ( Pm - Pp ) / ( mBB - Pp );
668 double x = ( Pp - w ) / ( mBB - Pp );
670 double q1 = ( 1 + x ) * ( 1 + x ) * y * ( x + y );
671 double q2 = y * ( -9 + 10 * y ) + x * x * ( -12.0 + 13.0 * y ) +
672 2 * x * ( -8.0 + 6 * y + 3 * y * y );
673 double q3 = 4 / x * log( y + y / x );
674 double q4 = 3.0 * pow( x, 4 ) * ( -2.0 + y ) - 2 * pow( y, 3 ) -
675 4 * pow( x, 3 ) * ( 2.0 + y ) - 2 * x * y * y * ( 4 + y ) -
676 x * x * y * ( 12 + 4 * y + y * y );
677 double q5 = log( 1 + y / x );
679 double answer = q2 / q1 - q3 - 2 * q4 * q5 / ( q1 * y * x );
687 double mBB = vars[5];
688 double y = ( Pm - Pp ) / ( mBB - Pp );
689 double x = ( Pp - w ) / ( mBB - Pp );
691 double q1 = ( 1 + x ) * ( 1 + x ) * pow( y, 3 ) * ( x + y );
692 double q2 = 10.0 * pow( x, 4 ) + y * y +
693 3.0 * pow( x, 2 ) * y * ( 10.0 + y ) +
694 pow( x, 3 ) * ( 12.0 + 19.0 * y ) +
695 x * y * ( 8.0 + 4.0 * y + y * y );
696 double q3 = 5 * pow( x, 4 ) + 2.0 * y * y +
697 6.0 * pow( x, 3 ) * ( 1.0 + 2.0 * y ) +
698 4.0 * x * y * ( 1 + 2.0 * y ) + x * x * y * ( 18.0 + 5.0 * y );
699 double q4 = log( 1 + y / x );
701 double answer = 2.0 / q1 * ( y * q2 - 2 * x * q3 * q4 );
709 double mBB = vars[5];
710 double y = ( Pm - Pp ) / ( mBB - Pp );
711 double x = ( Pp - w ) / ( mBB - Pp );
713 double q1 = ( 1 + x ) * ( 1 + x ) * pow( y, 3 ) * ( x + y );
714 double q2 = 2.0 * pow( y, 3 ) * ( -11.0 + 2.0 * y ) -
715 10.0 * pow( x, 4 ) * ( 6 - 6 * y + y * y ) +
716 x * y * y * ( -94.0 + 29.0 * y + 2.0 * y * y ) +
717 2.0 * x * x * y * ( -72.0 + 18.0 * y + 13.0 * y * y ) -
718 x * x * x * ( 72.0 + 42.0 * y - 70.0 * y * y + 3.0 * y * y * y );
719 double q3 = -6.0 * x * ( -5.0 + y ) * pow( y, 3 ) + 4 * pow( y, 4 ) +
720 5 * pow( x, 5 ) * ( 6 - 6 * y + y * y ) -
721 4 * x * x * y * y * ( -20.0 + 6 * y + y * y ) +
722 pow( x, 3 ) * y * ( 90.0 - 10.0 * y - 28.0 * y * y + y * y * y ) +
723 pow( x, 4 ) * ( 36.0 + 36.0 * y - 50.0 * y * y + 4 * y * y * y );
724 double q4 = log( 1 + y / x );
726 double answer = q2 / q1 + 2 / q1 / y * q3 * q4;
732 double mui = vars[2];
734 double Lambda = vars[4];
735 double wzero = vars[7];
736 int itype = (int)vars[11];
742 double Lambar = ( Lambda / b ) *
743 (
Gamma( 1 + b ) -
Gamma( 1 + b, b * wzero / Lambda ) ) /
744 (
Gamma( b ) -
Gamma( b, b * wzero / Lambda ) );
745 double muf = wzero - Lambar;
746 double mupisq = 3 * pow( Lambda, 2 ) / pow( b, 2 ) *
748 Gamma( 2 + b, b * wzero / Lambda ) ) /
749 (
Gamma( b ) -
Gamma( b, b * wzero / Lambda ) ) -
751 norm =
Mzero( muf, mui, mupisq, vars ) *
Gamma( b ) /
752 (
Gamma( b ) -
Gamma( b, b * wzero / Lambda ) );
753 shape = pow( b, b ) / Lambda /
Gamma( b ) * pow( w / Lambda, b - 1 ) *
754 exp( -b * w / Lambda );
758 double dcoef = pow(
Gamma( 0.5 * ( 1 + b ) ) /
Gamma( 0.5 * b ), 2 );
759 double t1 = wzero * wzero * dcoef / ( Lambda * Lambda );
761 Lambda * (
Gamma( 0.5 * ( 1 + b ) ) -
Gamma( 0.5 * ( 1 + b ), t1 ) ) /
762 pow( dcoef, 0.5 ) / (
Gamma( 0.5 * b ) -
Gamma( 0.5 * b, t1 ) );
763 double muf = wzero - Lambar;
764 double mupisq = 3 * Lambda * Lambda *
765 (
Gamma( 1 + 0.5 * b ) -
Gamma( 1 + 0.5 * b, t1 ) ) /
766 dcoef / (
Gamma( 0.5 * b ) -
Gamma( 0.5 * b, t1 ) ) -
768 norm =
Mzero( muf, mui, mupisq, vars ) *
Gamma( 0.5 * b ) /
770 Gamma( 0.5 * b, wzero * wzero * dcoef / ( Lambda * Lambda ) ) );
771 shape = 2 * pow( dcoef, 0.5 * b ) / Lambda /
Gamma( 0.5 * b ) *
772 pow( w / Lambda, b - 1 ) *
773 exp( -dcoef * w * w / ( Lambda * Lambda ) );
776 double answer = norm * shape;
781 const std::vector<double>& vars )
783 double CF = 4.0 / 3.0;
784 double amu = CF *
alphas( mu, vars ) / M_PI;
786 amu * ( pow( log( muf / mu ), 2 ) + log( muf / mu ) +
787 M_PI * M_PI / 24.0 ) +
788 amu * ( log( muf / mu ) - 0.5 ) * mupisq / ( 3 * muf * muf );
865 double factor = 0.5 * mom2 * pow( bval / Lbar, 3 );
866 double answer = factor *
exp( -bval * x ) *
867 ( 1 - 2 * bval * x + 0.5 * bval * bval * x * x );
874 double normBIK = ( 4 - M_PI ) * M_PI * M_PI / 8 / ( 2 - M_PI ) / aval + 1;
875 double z = 3 * M_PI * w / 8 / Lbar;
876 double q = M_PI * M_PI * 2 * pow( M_PI * aval, 0.5 ) *
exp( -aval * z * z ) /
877 ( 4 * M_PI - 8 ) * ( 1 - 2 * pow( aval / M_PI, 0.5 ) * z ) +
878 8 / pow( 1 + z * z, 4 ) *
879 ( z * log( z ) + 0.5 * z * ( 1 + z * z ) -
880 M_PI / 4 * ( 1 - z * z ) );
881 double answer = q / normBIK;
890 double q1 = ( ah - ai ) / ( 4 * M_PI *
m_beta0 );
909 double epsilon = 0.0;
910 double answer = pow(
m_mb / muh, -2 *
aGamma( muh, mui, epsilon ) ) *
911 exp( 2 *
Sfun( muh, mui, epsilon ) -
912 2 *
agp( muh, mui, epsilon ) );
928 ( -1.0 + 1.0 / r + log( r ) );
937 ( 1 - r + log( r ) ) );
950 ( -0.5 * pow( 1 - r, 2 ) * w1 + w2 * ( 1 - r ) * log( r ) +
951 w3 * ( 1 - r + r * log( r ) ) );
960 epsilon * (
a2 -
a1 ) / ( 8.0 * M_PI ) *
971 epsilon * (
a2 -
a1 ) / ( 8.0 * M_PI ) *
979 return -2.0 *
aGamma( muh, mui, 0 );
987 double answer = ( ah - ai ) / ( 8.0 * M_PI ) *
998 double beta0 = vars[8];
999 double beta1 = vars[9];
1000 double beta2 = vars[10];
1002 double Lambda4 = 0.298791;
1003 double lg = 2 * log( mu / Lambda4 );
1004 double answer = 4 * M_PI / ( beta0 * lg ) *
1005 ( 1 - beta1 * log( lg ) / ( beta0 * beta0 * lg ) +
1006 beta1 * beta1 / ( beta0 * beta0 * beta0 * beta0 * lg * lg ) *
1007 ( ( log( lg ) - 0.5 ) * ( log( lg ) - 0.5 ) -
1008 5.0 / 4.0 + beta2 * beta0 / ( beta1 * beta1 ) ) );
1015 cout <<
"Error in EvtVubBLNPHybrid: 2nd argument to PolyLog is >= 1."
1019 for (
int k = 1; k < 101; k++ ) {
1020 sum = sum + pow( z, k ) / pow( k,
v );
1030 double v = lgamma( z );
1042 LogGamma = lgamma( a );
1043 if ( x < ( a + 1.0 ) )
1044 return gamser( a, x, LogGamma );
1046 return 1.0 -
gammcf( a, x, LogGamma );
1055 double ap, del, sum;
1058 del = sum = 1.0 / a;
1059 for ( n = 1; n <
ITMAX; n++ ) {
1063 if ( fabs( del ) < fabs( sum ) *
EPS )
1064 return sum *
exp( -x + a * log( x ) - LogGamma );
1076 double an, b, c, d, del, h;
1083 for ( i = 1; i <
ITMAX; i++ ) {
1084 an = -i * ( i - a );
1087 if ( fabs( d ) <
FPMIN )
1090 if ( fabs( c ) <
FPMIN )
1095 if ( fabs( del - 1.0 ) <
EPS )
1096 return exp( -x + a * log( x ) - LogGamma ) * h;
1106 double oOverBins = 1.0 / ( float(
m_pf.size() ) );
1108 int nBinsAbove =
m_pf.size();
1111 while ( nBinsAbove > nBinsBelow + 1 ) {
1112 middle = ( nBinsAbove + nBinsBelow + 1 ) >> 1;
1113 if ( ranNum >=
m_pf[middle] ) {
1114 nBinsBelow = middle;
1116 nBinsAbove = middle;
1120 double bSize =
m_pf[nBinsAbove] -
m_pf[nBinsBelow];
1127 return ( nBinsBelow + .5 ) * oOverBins;
1130 double bFract = ( ranNum -
m_pf[nBinsBelow] ) / bSize;
1132 return ( nBinsBelow + bFract ) * oOverBins;
1141 for (
unsigned i = 0; i <
m_bins_mX.size(); i++ ) {
1145 for (
unsigned i = 0; i <
m_bins_q2.size(); i++ ) {
1149 for (
unsigned i = 0; i <
m_bins_El.size(); i++ ) {
1153 int ibin = ibin_mX + ibin_q2 *
m_bins_mX.size() +
1156 if ( ( ibin_mX < 0 ) || ( ibin_q2 < 0 ) || ( ibin_El < 0 ) ) {
1158 <<
"Cannot determine hybrid weight "
1159 <<
"for this event "
1160 <<
"-> assign weight = 0" << endl;
1173 w =
getArg( startArg++ );
1180 <<
"EvtVub generator expected at least one "
1181 <<
" weight > 0, but found none! "
1182 <<
"Will terminate execution!" << endl;
EvtComplex exp(const EvtComplex &c)
double abs(const EvtComplex &c)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
double getArg(unsigned int j)
EvtId getDaug(int i) const
void checkNDaug(int d1, int d2=-1)
const EvtId * getDaugs() const
double evaluate(double lower, double upper) const
double getSFBLNP(const double &what)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
double initializePhaseSpace(size_t numdaughter, const EvtId *daughters, bool forceResetMasses=false, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
EvtParticle * getDaug(const int i)
void set(int i, double d)
std::vector< double > m_bins_q2
double S2(double a1, double r)
static double Gamma(double z)
double myfunction(double w, double Lbar, double mom2)
static double g2(double w, const std::vector< double > &vars)
static double Shat(double w, const std::vector< double > &vars)
double F2(double Pp, double Pm, double muh, double mui, double mubar, double done3)
static double Int2(double what, const std::vector< double > &vars)
static double g1(double w, const std::vector< double > &vars)
void decay(EvtParticle *Bmeson) override
std::string getName() const override
static double gammcf(double a, double x, double LogGamma)
double rate3(double Pp, double Pl, double Pm)
double aGamma(double mu1, double mu2, double epsilon)
double DoneJS(double Pp, double Pm, double mui)
double S0(double a1, double r)
double S1(double a1, double r)
static double Mzero(double muf, double mu, double mupisq, const std::vector< double > &vars)
static double alphas(double mu, const std::vector< double > &vars)
double Done2(double Pp, double Pm, double mui)
double myfunctionBIK(double w, double Lbar, double mom2)
void readWeights(int startArg=0)
std::vector< double > m_bins_El
static double Int1(double what, const std::vector< double > &vars)
double anlo(double muh, double mui)
std::vector< double > m_pf
double U1lo(double muh, double mui)
std::vector< double > m_bins_mX
double Done3(double Pp, double Pm, double mui)
EvtDecayBase * clone() const override
double alo(double muh, double mui)
std::vector< double > m_weights
double dU1nlo(double muh, double mui)
double Done1(double Pp, double Pm, double mui)
double PolyLog(double v, double z)
static double gamser(double a, double x, double LogGamma)
static double Int3(double what, const std::vector< double > &vars)
double Sfun(double mu1, double mu2, double epsilon)
static double g3(double w, const std::vector< double > &vars)
double agp(double mu1, double mu2, double epsilon)
std::vector< double > m_gvars
double F1(double Pp, double Pm, double muh, double mui, double mubar, double doneJS, double done1)
void initProbMax() override
double F3(double Pp, double Pm, double muh, double mui, double mubar, double done2)
double getWeight(double mX, double q2, double El)
static double IntJS(double what, const std::vector< double > &vars)