diff --git a/doc/source/refs.bib b/doc/source/refs.bib index d249b2f7c..e6796d738 100644 --- a/doc/source/refs.bib +++ b/doc/source/refs.bib @@ -1010,3 +1010,14 @@ @article{Gehrmann:2023cqm month = "8", year = "2023" } + +@article{Falcioni:2023tzp, + author = "Falcioni, G. and Herzog, F. and Moch, S. and Vermaseren, J. and Vogt, A.", + title = "{The double fermionic contribution to the four-loop quark-to-gluon splitting function}", + eprint = "2310.01245", + archivePrefix = "arXiv", + primaryClass = "hep-ph", + reportNumber = "ZU-TH 62/23, DESY 23-146, Nikhef 2023-015, LTH 1353", + month = "10", + year = "2023" +} diff --git a/doc/source/theory/N3LO_ad.rst b/doc/source/theory/N3LO_ad.rst index b63fa83cd..6cee0e11a 100644 --- a/doc/source/theory/N3LO_ad.rst +++ b/doc/source/theory/N3LO_ad.rst @@ -195,8 +195,11 @@ the following terms: The parts proportional to :math:`n_f^3` are known analytically :cite:`Davies:2016jie` and have been included so far. -For the :math:`n_f^2` only the :math:`\gamma_{qq,ps}` component -have been computed in :cite:`Gehrmann:2023cqm` and it's used in our code. +For :math:`\gamma_{qq,ps}` and :math:`\gamma_{gq}` also the component +proportional to :math:`n_f^2` has been computed in :cite:`Gehrmann:2023cqm` +and :cite:`Falcioni:2023tzp` respectively and it's used in our code +through an approximations obtained with 30 moments. + The other parts are approximated using some known limits: * The small-x limit, given in the large :math:`N_c` approximation by @@ -337,9 +340,6 @@ final reduced sets of candidates. Note that this table refers only to the :math:`n_f^0` part where we assume no violation of the scaling with :math:`\gamma_{gg}` also for the |NLL| term, to help the convergence. We expect that any possible deviation can be parametrized as a shift in the |NNLL| terms and in the |NLL| :math:`n_f^1` which are free to vary independently. - Furthermore for the part :math:`\propto n_f^2` we adopt a slightly different - basis to account fot the fact that the leading - contribution for the pole at :math:`N=1` is :math:`\frac{1}{(N-1)^2}`. Slightly different choices are performed for :math:`\gamma_{gq}^{(3)}` and :math:`\gamma_{qq,ps}^{(3)}` where 10 moments are known. In this case we can select a larger number of functions in group 3 diff --git a/src/ekore/anomalous_dimensions/unpolarized/space_like/as4/ggq.py b/src/ekore/anomalous_dimensions/unpolarized/space_like/as4/ggq.py index 7bfa6f975..688472289 100644 --- a/src/ekore/anomalous_dimensions/unpolarized/space_like/as4/ggq.py +++ b/src/ekore/anomalous_dimensions/unpolarized/space_like/as4/ggq.py @@ -5,7 +5,21 @@ import numpy as np from .....harmonics import cache as c -from .....harmonics.log_functions import lm11, lm12, lm13, lm14, lm15 +from .....harmonics.log_functions import ( + lm11, + lm11m1, + lm11m2, + lm12, + lm12m1, + lm12m2, + lm13, + lm13m1, + lm13m2, + lm14, + lm14m1, + lm14m2, + lm15, +) @nb.njit(cache=True) @@ -220,6 +234,9 @@ def gamma_gq_nf1(n, cache, variation): def gamma_gq_nf2(n, cache, variation): r"""Return the part proportional to :math:`nf^2` of :math:`\gamma_{gq}^{(3)}`. + This therm is parametrized using the analytic result from :cite:`Falcioni:2023tzp` + with an higher number of moments (30). + Parameters ---------- n : complex @@ -239,62 +256,49 @@ def gamma_gq_nf2(n, cache, variation): S2 = c.get(c.S2, cache, n) S3 = c.get(c.S3, cache, n) S4 = c.get(c.S4, cache, n) - S5 = c.get(c.S5, cache, n) - S2m2 = ((-1 + 2 * n - 2 * n**2)/((-1 + n)**2 * n**2) + S2)/n - S1m2 = ((1 - 2 * n)/((-1 + n) * n) + S1)/n - common = 778.5349794238683/np.power(n,5) - 0.877914951989026*lm14(n,S1,S2,S3,S4) - if variation == 1: - fit = -186.22900377040247/(-1. + n) - 478.90721340293356/np.power(n,4) + (5.74075848054696*np.power(S1,3))/n + 170.87183353958662*S2m2 - elif variation == 2: - fit = -248.28454175688805/(-1. + n) + 263.22625305579476/np.power(n,3) + (5.278865453482085*np.power(S1,3))/n + 221.25799463997834*S2m2 - elif variation == 3: - fit = -232.99196870519415/(-1. + n) + 68.15727099578979/np.power(n,2) + (5.617467427605377*np.power(S1,3))/n + 202.02639746547175*S2m2 - elif variation == 4: - fit = -161.46175750229568/(-1. + n) - 108.70565119071854/n + (5.535649437328786*np.power(S1,3))/n + 226.91533534247935*S2m2 - elif variation == 5: - fit = (-147.71749614319918 - 250.09753306427467*n)/(-1. + np.power(n,2)) + (5.6282544701748725*np.power(S1,3))/n + 211.98468116923237*S2m2 - elif variation == 6: - fit = -205.26097869205503/(-1. + n) - 43.35630496864558/(2. + n) + (5.7048179330688145*np.power(S1,3))/n + 208.5696158709912*S2m2 - elif variation == 7: - fit = -234.10693324364027/(-1. + n) + 159.4893065978856/np.power(1. + n,2) + (5.874207114101223*np.power(S1,3))/n + 194.5753133344904*S2m2 - elif variation == 8: - fit = -226.56856342946034/(-1. + n) + 291.54105675473517/np.power(1. + n,3) + (5.509672201751474*np.power(S1,3))/n + 202.1225370231326*S2m2 - elif variation == 9: - fit = -205.1517730350374/(-1. + n) + (6.074404744837193*np.power(S1,3))/n + 208.37171735240508*S2m2 + 15.429279525384134*lm11(n,S1) - elif variation == 10: - fit = -207.91187255591723/(-1. + n) + (6.817083410967055*np.power(S1,3))/n + 206.74879115899574*S2m2 - 5.751503069858567*lm12(n,S1,S2) - elif variation == 11: - fit = -206.30272097177453/(-1. + n) + (8.664282354210393*np.power(S1,3))/n + 207.84355844549347*S2m2 + 2.629587586332136*lm13(n,S1,S2,S3) - elif variation == 12: - fit = -210.6746472670261/(-1. + n) - (6.837287160307751*np.power(S1,2))/n + (7.047952977901978*np.power(S1,3))/n + 205.24544813934457*S2m2 - elif variation == 13: - fit = -1916.1103405421652/np.power(n,4) - 789.943403334499/np.power(n,3) + (7.126901942835579*np.power(S1,3))/n + 19.662692663483778*S2m2 - elif variation == 14: - fit = -2386.1090637317598/np.power(n,4) - 271.4297670165366/np.power(n,2) + (6.231753223826018*np.power(S1,3))/n + 46.80178342814188*S2m2 - elif variation == 15: - fit = 3122.074998548171/np.power(n,4) - 817.375694750788/n + (4.198509803834483*np.power(S1,3))/n + 592.272153767969*S2m2 - elif variation == 16: - fit = -7513.36216027104/np.power(n,4) + 751.9074019187506/(1. + n) + (7.3932798253001035*np.power(S1,3))/n - 433.0164903242173*S2m2 - elif variation == 17: - fit = -5165.042709988898/np.power(n,4) + 424.2440164363194/(2. + n) + (6.092438869963565*np.power(S1,3))/n - 198.00320317266343*S2m2 - elif variation == 18: - fit = -2341.694811608125/np.power(n,4) - 620.3596313904335/np.power(1. + n,2) + (5.221688287772126*np.power(S1,3))/n + 78.67328868471006*S2m2 - elif variation == 19: - fit = -2689.7993005817502/np.power(n,4) - 1345.9095988275376/np.power(1. + n,3) + (6.807576458948666*np.power(S1,3))/n + 26.60185572989274*S2m2 - elif variation == 20: - fit = -5192.086981291262/np.power(n,4) + (2.457168719366107*np.power(S1,3))/n - 198.18440269638717*S2m2 - 151.8477192594809*lm11(n,S1) - elif variation == 21: - fit = -4592.127384254676/np.power(n,4) - (3.5035403946824317*np.power(S1,3))/n - 137.2668238433194*S2m2 + 49.39829214844644*lm12(n,S1,S2) - elif variation == 22: - fit = -4921.851803874727/np.power(n,4) - (21.38151952256833*np.power(S1,3))/n - 172.1243055327945*S2m2 - 24.395355958105238*lm13(n,S1,S2,S3) - elif variation == 23: - fit = -4127.263341266998/np.power(n,4) + (52.087038597781934*np.power(S1,2))/n - (4.217561046210457*np.power(S1,3))/n - 90.9893035495142*S2m2 - elif variation == 24: - fit = -3424.992789569337/np.power(n,4) + (4.497110919064199*np.power(S1,3))/n + 69.36715493145202*S1m2 - 65.19066024035324*S2m2 - else: - fit = -96.87269837207046/(-1. + n) - 1734.4697042431458/np.power(n,4) - 21.946547928279337/np.power(n,3) - 8.469687334197783/np.power(n,2) - 38.586722747562774/n - 43.93202258636677/np.power(1. + n,3) - 19.202930199689494/np.power(1. + n,2) + 31.32947507994794/(1. + n) + 15.870321311153074/(2. + n) + (-6.1548956726333 - 10.420730544344778*n)/(-1. + np.power(n,2)) + (1.8854063098947575*np.power(S1,2))/n + (3.934050962226076*np.power(S1,3))/n + 2.890298122143834*S1m2 + 80.65707534985623*S2m2 - 5.684101655587364*lm11(n,S1) + 1.818616211607828*lm12(n,S1,S2) - 0.9069070154905459*lm13(n,S1,S2,S3) - return common + fit - + Lm11 = lm11(n,S1) + Lm12 = lm12(n,S1, S2) + Lm13 = lm13(n,S1, S2, S3) + Lm14 = lm14(n,S1, S2, S3, S4) + Lm11m1 = lm11m1(n, S1) + Lm12m1 = lm12m1(n, S1, S2) + Lm13m1 = lm13m1(n, S1, S2, S3) + Lm14m1 = lm14m1(n, S1, S2, S3, S4) + Lm11m2 = lm11m2(n, S1) + Lm12m2 = lm12m2(n, S1, S2) + Lm13m2 = lm13m2(n, S1, S2, S3) + Lm14m2 = lm14m2(n, S1, S2, S3, S4) + return ( + -(70.60121231446594/(-1. + n)**2) + - 699.5449657900476/(-1. + n) + + 617.4606265472538/n**5 + + 21.0418422974213/n**4 + + 656.9409510996688/n**3 + + 440.98264702900605/n**2 + - 485.09325526270226/n + + 468.97972206118425/(1 + n)**2 + + 131.12265149192916/(1 + n) + - 284.0960143480868/(2 + n)**2 + + 189.98763175661884/(2 + n) + + 355.07676818390956/(3 + n)**2 + + 259.2485292950681/(3 + n) + + 592.4002328363352/(n + n**2) + + 54.543536161068644/(3 + 4 * n + n**2) + - 62.424886245567585/(6 + 5 * n + n**2) + + 154.10095015747495 * (1/n - n/(2 + 3 * n + n**2)) + - 645.1788277783346 * Lm11 + + 32.22330776302828 * Lm11m1 + - 476.25599212133864 * Lm11m2 + - 212.9330738830414 * Lm12 + - 93.58928584449357 * Lm12m1 + + 105.52933047599603 * Lm12m2 + - 26.13260173754001 * Lm13 + - 22.482518440225107 * Lm13m1 + - 45.725204763960996 * Lm13m2 + - 0.877914951989026 * Lm14 + - 0.40377681107870367 * Lm14m1 + + 20.629383319025006 * Lm14m2 + ) @nb.njit(cache=True) def gamma_gq(n, nf, cache, variation): diff --git a/src/ekore/anomalous_dimensions/unpolarized/space_like/as4/gps.py b/src/ekore/anomalous_dimensions/unpolarized/space_like/as4/gps.py index 8440a23f1..e5c03ac2b 100644 --- a/src/ekore/anomalous_dimensions/unpolarized/space_like/as4/gps.py +++ b/src/ekore/anomalous_dimensions/unpolarized/space_like/as4/gps.py @@ -136,7 +136,7 @@ def gamma_ps_nf2(n, cache): r"""Return the part proportional to :math:`nf^2` of :math:`\gamma_{ps}^{(3)}`. This therm is parametrized using the analytic result from :cite:`Gehrmann:2023cqm` - with an higher number of moments. + with an higher number of moments (30). Parameters ---------- @@ -165,26 +165,33 @@ def gamma_ps_nf2(n, cache): Lm13m2 = lm13m2(n, S1, S2, S3) Lm14m2 = lm14m2(n, S1, S2, S3, S4) return ( - -143.80101891221028 * (-(1 / (-1 + n) ** 2) + 1 / n**2) - - 165.24039012940008 / (n + n**2) - + 78.93267740308922 / (3 + 4 * n + n**2) - + 225.97795863158177 / (6 + 5 * n + n**2) - + 268.99119754384145 * (1 / n**7 - 1 / (1 + n) ** 7) - + 237.60599547200601 * (-(1 / n**6) + 1 / (1 + n) ** 6) - - 254.40839573210843 * (1 / n**5 - 1 / (1 + n) ** 5) - - 17.030956589959207 * (-(6 / n**4) + 6 / (1 + n) ** 4) - + 65.47972332907304 * (2 / n**3 - 2 / (1 + n) ** 3) - + 242.88446317138616 * (-(1 / n**2) + 1 / (1 + n) ** 2) - - 37.468777563039694 * (1 / n - n / (2 + 3 * n + n**2)) - + 40.70235212460574 * Lm11m1 - - 263.64555485424614 * Lm11m2 - - 3.709403904895335 * Lm12m1 - + 259.6865781968975 * Lm12m2 - - 15.219721657239077 * Lm13m1 - - 70.02572185985966 * Lm13m2 - - 2.518161564644865 * Lm14m1 - + 25.256870076087985 * Lm14m2 - - 0.45434279552010853 * (1 / (n - 1) - 1 / n) + 114.43829930315756/(-1 + n)**2 + - 482.02078387833865/(n + n**2) + - 189.286751823932/(3 + 4 * n + n**2) + + 240.56786018072623/(6 + 5 * n + n**2) + - 693.3770662139755 * (1 / n**7 - 1 / (1 + n)**7) + - 378.3908520452082 * (-(1 / n**6) + 1 / (1 + n)**6) + - 914.6834189565818 * (1 / n**5 - 1 / (1 + n)**5) + + 13.600197369492934 * (-(6 / n**4) + 6 / (1 + n)**4) + - 69.77767807874679 * (2 / n**3 - 2 / (1 + n)**3) + + 684.9299795769539 * (-(1 / n**2) + 1 / (1 + n)**2) + - 160.76186945134114 * (1 / n - n / (2 + 3 * n + n**2)) + + 23.29094040522371 * Lm11m2 + - 2.0809106854377792 * Lm12m2 + - 6.14078307251059 * Lm13m2 + - 1.7777777777777777 * ( + -216.38233518950935 * Lm11m1 + - 75.17763559409342 * Lm12m1 + - 13.185185185185185 * Lm13m1 + - 1.6296296296296295 * Lm14m1 + ) - 4 * ( + 260.9049778489959 * Lm11m1 + + 87.34510160874684 * Lm12m1 + + 16 * Lm13m1 + + 1.6296296296296295 * Lm14m1 + ) + + 0.8477304323488296 * Lm14m2 + + 356.6141626634052 * (1 / (n - 1) - 1 / n) )