23 PV20Sivers():
Parameterisation{
"PV20Sivers", 2, std::vector<double>{0.128, 0.285, 2.98, 0.173, 0.39, 0.212, 2.10, 0.094, 2.52, 5.29, 0.033}} { };
25 double Evaluate(
double const& x,
double const& b,
double const& zeta,
int const& ifunc)
const
27 if (ifunc < 0 || ifunc >= this->_nfuncs)
28 throw std::runtime_error(
"[PV20Sivers::Evaluate]: function index out of range");
35 const double g2 = this->_pars[0];
37 const double evol = exp( - g2 * log(zeta / Q02) * b * b / 4 );
42 const double N1 = this->_pars[1];
43 const double alpha = this->_pars[2];
44 const double sigma = this->_pars[3];
45 const double lambda = this->_pars[4];
46 const double xhat = 0.1;
47 const double g1 = N1 * pow(x / xhat, sigma) * pow((1 - x) / (1 - xhat), alpha);
48 return evol * exp( - g1 * pow(b / 2, 2) ) * ( 1 - lambda * pow(g1 * b / 2, 2) / ( 1 + lambda * g1 ) );
53 const double N3 = this->_pars[5];
54 const double beta = this->_pars[6];
55 const double delta = this->_pars[7];
56 const double gamma = this->_pars[8];
57 const double lambdaF = this->_pars[9];
58 const double N4 = this->_pars[10];
59 const double zhat = 0.5;
60 const double cmn = ( ( pow(x, beta) + delta ) / ( pow(zhat, beta) + delta ) ) * pow((1 - x) / (1 - zhat), gamma);
61 const double g3 = N3 * cmn;
62 const double g4 = N4 * cmn;
63 const double z2 = x * x;
64 return evol * ( g3 * exp( - g3 * pow(b / 2, 2) / z2 )
65 + ( lambdaF / z2 ) * pow(g4, 2) * ( 1 - g4 * pow(b / 2, 2) / z2 ) * exp( - g4 * pow(b / 2, 2) / z2 ) )
66 / ( g3 + ( lambdaF / z2 ) * pow(g4, 2) );
73 formula = R
"delimiter($$f_{\rm NP}(x,\zeta, b_T)=\exp\left[ - \left( g_1(x) + \frac{1}{2}g_2 \log\left(\frac{\zeta}{Q_0^2}\right) \right) b_T^2 \right])delimiter";
74 formula += R"delimiter(\left[1 - \frac{\lambda g_1^2(x) b_T^2}{4(1 + \lambda g_1(x))}\right]$$\\)delimiter";
75 formula += R"delimiter($$D_{\rm NP}(x,\zeta, b_T)=\mbox{ Whatever}$$\\)delimiter";
76 formula += R"delimiter($$g_1(x) = N_1 \frac{x^{\sigma}(1-x)^{\alpha}}{\hat{x}^{\sigma}(1-\hat{x})^{\alpha}}$$\\)delimiter";
77 formula += R"delimiter($$g_{3,4}(z) = N_{3,4} \frac{(z^{\beta}+\delta)(1-z)^{\gamma}}{(\hat{z}^{\beta}+\delta)(1-\hat{x})^{\gamma}}$$\\)delimiter";
78 formula += R"delimiter($$Q_0^2 = 1\;{\rm GeV}^2$$\\)delimiter";
79 formula += R"delimiter($$\hat{x} = 0.1$$\\)delimiter";
80 formula += R"delimiter($$\hat{z} = 0.5$$)delimiter";
86 return {R
"delimiter($g_2$)delimiter",
87 R"delimiter($N_1$)delimiter",
88 R"delimiter($\alpha$)delimiter",
89 R"delimiter($\sigma$)delimiter",
90 R"delimiter($\lambda$)delimiter",
91 R"delimiter($N_3$)delimiter",
92 R"delimiter($\beta$)delimiter",
93 R"delimiter($\delta$)delimiter",
94 R"delimiter($\gamma$)delimiter",
95 R"delimiter($\lambda_F$)delimiter",
96 R"delimiter($N_4$)delimiter"};
101 return "Parameterisation used for the Pavia 2017 TMD analysis.";
Pavia 2017 parameterisation derived from the "Parameterisation" mother class.
Definition: PV20Sivers.h:18
std::vector< std::string > GetParameterNames() const
Virtual function that returns a vector of strings containing the names of the parameters in LaTex for...
Definition: PV20Sivers.h:84
std::string LatexFormula() const
Virtual function that returns a string with the formula of the non-perturbative function(s) in LaTex ...
Definition: PV20Sivers.h:70
double Evaluate(double const &x, double const &b, double const &zeta, int const &ifunc) const
Virtual function that returns the value of one of the functions.
Definition: PV20Sivers.h:25
std::string GetDescription() const
Virtual function that returns a short description of the parametrisation.
Definition: PV20Sivers.h:99
PV20Sivers()
Definition: PV20Sivers.h:23
Mother class that implements the main feautures of a functional parameterisation of non-perturbative ...
Definition: parameterisation.h:20