Nanga Parbat 1.1.0
A TMD fitting framework
QGG6.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#include <apfel/constants.h>
11
12namespace NangaParbat
13{
19 {
20 public:
21
22 QGG6(): Parameterisation{"QGG6", 2, std::vector<double>{0.13, 0.285, 2.98, 0.173, 0.39, 0.0}} { };
23
24 double Evaluate(double const& x, double const& b, double const& zeta, int const& ifunc) const
25 {
26 if (ifunc < 0 || ifunc >= this->_nfuncs)
27 throw std::runtime_error("[QGG6::Evaluate]: function index out of range");
28
29 // If the value of 'x' exceeds one returns zero
30 if (x >= 1)
31 return 0;
32
33 // Free paraMeters
34 const double g2 = this->_pars[0];
35 const double N1 = this->_pars[1];
36 const double alpha = this->_pars[2];
37 const double sigma = this->_pars[3];
38 const double lambda = this->_pars[4];
39 const double delta = this->_pars[5];
40
41 // TMD PDFs
42 const double Q02 = 1;
43 const double xhat = 0.1;
44
45 const double g1 = N1 * ( pow(x, sigma) ) / ( pow(xhat, sigma) ) * pow((1 - x) / (1 - xhat), alpha);
46
47 // --- PV19 QGaussian + Gaussian, 6 parameters ---
48 return ((1 - pow(lambda, 2)) / (pow(1 + g1 / 4 * b * b, 1)) + pow(lambda,2) * exp( - delta/ 2 * b * b ) ) * exp( - g2 * log(zeta / Q02) * b * b / 4 );
49 };
50
51 // PV19, 6 parameters
52 std::string LatexFormula() const
53 {
54 std::string formula;
55 formula = R"delimiter($$f_{\rm NP}(x,\zeta, b_T)=\left[\frac{1-\lambda^2}{\left(1 + \left(\frac{g_1}{4}\right)b_T^2\right)}+\lambda^2e^{-\delta\frac{b_T^2}{2}}\right]e^{- g_2 \log\left(\frac{\zeta}{Q_0^2}\right)\frac{b_T^2}{4}}$$)delimiter";
56 formula += R"delimiter($$g_1(x) = N_1 \frac{x^{\sigma}(1-x)^{\alpha}}{\hat{x}^{\sigma}(1-\hat{x})^{\alpha}}$$)delimiter";
57 formula += R"delimiter($$Q_0^2 = 1\;{\rm GeV}^2$$)delimiter";
58 formula += R"delimiter($$\hat{x} = 0.1$$)delimiter";
59 return formula;
60 };
61
62 std::vector<std::string> GetParameterNames() const
63 {
64 return {R"delimiter($g_2$)delimiter",
65 R"delimiter($N_1$)delimiter",
66 R"delimiter($\alpha$)delimiter",
67 R"delimiter($\sigma$)delimiter",
68 R"delimiter($\lambda$)delimiter",
69 R"delimiter($\delta$)delimiter"};
70 };
71
72 std::string GetDescription() const
73 {
74 return "Parameterisation with a q-Gaussian and a Gaussian and 6 free parameters.";
75 };
76 };
77}
Mother class that implements the main feautures of a functional parameterisation of non-perturbative ...
Definition: parameterisation.h:20
Pavia 2019 parameterisation derived from the "Parameterisation" mother class.
Definition: QGG6.h:19
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: QGG6.h:24
std::string LatexFormula() const
Virtual function that returns a string with the formula of the non-perturbative function(s) in LaTex ...
Definition: QGG6.h:52
std::string GetDescription() const
Virtual function that returns a short description of the parametrisation.
Definition: QGG6.h:72
std::vector< std::string > GetParameterNames() const
Virtual function that returns a vector of strings containing the names of the parameters in LaTex for...
Definition: QGG6.h:62
QGG6()
Definition: QGG6.h:22
Definition: bstar.h:12