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

Polarized Matching conditions #221

Merged
merged 27 commits into from
May 17, 2023
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
bd7c280
Check required on format option of OME eqs.
adrianneschauss Feb 27, 2023
00c3766
Merge branch 'master' into polarized_matching
giacomomagni Mar 6, 2023
baa6085
NNLO OMEs, presonal comments will be deleted soon
adrianneschauss Mar 6, 2023
62e387f
editted OME's imports of AD's
adrianneschauss Mar 9, 2023
a7e2ba4
Changes applied from PR, descrip. and imports.
adrianneschauss Mar 14, 2023
656f2b0
Update src/ekore/operator_matrix_elements/polarized/space_like/as1.py
adrianneschauss Mar 15, 2023
aee2d76
Update src/ekore/operator_matrix_elements/polarized/space_like/as1.py
adrianneschauss Mar 15, 2023
eaac122
Update src/ekore/operator_matrix_elements/polarized/space_like/as2.py
adrianneschauss Mar 15, 2023
9d5642c
Changes applied from PR. init file has higher O(2)
adrianneschauss Mar 15, 2023
182e416
Merge branch 'master' into polarized_matching
giacomomagni Mar 15, 2023
51dac4b
fix some docstrings and minor typos
giacomomagni Mar 15, 2023
a9fdb88
replacement of polygamma with harmonic sums
adrianneschauss Mar 30, 2023
bd0d50f
Merge branch 'master' into polarized_matching
giacomomagni Mar 30, 2023
750b6ad
add tests of polarized matching
giacomomagni Mar 31, 2023
e36c364
Improve ad.pol.sl.as1 docs
felixhekhorn Apr 3, 2023
0c720e0
Improve ome.unp.sl.as2 docs
felixhekhorn Apr 3, 2023
a80e462
Improve more ome.unpol.sl docs
felixhekhorn Apr 3, 2023
da7e0b1
Improve more ome.unpol.sl init docs
felixhekhorn Apr 3, 2023
dc9f037
Improve ome.pol.sl docs
felixhekhorn Apr 3, 2023
ed2b1bc
Merge branch 'master' into polarized_matching
giacomomagni Apr 14, 2023
3afe58a
Properly continue AQg nnlo on odd moments
giacomomagni Apr 26, 2023
77dc864
Merge branch 'master' into polarized_matching
giacomomagni May 3, 2023
16a05bd
update harmonics syntax in polarized ome NNLO
giacomomagni May 3, 2023
661a138
Merge branch 'master' into polarized_matching
giacomomagni May 5, 2023
ea0210f
Merge branch 'master' of https://github.com/N3PDF/eko into polarized_…
giacomomagni May 8, 2023
921355f
Merge branch 'master' into polarized_matching
giacomomagni May 17, 2023
3dd1d95
mention tl and pol matching in docs
giacomomagni May 17, 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
14 changes: 13 additions & 1 deletion doc/source/refs.bib
Original file line number Diff line number Diff line change
Expand Up @@ -777,6 +777,18 @@ @article{Albino:2000cp
year = "2001"
}

