Source code for ekore.anomalous_dimensions.unpolarized.space_like.as4

"""The |N3LO| Altarelli-Parisi splitting kernels.

For further documentation see :doc:`N3LO anomalous dimensions
<../../../theory/N3LO_ad>`
"""

import numba as nb
import numpy as np

from . import fhmruvv as fhmruvv
from .ggg import gamma_gg
from .ggq import gamma_gq
from .gnsm import gamma_nsm
from .gnsp import gamma_nsp
from .gnsv import gamma_nsv
from .gps import gamma_ps
from .gqg import gamma_qg


[docs] @nb.njit(cache=True) def gamma_singlet(N, nf, cache, variation): r"""Compute the |N3LO| singlet anomalous dimension matrix. .. math:: \gamma_S^{(3)} = \left(\begin{array}{cc} \gamma_{qq}^{(3)} & \gamma_{qg}^{(3)}\\ \gamma_{gq}^{(3)} & \gamma_{gg}^{(3)} \end{array}\right) Parameters ---------- N : complex Mellin moment nf : int Number of active flavors cache: numpy.ndarray Harmonic sum cache variation : tuple |N3LO| anomalous dimension variation ``(gg, gq, qg, qq)`` Returns ------- numpy.ndarray |N3LO| singlet anomalous dimension matrix :math:`\gamma_{S}^{(3)}(N)` """ gamma_qq = gamma_nsp(N, nf, cache) + gamma_ps(N, nf, cache, variation[3]) gamma_S_0 = np.array( [ [gamma_qq, gamma_qg(N, nf, cache, variation[2])], [ gamma_gq(N, nf, cache, variation[1]), gamma_gg(N, nf, cache, variation[0]), ], ], np.complex_, ) return gamma_S_0
[docs] @nb.njit(cache=True) def gamma_singlet_qed(N, nf, cache, variation): r"""Compute the leading-order singlet anomalous dimension matrix for the unified evolution basis. .. math:: \\gamma_S^{(3,0)} = \\left(\begin{array}{cccc} \\gamma_{gg}^{(3,0)} & 0 & \\gamma_{gq}^{(3,0)} & 0\\ 0 & 0 & 0 & 0 \\ \\gamma_{qg}^{(3,0)} & 0 & \\gamma_{qq}^{(3,0)} & 0 \\ 0 & 0 & 0 & \\gamma_{qq}^{(3,0)} \\ \\end{array}\right) Parameters ---------- N : complex Mellin moment nf : int Number of active flavors cache: numpy.ndarray Harmonic sum cache Returns ------- numpy.ndarray Leading-order singlet anomalous dimension matrix :math:`\\gamma_{S}^{(3,0)}(N)` """ gamma_np_p = gamma_nsp(N, nf, cache) gamma_qq = gamma_np_p + gamma_ps(N, nf, cache, variation[3]) gamma_S = np.array( [ [ gamma_gg(N, nf, cache, variation[0]), 0.0 + 0.0j, gamma_gq(N, nf, cache, variation[1]), 0.0 + 0.0j, ], [0.0 + 0.0j, 0.0 + 0.0j, 0.0 + 0.0j, 0.0 + 0.0j], [gamma_qg(N, nf, cache, variation[2]), 0.0 + 0.0j, gamma_qq, 0.0 + 0.0j], [0.0 + 0.0j, 0.0 + 0.0j, 0.0 + 0.0j, gamma_np_p], ], np.complex_, ) return gamma_S
[docs] @nb.njit(cache=True) def gamma_valence_qed(N, nf, cache): r"""Compute the leading-order valence anomalous dimension matrix for the unified evolution basis. .. math:: \\gamma_V^{(3,0)} = \\left(\begin{array}{cc} \\gamma_{nsV}^{(3,0)} & 0\\ 0 & \\gamma_{ns-}^{(3,0)} \\end{array}\right) Parameters ---------- N : complex Mellin moment nf : int Number of active flavors cache: numpy.ndarray Harmonic sum cache Returns ------- numpy.ndarray Leading-order singlet anomalous dimension matrix :math:`\\gamma_{V}^{(3,0)}(N)` """ gamma_V = np.array( [ [gamma_nsv(N, nf, cache), 0.0], [0.0, gamma_nsm(N, nf, cache)], ], np.complex_, ) return gamma_V