Nanga Parbat 1.1.0
A TMD fitting framework
parameterisation.h
Go to the documentation of this file.
1//
2// Authors: Valerio Bertone: valerio.bertone@cern.ch
3//
4
5#pragma once
6
7#include <vector>
8#include <iostream>
9#include <functional>
10#include <map>
11#include <apfel/apfelxx.h>
12
13namespace NangaParbat
14{
20 {
21 public:
29 Parameterisation(std::string const& name = "", int const& nfuncs = 0, std::vector<double> pars = {}, bool const& anders = false);
30
34 virtual ~Parameterisation() {};
35
41 virtual void SetParameters(std::vector<double> const& pars) { _pars = pars; };
42
52 virtual double Evaluate(double const& x, double const& b, double const& zeta, int const& ifunc) const { return 0; };
53 virtual void EvaluateOnGrid() {};
58 std::function<double(double const&, double const&, double const&, int const&)> Function() const;
59
71 virtual double Derive(double const& x, double const& b, double const& zeta, int const& ifunc, int const& ipar) const { return 0; };
72 virtual void DeriveOnGrid() {};
73
78 std::function<double(double const&, double const&, double const&, int const&, int const&)> Derivative() const;
79
84 virtual std::string LatexFormula() const { return ""; };
85
90 virtual std::vector<std::string> GetParameterNames() const { return {}; };
91
96 virtual std::string GetDescription() const { return ""; };
97
103 std::string GetName() const { return _name; }
104 int GetNumberOfFunctions() const { return _nfuncs; }
105 virtual std::vector<double> GetParameters() const { return _pars; }
106 virtual int GetParameterNumber() const { return _pars.size(); }
107 bool HasGradient() const { return _anders; }
109
110 // FF_SIDIS
111 virtual std::function<std::map<int, double>(double const&, double const&)> LHAPDF_Function() const { return nullptr; }
112 virtual std::function<std::map<int, double>(double const&, double const&)> LHAPDF_Derivative(int) const { return nullptr; }
113 virtual std::function<apfel::Set<apfel::Distribution>(double const&)> DistributionFunction() const { return nullptr; }
114 virtual std::function<apfel::Set<apfel::Distribution>(double const&)> DistributionDerivative(int) const { return nullptr; }
115
116 protected:
117 std::string _name;
119 std::vector<double> _pars;
120 bool _anders;
121 };
122}
Mother class that implements the main feautures of a functional parameterisation of non-perturbative ...
Definition: parameterisation.h:20
virtual std::function< std::map< int, double >(double const &, double const &)> LHAPDF_Derivative(int) const
Definition: parameterisation.h:112
virtual void EvaluateOnGrid()
Definition: parameterisation.h:53
virtual std::vector< double > GetParameters() const
Definition: parameterisation.h:105
virtual void DeriveOnGrid()
Definition: parameterisation.h:72
int GetNumberOfFunctions() const
Definition: parameterisation.h:104
virtual std::function< apfel::Set< apfel::Distribution >(double const &)> DistributionDerivative(int) const
Definition: parameterisation.h:114
virtual void SetParameters(std::vector< double > const &pars)
Function that sets the free parameters of the parameterisation.
Definition: parameterisation.h:41
Parameterisation(std::string const &name="", int const &nfuncs=0, std::vector< double > pars={}, bool const &anders=false)
The "Parameterisation" constructor.
virtual std::vector< std::string > GetParameterNames() const
Virtual function that returns a vector of strings containing the names of the parameters in LaTex for...
Definition: parameterisation.h:90
virtual ~Parameterisation()
The "Parameterisation" destructor.
Definition: parameterisation.h:34
std::string _name
Name of the parameterisation.
Definition: parameterisation.h:117
std::function< double(double const &, double const &, double const &, int const &)> Function() const
Function that returns the parametrisation in the form of a std::function.
std::vector< double > _pars
The vector of free parameters.
Definition: parameterisation.h:119
virtual std::string LatexFormula() const
Virtual function that returns a string with the formula of the non-perturbative function(s) in LaTex ...
Definition: parameterisation.h:84
int _nfuncs
Number of output functions.
Definition: parameterisation.h:118
virtual 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: parameterisation.h:52
virtual std::string GetDescription() const
Virtual function that returns a short description of the parametrisation.
Definition: parameterisation.h:96
std::string GetName() const
Definition: parameterisation.h:103
bool HasGradient() const
Definition: parameterisation.h:107
std::function< double(double const &, double const &, double const &, int const &, int const &)> Derivative() const
Function that returns the derivative of the parametrisation in the form of a std::function.
virtual double Derive(double const &x, double const &b, double const &zeta, int const &ifunc, int const &ipar) const
Virtual function that returns the value of the derivative of one of the functions.
Definition: parameterisation.h:71
virtual std::function< std::map< int, double >(double const &, double const &)> LHAPDF_Function() const
Definition: parameterisation.h:111
virtual int GetParameterNumber() const
Definition: parameterisation.h:106
virtual std::function< apfel::Set< apfel::Distribution >(double const &)> DistributionFunction() const
Definition: parameterisation.h:113
bool _anders
Whether the parametersation provides analytic derivatives.
Definition: parameterisation.h:120
Definition: bstar.h:12