Nanga Parbat 1.1.0
A TMD fitting framework
PV19.h
Go to the documentation of this file.
1//
2// Authors: Valerio Bertone: valerio.bertone@cern.ch
3// Alessandro Bacchetta: alessandro.bacchetta@unipv.it
4
5#pragma once
6
8
9#include <math.h>
10
11namespace NangaParbat
12{
18 {
19 public:
20
21 PV19(): Parameterisation{"PV19", 2, std::vector<double> {0.02986, 3.8486, 18.5075, 4.938, 0.0, 0.8407, 0.7921, 62.47, 4.075, 0.0, 0.0, 0.1, 0.01781, 2.0}} {};
22
23 double Evaluate(double const& x, double const& b, double const& zeta, int const& ifunc) const
24 {
25 if (ifunc < 0 || ifunc >= this->_nfuncs)
26 throw std::runtime_error("[PV19::Evaluate]: function index out of range");
27
28 // If the value of 'x' exceeds one returns zero
29 if (x >= 1)
30 return 0;
31
32 // Free paraMeters
33 const double g2 = this->_pars[0];
34 const double N1 = this->_pars[1];
35 const double alpha = this->_pars[2];
36 const double sigma = this->_pars[3];
37 const double delta = this->_pars[4];
38 const double lambdaB = this->_pars[5];
39 const double N1B = this->_pars[6];
40 const double alphaB = this->_pars[7];
41 const double sigmaB = this->_pars[8];
42 const double deltaB = this->_pars[9];
43 const double lambdaC = this->_pars[10];
44 const double g1C = this->_pars[11];
45 const double g2B = this->_pars[12];
46 const double beta = this->_pars[13];
47
48 // Useful definitions
49 const double lambdaB2 = lambdaB * lambdaB;
50 const double lambdaC2 = lambdaC * lambdaC;
51 const double g1C2 = g1C * g1C;
52
53 // x-dependent bits
54 const double g1 = N1 * ( pow(x, sigma) + delta ) / ( pow(_xhat, sigma) + delta ) * pow((1 - x) / (1 - _xhat), alpha);
55 const double g1B = N1B * ( pow(x, sigmaB) + deltaB ) / ( pow(_xhat, sigmaB) + deltaB ) * pow((1 - x) / (1 - _xhat), alphaB);
56
57 // bT-dependent bits
58 const double b2 = b * b;
59
60 // zeta-dependent bit (i.e. non perturbative evolution)
61 const double lnz = log(zeta / _Q02);
62 const double NPevol = exp( - ( g2 * pow(b, beta) + g2B * b2 * b2 ) * lnz / 4 );
63
64 return
65 ( ( 1 - lambdaB2 ) / ( 1 + g1 / 4 * b2 )
66 + lambdaB2 * ( g1B * exp( - g1B / 4 * b2 ) + lambdaC2 * g1C2 * ( 1 - g1C / 4 * b2 ) * exp( - g1C / 4 * b2 ) ) / ( g1B + lambdaC2 * g1C2 ) )
67 * NPevol;
68 };
69
70 std::string LatexFormula() const
71 {
72 std::string formula;
73 formula = R"delimiter($$f_{\rm NP}(x,\zeta, b_T)= \Biggl(
74\frac{1-\lambda_B^2}{1 + g_1^2(x) b_T^2/4} + \lambda_B^2 \exp \left(-g_{1B} b_T^2 /4 \right)\Biggr) \exp\left[- g_2 \log\left(\frac{\zeta}{Q_0^2}\right) b_T^2/4 - g_{2B} \log\left(\frac{\zeta}{Q_0^2}\right) b_T^4/4 \right]$$)delimiter";
75 formula += R"delimiter($$g_1(x) = N_1 \frac{x^{\sigma}(1-x)^{\alpha}}{\hat{x}^{\sigma}(1-\hat{x})^{\alpha}}$$)delimiter";
76 formula += R"delimiter($$g_{1B}(x) = N_{1B} \frac{x^{\sigma_B}(1-x)^{\alpha_B}}{\hat{x}^{\sigma_B}(1-\hat{x})^{\alpha_B}}$$)delimiter";
77 formula += R"delimiter($$Q_0^2 = 1\;{\rm GeV}^2$$)delimiter";
78 formula += R"delimiter($$\hat{x} = 0.1$$)delimiter";
79 return formula;
80 };
81
82 std::vector<std::string> GetParameterNames() const
83 {
84 return {R"delimiter($g_2$)delimiter",
85 R"delimiter($N_1$)delimiter",
86 R"delimiter($\alpha$)delimiter",
87 R"delimiter($\sigma$)delimiter",
88 R"delimiter($\delta$)delimiter",
89 R"delimiter($\lambda_B$)delimiter",
90 R"delimiter($N_{1B}$)delimiter",
91 R"delimiter($\alpha_B$)delimiter",
92 R"delimiter($\sigma_B$)delimiter",
93 R"delimiter($\delta_B$)delimiter",
94 R"delimiter($\lambda_C$)delimiter",
95 R"delimiter($g_{1C}$)delimiter",
96 R"delimiter($g_{2B}$)delimiter",
97 R"delimiter($\beta$)delimiter"};
98 };
99
100 std::string GetDescription() const
101 {
102 return "Parameterisation used for the Pavia 2019 TMD analysis.";
103 };
104
105 private:
106 const double _Q02 = 1;
107 const double _xhat = 0.1;
108 };
109}
Pavia 2019 parameterisation derived from the "Parameterisation" mother class.
Definition: PV19.h:18
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: PV19.h:23
std::string LatexFormula() const
Virtual function that returns a string with the formula of the non-perturbative function(s) in LaTex ...
Definition: PV19.h:70
std::vector< std::string > GetParameterNames() const
Virtual function that returns a vector of strings containing the names of the parameters in LaTex for...
Definition: PV19.h:82
std::string GetDescription() const
Virtual function that returns a short description of the parametrisation.
Definition: PV19.h:100
PV19()
Definition: PV19.h:21
Mother class that implements the main feautures of a functional parameterisation of non-perturbative ...
Definition: parameterisation.h:20
Definition: bstar.h:12