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

N3LO ad variations #148

Merged
merged 97 commits into from
Apr 28, 2023
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
8db048a
init N3LO ad variations in ggg
giacomomagni Sep 13, 2022
a28bb2a
add new theory key to tests
giacomomagni Sep 13, 2022
bc44726
Update src/eko/evolution_operator/grid.py
giacomomagni Sep 13, 2022
a2383f3
fix bench to unity
giacomomagni Sep 13, 2022
5ecf220
Add variations to gamma gq
giacomomagni Sep 13, 2022
c391a17
Add ad N3LO variation to qqps and qg
giacomomagni Sep 15, 2022
b1aec72
fix mellin inversion Lm13m1
giacomomagni Sep 27, 2022
53a0bf8
update non singlet ad, due to change in Lm13m1
giacomomagni Sep 27, 2022
b70c435
add lm12 and lm14m1 to log functions
giacomomagni Oct 25, 2022
218f773
add replica varation to g qq ps
giacomomagni Oct 25, 2022
2d1e33e
updated docs
giacomomagni Oct 25, 2022
c2d4b87
Add variations for gq, gg, qg
giacomomagni Oct 28, 2022
b73cf0d
update qq ps variations
giacomomagni Nov 2, 2022
6b7b68e
promote m3lo_variation to tuple
giacomomagni Nov 2, 2022
1777287
update ggg
giacomomagni Nov 2, 2022
91ea94a
Merge branch 'develop' into feature/N3LO_ad_variations
giacomomagni Nov 2, 2022
7901278
test all the variations
giacomomagni Nov 2, 2022
6bc9785
fix test on as4 ad variations
giacomomagni Nov 2, 2022
c2704d5
Merge branch 'develop' into feature/N3LO_ad_variations
giacomomagni Nov 9, 2022
76634ba
Add all the nothebooks about ad N3LO estimation
giacomomagni Nov 14, 2022
cc542b4
Add buch of plotting scripts
giacomomagni Nov 14, 2022
f4e35e3
fix paths
giacomomagni Nov 14, 2022
58e9918
fix n3lo ad docs
giacomomagni Nov 14, 2022
e6ce1e8
fix n3lo_bench plotting path
giacomomagni Nov 14, 2022
e9c9724
Update gamma gg including the delta coefficient
giacomomagni Nov 14, 2022
42b571d
small update on gamma ggq
giacomomagni Nov 14, 2022
71c0407
update on gamma qg removing crazy replica
giacomomagni Nov 14, 2022
59b4148
fix folder name
giacomomagni Nov 14, 2022
a117de4
add some tests on small-x limit with MSHT
giacomomagni Nov 14, 2022
0391ddc
update banana version
giacomomagni Nov 14, 2022
41c9ba5
updated gq scaling
giacomomagni Nov 22, 2022
56e7c33
small fix in plotting utils
giacomomagni Dec 5, 2022
6deadfc
update splitting plotting script
giacomomagni Dec 5, 2022
5a859c7
add new parametrised computation of a_gg_3
giacomomagni Dec 5, 2022
654aefc
Merge branch 'develop' into feature/improve_matching_n3lo
giacomomagni Dec 6, 2022
e8f2206
improve n3lo aHg param
giacomomagni Dec 8, 2022
1df6149
rename aHgstfac to aHg_param
giacomomagni Dec 8, 2022
1aefe04
optmize apply pdf
giacomomagni Dec 8, 2022
2fc2b79
update n3lo matching tests
giacomomagni Dec 8, 2022
6d2d6d4
expand references
giacomomagni Dec 8, 2022
39d842b
Merge branch 'develop' into feature/N3LO_ad_variations
giacomomagni Dec 8, 2022
7bb6ae3
Merge branch 'develop' into feature/improve_matching_n3lo
giacomomagni Dec 8, 2022
b7a491c
Merge branch 'develop' into feature/improve_matching_n3lo
giacomomagni Dec 8, 2022
43f93c9
small fixes
giacomomagni Dec 8, 2022
93dff9d
keep eta coefficient in a_qq NS at N3LO
giacomomagni Dec 12, 2022
725e4aa
fix test accordingly
giacomomagni Dec 12, 2022
7414e19
improve aHq parametrization
giacomomagni Dec 12, 2022
f4c0b1f
better format
giacomomagni Dec 12, 2022
9216678
Merge branch 'develop' into feature/N3LO_ad_variations
giacomomagni Dec 12, 2022
775c438
Merge branch 'feature/N3LO_ad_variations' into feature/improve_matchi…
giacomomagni Dec 12, 2022
922eca1
remove not used agTF2.py
giacomomagni Dec 12, 2022
491c6ad
improve AqqNS paramterization accuracy
giacomomagni Dec 13, 2022
c89c029
improve AqqNS paramterization accuracy and test fix
giacomomagni Dec 13, 2022
8b2344e
Merge pull request #174 from NNPDF/feature/improve_matching_n3lo
giacomomagni Dec 13, 2022
1c0b065
keep broader unc in gamma_qg
giacomomagni Dec 19, 2022
540d2c3
improve docs
giacomomagni Jan 2, 2023
6e6d983
Update doc/source/theory/N3LO_ad.rst
giacomomagni Jan 5, 2023
a8a8305
Update doc/source/theory/N3LO_ad.rst
giacomomagni Jan 5, 2023
1e5657e
Update doc/source/theory/N3LO_ad.rst
giacomomagni Jan 5, 2023
140bbf5
Update doc/source/theory/N3LO_ad.rst
giacomomagni Jan 5, 2023
9e44ead
Adding mhou plot
giacomomagni Jan 13, 2023
35b5590
some update to mhou plots
giacomomagni Jan 17, 2023
beee26f
some update to mhou plots
giacomomagni Jan 17, 2023
85aa31c
Merge branch 'master' into feature/N3LO_ad_variations
giacomomagni Feb 7, 2023
515256d
update n3lo_ad_varion settings
giacomomagni Feb 8, 2023
471f3e7
update plotting scripts to new syntax
giacomomagni Feb 8, 2023
ee08bb7
fix number of candidates in tests
giacomomagni Feb 8, 2023
f6ce474
some cleaning
giacomomagni Feb 8, 2023
f04cb4a
fix gitignore
giacomomagni Feb 8, 2023
d020b3c
remove MSHT source file
giacomomagni Feb 8, 2023
2012c37
Merge branch 'master' into feature/N3LO_ad_variations
giacomomagni Feb 10, 2023
0fa8844
Fix LHA SV
felixhekhorn Feb 16, 2023
50413b6
Fix cite
felixhekhorn Feb 16, 2023
399d3b1
Apply present tense and remove some whitespace
felixhekhorn Feb 16, 2023
2159e7f
address FH review
giacomomagni Feb 16, 2023
bf11dd1
update gamma ps
giacomomagni Feb 24, 2023
b91e0bf
Update src/ekore/harmonics/log_functions.py
giacomomagni Feb 24, 2023
b23f83f
fix NLL tepr of pqg to pqq one
giacomomagni Feb 27, 2023
19cf60c
Merge branch 'master' into feature/N3LO_ad_variations
giacomomagni Mar 5, 2023
f55de37
fix mhou plot according to new scheme A convention
giacomomagni Mar 6, 2023
3450830
Merge branch 'feature/N3LO_ad_variations' of https://github.com/NNPDF…
giacomomagni Mar 6, 2023
f4a4d4a
fix tests
giacomomagni Mar 6, 2023
ec9c81f
Update doc/source/theory/N3LO_ad.rst
giacomomagni Mar 7, 2023
7b01604
Update doc/source/theory/N3LO_ad.rst
giacomomagni Mar 7, 2023
64ed429
Merge branch 'master' into feature/N3LO_ad_variations
giacomomagni Mar 10, 2023
0319d4d
update mathematica scripts
giacomomagni Mar 13, 2023
2953b3a
clean gitignore
giacomomagni Mar 13, 2023
9432b36
make apply pdf faster
giacomomagni Mar 13, 2023
2612566
more cleaning
giacomomagni Mar 13, 2023
be5e37c
Merge branch 'master' into feature/N3LO_ad_variations
felixhekhorn Mar 31, 2023
fdae1a5
Merge branch 'master' into feature/N3LO_ad_variations
giacomomagni Apr 14, 2023
3335fe7
minor fix on docs
giacomomagni Apr 17, 2023
b387a4e
Merge branch 'master' into feature/N3LO_ad_variations
giacomomagni Apr 21, 2023
af5adef
black and isort
giacomomagni Apr 21, 2023
9f3b14e
fix end of file
giacomomagni Apr 21, 2023
f64c2d3
white spaces
giacomomagni Apr 21, 2023
763f3da
fix alphas coupling in splitting functions plots
giacomomagni Apr 24, 2023
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
3 changes: 1 addition & 2 deletions benchmarks/lha_paper_bench.py
Original file line number Diff line number Diff line change
Expand Up @@ -248,8 +248,7 @@ def run_lha(self, theory_updates):
# Benchmark to LHA
obj = BenchmarkFFNS_polarized()
# obj = BenchmarkFFNS()

