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