Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new result for nf^2 N3LO P_gq and improve P_qqps #315

Merged
merged 2 commits into from
Oct 12, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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)
- 149.19191035886803 * (-(1 / (-1 + n) ** 2) + 1 / n**2)
- 228.3882413931727 / (n + n**2)
- 88.93021550686066 / (3 + 4 * n + n**2)
+ 106.72700718272613 / (6 + 5 * n + n**2)
- 38.78276246930032 * (1 / n**7 - 1 / (1 + n) ** 7)
+ 42.9183936861658 * (-(1 / n**6) + 1 / (1 + n) ** 6)
- 254.77528585848674 * (1 / n**5 - 1 / (1 + n) ** 5)
+ 5.747123518353713 * (-(6 / n**4) + 6 / (1 + n) ** 4)
+ 101.45537834785378 * (2 / n**3 - 2 / (1 + n) ** 3)
+ 224.49410835989104 * (-(1 / n**2) + 1 / (1 + n) ** 2)
- 75.65686765401239 * (1 / n - n / (2 + 3 * n + n**2))
+ 42.94731456077865 * Lm11m2
+ 4.938617671290096 * Lm12m2
- 4.891268702324476 * 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.9479766241511822 * Lm14m2
- 4.459650927062076 * (1 / (n - 1) - 1 / n)
)


Expand Down
Loading