# obj.benchmark_plain(0)
# obj.benchmark_plain(1)
obj.benchmark_sv(1)

# # VFNS benchmarks with LHA settings
Expand Down
51 changes: 51 additions & 0 deletions doc/source/refs.bib
Original file line number Diff line number Diff line change
Expand Up @@ -830,3 +830,54 @@ @article{Falcioni:2023luc
month = "2",
year = "2023"
}
@article{Gluck:1995yr,
author = "Gluck, M. and Reya, E. and Stratmann, M. and Vogelsang, W.",
title = "{Next-to-leading order radiative parton model analysis of polarized deep inelastic lepton - nucleon scattering}",
eprint = "hep-ph/9508347",
archivePrefix = "arXiv",
reportNumber = "DO-TH-95-13, RAL-TR-95-042",
doi = "10.1103/PhysRevD.53.4775",
journal = "Phys. Rev. D",
volume = "53",
pages = "4775--4786",
year = "1996"
}

@article{Floratos:1981hs,
author = "Floratos, E. G. and Kounnas, C. and Lacaze, R.",
title = "{Higher Order QCD Effects in Inclusive Annihilation and Deep Inelastic Scattering}",
reportNumber = "LPTENS-81-3",
doi = "10.1016/0550-3213(81)90434-X",
journal = "Nucl. Phys. B",
volume = "192",
pages = "417--462",
year = "1981"
}

