Source code for eko.gamma

r"""The |QCD| gamma function coefficients.

See :doc:`pQCD ingredients </theory/pQCD>`.
"""

import numba as nb

from eko.constants import zeta3, zeta4, zeta5


[docs] @nb.njit(cache=True) def gamma_qcd_as1(): r"""Compute the first coefficient of the |QCD| gamma function. Implements :eqref:`15` of :cite:`Vermaseren:1997fq`. Returns ------- gamma_0 : float first coefficient of the |QCD| gamma function :math:`\gamma_{m,0}^{n_f}` """ return 4.0
[docs] @nb.njit(cache=True) def gamma_qcd_as2(nf): r"""Compute the second coefficient of the |QCD| gamma function. Implements :eqref:`15` of :cite:`Vermaseren:1997fq`. Parameters ---------- nf : int number of active flavors Returns ------- gamma_1 : float second coefficient of the |QCD| gamma function :math:`\gamma_{m,1}^{n_f}` """ return 202.0 / 3.0 - 20.0 / 9.0 * nf
[docs] @nb.njit(cache=True) def gamma_qcd_as3(nf): r"""Compute the third coefficient of the |QCD| gamma function. Implements :eqref:`15` of :cite:`Vermaseren:1997fq`. Parameters ---------- nf : int number of active flavors Returns ------- gamma_2 : float third coefficient of the |QCD| gamma function :math:`\gamma_{m,2}^{n_f}` """ return 1249.0 - (2216.0 / 27.0 + 160.0 / 3.0 * zeta3) * nf - 140.0 / 81.0 * nf**2
[docs] @nb.njit(cache=True) def gamma_qcd_as4(nf): r"""Compute the fourth coefficient of the |QCD| gamma function. Implements :eqref:`15` of :cite:`Vermaseren:1997fq`. Parameters ---------- nf : int number of active flavors Returns ------- gamma_3 : float fourth coefficient of the |QCD| gamma function :math:`\gamma_{m,3}^{n_f}` """ return ( 4603055.0 / 162.0 + 135680.0 * zeta3 / 28.0 - 8800.0 * zeta5 + ( -91723.0 / 27.0 - 34192.0 * zeta3 / 9.0 + 880.0 * zeta4 + 18400.0 * zeta5 / 9.0 ) * nf + (5242.0 / 243.0 + 800.0 * zeta3 / 9.0 - 160.0 * zeta4 / 3.0) * nf**2 + (332.0 / 243.0 + 64.0 * zeta3 / 27.0) * nf**3 )
[docs] @nb.njit(cache=True) def gamma(order, nf): """Compute the value of a |QCD| gamma coefficient. Parameters ---------- order: int perturbative order nf : int number of active flavors Returns ------- gamma : float |QCD| gamma function coefficient """ _gamma = 0.0 if order == 1: _gamma = gamma_qcd_as1() elif order == 2: _gamma = gamma_qcd_as2(nf) elif order == 3: _gamma = gamma_qcd_as3(nf) elif order == 4: _gamma = gamma_qcd_as4(nf) else: raise ValueError("QCD gamma coefficients beyond N3LO are not implemented!") return _gamma