Skip to content

Commit

Permalink
Merge branch 'master' into aem1
Browse files Browse the repository at this point in the history
  • Loading branch information
felixhekhorn committed Jan 13, 2025
2 parents 1af5cbf + c161129 commit 80fe896
Show file tree
Hide file tree
Showing 28 changed files with 1,898 additions and 1,461 deletions.
8 changes: 4 additions & 4 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ repos:
- id: check-merge-conflict
- id: debug-statements
- repo: https://github.com/hadialqattan/pycln
rev: v2.4.0
rev: v2.5.0
hooks:
- id: pycln
args: [--config=pyproject.toml]
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.6.9
rev: v0.9.0
hooks:
# Run the linter.
- id: ruff
Expand All @@ -30,13 +30,13 @@ repos:
# Run the formatter.
- id: ruff-format
- repo: https://github.com/PyCQA/docformatter
rev: "master"
rev: eb1df34 # TODO: wait for https://github.com/PyCQA/docformatter/issues/293
hooks:
- id: docformatter
additional_dependencies: [tomli]
args: [--in-place, --config, ./pyproject.toml]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.11.2
rev: v1.14.1
hooks:
- id: mypy
additional_dependencies: [types-PyYAML]
Expand Down
12 changes: 4 additions & 8 deletions benchmarks/eko/benchmark_inverse_matching.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,14 +90,10 @@ def benchmark_inverse_matching():
with pytest.raises(AssertionError):
np.testing.assert_allclose(op1_nf3.operator, op2_nf3.operator)

pdf1 = apply.apply_pdf(eko_output1, toy.mkPDF("ToyLH", 0))
pdf2 = apply.apply_pdf(eko_output2, toy.mkPDF("ToyLH", 0))
pdf1, _ = apply.apply_pdf(eko_output1, toy.mkPDF("ToyLH", 0))
pdf2, _ = apply.apply_pdf(eko_output2, toy.mkPDF("ToyLH", 0))

# test that different PTO matching is applied correctly
np.testing.assert_allclose(
pdf1[(MC**2, 4)]["pdfs"][C_PID], pdf2[(MC**2, 4)]["pdfs"][C_PID]
)
np.testing.assert_allclose(pdf1[(MC**2, 4)][C_PID], pdf2[(MC**2, 4)][C_PID])
with pytest.raises(AssertionError):
np.testing.assert_allclose(
pdf1[(MC**2, 3)]["pdfs"][C_PID], pdf2[(MC**2, 3)]["pdfs"][C_PID]
)
np.testing.assert_allclose(pdf1[(MC**2, 3)][C_PID], pdf2[(MC**2, 3)][C_PID])
10 changes: 10 additions & 0 deletions crates/ekore/src/anomalous_dimensions/polarized/spacelike/as1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,4 +82,14 @@ mod tests {
let me = gamma_qg(&mut c, NF);
assert_approx_eq_cmplx!(f64, me, Complex::zero(), epsilon = 1e-12);
}

// TODO: activate this test once the beta function will be available
// #[test]
// fn axial_anomaly() {
// const N: Complex<f64> = cmplx!(1., 0.);
// let mut c = Cache::new(N);
// let me = gamma_gg(&mut c, NF);
// let beta = -1.0 * beta_qcd_as2(NF);
// assert_approx_eq_cmplx!(f64, me, beta);
// }
}
14 changes: 14 additions & 0 deletions crates/ekore/src/anomalous_dimensions/polarized/spacelike/as2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ pub fn gamma_singlet(c: &mut Cache, nf: u8) -> [[Complex<f64>; 2]; 2] {

#[cfg(test)]
mod tests {
use super::super::as1::gamma_gq as as1_gamma_gq;
use super::*;
use crate::harmonics::cache::Cache;
use crate::{assert_approx_eq_cmplx, cmplx};
Expand Down Expand Up @@ -192,4 +193,17 @@ mod tests {
epsilon = 1e-13
);
}

#[test]
fn axial_anomaly() {
const N: Complex<f64> = cmplx!(1., 0.);
let mut c = Cache::new(N);
let me_ps = gamma_ps(&mut c, NF);
let as1_gq = -2.0 * (NF as f64) * as1_gamma_gq(&mut c, NF);
assert_approx_eq_cmplx!(f64, me_ps, as1_gq);
// TODO: activate this test once the beta function will be available
// let me_gg = gamma_gg(&mut c, NF);
// let beta = -1.0 * beta_qcd_as2(NF);
// assert_approx_eq_cmplx!(f64, me_gg, beta, rel=9e-7);
}
}
3 changes: 2 additions & 1 deletion doc/source/overview/tutorials/alpha_s.ipynb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions doc/source/overview/tutorials/dglap.ipynb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

82 changes: 37 additions & 45 deletions doc/source/overview/tutorials/pdf.ipynb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions doc/source/refs.bib
Original file line number Diff line number Diff line change
Expand Up @@ -1049,6 +1049,17 @@ @article{Moch:2023tdj
year = "2024"
}

@article{Falcioni:2024qpd,
author = "Falcioni, G. and Herzog, F. and Moch, S. and Pelloni, A. and Vogt, A.",
title = "{Four-loop splitting functions in QCD -- The gluon-gluon case --}",
eprint = "2410.08089",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
reportNumber = "ZU-TH 47/24, DESY-24-144, LTH 1384",
month = "10",
year = "2024"
}

