Skip to content

Commit

Permalink
Merge pull request #315 from NNPDF/upgrade_n3lo_nf2_splitting
Browse files Browse the repository at this point in the history
Add new result for ` nf^2` N3LO `P_gq` and improve `P_qqps`
  • Loading branch information
giacomomagni authored Oct 12, 2023
2 parents f39b012 + c40c83a commit 6e16534
Show file tree
Hide file tree
Showing 4 changed files with 105 additions and 83 deletions.
11 changes: 11 additions & 0 deletions doc/source/refs.bib
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
10 changes: 5 additions & 5 deletions doc/source/theory/N3LO_ad.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
118 changes: 61 additions & 57 deletions src/ekore/anomalous_dimensions/unpolarized/space_like/as4/ggq.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand All @@ -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):
Expand Down
49 changes: 28 additions & 21 deletions src/ekore/anomalous_dimensions/unpolarized/space_like/as4/gps.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
----------
Expand Down Expand Up @@ -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)
)


Expand Down

0 comments on commit 6e16534

Please sign in to comment.