@article{Moch:2015usa,
author = "Moch, S. and Vermaseren, J. A. M. and Vogt, A.",
title = "{On \ensuremath{\gamma}5 in higher-order QCD calculations and the NNLO evolution of the polarized valence distribution}",
eprint = "1506.04517",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
reportNumber = "DESY-15-061, NIKHEF-15-018, LTH-1042",
doi = "10.1016/j.physletb.2015.07.027",
journal = "Phys. Lett. B",
volume = "748",
pages = "432--438",
year = "2015"
}

@article{Moch:2014sna,
author = "Moch, S. and Vermaseren, J. A. M. and Vogt, A.",
title = "{The Three-Loop Splitting Functions in QCD: The Helicity-Dependent Case}",
eprint = "1409.5131",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
reportNumber = "DESY-14-157, NIKHEF-14-033, LTH-1023",
doi = "10.1016/j.nuclphysb.2014.10.016",
journal = "Nucl. Phys. B",
volume = "889",
pages = "351--400",
year = "2014"
}
20 changes: 12 additions & 8 deletions doc/source/theory/N3LO_ad.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ N3LO Anomalous Dimensions
The |N3LO| |QCD| anomalous dimensions :math:`\gamma^{(3)}` are not yet fully known,
since they rely on the calculation of 4-loop |DIS| integrals.
Moreover, the analytical structure of these function is already known to be complicated
since in Mellin space it will included harmonics sum up to weight 7, for which an
since in Mellin space it include harmonics sum up to weight 7, for which an
giacomomagni marked this conversation as resolved.
Show resolved Hide resolved
analytical expression is not available.

