ePDF  1.1.0
A QED evolution library
xdistributions.h
Go to the documentation of this file.
1 //
2 // ePDF
3 //
4 
5 #pragma once
6 
7 #include "ePDF/ndistributions.h"
8 
9 #include <yaml-cpp/yaml.h>
10 #include <complex>
11 #include <vector>
12 #include <memory>
13 #include <gsl/gsl_integration.h>
14 #include <functional>
15 
16 namespace ePDF
17 {
22  struct evol_params
23  {
24  double x;
25  double Q;
26  int id;
27  std::shared_ptr<NDistributions> Ndist;
29  {
30  x = p.x;
31  Q = p.Q;
32  id = p.id;
33  Ndist = p.Ndist;
34  return *this;
35  }
36  };
37 
42  {
43  public:
48  xDistributions(YAML::Node const& config);
49 
54 
60  std::vector<double> Evolve(double const& x, double const& Q);
61 
66  std::vector<double> integrand(double const& y) const;
67  std::vector<double> talbot(double const& y) const;
68  std::vector<double> straight(double const& y) const;
69 
73  std::vector<double> trapezoid(double const& a, double const& b) const;
74  std::vector<double> gauss(double const& a, double const& b) const;
75  std::vector<double> gaussGSL(double const& a, double const& b);
76 
82  std::vector<std::complex<double>> Moments(std::complex<double> const& N, double const& Q) const;
83 
88  void SetParameters(evol_params const& p) { _p = p; };
89 
90  private:
91  std::string const _contour;
92  std::string const _integrator;
93  double const _eps;
95  gsl_integration_workspace *_w;
96  };
97 }
ePDF::xDistributions::_w
gsl_integration_workspace * _w
Definition: xdistributions.h:95
ePDF::xDistributions::talbot
std::vector< double > talbot(double const &y) const
ePDF::evol_params::Ndist
std::shared_ptr< NDistributions > Ndist
Definition: xdistributions.h:27
ePDF::xDistributions::gauss
std::vector< double > gauss(double const &a, double const &b) const
ePDF::xDistributions
The "xDistribution" class.
Definition: xdistributions.h:41
ePDF::xDistributions::_contour
const std::string _contour
Definition: xdistributions.h:88
ePDF::xDistributions::gaussGSL
std::vector< double > gaussGSL(double const &a, double const &b)
ePDF::xDistributions::~xDistributions
~xDistributions()
The "xDistribution" destructor.
ePDF::evol_params::Q
double Q
Definition: xdistributions.h:25
ePDF::xDistributions::_p
evol_params _p
Definition: xdistributions.h:94
ePDF::xDistributions::Evolve
std::vector< double > Evolve(double const &x, double const &Q)
Function that returns the PDFs in x space.
ePDF::xDistributions::SetParameters
void SetParameters(evol_params const &p)
Function that sets the parameter structure externally.
Definition: xdistributions.h:88
ePDF::evol_params::x
double x
Definition: xdistributions.h:24
ePDF::xDistributions::trapezoid
std::vector< double > trapezoid(double const &a, double const &b) const
Integrators functions.
ePDF::evol_params::operator=
evol_params operator=(evol_params const &p)
Definition: xdistributions.h:28
ePDF::xDistributions::integrand
std::vector< double > integrand(double const &y) const
Interfaces to the integrand functions according to the path chosen to perform the inverse Mellin tran...
ePDF::xDistributions::_eps
const double _eps
Definition: xdistributions.h:93
ePDF::xDistributions::Moments
std::vector< std::complex< double > > Moments(std::complex< double > const &N, double const &Q) const
Function that returns the N-th (complex) moment of PDFs.
ndistributions.h
ePDF::xDistributions::straight
std::vector< double > straight(double const &y) const
ePDF::xDistributions::_integrator
const std::string _integrator
Definition: xdistributions.h:92
ePDF
Definition: alphaem.h:12
ePDF::xDistributions::xDistributions
xDistributions(YAML::Node const &config)
The "xDistribution" constructor.
ePDF::evol_params
The "evol_params" structure contains the evolution parameters.
Definition: xdistributions.h:22
ePDF::evol_params::id
int id
Definition: xdistributions.h:26