Strong Coupling
eko
can be used to compute the value of the strong coupling at a given scale, in this tutorial we show how to do it.
In eko
the running of \(\alpha_s\) is managed by an independent class eko.couplings.Couplings
.
To instantiate this object you need to specify at least the boundary conditions on \(\alpha_s(\mu_{R,0})\) (alphas
,scale
), the masses of the heavy quarks with the relative thresholds ratios (heavy_quark_masses
, thresholds_ratios
), and the (QCD,QED) perturbative order (order
).
See here for detailed API.
[1]:
import numpy as np
from eko.couplings import Couplings
from eko.quantities.couplings import CouplingsInfo, CouplingEvolutionMethod
from eko.quantities.heavy_quarks import MatchingScales, QuarkMassScheme
# set the (alpha_s, alpha_em) reference values
couplings_ref = CouplingsInfo(
alphas=0.118, alphaem=0.007496252, scale=91.0, num_flavs_ref=None, max_num_flavs=5
)
# set heavy quark masses and their threshold ratios
heavy_quark_masses = np.power([1.51, 4.92, 172.0],2)
thresholds_ratios = np.array([1.0, 1.0, 1.0])
# set (QCD,QED) perturbative order
order = (3, 1)
sc = Couplings(
couplings_ref,
order,
CouplingEvolutionMethod.EXACT,
heavy_quark_masses,
QuarkMassScheme.POLE,
thresholds_ratios,
)
Now evaluating \(\alpha_s\) at different scale it’s rather simple, as you just need to call the method eko.couplings.Couplings.a_s
.
Warning: this will return the value of \(a_s\), but the class takes \(\alpha_s\) as input!
[2]:
target_scale = 10.0 ** 2
a_s = sc.a_s(target_scale)
print("The value of alpha_s at Q^2=100 GeV^2 is: ", 4. * np.pi * a_s)
The value of alpha_s at Q^2=100 GeV^2 is: 0.17804304498411003
You can read more about the strong coupling running in the relative documentation
To see how the flavor path are sorted, you can read this page