Here, we describe the various assumptions and limits used in order to reconstruct a parametrization
Expand Down Expand Up @@ -331,21 +331,28 @@ final reduced sets of candidates.
* - :math:`f_4(N)`
- :math:`\frac{1}{N-1},\ \frac{1}{N^4},\ \frac{1}{N^3},\ \frac{1}{N^2},\ \frac{1}{N},\ \frac{1}{(N+1)^3},\ \frac{1}{(N+1)^2},\ \frac{1}{N+1},\ \frac{1}{N+2},\ \frac{S_1(N-2)}{N},\ \mathcal{M}[\ln^3(1-x)],\ \mathcal{M}[\ln^2(1-x)], \frac{S_1(N)}{N},\ \frac{S_1^2(N)}{N}`

Note that this table refers only to the :math:`n_f^0` part where we have assumed no violation of the scaling with :math:`\gamma_{gg}`
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 he |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}`.

.. list-table:: :math:`\gamma_{qg}^{(3)}` parametrization basis
:align: center

* - :math:`f_1(N)`
- :math:`\frac{1}{(N-1)^2}`
- :math:`\frac{1}{(N-1)}`
* - :math:`f_2(N)`
- :math:`\frac{S_1^3(N)}{N}`
* - :math:`f_3(N)`
- :math:`\frac{1}{N^4},\ \mathcal{M}[\ln^3(1-x)]`
- :math:`\frac{1}{N^3},\ \mathcal{M}[\ln^3(1-x)]`
* - :math:`f_4(N)`
- :math:`\frac{1}{N-1},\ \frac{1}{N^4},\ \frac{1}{N^3},\ \frac{1}{N^2},\ \frac{1}{N},\ \frac{1}{(N+1)^3},\ \frac{1}{(N+1)^2},\ \frac{1}{N+1},\ \frac{1}{N+2},\ \frac{S_1^2(N)}{N},\ \frac{S_1(N-2)}{N},\ \frac{S_1(N)}{N},\ \mathcal{M}[\ln^2(1-x)],\ \mathcal{M}[\ln^3(1-x)]`
- :math:`\frac{1}{N^4},\ \frac{1}{N^3},\ \frac{1}{N^2},\ \frac{1}{N},\ \frac{1}{(N+1)^3},\ \frac{1}{(N+1)^2},\ \frac{1}{N+1},\ \frac{1}{N+2},\ \frac{S_1^2(N)}{N},\ \frac{S_1(N-2)}{N},\ \frac{S_1(N)}{N},\ \mathcal{M}[\ln^2(1-x)],\ \mathcal{M}[\ln^3(1-x)]`

Also in this case we assume no violation of the scaling with :math:`\gamma_{qq}`
for the |NLL| term, which is extracted from using 10 moments :cite:`Falcioni:2023luc`
thus is known more precisely. We expect that any possible deviation can be parametrized as a shift in he |NNLL| terms.
giacomomagni marked this conversation as resolved.
Show resolved Hide resolved

Slightly different choices are performed for :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 All @@ -366,6 +373,3 @@ and following :cite:`Falcioni:2023luc` we use:

Note that for :math:`\gamma_{qq,ps},\gamma_{qg}` the parts proportional
to :math:`n_f^0` are not present.
Furthermore for the part :math:`\propto n_f^2` in :math:`\gamma_{gq}^{(3)}`
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}`.
29 changes: 15 additions & 14 deletions extras/n3lo_bench/plot_mhou.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,18 @@
plt.style.use(utils.load_style())


def build_gamma(g, order, q2, fact_sale, nf):
a_s = compute_a_s(q2, fact_scale=fact_sale, order=(order + 1, 0), nf=nf)
def build_gamma(g, order, q2, xif2, nf):
a_s = compute_a_s(q2, xif2=xif2, order=(order + 1, 0), nf=nf)
gamma = 0
for pto in range(order + 1):
gamma += g[:, pto] * a_s ** (pto + 1)
return gamma


