Source code for yadism.coefficient_functions.heavy.fl_nc

import LeProHQ
import numpy as np

from ..partonic_channel import RSL
from . import partonic_channel as pc
from .n3lo import interpolator


[docs] class GluonVV(pc.NeutralCurrentBase):
[docs] def NLO(self): """ |ref| implements :eqref:`D.2`, :cite:`felix-thesis`. """ def cg(z, _args): if self.is_below_pair_threshold(z): return 0.0 return ( self._FHprefactor / z * LeProHQ.cg0("FL", "VV", self._xi, self._eta(z)) ) return RSL(cg)
[docs] def NNLO(self): """ |ref| implements NLO (heavy) gluon coefficient function, :cite:`felix-thesis`. """ def cg(z, _args): if self.is_below_pair_threshold(z): return 0.0 return ( self._FHprefactor / z * (4.0 * np.pi) ** 2 * ( LeProHQ.cg1("FL", "VV", self._xi, self._eta(z)) + LeProHQ.cgBar1("FL", "VV", self._xi, self._eta(z)) * np.log(self._xi) ) ) return RSL(cg)
[docs] def N3LO(self): """|ref| implements NNLO (heavy) gluon coefficient function, from N.Laurenti thesis.""" coeff_iterpol = interpolator( "CLg", nf=self.nf, variation=self.n3lo_cf_variation ) def cg(z, _args): if self.is_below_pair_threshold(z): return 0.0 return coeff_iterpol(self._xi, self._eta(z)) return RSL(cg)
[docs] class GluonAA(GluonVV):
[docs] def NLO(self): """ |ref| implements :eqref:`D.5`, :cite:`felix-thesis`. """ def cg(z, _args): if self.is_below_pair_threshold(z): return 0.0 return ( self._FHprefactor / z * LeProHQ.cg0("FL", "AA", self._xi, self._eta(z)) ) return RSL(cg)
[docs] def NNLO(self): """ |ref| implements NLO (heavy) gluon coefficient function, :cite:`felix-thesis`. """ def cg(z, _args): if self.is_below_pair_threshold(z): return 0.0 return ( self._FHprefactor / z * (4.0 * np.pi) ** 2 * ( LeProHQ.cg1("FL", "AA", self._xi, self._eta(z)) + LeProHQ.cgBar1("FL", "AA", self._xi, self._eta(z)) * np.log(self._xi) ) ) return RSL(cg)
[docs] class SingletVV(pc.NeutralCurrentBase):
[docs] def NNLO(self): """ |ref| implements NLO (heavy) singlet coefficient function, :cite:`felix-thesis`. """ def cq(z, _args): if self.is_below_pair_threshold(z): return 0.0 return ( self._FHprefactor / z * (4.0 * np.pi) ** 2 * ( LeProHQ.cq1("FL", "VV", self._xi, self._eta(z)) + LeProHQ.cqBarF1("FL", "VV", self._xi, self._eta(z)) * np.log(self._xi) ) ) return RSL(cq)
[docs] def N3LO(self): """|ref| implements NNLO (heavy) singlet coefficient function, from N.Laurenti thesis.""" coeff_iterpol = interpolator( "CLq", nf=self.nf, variation=self.n3lo_cf_variation ) def cq(z, _args): if self.is_below_pair_threshold(z): return 0.0 return coeff_iterpol(self._xi, self._eta(z)) return RSL(cq)
[docs] class SingletAA(pc.NeutralCurrentBase):
[docs] def NNLO(self): """ |ref| implements NLO (heavy) singlet coefficient function, :cite:`felix-thesis`. """ def cq(z, _args): if self.is_below_pair_threshold(z): return 0.0 return ( self._FHprefactor / z * (4.0 * np.pi) ** 2 * ( LeProHQ.cq1("FL", "AA", self._xi, self._eta(z)) + LeProHQ.cqBarF1("FL", "AA", self._xi, self._eta(z)) * np.log(self._xi) ) ) return RSL(cq)
[docs] class NonSinglet(pc.NeutralCurrentBase):
[docs] def NNLO(self): """ |ref| implements NLO (heavy) non-singlet coefficient function, :cite:`felix-thesis`. """ def dq(z, _args): if self.is_below_pair_threshold(z): return 0.0 return ( self._FHprefactor / z * (4.0 * np.pi) ** 2 * (LeProHQ.dq1("FL", "VV", self._xi, self._eta(z))) ) def Adler(_x, _args): # add minus sign return -LeProHQ.Adler("FL", "VV", self._xi) return RSL(dq, loc=Adler)