10#include "LHAPDF/Utils.h"
11#include "LHAPDF/Exceptions.h"
12#include "LHAPDF/KnotArray.h"
112 virtual std::string
type()
const = 0;
135 std::vector<double>
_betas(
int nf)
const;
180 std::string
type()
const {
return "analytic"; }
220 std::string
type()
const {
return "ipol"; }
279 std::string
type()
const {
return "ode"; }
308 double _derivative(
double t,
double y,
const std::vector<double>& beta)
const;
312 double _decouple(
double y,
double t,
unsigned int ni,
unsigned int nf)
const;
315 void _rk4(
double& t,
double& y,
double h,
const double allowed_change,
const vector<double>& bs)
const;
318 void _solve(
double q2,
double& t,
double& y,
const double& allowed_relative,
double h,
double accuracy)
const;
325 mutable std::vector<double>
_q2s;
Calculate alpha_s(Q2) by an analytic approximation.
Definition AlphaS.h:176
int _nfmin
Min number of flavors.
Definition AlphaS.h:207
int _nfmax
Max number of flavors.
Definition AlphaS.h:205
int numFlavorsQ2(double q2) const
Analytic has its own numFlavorsQ2 which respects the min/max nf set by the Lambdas.
void setLambda(unsigned int i, double lambda)
Set lambda_i (for i = flavour number)
std::string type() const
Implementation type of this solver.
Definition AlphaS.h:180
double alphasQ2(double q2) const
Calculate alphaS(Q2)
double _lambdaQCD(int nf) const
Get lambdaQCD for nf.
void _setFlavors()
Recalculate min/max flavors in case lambdas have changed.
std::map< int, double > _lambdas
LambdaQCD values.
Definition AlphaS.h:202
double _interpolateCubic(double T, double VL, double VDL, double VH, double VDH) const
Standard cubic interpolation formula.
void setQValues(const std::vector< double > &qs)
double alphasQ2(double q2) const
Calculate alphaS(Q2)
double _ddq_central(size_t i) const
Get the gradient for a patch in the middle of the grid.
double _ddq_forward(size_t i) const
Get the gradient for a patch at the low end of the grid.
double _ddq_backward(size_t i) const
Get the gradient for a patch at the high end of the grid.
std::map< double, AlphaSArray > _knotarrays
Definition AlphaS.h:263
void _setup_grids() const
void setAlphaSValues(const std::vector< double > &as)
Definition AlphaS.h:242
std::string type() const
Implementation type of this solver.
Definition AlphaS.h:220
std::vector< double > _as
Array of alpha_s values for the Q2 knots.
Definition AlphaS.h:268
std::vector< double > _q2s
Array of ipol knots in Q2.
Definition AlphaS.h:266
void setQ2Values(const std::vector< double > &q2s)
Definition AlphaS.h:235
Solve the differential equation in alphaS using an implementation of RK4.
Definition AlphaS.h:275
AlphaS_Ipol _ipol
The interpolation used to get Alpha_s after the ODE has been solved.
Definition AlphaS.h:331
void _interpolate() const
Create interpolation grid.
void setAlphaSMZ(double alphas)
Set alpha_s(MZ), and also the caching flag.
Definition AlphaS.h:288
void setMassReference(double mref)
Set reference mass, and also the caching flag.
Definition AlphaS.h:291
void setMZ(double mz)
Set MZ, and also the caching flag.
Definition AlphaS.h:285
void _solve(double q2, double &t, double &y, const double &allowed_relative, double h, double accuracy) const
Solve alpha_s for q2 using RK4.
double alphasQ2(double q2) const
Calculate alphaS(Q2)
bool _calculated
Whether or not the ODE has been solved yet.
Definition AlphaS.h:328
void setQ2Values(std::vector< double > q2s)
Set the array of Q2 values for interpolation, and also the caching flag.
Definition AlphaS.h:302
double _decouple(double y, double t, unsigned int ni, unsigned int nf) const
std::string type() const
Implementation type of this solver.
Definition AlphaS.h:279
double _derivative(double t, double y, const std::vector< double > &beta) const
Calculate the derivative at Q2 = t, alpha_S = y.
std::vector< double > _q2s
Vector of Q2s in case specific anchor points are used.
Definition AlphaS.h:325
void setQValues(const std::vector< double > &qs)
Set the array of Q values for interpolation, and also the caching flag.
void setAlphaSReference(double alphas)
Set alpha_s(MZ), and also the caching flag.
Definition AlphaS.h:294
void _rk4(double &t, double &y, double h, const double allowed_change, const vector< double > &bs) const
Calculate the next step using RK4 with adaptive step size.
Calculator interface for computing alpha_s(Q2) in various ways.
Definition AlphaS.h:24
int numFlavorsQ(double q) const
Calculate the number of active flavours at energy scale Q.
Definition AlphaS.h:50
double quarkMass(int id) const
Get a quark mass by PDG code.
virtual std::string type() const =0
Get the implementation type of this AlphaS.
void setQuarkMass(int id, double value)
Set quark masses by PDG code.
AlphaS()
Base class constructor for default param setup.
virtual ~AlphaS()
Destructor.
Definition AlphaS.h:31
double quarkThreshold(int id) const
Get a flavor scale threshold by PDG code.
double _mz
Mass of the Z boson in GeV.
Definition AlphaS.h:146
FlavorScheme
Enum of flavor schemes.
Definition AlphaS.h:109
double alphasQ(double q) const
Calculate alphaS(Q)
Definition AlphaS.h:37
virtual int numFlavorsQ2(double q2) const
Calculate the number of active flavours at energy scale Q2.
void setMassReference(double mref)
Set the Z mass used in this alpha_s.
Definition AlphaS.h:96
virtual void setLambda(unsigned int, double)
Set the {i}th Lambda constant for i active flavors.
Definition AlphaS.h:106
int orderQCD()
Definition AlphaS.h:76
double _mreference
Reference mass in GeV.
Definition AlphaS.h:152
int _qcdorder
Order of QCD evolution (expressed as number of loops)
Definition AlphaS.h:143
bool _customref
Decides whether to use custom reference values or fall back on MZ/AlphaS_MZ.
Definition AlphaS.h:158
FlavorScheme _flavorscheme
The flavor scheme in use.
Definition AlphaS.h:166
void setAlphaSMZ(double alphas)
Set the alpha_s(MZ) used in this alpha_s.
Definition AlphaS.h:91
void setOrderQCD(int order)
Set the order of QCD (expressed as number of loops)
Definition AlphaS.h:81
std::vector< double > _betas(int nf) const
double _alphas_reference
Value of alpha_s(reference mass)
Definition AlphaS.h:155
double _alphas_mz
Value of alpha_s(MZ)
Definition AlphaS.h:149
int _fixflav
The allowed numbers of flavours in a fixed scheme.
Definition AlphaS.h:169
void setQuarkThreshold(int id, double value)
Set a flavor threshold by PDG code (= quark masses by default)
double _beta(int i, int nf) const
void setAlphaSReference(double alphas)
Set the alpha_s(MZ) used in this alpha_s.
Definition AlphaS.h:101
void setMZ(double mz)
Set the Z mass used in this alpha_s.
Definition AlphaS.h:86
virtual double alphasQ2(double q2) const =0
FlavorScheme flavorScheme() const
Get flavor scheme.
Definition AlphaS.h:118
void setFlavorScheme(FlavorScheme scheme, int nf=-1)
Set flavor scheme of alpha_s solver.
std::map< int, double > _quarkmasses
Definition AlphaS.h:163
Namespace for all LHAPDF functions and classes.
Definition AlphaS.h:14