Nanga Parbat 1.1.0
A TMD fitting framework
PV17.h
Go to the documentation of this file.
1//
2// Author: Valerio Bertone: valerio.bertone@cern.ch
3//
4
5#pragma once
6
8
9#include <math.h>
10
11namespace NangaParbat
12{
18 {
19 public:
20 // The default parameters correspond to those of replica 105 of
21 // the PV17 fit. See Tabs. X and XI of
22 // https://arxiv.org/pdf/1703.10157.pdf.
23 PV17(): Parameterisation{"PV17", 2, std::vector<double>{0.12840E+00, 0.28516E+00, 0.29755E+01, 0.17293E+00, 0.39432E+00, 2.12062E-01, 0.21012E+01, 0.93554E-01, 0.25246E+01, 0.52915E+01, 3.37975E-02}} { };
24
25 double Evaluate(double const& x, double const& b, double const& zeta, int const& ifunc) const
26 {
27 if (ifunc < 0 || ifunc >= this->_nfuncs)
28 throw std::runtime_error("[PV17::Evaluate]: function index out of range");
29
30 // If the value of 'x' exceeds one returns zero
31 if (x >= 1)
32 return 0;
33
34 // Evolution
35 const double g2 = this->_pars[0];
36 const double Q02 = 1;
37 const double evol = exp( - g2 * log(zeta / Q02) * b * b / 4 );
38
39 // TMD PDFs
40 if (ifunc == 0)
41 {
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 ) );
49 }
50 // TMD FFs
51 else
52 {
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) );
67 }
68 };
69
70 std::string LatexFormula() const
71 {
72 std::string formula;
73 formula = R"delimiter($$f_{\rm NP}(x,\zeta, b_T)=\exp\Biggl[ - g_2 \log\left(\frac{\zeta}{Q_0^2}\right) \frac{b_T^2}{4}\Biggr]\exp\Biggl[ - g_1 \frac{b_T^2}{4}\Biggr]\left[1 - \frac{\lambda g_1^2(x)}{(1 + \lambda g_1(x))}\frac{b_T^2}{4}\right]$$)delimiter";
74 formula += R"delimiter($$D_{\rm NP}(x,\zeta, b_T)=\exp\Biggl[ - g_2 \log\left(\frac{\zeta}{Q_0^2}\right) \frac{b_T^2}{4}\Biggr]\frac{\Biggl( g_3 \exp\left[ - g_3 \frac{b_T^2}{4 z^2} \right] + \frac{\lambda_F}{z^2} g_4^2 \left( 1 - g_4 \frac{b_T^2}{4 z^2} \right) \left( - g_4 \frac{b_T^2}{4 z^2 } \right)\Biggr)} {\Biggl( g_3 + g_4^2 \frac{\lambda_F}{z^2} \Biggr)}$$)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_{3,4}(z) = N_{3,4} \frac{(z^{\beta}+\delta)(1-z)^{\gamma}}{(\hat{z}^{\beta}+\delta)(1-\hat{z})^{\gamma}}$$)delimiter";
77 formula += R"delimiter($$Q_0^2 = 1\;{\rm GeV}^2$$)delimiter";
78 formula += R"delimiter($$\hat{x} = 0.1$$)delimiter";
79 formula += R"delimiter($$\hat{z} = 0.5$$)delimiter";
80 return formula;
81 };
82
83 std::vector<std::string> GetParameterNames() const
84 {
85 return {R"delimiter($g_2$)delimiter",
86 R"delimiter($N_1$)delimiter",
87 R"delimiter($\alpha$)delimiter",
88 R"delimiter($\sigma$)delimiter",
89 R"delimiter($\lambda$)delimiter",
90 R"delimiter($N_3$)delimiter",
91 R"delimiter($\beta$)delimiter",
92 R"delimiter($\delta$)delimiter",
93 R"delimiter($\gamma$)delimiter",
94 R"delimiter($\lambda_F$)delimiter",
95 R"delimiter($N_4$)delimiter"};
96 };
97
98 std::string GetDescription() const
99 {
100 return "Parameterisation used for the Pavia 2017 TMD analysis.";
101 };
102 };
103}
Pavia 2017 parameterisation derived from the "Parameterisation" mother class.
Definition: PV17.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: PV17.h:25
std::vector< std::string > GetParameterNames() const
Virtual function that returns a vector of strings containing the names of the parameters in LaTex for...
Definition: PV17.h:83
PV17()
Definition: PV17.h:23
std::string GetDescription() const
Virtual function that returns a short description of the parametrisation.
Definition: PV17.h:98
std::string LatexFormula() const
Virtual function that returns a string with the formula of the non-perturbative function(s) in LaTex ...
Definition: PV17.h:70
Mother class that implements the main feautures of a functional parameterisation of non-perturbative ...
Definition: parameterisation.h:20
Definition: bstar.h:12