File indexing completed on 2025-04-19 09:10:07
0001 #ifndef MODEL_Main_Strong_Coupling_H
0002 #define MODEL_Main_Strong_Coupling_H
0003
0004 #include "MODEL/Main/Running_AlphaS.H"
0005 #include "ATOOLS/Math/Function_Base.H"
0006 #include "ATOOLS/Org/Return_Value.H"
0007
0008 namespace MODEL {
0009
0010 struct asform {
0011 enum code {
0012 constant = 0,
0013 frozen = 1,
0014 smooth = 2,
0015 IR0 = 3,
0016 GDH_inspired = 10
0017 };
0018 };
0019
0020 class Strong_Coupling : public ATOOLS::Function_Base {
0021 private:
0022 Running_AlphaS * p_as;
0023 asform::code m_form;
0024 double m_pt02;
0025 double m_beta0, m_Lambda, m_Lambda2, m_kappa2, m_pt2max;
0026
0027 double m_lastpt2, m_asmax, m_eta;
0028 double m_gamma, m_a, m_b, m_c, m_d, m_m2;
0029 double mg2(const double) const;
0030 double n(const double) const;
0031 public:
0032 Strong_Coupling(Running_AlphaS * as,const asform::code & asf,
0033 const double & pt02);
0034 double operator()(double q2,bool reweight=false) const;
0035 double Weight(const double & pt2,const bool & noless=false) const {
0036 return (*this)(noless?ATOOLS::Max(m_pt02,pt2):pt2)/m_asmax;
0037 }
0038 double MaxValue() const { return m_asmax; }
0039 double PT02() const { return m_pt02; }
0040 asform::code Form() const { return m_form; }
0041 };
0042 }
0043
0044 #endif