diff --git a/doc/sphinx/Makefile b/doc/sphinx/Makefile
index 352a64ea2e..a8c77d17b3 100644
--- a/doc/sphinx/Makefile
+++ b/doc/sphinx/Makefile
@@ -16,11 +16,6 @@ help:
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile MakeTheoryCSV
- @if test $@ != "clean"; then \
- sphinx-apidoc -f -o ./$(SOURCEDIR)/modules/validphys ../../validphys2/src/validphys/ ; \
- sphinx-apidoc -f -o ./$(SOURCEDIR)/modules/n3fit-code ../../n3fit/src/n3fit/ ; \
- sphinx-apidoc -f -o ./$(SOURCEDIR)/modules/n3fit-code ../../n3fit/src/evolven3fit/ ; \
- fi
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: rsync
diff --git a/doc/sphinx/source/api/index.rst b/doc/sphinx/source/api/index.rst
new file mode 100644
index 0000000000..8f5fc1d9e2
--- /dev/null
+++ b/doc/sphinx/source/api/index.rst
@@ -0,0 +1,12 @@
+Python API reference
+====================
+
+The API reference is generated from the Python source code and its docstrings.
+
+.. toctree::
+ :maxdepth: 1
+
+ validphys <../modules/validphys/validphys>
+ n3fit <../modules/n3fit/n3fit>
+ evolven3fit <../modules/evolven3fit/evolven3fit>
+ nnpdf_data <../modules/nnpdf_data/nnpdf_data>
diff --git a/doc/sphinx/source/conf.py b/doc/sphinx/source/conf.py
index f482b47516..9525d3d7c6 100644
--- a/doc/sphinx/source/conf.py
+++ b/doc/sphinx/source/conf.py
@@ -11,12 +11,24 @@
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
-# import sys
-#
-#
+import sys
+from datetime import datetime
+from pathlib import Path
+
+REPO_ROOT = Path(__file__).resolve().parents[3]
+DOC_SOURCE_DIR = Path(__file__).resolve().parent
+PACKAGE_SOURCE_DIRS = [
+ REPO_ROOT / "validphys2" / "src",
+ REPO_ROOT / "n3fit" / "src",
+ REPO_ROOT / "nnpdf_data",
+]
+
+for source_dir in reversed(PACKAGE_SOURCE_DIRS):
+ sys.path.insert(0, str(source_dir))
+
+import validphys
# -- Project information -----------------------------------------------------
-from datetime import datetime
project = "NNPDF"
copyright = f"{datetime.now().year}, NNPDF collaboration"
@@ -45,7 +57,7 @@
"sphinx.ext.coverage",
"sphinx.ext.mathjax",
"sphinx.ext.ifconfig",
- "sphinx.ext.viewcode",
+ "sphinx.ext.linkcode",
"sphinx.ext.napoleon",
"sphinxcontrib.bibtex",
"sphinx.ext.autosectionlabel",
@@ -75,12 +87,13 @@
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
-exclude_patterns = ['modules/**']
+# Ignore the output directory used by the former Makefile-based generator.
+# Current API pages are generated in one directory per package below.
+exclude_patterns = ["modules/n3fit-code/**", "modules/**/*.tests*"]
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = None
-
# -- Options for HTML output -------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
@@ -201,6 +214,112 @@
# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {"python": ("https://docs.python.org/", None)}
+
+# -- Source code links (analogous to numpy implementation) -------------------
+
+import inspect
+from os.path import relpath
+
+
+def linkcode_resolve(domain, info):
+ """
+ Determine the URL corresponding to Python object.
+ """
+ if domain != "py":
+ return None
+ modname = info["module"]
+ fullname = info["fullname"]
+ submod = sys.modules.get(modname)
+ if submod is None:
+ return None
+ obj = submod
+ for part in fullname.split("."):
+ try:
+ obj = getattr(obj, part)
+ except Exception:
+ return None
+
+ # strip decorators, which would resolve to the source of the decorator
+ # possibly an upstream bug in getsourcefile, bpo-1764286
+ try:
+ unwrap = inspect.unwrap
+ except AttributeError:
+ pass
+ else:
+ obj = unwrap(obj)
+
+ fn = None
+ lineno = None
+ if fn is None:
+ try:
+ fn = inspect.getsourcefile(obj)
+ except Exception:
+ fn = None
+ if not fn:
+ return None
+
+ # Ignore re-exports as their source files are external modules
+ module = inspect.getmodule(obj)
+ if module is not None and not module.__name__.startswith(
+ ("validphys", "n3fit", "evolven3fit", "nnpdf_data")
+ ):
+ return None
+
+ try:
+ source, lineno = inspect.getsourcelines(obj)
+ except Exception:
+ lineno = None
+
+ fn = relpath(fn, start=REPO_ROOT)
+
+ if lineno:
+ linespec = f"#L{lineno}-L{lineno + len(source) - 1}"
+ else:
+ linespec = ""
+
+ # Now define the nnpdf version. If it's a dev version, it goes to the master branch,
+ # otherwise to the published tag of the version.
+ if "dev" in validphys.__version__:
+ return f"https://github.com/NNPDF/nnpdf/blob/master/{fn}{linespec}"
+ return f"https://github.com/NNPDF/nnpdf/blob/{validphys.__version__}/{fn}{linespec}"
+
+
+# -- Automatic Python API reference generation ------------------------------
+
+API_PACKAGES = {
+ "validphys": REPO_ROOT / "validphys2" / "src" / "validphys",
+ "n3fit": REPO_ROOT / "n3fit" / "src" / "n3fit",
+ "evolven3fit": REPO_ROOT / "n3fit" / "src" / "evolven3fit",
+ "nnpdf_data": REPO_ROOT / "nnpdf_data" / "nnpdf_data",
+}
+
+
+def run_apidoc(_):
+ from sphinx.ext.apidoc import main
+
+ for package_name, package_path in API_PACKAGES.items():
+ output_path = DOC_SOURCE_DIR / "modules" / package_name
+ apidoc_arguments = [
+ "--force",
+ "--module-first",
+ "-o",
+ str(output_path),
+ str(package_path),
+ ]
+ tests_path = package_path / "tests"
+ if tests_path.is_dir():
+ apidoc_arguments.append(str(tests_path))
+ main(apidoc_arguments)
+ # Each package root is linked explicitly from api/index.rst, so the
+ # extra top-level file generated by apidoc is not needed.
+ (output_path / "modules.rst").unlink(missing_ok=True)
+
+
+def setup(app):
+ """Configure sphinx."""
+ app.connect("builder-inited", run_apidoc)
+
+
# -- Options for todo extension ----------------------------------------------
# If true, `todo` and `todoList` produce output, else they produce nothing.
diff --git a/doc/sphinx/source/external-code/pdf-codes.rst b/doc/sphinx/source/external-code/pdf-codes.rst
index 5333aab74b..884d722261 100644
--- a/doc/sphinx/source/external-code/pdf-codes.rst
+++ b/doc/sphinx/source/external-code/pdf-codes.rst
@@ -16,14 +16,8 @@ release.
PDF evolution
-------------
-`APFEL `_ ('A PDF Evolution Library') is the PDF evolution code currently
-used by the NNPDF Collaboration. In addition to its PDF evolution capabilities, it also produces
-predictions of deep-inelastic scattering structure functions. In recent years it has been developed
-alongside NNPDF, and so it therefore contains the features and settings required in an NNPDF fit.
-That is, it includes quark masses in the MSbar scheme, the various FONLL heavy quark schemes, scale
-variations up to NLO, etc. Note that at the time of writing, a more streamlined code is being
-written to replace APFEL, which is currently dubbed EKO ('Evolution Kernel Operator'). To find more
-general information about PDF evolution and the DGLAP equations, you can go to the :ref:`Theory section `.
+The evolution of PDFs is fully handled in the `EKO `_ code,
+and the way QCD evolution is calculated is described in great detail `here `_.
PDF compression
---------------
@@ -42,7 +36,11 @@ the subset that most truthfully reproduces the underlying probability distributi
Other codes
~~~~~~~~~~~
-`Hoppet `_ ('Higher Order Perturbative Parton Evolution Toolkit') is an
-alternative PDF evolution code which is capable of evolving unpolarised PDFs to NNLO and linearly
-polarised PDFs to NLO. The unpolarised evolution includes heavy-quark thresholds in the MSbar
-scheme.
+`Hoppet `_ ('Higher Order Perturbative Parton Evolution Toolkit') is an
+alternative PDF evolution code which is capable of evolving unpolarised PDFs.
+
+Pineline
+~~~~~~~~
+
+The full theory production pipeline used in the NNPDF framework is extensively described in the
+`Pineline `_ documentation.
diff --git a/doc/sphinx/source/index.rst b/doc/sphinx/source/index.rst
index 779a873292..11e0417cd0 100644
--- a/doc/sphinx/source/index.rst
+++ b/doc/sphinx/source/index.rst
@@ -157,6 +157,7 @@ Contents
data/index
theory/index
figuresofmerit/index
+ api/index
contributing/index
releases
ci/index
diff --git a/doc/sphinx/source/theory/PTevol.rst b/doc/sphinx/source/theory/PTevol.rst
deleted file mode 100644
index 9136bbee7c..0000000000
--- a/doc/sphinx/source/theory/PTevol.rst
+++ /dev/null
@@ -1,1022 +0,0 @@
-.. _ptoevolution:
-
-| **Notes on Perturbative Evolution and PDF flavor decomposition**
-| AG & MU (with the help of Jacob Haddo, summer student)
-
-Perturbative PDF evolution
-==========================
-
-Notation
---------
-
-* **The strong coupling constant**
-
-Define the coupling
-
-.. math::
-
- a_{s} = \frac{\alpha_{s}(Q^{2})}{4\pi}
-
-.. math::
-
- a_{0} = a_{s}(Q_{0}^{2})
-
-which satisfies the Renormalisation Group Equation
-
-.. math::
-
- \frac{da_{s}}{d\ln\mu^{2}} = \beta(a_{s}) = - \sum_{n = 0}^{\infty}\beta_{n}a_{s}^{n + 2}\,,
-
-where
-
-.. math::
-
- \beta_0 = \frac{11}{3}C_A - \frac{4}{3}T_FN_f
-
-.. math::
-
- \beta_1 = \frac{34}{3}C^2_A - 4C_FT_FN_f - \frac{20}{3}C_AT_FN_f
-
-.. math::
-
- \beta_2 = \frac{2857}{54}C^3_A + 2C^2_FT_FN_f - \frac{205}{9}C_FC_AT_FN_f - \frac{1415}{27}C^2_AT_FN_f - \frac{44}{9}C_FT^2_FN^2_f - \frac{158}{27}C_AT^2_FN^2_f.
-
-
-* **Mellin transform**
-
-The Mellin transform of a function is defined as
-
-.. math::
-
- f(N,Q^{2}) = \int_{0}^{1}dx\, x^{N - 1}f(x,Q^{2})\,,
-
-and we can get back the x-space distribution as
-
-.. math::
-
- f(x,Q^{2}) = \int_{c - i\infty}^{c + i\infty}\mspace{6mu}\frac{dN}{2\pi i}\, x^{- N}f(N,Q^{2})\,,
-
-where the intercept c of integration contour is chosen to be to the
-right of all singularities of f(N,Q2) in the complex N plane.
-
-Parton evolution
---------------------
-
-The scale dependence of the parton distribution functions is described
-by the renormalisation group equations for mass factorisation (DGLAP)
-
-.. math::
-
- \mu^{2}\frac{\partial}{\partial\mu^{2}}f_{i}(x,\mu^{2}) = P_{ij}(x,\mu^{2}) \otimes f(x,\mu^{2})\,
-
-where f\ :sub:`i` is the generic parton distribution function, P\ :sub:`ij` are the
-Altarelli-Parisi kernels and :math:`\otimes` denotes the Mellin convolution
-
-.. math::
-
- f(x) \otimes g(x) \equiv \int_{x}^{1}dyf(y)g\left( \frac{x}{y} \right)
-
-We have a system of (2n\ :sub:`f` + 1) coupled
-integro-differential equations, where the summation over the parton
-species j is understood.
-
-The N\ :sup:`m`\ LO approximation for the splitting functions :math:`P_{ij}(x,\mu^2)`
-
-.. math::
-
- P_{ij}^{N^{m}LO}(x,\mu^{2}) = \sum_{k = 0}^{m}a_{s}^{k + 1}(\mu^{2})P_{ij}^{(k)}(x)
-
-where we note that the only dependence on the scale :math:`\mu^2`
-is through the coupling constant :math:`a_s(\mu^2)`. The splitting
-functions in the case of unpolarised partons are known up to NNLO and,
-in the notation we adopt, their explicit expressions are found in .
-
-In the following, to describe the solution to the DGLAP evolution
-equations we will be working in Mellin space where, as we have seen,
-convolutions are turned into products.
-
-* **Flavour decomposition**
-
-The primary quantities are the :math:`2n_f` quark and antiquark
-distributions qi(x,Q2), Qi(x,Q2) and the gluon distribution g(x,Q2).
-
-From considerations based on charge conjugation and flavour symmetry it
-is possible to rewrite the system of equations as :math:`(2N_f - 1)` equations
-describing the
-independent evolution of the non-singlet quark asymmetries and
-
-.. math::
-
- q_{NS,ij}^\pm = q_i \pm Q_i - (q_j \pm Q_j)
-
-.. math::
-
- q_{NS}^v = \sum_{i = 1}^{N_f}(q_i - Q_i)
-
-and a system of 2 equations describing the coupled evolution of the
-singlet and gluon parton distributions.
-
-.. math::
-
- \begin{matrix}
- \mu^{2}\frac{\partial}{\partial\mu^{2}}q_{NS}^{\pm ,v}(x,\mu^{2}) & = & P_{NS}^{\pm ,v} \otimes q_{NS}^{\pm ,v}(x,\mu^{2}) \\
- \mu^{2}\frac{\partial}{\partial\mu^{2}}\begin{pmatrix}
- \Sigma \\
- g \\
- \end{pmatrix}(x,\mu^{2}) & = & \begin{pmatrix}
- P_{qq} & P_{qg} \\
- P_{gq} & P_{gg} \\
- \end{pmatrix} \otimes \begin{pmatrix}
- \Sigma \\
- g \\
- \end{pmatrix}(x,\mu^{2}) \\
- \end{matrix}
-
-where the singlet combination, :math:`\Sigma`, is defined as
-
-.. math::
-
- \Sigma = \sum_{i = 1}^{N_{f}}(q_{i} + {\overline{q}}_{i})\,,
-
-where :math:`N_{f}` is the number of *light flavors*, *i.e.* the number
-of flavors with :math:`m_{q}^{2} < Q^{2}`.
-
-At LO
-:math:`P_{NS}^{(0), +} = P_{NS}^{(0), -} = P_{NS}^{(0),v} = P_{qq}^{(0)}`.
-At NLO :math:`P_{NS}^{(0), -} = P_{NS}^{(0),v}` while all the other
-splitting functions are different. Starting form :math:`\mathcal{O}(\alpha_s^2)`
-all splitting functions are different from each other.
-
-The evolution of the individual quark distributions with the scale can
-be computed by introducing the following set of non-singlet
-distributions:
-
-.. math::
-
- \begin{matrix} V & = & u^{-} + d^{-} + s^{-} + c^{-} + b^{-} + t^{-} \\ \end{matrix}
-
-.. math::
-
- \begin{matrix} V_{3} & = & u^{-} - d^{-} \\ \end{matrix}
-
-.. math::
-
- \begin{matrix} V_{8} & = & u^{-} + d^{-} - 2s^{-} \\ \end{matrix}
-
-.. math::
-
- \begin{matrix} V_{15} & = & u^{-} + d^{-} + s^{-} - 3c^{-} \\ \end{matrix}
-
-.. math::
-
- \begin{matrix} V_{24} & = & u^{-} + d^{-} + s^{-} + c^{-} - 4b^{-} \\ \end{matrix}
-
-.. math::
-
- \begin{matrix} V_{35} & = & u^{-} + d^{-} + s^{-} + c^{-} + b^{-} - 5t^{-} \\ \end{matrix}
-
-.. math::
-
- \begin{matrix} T_{3} & = & u^{+} - d^{+} \\ \end{matrix}
-
-.. math::
-
- \begin{matrix} T_{8} & = & u^{+} + d^{+} - 2s^{+} \\ \end{matrix}
-
-.. math::
-
- \begin{matrix} T_{15} & = & u^{+} + d^{+} + s^{+} - 3c^{+} \\ \end{matrix}
-
-.. math::
-
- \begin{matrix} T_{24} & = & u^{+} + d^{+} + s^{+} + c^{+} - 4b^{+} \\ \end{matrix}
-
-.. math::
-
- \begin{matrix} T_{35} & = & u^{+} + d^{+} + s^{+} + c^{+} + b^{+} - 5t^{+} \\ \end{matrix}
-
-where :math:`q_{i}^{\pm} = q_{i} \pm {\overline{q}}_{i}`, and
-:math:`u,d,s,c,b,t` are the various flavour distributions.
-
-The combinations :math:`V_{j}` and :math:`T_{j}` evolve according to eq.
-(`[eq:DGLAPdecomp] <#eq:DGLAPdecomp>`__) with :math:`P_{NS}^{-}` and
-:math:`P_{NS}^{+}` respectively, while the total valence :math:`V`
-evolves with the :math:`P_{NS}^{v}` kernel. Inverting the linear system
-Eq.\ `[eq:lincomb] <#eq:lincomb>`__ we obtain the individual pdf’s as a
-function of the evolved non-singlet and singlet distributions:
-
-.. math::
-
- \begin{matrix}
- u & = & (10\Sigma + 30T_{3} + 10T_{8} + 5T_{15} + 3T_{24} + 2T_{35} + 10V + 30V_{3} + 10V_{8} + 5V_{15} + 3V_{24} + 2V_{35})/120 \\
- \overline{u} & = & (10\Sigma + 30T_{3} + 10T_{8} + 5T_{15} + 3T_{24} + 2T_{35} - 10V - 30V_{3} - 10V_{8} - 5V_{15} - 3V_{24} - 2V_{35})/120 \\
- d & = & (10\Sigma - 30T_{3} + 10T_{8} + 5T_{15} + 3T_{24} + 2T_{35} + 10V - 30V_{3} + 10V_{8} + 5V_{15} + 3V_{24} + 2V_{35})/120 \\
- \overline{d} & = & (10\Sigma - 30T_{3} + 10T_{8} + 5T_{15} + 3T_{24} + 2T_{35} - 10V + 30V_{3} - 10V_{8} - 5V_{15} - 3V_{24} - 2V_{35})/120 \\
- s & = & (10\Sigma - 20T_{8} + 5T_{15} + 3T_{24} + 2T_{35} + 10V - 20V_{8} + 5V_{15} + 3V_{24} + 2V_{35})/120 \\
- \overline{s} & = & (10\Sigma - 20T_{8} + 5T_{15} + 3T_{24} + 2T_{35} - 10V + 20V_{8} - 5V_{15} - 3V_{24} - 2V_{35})/120 \\
- c & = & (10\Sigma - 15T_{15} + 3T_{24} + 2T_{35} + 10V - 15V_{15} + 3V_{24} + 2V_{35})/120 \\
- \overline{c} & = & (10\Sigma - 15T_{15} + 3T_{24} + 2T_{35} - 10V + 15V_{15} - 3V_{24} - 2V_{35})/120 \\
- b & = & (5\Sigma - 6T_{24} + T_{35} + 5V - 6V_{24} + V_{35})/60 \\
- \overline{b} & = & (5\Sigma - 6T_{24} + T_{35} - 5V + 6V_{24} - V_{35})/60 \\
- t & = & (\Sigma - T_{35} + V - V_{35})/12 \\
- \overline{t} & = & (\Sigma - T_{35} - V + V_{35})/12 \\
- \end{matrix}
-
-* **Scale variation in splitting functions**
-
-The evolution equations presented in the previous subsections assume
-that all scales are the same, in particular that the renormalization
-:math:`\mu_{R}^{2}` and factorization scales :math:`\mu_{F}^{2}` are the
-same that the hard scale of the problem :math:`\mu^{2}`,
-
-.. math::
-
- \mu_{R}^{2} = \mu_{F}^{2} = \mu^{2}\ .
-
-However, if this is not the case, Eq. `[eq:pmlo] <#eq:pmlo>`__ has to be
-modified as follows:
-
-- Singlet case : up to NNLO one has
-
-.. math::
-
- \mathbf{P}(x, \alpha_s(\mu^2_R), L_R) = \alpha_s(\mu^2_R)\mathbf{P}^{(0)}(x) + \alpha^2_s(\mu^2_R)[\mathbf{P}^{(1)}(x) - \beta_0L_R\mathbf{P}^{(0)}(x)] +\alpha^3_s(\mu^2_R)[\mathbf{P}^{(2)}(x) - 2\beta_0L_R\mathbf{P}^{(1)}(x) - (\beta_1L_R - \beta^2_0L^2_R)\mathbf{P}^{(0)}(x)]
-
-- with :math:`\mathbf{P}^{(k)}` the matrix of singlet splitting functions (in
- the :math:`\mu_{R}^{2} = \mu_{F}^{2} = \mu^{2}` case ) as defined in
- Eq. `[eq:DGLAPdecomp] <#eq:DGLAPdecomp>`__, and where we have defined :math:`L_{R} \equiv \frac{\mu_{F}^{2}}{\mu_{R}^{2}}` as the ratio of factorization and renormalization scales. Note that
- the strong coupling is evaluated at the renormalization scale
- :math:`\mu_{R}^{2}`.
-
-- Non-singlet case . In analogy with the singlet case, up to NNLO one
- has
-
-.. math::
-
- P^{\pm, v}_{NS}(x, \alpha_s(\mu^2_R), L_R) = \alpha_s(\mu^2_R)P^{\pm, v(0)}_{NS}(x) + \alpha^2_s(\mu^2_R)[P^{\pm, v(1)}_{NS}(x) - \beta_0L_RP^{\pm, v(0)}_{NS}(x)] + \alpha^3_s(\mu^2_R)[P^{\pm, v(2)}_{NS}(x) - 2\beta_0L_RP^{\pm, v(1)}_{NS}(x) - (\beta_1L_R - \beta^2_0L^2_R)P^{\pm,v(0)}_{NS}(x)]
-
-- with the same conventions as in the singlet case and where the
- various combinations of non-singlet quark densities and associated
- splitting functions have been defined in Eq.
- `[eq:nonsinglet] <#eq:nonsinglet>`__. Note that at NLO one has some
- simplifications:
-
-.. math::
-
- P^{\pm, v}_{NS}(x, \alpha_s(\mu^2_R), L_R) = \alpha_s(\mu^2_R)P^{(0)}_{NS}(x) + \alpha^2_s(\mu^2_R)[P^{\pm(1)}_{NS}(x) - \beta_0L_RP^{(0)}_{NS}(x)]
-
-The DGLAP evolution equations with variations of the renormalization
-scale can be benchmarked againts the usual LH tables.
-
-* **Scale variation in the coefficient functions**
-
-Analogously to what we have done in the previous subsection, in the
-following we write the expressions of the NLO coefficient functions
-:math:`C_{2,L,3}^{q,g}` in the :math:`\overline{MS}` scheme showing
-explicitly the dependence on the factorization and renormalization
-scales, :math:`\mu_{r}^{2}` and :math:`\mu_{f}^{2}`.
-
-.. math::
-
- C_{a}^{\pm}(N,\alpha_{s}(\mu_{f}^{2}),Q^{2}/\mu_{r}^{2},\mu_{f}^{2}/\mu_{r}^{2}) = 1 + a_{s}(\mu_{r}^{2})\left\lbrack c_{a,NS}^{(1)}(N) + \gamma_{NS}^{(0)}(N)\log\left( \frac{Q^{2}}{\mu_{f}^{2}} \right) \right\rbrack + \mathcal{O}(a_{s}^{2})
-
-.. math::
-
- \begin{matrix}
- S_{1}(N) & = & \gamma_{E} + \Psi(N + 1) \\
- S_{2}(N) & = & \zeta_{2} - \Psi\prime(N + 1,1). \\
- \end{matrix}
-
-we can write down the explicit expression for all the NLo coefficient
-functions:
-
-.. math::
-
- C_2^{NS}(N,a_s(\mu_r^2),Q^2/\mu_f^2) = 1 + a_s(\mu_r^2)\cdot C_F\bigg[2S_1(N)^2 - 2 S_2(N) + 3S_1(N) - 2\frac{S_1(N)}{N(N+1)}+\frac{3}{N}+\frac{4}{N+1}+\frac{2}{N^2}-9 +\log(\frac{Q^2}{\mu_f^2})(3 - 4 S_1(N) +\frac{2}{N(N+1)}\bigg]
-
-.. math::
-
- C_2^q(N,a_s(\mu_r^2),Q^2/\mu_f^2) = C_2^{NS}(N,a_s(\mu_r^2),Q^2/\mu_f^2)
-
-.. math::
-
- C_2^g(N,a_s(\mu_r^2),Q^2/\mu_f^2) = a_s(\mu_r^2)\cdot 4n_fT_R\bigg[\frac{4}{N+1} - \frac{4}{N+2} - (1+S_1(N))\cdot \frac{N^2+N+2}{N(N+1)(N+2)}+\frac{1}{N_1} +\log(\frac{Q^2}{\mu_f^2})\frac{N^2+N+2}{N(N+1)(N+2)}\bigg]
-
-.. math::
-
- C_L^{NS}(N,a_s(\mu_r^2)) = a_s(\mu_r^2)\cdot C_F \frac{4}{N+1}
-
-.. math::
-
- C_L^q(N,a_s(\mu_r^2)) = C_L^{NS}(N,a_s(\mu_r^2))
-
-.. math::
-
- C_L^g(N,a_s(\mu_r^2)) = a_s(\mu_r^2)\cdot 4n_fT_R \frac{4}{(N+1)(N+2)}
-
-.. math::
-
- C_3^{NS}(N,a_s(\mu_r^2),Q^2/\mu_f^2) = 1 + a_s(\mu_r^2)\cdot C_F\bigg[2S_1(N)^2 - 2 S_2(N) + 3S_1(N)- 2\frac{S_1(N)}{N(N+1)} +\frac{3}{N}+\frac{4}{N+1} +\frac{2}{N^2}-9 -\frac{4N+2}{N(N+1)} +\log(\frac{Q^2}{\mu_f^2})(3 - 4 S_1(N) +\frac{2}{N(N+1)})\bigg]
-
-* **Implementation of the heavy quarks**
-
-In our code the heavy quark PDF’s are generated radiatively in the
-ZM-VFN scheme. We consider explicitely two cases: evolution starting at
-the charm threshold and forward evolution from a scale below the charm
-threshold. We will write explicitely all equations implemented into the
-code.
-
-- Case I: :math:`Q_{0}^{2} \equiv m_{c}^{2}`
- If :math:`Q_{0}^{2} = m_{c}^{2}`, the :math:`T_{15}` parton
- distribution function evolves from the initial scale to any final
- scale :math:`Q^{2} > m_{c}^{2}` according to the NS evolution
- equation:
-
-.. math::
-
- T_{15}(Q^{2},x) = \Gamma_{NS}^{+}(Q_{0}^{2},Q^{2},x) \otimes T_{15}(Q_{0}^{2},x).
-
-- Instead the :math:`T_{24}` parton distribution defined in Eq. (15)
- coincides with the Singlet distribution up to the bottom threshold,
- while above the threshold it evolves according to the NS evolution
- equation. Therefore for :math:`Q^{2} > m_{b}^{2}` :
-
-.. math::
-
- \begin{matrix}
- T_{24}(m_{b}^{2},x) & = & \Sigma(m_{b}^{2},x) = \Gamma_{S,qq}(Q_{0}^{2},m_{b}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,qg}(Q_{0}^{2},m_{b}^{2},x) \otimes g(Q_{0}^{2},x) \\
- T_{24}(Q^{2},x) & = & \Gamma_{NS}^{+}(m_{b}^{2},Q^{2},x) \otimes T_{24}(m_{b}^{2},x) \\
- & = & \Gamma_{NS}^{+}(m_{b}^{2},Q^{2},x) \otimes \lbrack\Gamma_{S,qq}(Q_{0}^{2},m_{b}^{2},x) \otimes \Sigma(Q_{0}^{2},x) \\
- & + & \Gamma_{S,qg}(Q_{0}^{2},m_{b}^{2},x) \otimes g(Q_{0}^{2},x)\rbrack \\
- \end{matrix}
-
-- In our code we have defined :math:`\Gamma_{NS}^{q,24}` and
- :math:`\Gamma_{NS}^{g,24}` as the evolution kernel products which
- multiply respectively the initial singlet and gluon distributions:
-
-.. math::
-
- \begin{matrix}
- \Gamma_{NS}^{q,24}(Q_{0}^{2},Q^{2},N) & = & \Gamma_{NS}^{+}(m_{b}^{2},Q^{2},N)\Gamma_{S,qq}(Q_{0}^{2},m_{b}^{2},N) \\
- \Gamma_{NS}^{g,24}(Q_{0}^{2},Q^{2},N) & = & \Gamma_{NS}^{+}(m_{b}^{2},Q^{2},N)\Gamma_{S,qg}(Q_{0}^{2},m_{b}^{2},N) \\
- \end{matrix}
-
-- In the same way we can write explicitely the evolution of the
- :math:`T_{35}` parton distribution function up to a scale
- :math:`Q^{2} > m_{t}^{2}`:
-
-.. math::
-
- \begin{matrix}
- T_{35}(m_{b}^{2},x) & = & \Sigma(m_{b}^{2},x) = \Gamma_{S,qq}(Q_{0}^{2},m_{b}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,qg}(Q_{0}^{2},m_{b}^{2},x) \otimes g(Q_{0}^{2},x) \\
- T_{35}(m_{t}^{2},x) & = & \Sigma(m_{t}^{2},x) = \Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},x) \otimes \Sigma(m_{b}^{2},x) + \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},x) \otimes g(m_{b}^{2},x) \\
- & = & \Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},x) \otimes \left\lbrack \Gamma_{S,qq}(Q_{0}^{2},m_{b}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,qg}(Q_{0}^{2},m_{b}^{2},x) \otimes g(Q_{0}^{2},x) \right\rbrack \\
- & + & \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},x) \otimes \left\lbrack \Gamma_{S,gq}(Q_{0}^{2},m_{b}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,gg}(Q_{0}^{2},m_{b}^{2},x) \otimes g(Q_{0}^{2},x) \right\rbrack \\
- T_{35}(Q^{2},x) & = & \Gamma_{NS}^{+}(m_{t}^{2},Q^{2},x) \otimes \Sigma(m_{t}^{2},x) \\
- & = & \Gamma_{NS}^{+}(m_{t}^{2},Q^{2},x) \\
- & \otimes & \{\lbrack\Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},x) \otimes \Gamma_{S,qq}(Q_{0}^{2},m_{b}^{2},x) + \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},x) \otimes \Gamma_{S,gq}(Q_{0}^{2},m_{b}^{2},x)\rbrack \otimes \Sigma(Q_{0}^{2},x) \\
- & + & \lbrack\Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},x) \otimes \Gamma_{S,qg}(Q_{0}^{2},m_{b}^{2},x) + \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},x) \otimes \Gamma_{S,gg}(Q_{0}^{2},m_{b}^{2},x)\rbrack \otimes g(Q_{0}^{2},x)\} \\
- \end{matrix}
-
-- In our code we have defined :math:`\Gamma_{NS}^{q,35}` and
- :math:`\Gamma_{NS}^{g,35}` as the evolution kernel products which
- appear respectively in front of the initial singlet and gluon
- distribution:
-
-.. math::
-
- \begin{matrix}
- \Gamma_{NS}^{q,35}(Q_{0}^{2},Q^{2},N) & = & \Gamma_{NS}^{+}(m_{t}^{2},Q^{2},N)\lbrack\Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},N)\Gamma_{S,qq}(Q_{0}^{2},m_{b}^{2},N) \\
- & + & \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},N)\Gamma_{S,gq}(Q_{0}^{2},m_{b}^{2},N)\rbrack \\
- \Gamma_{NS}^{g,35}(Q_{0}^{2},Q^{2},N) & = & \Gamma_{NS}^{+}(m_{t}^{2},Q^{2},N)\lbrack\Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},N)\Gamma_{S,qg}(Q_{0}^{2},m_{b}^{2},N) \\
- & + & \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},N)\Gamma_{S,gg}(Q_{0}^{2},m_{b}^{2},N)\rbrack \\
- \end{matrix}
-
-- As far as the :math:`V_{J}` sector is concerned we must proceed in
- the same way. Namely, if :math:`Q_{0}^{2} = m_{c}^{2}`, the
- :math:`V_{15}` parton distribution function evolves from the initial
- scale to any final scale :math:`Q^{2} > m_{c}^{2}` according to the
- NS minus evolution equation:
-
-.. math::
-
- V_{15}(Q^{2},x) = \Gamma_{NS}^{-}(Q_{0}^{2},Q^{2},x) \otimes V_{15}(Q_{0}^{2},x).
-
-- Instead the :math:`V_{24}` parton distribution defined in Eq. (15)
- coincides with the total valence distribution :math:`V` up to the
- bottom threshold, while above the threshold it evolves according with
- the minus evolution kernel. Therefore for :math:`Q^{2} > m_{b}^{2}` :
-
-.. math::
-
- \begin{matrix}
- V_{24}(m_{b}^{2},x) & = & V(m_{b}^{2},x) = \Gamma_{NS}^{v}(Q_{0}^{2},m_{b}^{2},x) \otimes V(Q_{0}^{2},x) \\
- V_{24}(Q^{2},x) & = & \Gamma_{NS}^{-}(m_{b}^{2},Q^{2},x) \otimes V_{24}(m_{b}^{2},x) \\
- & = & \Gamma_{NS}^{-}(m_{b}^{2},Q^{2},x) \otimes \Gamma_{NS}^{v}(Q_{0}^{2},m_{b}^{2},x) \otimes V(Q_{0}^{2},x) \\
- \end{matrix}
-
-- For a NLO evolution :math:`\Gamma_{NS}^{-} = \Gamma_{NS}^{v}`,
- therefore there would not be no need of introducing new evolution
- kernels. However, if we want to build a structure for the code which
- can be easily used for a NNLO evolution code we should define, as
- well as the :math:`\Gamma_{NS}^{q,24}` and :math:`\Gamma_{NS}^{g,24}`
- kernels, a :math:`\Gamma_{NS}^{- ,24}` kernel as:
-
-.. math::
-
- \Gamma_{NS}^{- ,24}(Q_{0}^{2},Q^{2},N) = \Gamma_{NS}^{-}(m_{b}^{2},Q^{2},N)\Gamma_{NS}^{v}(Q_{0}^{2},m_{b}^{2},N)
-
-- In the same way we can write explicitely the evolution of the
- :math:`V_{35}` parton distribution function up to a scale
- :math:`Q^{2} > m_{t}^{2}`:
-
-.. math::
-
- \begin{matrix}
- V_{35}(m_{t}^{2},x) & = & V(m_{t}^{2},x) = \Gamma_{NS}^{v}(Q_{0}^{2},m_{t}^{2},x) \otimes V(Q_{0}^{2},x) \\
- T_{35}(Q^{2},x) & = & \Gamma_{NS}^{-}(m_{t}^{2},Q^{2},x) \otimes V(m_{t}^{2},x) \\
- & = & \Gamma_{NS}^{-}(m_{t}^{2},Q^{2},x)\Gamma_{NS}^{v}(Q_{0}^{2},m_{t}^{2},x) \otimes V(Q_{0}^{2},x) \\
- \end{matrix}
-
-- In our code we must define :math:`\Gamma_{NS}^{- ,35}` as
-
-.. math::
-
- \Gamma_{NS}^{- ,35}(Q_{0}^{2},Q^{2},N) = \Gamma_{NS}^{-}(m_{t}^{2},Q^{2},N)\Gamma_{NS}^{v}(m_{t}^{2},Q^{2},N)
-
-- Case II: general case :math:`Q_{0}^{2} < m_{c}^{2}`
-
-.. raw:: html
-
-
-
-- If :math:`Q^{2} > m_{c}^{2}` the :math:`T_{15}` parton distribution
- function coincides with the Singlet distribution up to the bottom
- threshold, while above the threshold it evolves according to the NS
- evolution equation:
-
-.. math::
-
- \begin{matrix}
- T_{15}(m_{c}^{2},x) & = & \Sigma(m_{c}^{2},x) = \Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,qg}(Q_{0}^{2},m_{c}^{2},x) \otimes g(Q_{0}^{2},x) \\
- T_{15}(Q^{2},x) & = & \Gamma_{NS}^{+}(m_{c}^{2},Q^{2},x) \otimes T_{15}(m_{c}^{2},x) \\
- & = & \Gamma_{NS}^{+}(m_{c}^{2},Q^{2},x) \otimes \lbrack\Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},x) \otimes \Sigma(Q_{0}^{2},x) \\
- & + & \Gamma_{S,qg}(Q_{0}^{2},m_{c}^{2},x) \otimes g(Q_{0}^{2},x)\rbrack \\
- \end{matrix}
-
-- In our code we define :math:`\Gamma_{NS}^{q,15}` and
- :math:`\Gamma_{NS}^{g,15}` as the evolution kernel products which
- multiply the initial singlet and gluon distributions:
-
-.. math::
-
- \begin{matrix}
- \Gamma_{NS}^{q,15}(Q_{0}^{2},Q^{2},N) & = & \Gamma_{NS}^{+}(m_{c}^{2},Q^{2},N)\Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},N) \\
- \Gamma_{NS}^{g,15}(Q_{0}^{2},Q^{2},N) & = & \Gamma_{NS}^{+}(m_{c}^{2},Q^{2},N)\Gamma_{S,qg}(Q_{0}^{2},m_{c}^{2},N) \\
- \end{matrix}
-
-- In the same way, if :math:`Q^{2} > m_{b}^{2}` the :math:`T_{24}`
- parton distribution is not just :math:`\Sigma` but it coincides with
- the Singlet distribution up to the bottom threshold, while above the
- threshold it evolves according to the NS evolution equation:
-
-.. math::
-
- \begin{matrix}
- T_{24}(m_{c}^{2},x) & = & \Sigma(m_{c}^{2},x) = \Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,qg}(Q_{0}^{2},m_{c}^{2},x) \otimes g(Q_{0}^{2},x) \\
- T_{24}(m_{b}^{2},x) & = & \Sigma(m_{b}^{2},x) = \Gamma_{S,qq}(m_{c}^{2},m_{b}^{2},x) \otimes \Sigma(m_{c}^{2},x) + \Gamma_{S,qg}(m_{c}^{2},m_{b}^{2},x) \otimes g(m_{c}^{2},x) \\
- & = & \Gamma_{S,qq}(m_{c}^{2},m_{b}^{2},x) \otimes \left\lbrack \Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,qg}(Q_{0}^{2},m_{c}^{2},x) \otimes g(Q_{0}^{2},x) \right\rbrack \\
- & + & \Gamma_{S,qg}(m_{c}^{2},m_{b}^{2},x) \otimes \left\lbrack \Gamma_{S,gq}(Q_{0}^{2},m_{c}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,gg}(Q_{0}^{2},m_{c}^{2},x) \otimes g(Q_{0}^{2},x) \right\rbrack \\
- T_{24}(Q^{2},x) & = & \Gamma_{NS}^{+}(m_{b}^{2},Q^{2},x) \otimes T_{24}(m_{b}^{2},x) \\
- & = & \Gamma_{NS}^{+}(m_{b}^{2},Q^{2},x) \\
- & \otimes & \{\lbrack\Gamma_{S,qq}(m_{c}^{2},m_{b}^{2},x) \otimes \Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},x) + \Gamma_{S,qg}(m_{c}^{2},m_{b}^{2},x) \otimes \Gamma_{S,gq}(Q_{0}^{2},m_{c}^{2},x)\rbrack \otimes \Sigma(Q_{0}^{2},x) \\
- & + & \lbrack\Gamma_{S,qq}(m_{c}^{2},m_{b}^{2},x) \otimes \Gamma_{S,qg}(Q_{0}^{2},m_{c}^{2},x) + \Gamma_{S,qg}(m_{c}^{2},m_{b}^{2},x) \otimes \Gamma_{S,gg}(Q_{0}^{2},m_{c}^{2},x)\rbrack \otimes g(Q_{0}^{2},x)\} \\
- \end{matrix}
-
-- In our code we have defined :math:`\Gamma_{NS}^{q,24}` and
- :math:`\Gamma_{NS}^{g,24}` as the evolution kernel products which
- multiply initial singlet and gluon distributions:
-
-.. math::
-
- \begin{matrix}
- \Gamma_{NS}^{q,24}(Q_{0}^{2},Q^{2},N) & = & \Gamma_{NS}^{+}(m_{b}^{2},Q^{2},N)\lbrack\Gamma_{S,qq}(m_{c}^{2},m_{b}^{2},N)\Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},N) \\
- & + & \Gamma_{S,qg}(m_{c}^{2},m_{b}^{2},N)\Gamma_{S,gq}(Q_{0}^{2},m_{c}^{2},N)\rbrack \\
- \Gamma_{NS}^{g,24}(Q_{0}^{2},Q^{2},N) & = & \Gamma_{NS}^{+}(m_{b}^{2},Q^{2},N)\lbrack\Gamma_{S,qq}(m_{c}^{2},m_{b}^{2},N)\Gamma_{S,qg}(Q_{0}^{2},m_{c}^{2},N) \\
- & + & \Gamma_{S,qg}(m_{c}^{2},m_{b}^{2},N)\Gamma_{S,gg}(Q_{0}^{2},m_{c}^{2},N)\rbrack \\
- \end{matrix}
-
-- Finally, if :math:`Q^{2} > m_{b}^{2}` the :math:`T_{35}` parton
- distribution is not just :math:`\Sigma` but it coincides with the
- Singlet distribution up to the top threshold, while above the
- threshold it evolves according to the NS evolution equation:
-
-.. math::
-
- \begin{matrix}
- T_{35}(m_{c}^{2},x) & = & \Sigma(m_{c}^{2},x) = \Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,qg}(Q_{0}^{2},m_{c}^{2},x) \otimes g(Q_{0}^{2},x) \\
- T_{35}(m_{b}^{2},x) & = & \Sigma(m_{b}^{2},x) = \Gamma_{S,qq}(m_{c}^{2},m_{b}^{2},x) \otimes \Sigma(m_{c}^{2},x) + \Gamma_{S,qg}(m_{c}^{2},m_{b}^{2},x) \otimes g(m_{c}^{2},x) \\
- & = & \Gamma_{S,qq}(m_{c}^{2},m_{b}^{2},x) \otimes \left\lbrack \Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,qg}(Q_{0}^{2},m_{c}^{2},x) \otimes g(Q_{0}^{2},x) \right\rbrack \\
- & + & \Gamma_{S,qg}(m_{c}^{2},m_{b}^{2},x) \otimes \left\lbrack \Gamma_{S,gq}(Q_{0}^{2},m_{c}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,gg}(Q_{0}^{2},m_{c}^{2},x) \otimes g(Q_{0}^{2},x) \right\rbrack \\
- T_{35}(m_{t}^{2},x) & = & \Sigma(m_{t}^{2},x) = \Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},x) \otimes \Sigma(m_{b}^{2},x) + \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},x) \otimes g(m_{b}^{2},x) \\
- & = & \Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},x) \otimes \\
- & & \{\Gamma_{S,qq}(m_{c}^{2},m_{b}^{2},x) \otimes \left\lbrack \Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,qg}(Q_{0}^{2},m_{c}^{2},x) \otimes g(Q_{0}^{2},x) \right\rbrack \\
- & + & \Gamma_{S,qg}(m_{c}^{2},m_{b}^{2},x) \otimes \left\lbrack \Gamma_{S,gq}(Q_{0}^{2},m_{c}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,gg}(Q_{0}^{2},m_{c}^{2},x) \otimes g(Q_{0}^{2},x) \right\rbrack\} \\
- & + & \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},x) \otimes \\
- & & \{\Gamma_{S,gq}(m_{c}^{2},m_{b}^{2},x) \otimes \left\lbrack \Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,qg}(Q_{0}^{2},m_{c}^{2},x) \otimes g(Q_{0}^{2},x) \right\rbrack \\
- & + & \Gamma_{S,gg}(m_{c}^{2},m_{b}^{2},x) \otimes \left\lbrack \Gamma_{S,gq}(Q_{0}^{2},m_{c}^{2},x) \otimes \Sigma(Q_{0}^{2},x) + \Gamma_{S,gg}(Q_{0}^{2},m_{c}^{2},x) \otimes g(Q_{0}^{2},x) \right\rbrack\} \\
- T_{35}(Q^{2},x) & = & \Gamma_{NS}^{+}(m_{t}^{2},Q^{2},x) \otimes T_{35}(m_{t}^{2},x) \\
- & = & \Gamma_{NS}^{+}(m_{t}^{2},Q^{2},x) \otimes \\
- & & \{\lbrack\Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},x) \otimes \Gamma_{S,qq}(m_{c}^{2},m_{b}^{2},x) \otimes \Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},x) \\
- & + & \Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},x) \otimes \Gamma_{S,qg}(m_{c}^{2},m_{b}^{2},x) \otimes \Gamma_{S,gq}(Q_{0}^{2},m_{c}^{2},x) \\
- & + & \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},x) \otimes \Gamma_{S,gq}(m_{c}^{2},m_{b}^{2},x) \otimes \Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},x) \\
- & + & \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},x) \otimes \Gamma_{S,gg}(m_{c}^{2},m_{b}^{2},x) \otimes \Gamma_{S,gq}(Q_{0}^{2},m_{c}^{2},x)\rbrack \otimes \Sigma(Q_{0}^{2},x) \\
- & + & \lbrack\Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},x) \otimes \Gamma_{S,qq}(m_{c}^{2},m_{b}^{2},x) \otimes \Gamma_{S,qg}(Q_{0}^{2},m_{c}^{2},x) \\
- & + & \Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},x) \otimes \Gamma_{S,qg}(m_{c}^{2},m_{b}^{2},x) \otimes \Gamma_{S,gg}(Q_{0}^{2},m_{c}^{2},x) \\
- & + & \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},x) \otimes \Gamma_{S,gq}(m_{c}^{2},m_{b}^{2},x) \otimes \Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},x) \\
- & + & \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},x) \otimes \Gamma_{S,gg}(m_{c}^{2},m_{b}^{2},x) \otimes \Gamma_{S,gg}(Q_{0}^{2},m_{c}^{2},x)\rbrack \otimes g(Q_{0}^{2},x)\} \\
- \end{matrix}
-
-- In our code we have defined :math:`\Gamma_{NS}^{q,35}` and
- :math:`\Gamma_{NS}^{g,35}` the evolution kernel products which
- multiply the initial singlet and gluon distributions:
-
-.. math::
-
- \begin{matrix}
- \Gamma_{NS}^{q,35}(Q_{0}^{2},Q^{2},N) & = & \Gamma_{NS}^{+}(m_{t}^{2},Q^{2},N)\lbrack\Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},N)\Gamma_{S,qq}(m_{c}^{2},m_{b}^{2},N)\Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},N) \\
- & + & \Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},N)\Gamma_{S,qg}(m_{c}^{2},m_{b}^{2},N)\Gamma_{S,gq}(Q_{0}^{2},m_{c}^{2},N) \\
- & + & \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},N)\Gamma_{S,gq}(m_{c}^{2},m_{b}^{2},N)\Gamma_{S,qq}(Q_{0}^{2},m_{c}^{2},N) \\
- & + & \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},N)\Gamma_{S,gg}(m_{c}^{2},m_{b}^{2},N)\Gamma_{S,gq}(Q_{0}^{2},m_{c}^{2},N)\rbrack \\
- \Gamma_{NS}^{g,35}(Q_{0}^{2},Q^{2},N) & = & \Gamma_{NS}^{+}(m_{t}^{2},Q^{2},N)\lbrack\Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},N)\Gamma_{S,qq}(m_{c}^{2},m_{b}^{2},N)\Gamma_{S,qg}(Q_{0}^{2},m_{c}^{2},N) \\
- & + & \Gamma_{S,qq}(m_{b}^{2},m_{t}^{2},N)\Gamma_{S,qg}(m_{c}^{2},m_{b}^{2},N)\Gamma_{S,gg}(Q_{0}^{2},m_{c}^{2},N) \\
- & + & \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},N)\Gamma_{S,gq}(m_{c}^{2},m_{b}^{2},N)\Gamma_{S,qg}(Q_{0}^{2},m_{c}^{2},N) \\
- & + & \Gamma_{S,qg}(m_{b}^{2},m_{t}^{2},N)\Gamma_{S,gg}(m_{c}^{2},m_{b}^{2},N)\Gamma_{S,gg}(Q_{0}^{2},m_{c}^{2},N)\rbrack \\
- \end{matrix}
-
-- The same must be done for the :math:`V` sector. If
- :math:`Q^{2} > m_{c}^{2}` the :math:`TV_{15}` parton distribution
- function coincides with the Total Valence distribution up to the
- bottom threshold, while above the threshold it evolves according to
- the NS evolution equation:
-
-.. math::
-
- \begin{matrix}
- V_{15}(m_{c}^{2},x) & = & V(m_{c}^{2},x) = \Gamma_{NS}^{v} \otimes V(Q_{0}^{2},x) \\
- V_{15}(Q^{2},x) & = & \Gamma_{NS}^{-}(m_{c}^{2},Q^{2},x) \otimes V_{15}(m_{c}^{2},x) \\
- & = & \Gamma_{NS}^{-}(m_{c}^{2},Q^{2},x) \otimes \Gamma_{NS}^{v} \otimes V(Q_{0}^{2},x) \\
- \end{matrix}
-
-- In our code we must define :math:`\Gamma_{NS}^{- ,15}` as:
-
-.. math::
-
- \Gamma_{NS}^{- ,15}(Q_{0}^{2},Q^{2},N) = \Gamma_{NS}^{-}(m_{c}^{2},Q^{2},N)\Gamma_{NS}^{v}(Q_{0}^{2},m_{c}^{2},N)
-
-- In the same way, if :math:`Q^{2} > m_{b}^{2}` the :math:`V_{24}`
- parton distribution coincides with the Total valence distribution up
- to the bottom threshold, while above the threshold it evolves
- according to the NS minus evolution equation:
-
-.. math::
-
- \begin{matrix}
- V_{24}(m_{b}^{2},x) & = & V(m_{b}^{2},x) = \Gamma_{NS}^{v}(Q_{0}^{2},m_{b}^{2},x) \otimes V(Q_{0}^{2},x) \\
- V_{24}(Q^{2},x) & = & \Gamma_{NS}^{-}(m_{b}^{2},Q^{2},x) \otimes V_{24}(m_{b}^{2},x) \\
- & = & \Gamma_{NS}^{-}(m_{b}^{2},Q^{2},x) \otimes \Gamma_{NS}^{v}(Q_{0}^{2},m_{b}^{2},x) \otimes V(Q_{0}^{2},x) \\
- \end{matrix}
-
-- For a NLO evolution :math:`\Gamma_{NS}^{-} = \Gamma_{NS}^{v}`,
- therefore there would not be no need of introducing new evolution
- kernels. However, if we want to build a structure for the code which
- can be easily used for a NNLO evolution code we should define a
- :math:`\Gamma_{NS}^{- ,24}` kernel as:
-
-.. math::
-
- \Gamma_{NS}^{- ,24}(Q_{0}^{2},Q^{2},N) = \Gamma_{NS}^{-}(m_{b}^{2},Q^{2},N)\Gamma_{NS}^{v}(Q_{0}^{2},m_{b}^{2},N)
-
-- In the same way we can write explicitely the evolution of the
- :math:`V_{35}` parton distribution function up to a scale
- :math:`Q^{2} > m_{t}^{2}`:
-
-.. math::
-
- \begin{matrix}
- V_{35}(m_{t}^{2},x) & = & V(m_{t}^{2},x) = \Gamma_{NS}^{v}(Q_{0}^{2},m_{t}^{2},x) \otimes V(Q_{0}^{2},x) \\
- T_{35}(Q^{2},x) & = & \Gamma_{NS}^{-}(m_{t}^{2},Q^{2},x) \otimes V(m_{t}^{2},x) \\
- & = & \Gamma_{NS}^{-}(m_{t}^{2},Q^{2},x)\Gamma_{NS}^{v}(Q_{0}^{2},m_{t}^{2},x) \otimes V(Q_{0}^{2},x). \\
- \end{matrix}
-
-- Correspondingly, in our code we should define
- :math:`\Gamma_{NS}^{- ,35}` as
-
-.. math::
-
- \Gamma_{NS}^{- ,35}(Q_{0}^{2},Q^{2},N) = \Gamma_{NS}^{-}(m_{t}^{2},Q^{2},N)\Gamma_{NS}^{v}(m_{t}^{2},Q^{2},N)
-
-N space solutions to the evolution equations (Ref. )
-----------------------------------------------------
-
-- Singlet
-
-.. raw:: html
-
-
-
-- We pointed out before that the splitting functions (and therefore the
- anomalous dimensions) depend on the scale only through the coupling
- constant. We can then choose :math:`a_{s}` as evolution variable and
- rewrite the DGLAP evolution equation for the quark-singlet and gluon
- distributions, in Mellin-\ :math:`N` space, as.
-
- .. math::
-
- a_s\frac{\partial}{\partial a_s} \binom{\Sigma}{g}(N, a_s) = -\mathbf{R} \cdot \binom{\Sigma}{g}(N, a_s),
-
-- where the matrix **R** has the following perturbative expansion
-
-.. math::
-
- \mathbf{R} = \mathbf{R}_0+a_s\mathbf{R}_1+a_s\mathbf{R}_2 + \dots
-
-- with
-
-.. math::
-
- \mathbf{R}_0 \equiv \frac{\boldsymbol{\gamma}^{(0)}}{\beta_0}
-
-.. math::
-
- \mathbf{R}_k \equiv \frac{\boldsymbol{\gamma}^{(k)}}{\beta_0} - \sum_{i=1}^k \frac{\beta_i}{\beta_0}R_{k-i}
-
-- where the :math:`\mathbf{\gamma}` stands for the matrix of anomalous
- dimensions.
-
- The solution of the singlet evolution equation at leading order is:
-
-.. math::
-
- \mathbf{q}_{LO}(x,Q^2) = \mathbf{L}(a_s,a_0,N)\mathbf{q}_{LO}(x,Q_0^2).
-
-- The leading order evolution operator :math:`\mathbf{L}` is written, in terms
- of the eigenvalues of the leading order anomalous dimension matrix
-
-.. math::
-
- \lambda_{\pm} = \frac{1}{2\beta_{0}}\left\lbrack \gamma_{qq}^{0} + \gamma_{gg}^{0} \pm \sqrt{\left( \gamma_{qq}^{0} - \gamma_{gg}^{0} \right)^{2} + 4\gamma_{qg}^{0}\gamma_{gq}^{0}} \right\rbrack
-
-- and the corresponding projector matrices
-
-.. math::
-
- \mathbf{e}_\pm=\frac{\pm 1}{\lambda_+ - \lambda_-}(R^{(0)}-\lambda_\mp\mathbb{I}),
-
-- in the following form
-
-.. math::
-
- \mathbf{L}(a_s,a_0,N)= \mathbf{e}_-(\frac{a_s}{a_0})^{-\lambda_{-(N)}} + \mathbf{e}_+(\frac{a_s}{a_0})^{-\lambda_{+(N)}}.
-
-- We express the solution of the evolution equation
- `[eq:stdevol] <#eq:stdevol>`__ as a perturbative expansion around the
- LO solution :math:`\mathbf{L}(a_s,a_0,N)`
-
-.. math::
-
- \binom{\Sigma}{g}(N,a_s) = \bigg[\mathbb{I}+\sum_{k=1}^{\infty}a_s^kU_k(N)\bigg] \mathbf{L}(a_s,a_0,N)\bigg[\mathbb{I}+\sum_{k=1}^{\infty}a_0^kU_k(N)\bigg]^{-1}\binom{\Sigma}{g}(N,a_0)\equiv \mathbf{\Gamma}_S(N,a_s,a_0)\binom{\Sigma}{g}(N,a_0)
-
-- The *fully truncated* expression of the matrix evolution
- kernel up to NNLO reads
-
-.. math::
-
- \mathbf{\Gamma}_S(N) = \big[\mathbf{L} + a_s\mathbf{U}_1\mathbf{L} - a_0\mathbf{LU}_1 + a_s^2 \mathbf{U}_2\mathbf{L} - a_sa_0 \mathbf{U}_1\mathbf{LU}_1 + a_0^2\mathbf{L}(\mathbf{U}_1^2 - \mathbf{U}_2)\big].
-
-- The :math:`U` matrices introduced in the previous equation are
- defined by this commutation relations
-
-.. math::
-
- \big[ \mathbf{U}_1, \mathbf{R}_0 \big] = \mathbf{R}_1 + \mathbf{R}_1
-
-.. math::
-
- \big[ \mathbf{R}_2, \mathbf{R}_0 \big] = \mathbf{R}_2 +\mathbf{R}_1 \mathbf{U}_1 + 2 \mathbf{U}_2
-
-.. math::
-
- \vdots
-
-.. math::
-
- \big[ \mathbf{U}_k, \mathbf{R}_0 \big] = \mathbf{R}_k + \sum_{i=1}^{k-1} \mathbf{R}_{k-i} \mathbf{U}_i + k \mathbf{U}_k \equiv\ \widetilde{\mathbf{R}}_k + k \mathbf{U}_k.
-
-- as
-
-.. math::
-
- \mathbf{U}_k=-\frac{1}{k}[e_+\widetilde{\mathbf{R}}_ke_+ + e_-\widetilde{\mathbf{R}}_ke_-] + \frac{e_+ \widetilde{\mathbf{R}}_k e_-}{\lambda_- -\lambda_+ - k} + \frac{e_-\widetilde{\mathbf{R}}_ke_+}{\lambda_+ -\lambda_- - k}
-
-- where
-
-.. math::
-
- \widetilde{\mathbf{R}}_k = \mathbf{R}_k+\sum_{i=1}^{k-1}\mathbf{R}_{k-i}\mathbf{U}_i.
-
-- By solving recursively equations
- `[eq:ukexplicit] <#eq:ukexplicit>`__,
- `[eq:rtwiddle] <#eq:rtwiddle>`__ and the NLO approximation of
- eq.\ `[eq:r] <#eq:r>`__:
-
-.. math::
-
- \mathbf{R}_0 \equiv \frac{\boldsymbol{\gamma}^{(0)}}{\beta_0}
-
-.. math::
-
- \mathbf{R}_k\equiv - b_1 \mathbf{R}_{k-1} + \mathcal{O}(\textrm{NNLO})
-
-- the NLO full solution (corresponding to IMODEV=1 in ref.) can be
- easily implemented into the code. Practically the sum in
- eq.\ `[eq:ukexplicit] <#eq:ukexplicit>`__ is stopped to a
- sufficiently high order such as k=20.
-
-.. raw:: html
-
-
-
-- Non Singlet
-
-.. raw:: html
-
-
-
-- Eq. (\ `[U-eqn] <#U-eqn>`__) also holds for the scalar evolution of
- the non- singlet combinations of the quarks distributions, but with
- the obvious simplification that the right-hand sides vanish. This
- allows us to wrote down explicitly for $U_k^{\,\rm ns}$. At LO the
- solution simply reads as:
-
-.. math::
-
- \Gamma_{\rm NS,LO}^{\pm,v}(N,a_s,a_0)= (\frac{a_s}{a_0})^{-R_0^{ns}}
-
-- Both iterated and truncated non-singlet solutions can be written down
- in a compact closed form at NLO as well. Iterated solution:
-
-.. math::
-
- \Gamma^{\pm,v}_{\rm NS,NLO}(N,a_s,a_0) =\exp\bigg(\frac{U^{\pm,v}_1} {b_1}\ln(\frac{1+b_1a_s}{1+b_1 a_0})\bigg)(\frac{a_s}{a_0})^{-R_0^{ns}}.
-
-- Truncated solution:
-
-.. math::
-
- \Gamma^{\pm,v}_{\rm NS,NLO}(N,a_s,a_0) = \left(1 - U_1^{\,\pm,v} (a_s - a_0) \right) \left( \frac{a_s}{a_0}\right)^{-R_0^{\:\!\rm ns}}.
-
-Getting back the x-space PDF’s
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The :math:`x` space parton distributions are obtained by taking the
-inverse Mellin transforms of the solutions obtained in eq.
-(`[eq:solutionexpand] <#eq:solutionexpand>`__) which, making use of the
-convolution theorem, can be written as
-
-.. math::
-
- \begin{matrix}
- q_{NS}^{\pm ,v}(x,Q^{2}) & = & \int_{x}^{1}\frac{dy}{y}\Gamma_{qq}(y,a_{s},a_{0})\, q_{NS}^{\pm ,v}\left( \frac{x}{y},Q_{0}^{2} \right) \\
- \begin{pmatrix}
- \Sigma \\
- g \\
- \end{pmatrix}(x,Q^{2}) & = & \int_{x}^{1}\frac{dy}{y}\Gamma_{S}(y,a_{s},a_{0})\begin{pmatrix}
- \Sigma \\
- g \\
- \end{pmatrix}\left( \frac{x}{y},Q_{0}^{2} \right) \\
- \end{matrix}
-
-The evolution kernels :math:`\Gamma(x)` are defined as the inverse
-Mellin transforms of the evolution factors introduced in eqs.
-(`[eq:solutionexpand] <#eq:solutionexpand>`__)
-
-.. math::
-
- \Gamma_{S}(x,a_{s},a_{0}) = \int_{c - i\infty}^{c_{+}i\infty}\frac{dN}{2\pi i}x^{- N}\Gamma_{S}(N,a_{s},a_{0})
-
-Note however that all splitting functions, except the off-diagonal
-entries of the singlet matrix, diverge when :math:`x = 1`, this implies
-that the evolution kernels :math:`\Gamma(x)` will likewise be divergent
-in :math:`x = 1`.
-
-We now show that, like the splitting functions, the evolution factors
-can be defined as distributions. To this purpose consider the generic
-evolution factor :math:`\Gamma` such that (omitting the explicit
-dependence of :math:`\Gamma` on the coupling :math:`a_{s}`)
-
-.. math::
-
- f(x,Q^{2}) = \int_{x}^{1}\frac{dy}{y}\Gamma(y)f\left( \frac{x}{y},Q_{0}^{2} \right)\,.
-
-Defining the distribution
-
-.. math::
-
- \Gamma_{+}(x) = \Gamma(x) - \gamma\delta(1 - x)\,,\text{\quad\quad}where\quad\gamma = \int_{0}^{1}dx\Gamma(x)\,.
-
-Equation (`[eq:gengamma] <#eq:gengamma>`__) can then be rewritten as
-
-.. math::
-
- \begin{matrix}
- f(x,Q^{2}) & = \gamma f(x,Q_{0}^{2}) + \int_{x}^{1}\frac{dy}{y}\Gamma_{+}(y)f\left( \frac{x}{y},Q_{0}^{2} \right) \\
- & = \gamma f(x,Q_{0}^{2}) + \int_{x}^{1}\frac{dy}{y}\Gamma(y)\left\lbrack f\left( \frac{x}{y},Q_{0}^{2} \right) - yf\left( x,Q_{0}^{2} \right) \right\rbrack - f(x,Q_{0}^{2})\int_{0}^{x}dy\Gamma(y)\,. \\
- \end{matrix}
-
-Due to the subtraction eq. `[eq:gammadist] <#eq:gammadist>`__, all
-integrals on the r.h.s of eq. `[eq:genexp] <#eq:genexp>`__ converge and
-can be evaluated numerically. We can then use this expression to compute
-the parton distribution functions in :math:`x` space, determining
-:math:`\Gamma` numerically from eq.\ `[eq:xkernels] <#eq:xkernels>`__
-and :math:`\gamma` as
-
-.. math::
-
- \gamma = \int_{0}^{1}dx\int_{c - i\infty}^{c + i\infty}\frac{dN}{2\pi i}x^{- N}\Gamma(N) = \int_{c - i\infty}^{c + i\infty}\frac{dN}{2\pi i}\frac{\Gamma(N)}{1 - N}\,.
-
-In this singlet case, however this prescription has been slightly
-modified because :math:`\Gamma(N)|_{N = 1}` is indeed infinite. So
-eq.\ `[eq:genexp] <#eq:genexp>`__ is rewritten in another equivalent
-form. Let us define
-
-.. math::
-
- f^{(1)}(x,Q^{2}) = x\, f(x,Q^{2})\text{\quad\quad}\Gamma^{(1)}(x,Q_{0}^{2},Q^{2}) = x\Gamma(x,Q_{0}^{2},Q^{2}).
-
-Thus
-
-.. math::
-
- \begin{matrix}
- f^{(1)}(x,Q^{2}) & = & x\, f(x,Q^{2}) = \int_{x}^{1}\,\frac{dy}{y}\,\Gamma(y,Q_{0}^{2},Q^{2})\, x\, f\left( \frac{x}{y},Q_{0}^{2} \right) \\
- & = & \int_{x}^{1}\,\frac{dy}{y}\,\Gamma^{(1)}(y,Q_{0}^{2},Q^{2})\, f^{(1)}\left( \frac{x}{y},Q_{0}^{2} \right) \\
- & = & \int_{x}^{1}\,\frac{dy}{y}\,\Gamma^{(1)}(y,Q_{0}^{2},Q^{2})\,\left( f^{(1)}\left( \frac{x}{y},Q_{0}^{2} \right) - yf^{(1)}(x,Q_{0}^{2}) \right) \\
- & + & \int_{x}^{1}\,\frac{dy}{y}\, y\Gamma^{(1)}(y,Q_{0}^{2},Q^{2})\, f^{(1)}(x,Q_{0}^{2}) \\
- & = & \int_{x}^{1}\,\frac{dy}{y}\,\Gamma^{(1)}(y,Q_{0}^{2},Q^{2})\,\left( f^{(1)}\left( \frac{x}{y},Q_{0}^{2} \right) - yf^{(1)}(x,Q_{0}^{2}) \right) \\
- & + & f^{(1)}(x,Q_{0}^{2})\left\lbrack \int_{0}^{1}\, dy\, y\Gamma(y,Q_{0}^{2},Q^{2}) - \int_{0}^{x}\, y\Gamma(y) \right\rbrack \\
- \Rightarrow f(x,Q^{2}) & = & \int_{x}^{1}\,\frac{dy}{y}\, y\Gamma(y,Q_{0}^{2},Q^{2})\,\left( \frac{1}{y}f\left( \frac{x}{y},Q_{0}^{2} \right) - yf(x,Q_{0}^{2}) \right) \\
- & + & f(x,Q_{0}^{2})\left\lbrack \Gamma(N,Q_{0}^{2},Q^{2})|_{N = 2} - \int_{0}^{x}\, y\Gamma(y,Q_{0}^{2},Q^{2}) \right\rbrack \\
- \end{matrix}
-
-Target Mass Corrections
------------------------
-
-From Eq. (4.19) of Ref. , if we identify :math:`F` with
-:math:`F_{2}(y)/y^{2}` by comparing left and right hand sides of the
-equation in the limit of zero target mass, we obtain the expression of
-the NLT correction to the structure function :math:`F_{2}:`
-
-.. math::
-
- F_{2}^{NLT}(x,Q^{2}) = \frac{x^{2}}{\tau^{3/2}}\frac{F_{2}^{LT}(\xi,Q^{2})}{\xi^{2}} + 6\frac{M^{2}}{Q^{2}}\frac{x^{3}}{\tau^{2}}I_{2}(\xi,Q^{2})
-
-where
-
-.. math::
-
- \begin{matrix}
- I_{2}(\xi,Q^{2}) & = \int_{\xi}^{1}\, dz\,\frac{F_{2}^{LT}(z,Q^{2})}{z^{2}}. \\
- \tau & = 1\, + \,\frac{4M_{p}^{2}x^{2}}{Q^{2}} \\
- \xi & = \,\frac{2x}{1 + \sqrt{\tau}} \\
- \end{matrix}
-
-Now let us Mellin transform and antitransform
-:math:`F_{2}^{LT}(\xi,Q^{2})` and :math:`I_{2}(\xi,Q^{2})` with respect
-to the variable :math:`\xi`:
-
-.. math::
-
- F_{2}^{LT}(\xi,Q^{2}) = \int\frac{dN}{2\pi i}\,\xi^{- N}\Gamma(N,Q_{0}^{2},Q^{2})\, f\left( N,Q_{0}^{2} \right)
-
-while
-
-.. math::
-
- \begin{matrix}
- I_{2}(N,Q^{2}) & = \int_{0}^{1}d\xi\,\xi^{N - 1}\int_{\xi}^{1}\, dz\,\frac{F_{2}^{LT}(z,Q^{2})}{z^{2}} \\
- & = |\frac{\xi^{N}}{N}\,\int_{\xi}^{1}\, dz\,\frac{F_{2}^{LT}(z,Q^{2})}{z^{2}}|_{0}^{1} + \int_{0}^{1}\frac{d\xi}{N}\,\xi^{N}\,\frac{F_{2}^{LT}(\xi,Q^{2})}{\xi^{2}} \\
- & = \frac{1}{N}\,\int_{0}^{1}\, d\xi\,\xi^{N - 2}F_{2}^{LT}(\xi,Q^{2}) \\
- & = \frac{F_{2}^{LT}(N - 1,Q^{2})}{N} \\
- \Rightarrow I_{2}^{LT}(\xi,Q^{2}) & = \int\frac{dN}{2\pi i}\,\xi^{- N}\,\frac{F_{2}^{LT}(N - 1,Q^{2})}{N} \\
- & = \frac{1}{\xi}\,\int\frac{dN}{2\pi i}\,\xi^{- N}\,\frac{F_{2}^{LT}(N,Q^{2})}{N + 1}. \\
- \end{matrix}
-
-Now, by substituting equations `[eq:fslt] <#eq:fslt>`__ and
-`[eq:i2N] <#eq:i2N>`__ into `[eq:tmcformula] <#eq:tmcformula>`__ we
-obtain
-
-.. math::
-
- \begin{matrix}
- F_{2}^{NLT}(\xi,Q^{2}) & = & \,\int\frac{dN}{2\pi i}\,\xi^{- N}\,\left( \frac{x^{2}}{\tau^{3/2}\xi^{2}} + \frac{6M^{2}}{Q^{2}}\frac{x^{3}}{\tau^{2}}\frac{1}{\xi(N + 1)} \right) \\
- & & C_{2}(N,\alpha_{s}(Q^{2}))\Gamma(N,Q_{0}^{2},Q^{2})\, q\left( N,Q_{0}^{2} \right). \\
- \end{matrix}
-
-Now we can reinterpret the factor in front of
-:math:`C_{2}(N,\alpha_{s}(Q^{2}))` as the new Target Mass Corrected
-coefficient function, which can be written as a function of
-:math:`\tau`:
-
-.. math::
-
- C_{2}^{TMC}(N,\alpha_{s}(Q^{2})) = \frac{(1 + \sqrt{\tau})^{2}}{4\tau^{3/2}}\left( 1 + \frac{3\left( 1 - 1/\sqrt{\tau} \right)}{N + 1} \right)C_{2}(N,\alpha_{s}(Q^{2})).
-
-Notice that into the limit
-:math:`M_{p}/Q \rightarrow 0,\,\tau \rightarrow 1`,
-:math:`C_{2}^{TMC}(N,\alpha_{s}(Q^{2}))` becomes
-:math:`C_{2}(N,\alpha_{s}(Q^{2}))`.
-
-The same procedure can be applied to find the NLT target mass
-corrections to the :math:`F_{L}` and :math:`F_{3}` structure functions.
-
-Starting from formula (4.21b) of Ref. , being
-
-.. math::
-
- \frac{\nu W_{2}}{M} = F_{2}\text{\quad\quad}W_{1} = F_{1}\text{\quad\quad}F_{L} = \frac{\nu W_{2}}{M} - 2xW_{1} = 2xW_{L} - \frac{4x^{2}M^{2}}{Q^{2}}\frac{\nu W_{2}}{M},
-
-we find
-
-.. math::
-
- F_{L}^{NLT}(x,Q^{2}) = F_{L}^{LT}(x,Q^{2}) + \frac{x^{2}(1 - \tau)}{\tau^{3/2}}\frac{F_{2}^{LT}(\xi,Q^{2})}{\xi^{2}} + \frac{M^{2}}{Q^{2}}\frac{x^{3}(6 - 2\tau)}{\tau^{2}}I_{2}(\xi,Q^{2})
-
-where :math:`I_{2}` is defined in Eq. \ `[eq:i2] <#eq:i2>`__. With the
-same calculations as in the :math:`F_{2}` case we obtain the following
-formula
-
-.. math::
-
- \begin{matrix}
- F_{L}^{NLT}(\xi,Q^{2}) & = & F_{L}^{LT}(x,Q^{2}) + \,\int\frac{dN}{2\pi i}\,\xi^{- N}\,(\frac{x^{2}(1 - \tau)}{\tau^{3/2}\xi^{2}} + \frac{M^{2}}{Q^{2}}\frac{x^{3}}{\tau^{2}}\frac{(6 - 2\tau)}{\xi(N + 1)}) \\
- & & C_{2}(N,\alpha_{s}(Q^{2}))\,\Gamma(N,Q_{0}^{2},Q^{2})\, f\left( N,Q_{0}^{2} \right). \\
- \end{matrix}
-
-Now we can reinterpret the factor in front of
-:math:`C_{2}(N,\alpha_{s}(Q^{2}))` as the new Target Mass Corrected
-Evolution coefficient, which by re-expressing everything as a function
-of :math:`\tau` can be written as:
-
-.. math::
-
- \begin{matrix}
- C_{L}^{TMC}(N,\alpha_{s}(Q^{2})) & = & \lbrack 1 + \frac{(1 + \sqrt{\tau})^{2}(1 - \tau)}{4\tau^{3/2}} \cdot \\
- & & \left( 1 - \frac{(3 - \tau)(1 + \sqrt{\tau})}{4\tau^{2}}\frac{1}{N + 1} \right)\frac{C_{2}(N,\alpha_{s}(Q^{2}))}{C_{L}(N,\alpha_{s}(Q^{2}))}\rbrack C_{L}(N,\alpha_{s}(Q^{2})). \\
- \end{matrix}
-
-Finally to find the TMC of :math:`F_{3}` we start from Eq. (4.22) of
-Ref. , where :math:`F = 2F_{3}(y)/y` as we can see by comparing the left
-and right hand side members of the equation in the limit of
-:math:`M \rightarrow 0`:
-
-.. math::
-
- F_{L}^{NLT}(x,Q^{2}) = \frac{x}{\tau}\frac{F_{3}^{LT}(\xi,Q^{2})}{\xi} + \frac{2M^{2}}{Q^{2}}\frac{x^{2}}{\tau^{3/2}}I_{3}(\xi,Q^{2})
-
-where
-
-.. math::
-
- I_{3}(\xi,Q^{2}) = \int_{\xi}^{1}\, dz\,\frac{2F_{3}^{LT}(z,Q^{2})}{z}.
-
-With the same calculations as in the :math:`F_{2}` case and by noticing
-that
-
-.. math::
-
- \begin{matrix}
- I_{3}(N,Q^{2}) & = \int_{0}^{1}d\xi\,\xi^{N - 1}\int_{\xi}^{1}\, dz\,\frac{2F_{3}^{LT}(z,Q^{2})}{z} \\
- & = |\frac{\xi^{N}}{N}\,\int_{\xi}^{1}\, dz\,\frac{2F_{3}^{LT}(z,Q^{2})}{z}|_{0}^{1} + \int_{0}^{1}\frac{d\xi}{N}\,\xi^{N}\,\frac{2F_{3}^{LT}(\xi,Q^{2})}{\xi} \\
- & = \frac{2}{N}\,\int_{0}^{1}\, d\xi\,\xi^{N - 1}F_{3}^{LT}(\xi,Q^{2}) \\
- & = \frac{2F_{3}^{LT}(N,Q^{2})}{N}, \\
- \end{matrix}
-
-we obtain the following formula
-
-.. math::
-
- \begin{matrix}
- F_{3}^{NLT}(\xi,Q^{2}) & = & \,\int\frac{dN}{2\pi i}\,\xi^{- N}\,(\frac{x}{\tau\xi} + \, 4\frac{M^{2}}{Q^{2}}\frac{x^{2}}{\tau^{3/2}}\frac{1}{N}) \\
- & & C_{3}(N,\alpha_{s}(Q^{2}))\,\Gamma(N,Q_{0}^{2},Q^{2})\, f\left( N,Q_{0}^{2} \right). \\
- \end{matrix}
-
-The factor in front of :math:`C_{3}(N,\alpha_{s}(Q^{2}))` can be
-interpreted as the NLT Target Mass corrected coefficient function, which
-can be written as a function of :math:`\tau`:
-
-.. math::
-
- \begin{matrix}
- C_{3}^{TMC}(N,\alpha_{s}(Q^{2})) & = & \frac{1 + \sqrt{\tau}}{2\tau}\left( 1\, + \, 2\,\left( 1 - \frac{1}{\sqrt{\tau}} \right)\frac{1}{N} \right)C_{3}(N,\alpha_{s}(Q^{2})). \\
- \end{matrix}
diff --git a/doc/sphinx/source/theory/index.rst b/doc/sphinx/source/theory/index.rst
index 5f8a288305..e1b3f00e4e 100644
--- a/doc/sphinx/source/theory/index.rst
+++ b/doc/sphinx/source/theory/index.rst
@@ -17,4 +17,3 @@ this information using the NNPDF code itself is detailed.
./theoryparamsdefinitions
./theoryindex
./theoryparamsinfo
- ./PTevol
diff --git a/doc/sphinx/source/theory/theoryparamsinfo.rst b/doc/sphinx/source/theory/theoryparamsinfo.rst
index 2f5a23a6f7..4c207fef27 100644
--- a/doc/sphinx/source/theory/theoryparamsinfo.rst
+++ b/doc/sphinx/source/theory/theoryparamsinfo.rst
@@ -92,4 +92,4 @@ table in your current working directory as ``theory__info.csv``::
where ``FIT`` is a valid fit name. If the fit cannot be found locally, the script
will attempt to download it.
-The parameters in the above are defined [here](./theoryparamsdefinitions).
+The parameters in the above are defined in :ref:`th_parameter_definitions`.