Source code for eko.constants

"""Sets the physical constants."""

import numba as nb
import numpy as np
from scipy.special import zeta

NC = 3
"""The number of colors."""

TR = float(1.0 / 2.0)
"""The normalization of fundamental generators.

Defaults to :math:`T_R = 1/2`.
"""

CA = float(NC)
"""Second Casimir constant in the adjoint representation.

Defaults to :math:`N_C = 3`.
"""

CF = float((NC * NC - 1.0) / (2.0 * NC))
r"""Second Casimir constant in the fundamental representation.

Defaults to :math:`\frac{N_C^2-1}{2N_C} = 4/3`.
"""

MTAU = 1.777
"""Mass of the tau."""

eu2 = 4.0 / 9
"""Up quarks charge squared."""

ed2 = 1.0 / 9
"""Down quarks charge squared."""


zeta2 = zeta(2)
r""":math:`\zeta(2)`"""

zeta3 = zeta(3)
r""":math:`\zeta(3)`"""

zeta4 = zeta(4)
r""":math:`\zeta(4)`"""

zeta5 = zeta(5)
r""":math:`\zeta(5)`"""

log2 = np.log(2)
r""":math:`\ln(2)`"""

li4half = 0.517479
""":math:`Li_{4}(1/2)`"""


[docs] def update_colors(nc): """Update the number of colors to :math:`NC = nc`. The Casimirs for a generic value of :math:`NC` are consistenly updated as well. Parameters ---------- nc : int Number of colors """ global NC, CA, CF # pylint: disable=global-statement NC = int(nc) CA = float(NC) CF = float((NC * NC - 1.0) / (2.0 * NC))
[docs] @nb.njit(cache=True) def uplike_flavors(nf): """Compute the number of up flavors. Parameters ---------- nf : int Number of active flavors Returns ------- nu : int """ if nf > 6: raise NotImplementedError("Selected nf is not implemented") nu = nf // 2 return nu
[docs] @nb.njit(cache=True) def charge_combinations(nf): """ Compute the combination of charges. Parameters ---------- nf : int Number of active flavors Returns ------- e2avg : float vue2m : float vde2m : float """ nu = uplike_flavors(nf) nd = nf - nu e2avg = (nu * eu2 + nd * ed2) / nf vue2m = nu / nf * (eu2 - ed2) vde2m = nd / nf * (eu2 - ed2) e2delta = vde2m - vue2m + e2avg return e2avg, vue2m, vde2m, e2delta