35 const std::vector<double>& coeffs )
39 return ( pow( 1. - ( y / coeffs[1] ), coeffs[2] ) *
40 exp( ( -3. * pow( coeffs[1], 2. ) / coeffs[3] ) * y / coeffs[1] ) ) /
45 const std::vector<double>& coeffs )
48 return ( pow( 1. - ( y / coeffs[1] ), coeffs[2] ) *
49 exp( -pow( coeffs[3], 2. ) * pow( 1. - ( y / coeffs[1] ), 2. ) ) ) /
54 double lambdabar,
double lam1,
double mb, std::vector<double>& gammaCoeffs )
56 std::vector<double> coeffs1 = { 0.2, lambdabar, 0.0 };
57 std::vector<double> coeffs2 = { 0.2, lambdabar, -lam1 / 3. };
60 coeffs1, gammaCoeffs };
62 coeffs2, gammaCoeffs };
66 40, 40, -mb, lambdabar, 0.2, 0.4,
71 double y,
const std::vector<double>& coeffs1,
72 const std::vector<double>& coeffs2 )
75 double cp =
Gamma( ( 2.0 + coeffs1[0] ) / 2., coeffs2 ) /
76 Gamma( ( 1.0 + coeffs1[0] ) / 2., coeffs2 );
78 return ( y * y ) * pow( ( 1. - ( y / coeffs1[1] ) ), coeffs1[0] ) *
79 exp( -pow( cp, 2 ) * pow( ( 1. - ( y / coeffs1[1] ) ), 2. ) );
83 double y,
const std::vector<double>& coeffs1,
84 const std::vector<double>& coeffs2 )
87 double cp =
Gamma( ( 2.0 + coeffs1[0] ) / 2., coeffs2 ) /
88 Gamma( ( 1.0 + coeffs1[0] ) / 2., coeffs2 );
89 return pow( ( 1. - ( y / coeffs1[1] ) ), coeffs1[0] ) *
90 exp( -pow( cp, 2 ) * pow( ( 1. - ( y / coeffs1[1] ) ), 2. ) );
96 double x, y, tmp, ser;
103 tmp = tmp - ( x + 0.5 ) * log( tmp );
104 ser = 1.000000000190015;
106 for ( j = 0; j < 6; j++ ) {
108 ser = ser + coeffs[j] / y;
111 return exp( -tmp + log( 2.5066282746310005 * ser / x ) );
125 ans = ( log( x / 2.0 ) *
BesselI1( x ) ) +
131 y * ( -0.1919402e-1 +
133 y * ( -0.4686e-4 ) ) ) ) ) ) );
136 ans = (
exp( -x ) / sqrt( x ) ) *
139 y * ( -0.3655620e-1 +
143 y * ( -0.68245e-3 ) ) ) ) ) ) );
161 ( 0.5 + y * ( 0.87890594 +
166 y * 0.32411e-3 ) ) ) ) ) );
170 y * ( -0.2895312e-1 + y * ( 0.1787654e-1 - y * 0.420059e-2 ) );
172 y * ( -0.3988024e-1 +
174 y * ( 0.163801e-2 + y * ( -0.1031555e-1 + y * ans ) ) ) );
175 ans *= (
exp( ax ) / sqrt( ax ) );
177 return x < 0.0 ? -ans : ans;
185 double rhSide = 1.0 - ( lam1 / ( 3.0 * lambdabar * lambdabar ) );
190 <<
"rho/2 " << rho / 2. <<
" bessel " <<
BesselK1( rho / 2. ) << endl;
194 <<
"rho " << rho <<
" pf " << pF << endl;
205 const std::vector<double>& coeffs )
207 if ( y == ( coeffs[1] - coeffs[2] ) )
208 y = 0.99999999 * ( coeffs[1] - coeffs[2] );
212 ( coeffs[3] *
exp( coeffs[3] / 2. ) *
BesselK1( coeffs[3] / 2. ) );
227 return ( coeffs[1] - coeffs[2] ) * ( 1. / ( sqrt(
EvtConst::pi ) * pF ) ) *
229 pow( pF * ( coeffs[3] /
230 ( ( coeffs[1] - coeffs[2] ) *
231 ( 1. - y / ( coeffs[1] - coeffs[2] ) ) ) ) -
232 ( ( coeffs[1] - coeffs[2] ) / pF ) *
233 ( 1. - y / ( coeffs[1] - coeffs[2] ) ),
EvtComplex exp(const EvtComplex &c)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
static double FermiGaussFunc(double, std::vector< double > const &coeffs)
static double FermiGaussRootFcnB(double, const std::vector< double > &coeffs1, const std::vector< double > &coeffs2)
static double BesselK1(double)
static double BesselI1(double)
static double FermiRomanRootFcnA(double)
static double FermiGaussRootFcnA(double, const std::vector< double > &coeffs1, const std::vector< double > &coeffs2)
static double FermiRomanFunc(double, std::vector< double > const &coeffs)
static double FermiRomanFuncRoot(double, double)
static double FermiGaussFuncRoot(double, double, double, std::vector< double > &coeffs)
static double FermiExpFunc(double var, const std::vector< double > &coeffs)
static double Gamma(double, const std::vector< double > &coeffs)
double GetGaussIntegFcnRoot(EvtItgAbsFunction *theFunc1, EvtItgAbsFunction *theFunc2, double integ1Precision, double integ2Precision, int maxLoop1, int maxLoop2, double integLower, double integUpper, double lowerValue, double upperValue, double precision)
double GetRootSingleFunc(const EvtItgAbsFunction *theFunc, double functionValue, double lowerValue, double upperValue, double precision)