def compute_mhou(g_min, g_max, g_central, q2, xif2_low, xif2_hig, order, nf):
gamma_low = build_gamma(g_min, order, q2 / xif2_low, q2, nf)
gamma_hig = build_gamma(g_max, order, q2 / xif2_hig, q2, nf)
# TODO: here you need two different instances of strong coupling
gamma_low = build_gamma(g_min, order, q2, xif2_low, nf)
gamma_hig = build_gamma(g_max, order, q2, xif2_hig, nf)
delta_low = gamma_low - g_central
delta_hig = gamma_hig - g_central
mhou = 0.5 * np.sqrt(delta_low**2 + delta_hig**2)
Expand All @@ -43,11 +44,11 @@ def plot_ad(entry, q2=None, nf=4, logscale=True, plot_totu=True, plot_scaling=Fa
g_low = splitting_function(entry, grid, nf, L=np.log(xif2_low))
g_hig = splitting_function(entry, grid, nf, L=np.log(xif2_hig))

a_s_n3lo = compute_a_s(q2, fact_scale=q2, order=(4, 0), nf=nf)
g_lo = build_gamma(g, 0, q2, q2, nf)
g_nlo = build_gamma(g, 1, q2, q2, nf)
g_nnlo = build_gamma(g, 2, q2, q2, nf)
g_n3lo = build_gamma(g, 3, q2, q2, nf)
a_s_n3lo = compute_a_s(q2, xif2=1, order=(4, 0), nf=nf)
g_lo = build_gamma(g, 0, q2, 1, nf)
g_nlo = build_gamma(g, 1, q2, 1, nf)
g_nnlo = build_gamma(g, 2, q2, 1, nf)
g_n3lo = build_gamma(g, 3, q2, 1, nf)

g_n3lo_var = []
if plot_totu:
Expand Down Expand Up @@ -181,10 +182,10 @@ def plot_ad_ratio(entry, q2=None, nf=4, plot_totu=False):
g_low = splitting_function(entry, grid, nf, L=np.log(xif2_low))
g_hig = splitting_function(entry, grid, nf, L=np.log(xif2_hig))

a_s_n3lo = compute_a_s(q2, fact_scale=q2, order=(4, 0), nf=nf)
g_nlo = build_gamma(g, 1, q2, q2, nf)
g_nnlo = build_gamma(g, 2, q2, q2, nf)
g_n3lo = build_gamma(g, 3, q2, q2, nf)
a_s_n3lo = compute_a_s(q2, xif2=1, order=(4, 0), nf=nf)
g_nlo = build_gamma(g, 1, q2, 1, nf)
g_nnlo = build_gamma(g, 2, q2, 1, nf)
g_n3lo = build_gamma(g, 3, q2, 1, nf)

g_n3lo_var = []
if plot_totu:
Expand Down Expand Up @@ -282,4 +283,4 @@ def plot_ad_ratio(entry, q2=None, nf=4, plot_totu=False):

# log plots
x_grid = lambertgrid(80, x_min=1e-7)
# plot_ad(k, q2=q2, nf=nf, plot_scaling=True, plot_totu=plot_totu)
plot_ad(k, q2=q2, nf=nf, plot_scaling=True, plot_totu=plot_totu)
6 changes: 3 additions & 3 deletions extras/n3lo_bench/plot_msht.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@


n3lo_vars_dict = {
"qq": 17,
"qq": 8,
"gg": 18,
"gq": 24,
"qg": 21,
"qg": 20,
}


Expand Down Expand Up @@ -201,4 +201,4 @@ def plot_ad(

# log plots
x_grid = lambertgrid(60, x_min=1e-7)
plot_ad(k, plot_scaling=True, q2=38.5, nf=5)
plot_ad(k, plot_scaling=True)
6 changes: 3 additions & 3 deletions extras/n3lo_bench/splitting_function_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,11 +98,11 @@ def splitting_function(
return np.array(gamma_x).T


def compute_a_s(q2=None, fact_scale=None, nf=None, order=(4, 0)):
def compute_a_s(q2=None, xif2=1.0, nf=None, order=(4, 0)):
if q2 is not None:
fact_scale = q2 if fact_scale is None else fact_scale
fact_scale = q2 * xif2
ref = types.CouplingsRef(
alphas=types.FloatRef(value=0.1181, scale=91.00),
alphas=types.FloatRef(value=0.1181, scale=91.00 * np.sqrt(xif2)),
alphaem=types.FloatRef(value=0.007496, scale=np.nan),
max_num_flavs=6,
num_flavs_ref=5,
Expand Down
Loading