@article{Bierenbaum_2023,
title = {$O(\alpha_{s}^2 Polarized Heavy Flavor Corrections to Deep-Inelastic Scattering at $Q^2 >> m^2$},
author = {I. Bierenbaum and J. Blümlein and A. De Freitas and A. Goedicke and S. Klein and K. Schönwald},
doi = {10.1016/j.nuclphysb.2023.116114},
url = {https://doi.org/10.1016%2Fj.nuclphysb.2023.116114},
year = 2023,
month = {mar},
publisher = {Elsevier {BV}},
volume = {988},
pages = {116114},
journal = {Nuclear Physics B}
}
@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}",
Expand Down Expand Up @@ -827,4 +839,4 @@ @article{Moch:2014sna
volume = "889",
pages = "351--400",
year = "2014"
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,55 @@
r"""The polarized, space-like |OME|."""

import numba as nb
import numpy as np

from . import as1


@nb.njit(cache=True)
def A_non_singlet(_matching_order, _n, _sx, _nf, _L):
raise NotImplementedError("Polarised, space-like is not yet implemented")
def A_singlet(matching_order, n, sx, nf, L, is_msbar, sx_ns=None):
r"""
Computes the tower of the singlet |OME|.

Parameters
----------
matching_order : tuple(int,int)
perturbative matching_order
n : complex
Mellin variable
sx : list
singlet like harmonic sums cache
nf: int
number of active flavor below threshold
L : float
:math:``\ln(\mu_F^2 / m_h^2)``
is_msbar: bool
add the |MSbar| contribution
sx_ns : list
non-singlet like harmonic sums cache

Returns
-------
A_singlet : numpy.ndarray
singlet |OME|

See Also
--------
ekore.matching_conditions.nlo.A_singlet_1 : :math:`A^{S,(1)}(N)`
ekore.matching_conditions.nlo.A_hh_1 : :math:`A_{HH}^{(1)}(N)`
ekore.matching_conditions.nlo.A_gh_1 : :math:`A_{gH}^{(1)}(N)`
ekore.matching_conditions.nnlo.A_singlet_2 : :math:`A_{S,(2)}(N)`
"""
A_s = np.zeros((matching_order[0], 3, 3), np.complex_)
if matching_order[0] == 1:
A_s[0] = as1.A_singlet(n, L)
else:
raise NotImplementedError(
"Polarised, space-like is not yet implemented at this order"
)
return A_s


@nb.njit(cache=True)
def A_singlet(_matching_order, _n, _sx, _nf, _L, _is_msbar, _sx_ns=None):
def A_non_singlet(_matching_order, _n, _sx, _nf, _L, _is_msbar, _sx_ns=None):
raise NotImplementedError("Polarised, space-like is not yet implemented")
112 changes: 112 additions & 0 deletions src/ekore/operator_matrix_elements/polarized/space_like/as1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
r"""
This module contains the |NLO| |OME| (OMEs) in the polarized case for the matching conditions in the |VFNS|.
Heavy quark contribution for intrinsic evolution are not considered for the polarized case.
The matching conditions for the |VFNS| at :math:`\mu_F^2 \neq m_H^2` are provided in :cite:`Bierenbaum_2023`. In the paper, the fraction :math:`\mu_F^2 / m_H^2` inside the log is inverted, yielding an additional factor of (-1) wherever L has an odd power. Additionally, a different convention for the anomalous dimensions is used, yielding a factor 2 in the |OME|'s wherever they are present. The anomalous dimensions and beta function with the addition 'hat', have the form :math:`\gamma_hat = gamma(nf+1) - gamma(nf)`.
"""
import numba as nb
import numpy as np

from eko.constants import TR

from ....anomalous_dimensions.polarized.space_like.as1 import gamma_qg as gamma0_qg
from ...unpolarized.space_like.as1 import A_gg as A_gg_unpol


@nb.njit(cache=True)
def gamma0_qghat(n, nf):
r"""Compute the |LO| polarized quark-gluon anomalous dimension with the addition 'hat' and thus, discarding the part proportional 'nf'. The factor 2 is included due to convention mentioned above.

Parameters
----------
N : complex
Mellin moment
nf : int
Number of active flavors

Returns
-------
complex
|LO| polarized quark-gluon anomalous dimension (hat) :math:`\\\hat{gamma_{qg}}^{(0)}(N)`

"""
return 2 * gamma0_qg(n, nf) / nf


@nb.njit(cache=True)
def A_hg(n, L, nf):
r"""
|NLO| heavy-gluon |OME| :math:`A_{Hg}^{S,(1)}` given in Eq. (104) of :cite:`Bierenbaum_2023`.
Parameters
----------
n : complex
Mellin moment
L : float
:math:`\ln(\mu_F^2 / m_h^2)`
nf : int
Number of active flavors

Returns
-------
A_hg : complex
|NLO| heavy-gluon |OME| :math:`A_{Hg}^{S,(1)}`
"""
return (1 / 2) * gamma0_qghat(n, nf) * (-L)


@nb.njit(cache=True)
def A_gg(L):
r"""
|NLO| gluon-gluon |OME| :math:`A_{gg,H}^{S,(1)}` given in Eq. (186) of :cite:`Bierenbaum_2023`.

Parameters
----------
L : float
:math:`\ln(\mu_F^2 / m_h^2)`

Returns
-------
A_gg : complex
|NLO| gluon-gluon |OME| :math:`A_{gg,H}^{S,(1)}`
"""
return 2 * A_gg_unpol(L)


@nb.njit(cache=True)
def A_singlet(n, L, nf):
r"""
Computes the |NLO| singlet |OME|.
.. math::
A^{S,(1)} = \left(\begin{array}{cc}
A_{gg,H}^{S,(1)} & 0 & 0\\
0 & 0 & 0 \\
A_{hg}^{S,(1)} & 0 & 0
\end{array}\right)

Parameters
----------
n : complex
Mellin moment
L : float
:math:`\ln(\mu_F^2 / m_h^2)`
nf : int
Number of active flavors

Returns
-------
A_S : numpy.ndarray
|NLO| singlet |OME| :math:`A^{S,(1)}`

See Also
--------
A_gg : :math:`A_{gg,H}^{S,(1)}`
A_hg : :math:`A_{hg}^{S,(1)}`
"""
A_S = np.array(
[
[A_gg(L), 0.0, 0.0],
[0 + 0j, 0 + 0j, 0 + 0j],
[A_hg(n, L, nf), 0.0, 0.0],
],
np.complex_,
)
return A_S
Loading