@article{Ablinger:2024xtt,
author = {Ablinger, J. and Behring, A. and Bl\"umlein, J. and De Freitas, A. and von Manteuffel, A. and Schneider, C. and Sch\"onwald, K.},
title = "{The non-first-order-factorizable contributions to the three-loop single-mass operator matrix elements $A_{Qg}^{(3)}$ and $\Delta A_{Qg}^{(3)}$}",
Expand Down
27 changes: 24 additions & 3 deletions doc/source/theory/N3LO_ad.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,28 @@ Moreover, the analytical structure of these function is already known to be comp
since in Mellin space they include harmonics sum up to weight 7, for which an
analytical expression is not available.

We provide two different types of approximations, depending on the key ``use_fhmruvv``.
The theory card parameter ``n3lo_ad_variation=(gg, gq, qg, qq, nsp, nsm, nsv)``,
which is set to ``(0,0,0,0,0,0,0)`` as default, can be varied to obtain parametrization uncertainties.

In particular:

* ``use_fhmruvv = True`` (default option) adopts the parametrizations as provided
in :cite:`Moch:2017uml,Falcioni:2023luc,Falcioni:2023vqq,Falcioni:2024xyt,Falcioni:2024qpd`.
For each of the 7 splitting functions, the approximation error can be obtained by varying
the entries of ``n3lo_ad_variation`` in the range: ``0``,
cental value (default), ``1`` down variation, ``2`` up variation.

* ``use_fhmruvv = False`` adopts an in-house parametrization, constructed as described below.
In this case only variations of the singlet sector are available. Currently one
can vary ``n3lo_ad_variation`` in the range: ``0-19`` for ``gg``, ``0-15`` for ``gg``,
``0-15`` for ``qg``, ``0-6`` for ``qq``.
Note these approximations will be no longer updated and are now deprecated.


In house approximation
----------------------

Here, we describe the various assumptions and limits used in order to reconstruct a parametrization
that can approximate their contribution.
In particular we take advantage of some known physical constrains,
Expand All @@ -21,7 +43,7 @@ In any case |N3LO| |DGLAP| evolution at small-x, especially for singlet-like PDF
until the splitting function resummation is available up to |NNLL|.

Non-singlet sector
------------------
^^^^^^^^^^^^^^^^^^

In the non-singlet sector we construct a parametrization for
:math:`\gamma_{ns,-}^{(3)},\gamma_{ns,-}^{(3)},\gamma_{ns,s}^{(3)}` where:
Expand Down Expand Up @@ -147,7 +169,7 @@ In |EKO| they are implemented as follows:
It is checked that this contribution is much more smaller than the values of :math:`B_4`.

Singlet sector
--------------
^^^^^^^^^^^^^^

In the singlet sector we construct a parametrization for
:math:`\gamma_{gg}^{(3)},\gamma_{gq}^{(3)},\gamma_{qg}^{(3)},\gamma_{qq}^{(3)}` where:
Expand Down Expand Up @@ -272,7 +294,6 @@ The difference between the known moments and the known limits is parametrized
in Mellin space using different basis, in order to estimate the uncertainties of
our determination.


Uncertainties estimation
^^^^^^^^^^^^^^^^^^^^^^^^

Expand Down
12 changes: 9 additions & 3 deletions doc/source/theory/pQCD.rst
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ can be specified at ``scale_ref`` along with ``nf_ref`` and, the computed result
depend on the number of flavors at the target scale, see :meth:`eko.couplings.Couplings.a_s`
An example how the evolution path is determined is given :doc:`here</code/Utilities/>`.


QCD Splitting Functions
-----------------------

Expand Down Expand Up @@ -86,8 +85,9 @@ At |NLO|, the singlet entry of the quark-quark anomalous dimension can be decomp
\gamma^{(1)}_{qq} =\gamma^{(1)}_{ps} + \gamma^{(1)}_{ns,+}
The non-singlet sector in the polarized case swaps the plus and minus non-singlet relative to the unpolarized case.
This is because the polarized non-singlet splitting functions are defined as the difference between the probability of the polarized parton splitting into daughter partons of the same flavour
and daughters splitting into a different flavours and opposite helicity. The first moments of the anomalous dimensions are:
This is because the polarized non-singlet splitting functions are defined as the difference between the probability of the polarized parton splitting
into daughter partons of the same flavour and same helicity and daughters of a different flavours and opposite helicity.
The first moments of the anomalous dimensions are:

.. math ::
\gamma^{(1)}_{ns,+} (N=1) &= 0 \\
Expand All @@ -102,6 +102,12 @@ At |NNLO| the non-singlet is further decomposed into the helicity difference qua
where :math:`\gamma^{(2)}_{ns,-}` is the minus flavour asymmetry non-singlet and :math:`\gamma^{(2)}_{ns,s}` the sea-like polarized non-singlet.
The singlet entry :math:`\gamma^{(2)}_{qq}` is defined as above in the |NLO| case.

Finally the violation of the axial current conservation :math:`\bar{\psi} \gamma_\mu \gamma_5 \bar{\psi}` only through
loop corrections impose the following relations to the singlet splittings at all orders :cite:`Moch:2014sna` :

.. math ::
\gamma^{(n)}_{gg} & = - \beta_n \\
\gamma^{(n)}_{ps} & = - 2 n_f \gamma^{(n-1)}_{gq}
Unified Splitting Functions
---------------------------
Expand Down
Loading

0 comments on commit 80fe896

Please sign in to comment.