5 std::shared_ptr<IObsQCDProxy> iobs_qcdp) :
8 this->ff_calculator = ff_calculator;
21 double ls = std::log(s);
22 double f0 = (s + 1.) / d2 - 2. * s * ls / d3;
23 double f1 = -(s2 + 10. * s + 1.) / d3 + 6. * s * (s + 1) * ls / d4;
24 double f2 = (s + 1.) * (s2 + 28. * s + 1.) / d4 - 12. * s * (s2 + 3. * s + 1.) * ls / d5;
25 return f0 + this->
a_1_perp * f1 + this->a_2_perp * f2;
31 double u03 = u02 * u0;
34 double x0 = -2 * u0 - 2 * std::log(1 - u0);
35 double x1 = -6*u02 - 6*u0 - 6*std::log(1 - u0);
36 double x2 = -20*u03 - 12*u0 - 12*log(1 - u0);
40 double t = u0 * (s - 1) + 1;
43 double x0 = 2*u02*(t + 2*u0 - 1)*std::log(t)/std::pow(t - 1, 3) - 2*u02*(t*(u0 + 1) + u0 - 1)/(t*std::pow(t - 1, 2));
44 double x1 = -6*u02*(t2 + t*(6*u0 - 2) + 6*u02 - 6*u0 + 1)*std::log(t)/std::pow(t - 1, 4) - 6*u02*(t2*(u02 - 3*u0 - 1) + t*(2 - 5*u02) - 2*u02 + 3*u0 - 1)/(t*std::pow(t - 1, 3));
45 double x2 = 12*u02*(t + 2*u0 - 1)*(t2 + t*(10*u0 - 2) + 10*u02 - 10*u0 + 1)*std::log(t)/std::pow(t - 1, 5) - 4*u02*(t3*(5*u03 - 15*u02 + 18*u0 + 3) + t2*(-25*u03 + 90*u02 - 18*u0 - 9) + t*(65*u03 - 45*u02 - 18*u0 + 9) + 15*u03 - 30*u02 + 18*u0 - 3)/(t*std::pow(t - 1, 4));
70 auto iG_perp = [
this] (
double x) {
79 auto iH_perp = [
this] (
double x) {
86 auto iH2_perp = [
this] (
double x) {
93 double Nc =
iobs_qcdp->get_constants()->Nc;
98 double Nc =
iobs_qcdp->get_constants()->Nc;
120 xi_perp = this->ff_calculator->get(
BV_FF::T1, q2);
141 xi_perp = this->ff_calculator->get(
BV_FF::T1, q2);
175 auto f = [q2, bar,
this] (
double u) {
177 double v = this->
m_B * this->
m_B * (1 - u) + u * q2;
178 return phi_u * this->
m_B * this->
m_B / v *
F_V(v, bar);
185 auto f = [q2, bar,
this] (
double u) {
187 double v = this->
m_B * this->
m_B * (1 - u) + u * q2;
188 return int_phi_par *
F_V(v, bar);
208 double s_hat = q2 / (this->
m_B * this->
m_B);
223 double s_hat = q2 / (this->
m_B * this->
m_B);
std::complex< double > complex_t
Convenience alias for std::complex<double>.
complex_t T_par_p(double q2, bool bar)
complex_t delta_T_perp_WA(double q2, bool bar)
double X_perp(double s_hat)
complex_t delta_T_perp_HSA(double q2, bool bar)
complex_t I_HSA_1(double q2, bool bar)
complex_t T_par_m(double q2, bool bar)
complex_t T_perp_m(double q2, bool bar)
double F_perp(double s_hat)
complex_t T_perp_p(double q2, bool bar)
complex_t Delta_par(double q2)
BVQCDfCalculator()=default
complex_t I_HSA_2(double q2, bool bar)
complex_t I_perp_m(double q2, bool bar)
complex_t C_par_0(double q2, double sign, bool bar)
double phi_X(double u, double a1, double a2)
complex_t C_par_nf(double q2, bool bar)
std::shared_ptr< IObsQCDProxy > iobs_qcdp
double gv_dga_4(double u)
complex_t C_perp_0(double q2, double sign, bool bar)
complex_t I_par_p(double q2, bool bar)
complex_t F_V(double v, bool bar)
complex_t C_perp_nf(double q2, bool bar)
complex_t C_par_f(double q2, double sign, bool bar)
complex_t I_par_m(double q2, bool bar)
std::map< WCoef, complex_t > C
complex_t I_perp_p(double q2, bool bar)
complex_t C_perp_f(double q2, double sign, bool bar)
scalar_t c_integrate(ComplexValuedFunction f, double l, double u, double prec)
Performs numerical integration of a complex-valued function of a real variable.
complex_t G(double x_bar, double z)
complex_t hard_kernel(double u, double z)
std::enable_if_t< not std::numeric_limits< T >::is_integer, bool > fpeq(T, T, std::size_t n=10)
Compares two floating point numbers with a given precision.
double f(double x)
Wilson special function f depending on x.