Physics and Astronomy » High Energy Physics »


11 Dec 2023

MMHT 2014 PDFs : stand-alone code

Here we enclose stand-alone Fortran, C++ and Mathematica code to provide public access to the MMHT 2014 PDFs:

mmht2014code.tar.gz: Fortran, C++ and Mathematica interface code together with example programs.

mmht2014grids.tar.gz: LO, NLO and NNLO grid files including eigenvector sets for PDF uncertainties and central sets with αS ranges, as described in LHAPDF grids section.

mmht2014gridsfl.tar.gz: NLO and NNLO grid files including eigenvector sets for PDF uncertainties for different flavour schemes, and central sets with αS and mc,mb ranges for different flavour schemes, as described in LHAPDF grids section.

In2ScienceTheory.tar.gz: In2Science Theory download.

The README file included in the code tarball is copied below:

MMHT 2014 PDFs

The enclosed Fortran, C++ and Mathematica code provides public access 
to the parton distribution functions (PDFs) published in:

  L.A. Harland-Lang, A. D. Martin, P. Motylinski and R. S. Thorne,
  "Parton distributions in the LHC era: MMHT 2014 PDFs",

Please reference this paper if you use the PDFs for a publication. 
Further references, relevant to specific sets are

  L.A. Harland-Lang, A. D. Martin, P. Motylinski and R. S. Thorne,
  "Uncertainties on alpha_S in the MMHT2014 global PDF analysis and
   implications for SM predictions",

  L.A. Harland-Lang, A. D. Martin, P. Motylinski and R. S. Thorne,
  "Charm and beauty quark masses in the MMHT2014 global PDF analysis",

Note that this code is in most aspects identical to the code for producing 
MSTW2008 PDFs, and hence the names of the files keep the mstw name for ease 
of continuity. The only change is in the number of eigenvector sets for the 
uncertainty calculation, and this have been changed by hand, from 2*20
to 2*25 where necessary. The grids are of the same form as MSTW 2008 PDFs, 
but in example.f and example.cc the grids called have been changed to 
the MMHT file names. 
Unpack the code tarball with "tar zxvf mmht2104code.tar.gz" to give the
following files:

  README      : This short documentation file.
  mstwpdf.f   : Fortran code to access PDF grids.
  mstwpdf.h   : C++ class header file.
  mstwpdf.cc  : C++ class implementation file.
  example.f   : Fortran example code.
  example.cc  : C++ example code.
  Makefile    : Compilation using Make utility.
  alphaS.f    : Fortran code for alphaS.

  mstwpdf.m   : Mathematica package to access PDF grids.
  example.nb  : Mathematica example notebook.
  alphaS.tm   : Mathlink template for alphaS code. 
  alphaS.c    : Mathlink C wrapper around Fortran code for alphaS.
  diff3all.sh : Compare output of Fortran, C++ and Mathematica example code.
Unpack the grids tarball with "tar zxvf mmht2014grids.tar.gz". The PDF grids from 
the best fit and the eigenvector PDFS at LO, NLO and NNLO are stored in


where e.g. 'mmht2014lo135.tar.gz' corresponds to alpha_s=0.135 and similarly for 
the other set. The eigenvector PDF sets are stored in files named


where ii = 01 to ii = 50 label the eigenvector sets and ii = (2*n-1) and
ii = (2*n) correspond, respectively, to the '+' and '-' directions of the nth
eigenvector (n = 1 to 25).  In producing the eigenvector PDF sets, the
tolerance parameter T, i.e. the square root of the change in global chi^2
when moving along an eigenvector direction starting from the global minimum,
is determined by a new dynamic procedure such that each individual data set
included in the global fit is described within its 68% one-sigma 
confidence level (C.L.) limits.  The values of the tolerance T, and also the
corresponding distance t moved along each eigenvector direction, are stored in
the grid files.  (In the ideal quadratic case, t = T.)  Note that these 68% 
C.L. limits are defined according to "hypothesis-testing" criteria and 
therefore the values of the tolerance T differ from the value of T = 1 
(68% C.L.) expected according to the more usual "parameter-fitting" 
criteria. Full details of the new dynamic procedure for determining PDF 
uncertainties are given in Section 6 of Eur. Phys. J. C63 (2009) 189-285.

The PDF grids from the best fit at LO, NLO and NNLO for a short range of 
alpha_s values are stored in


while at NLO and NNLO the best fit grids for a large range of alpha_s 
values are stored in 


For different flavour schemes, unpack the appropriate grids tarball with 
"tar zxvf mmht2014gridsfl.tar.gz". The best fit and the eigenvector PDFs 
at NLO and NNLO for different flavour schemes are stored in


where X=3,4 and 4as5, while the best fit grids for a small range of alpha_s
values and different flavour schemes are stored in


where X=3,4. The NLO and NNLO grids for a range of m_c and m_b values are
stored in 


where Q=c,b and X=3,4 and 5.

The grids are provided for

  10^-6 <= x <= 1 and 1 GeV^2 <= Q^2 <= 10^9 GeV^2

with an extrapolation invoked for smaller x or smaller/larger Q^2.  As usual,
it is always the momentum density that is returned, that is, x times the number
density.  The values of the heavy quark masses used and the values of alphaS
obtained from the fits are stored in the grid files.  For consistency, the same
values should be used in all calculations involving the PDFs.  Code is provided
for the alphaS definition used in the fitting code: this differs from the
alphaS definition used previously by MRST.  In particular, the input alphaS
value can be given at any reference scale, and there is no Lambda_{QCD}^{nf=4}
parameter as in the previous MRST definition.  Note that the PDFs (and alphaS)
are discontinuous at NNLO at the heavy quark thresholds Q^2 = mc^2 and
Q^2 = mb^2.  To account for this, Q^2 grid points are chosen at mc^2, mc^2+eps,
mb^2, mb^2+eps (with eps = 10^-6 GeV^2).  If the PDFs are requested for
mc^2 < Q^2 < mc^2+eps the value at mc^2+eps is used, and similarly if
mb^2 < Q^2 < mb^2+eps the value at mb^2+eps is used.

Fortran and C++ example programs

To compile the Fortran and C++ example programs, check that the correct
Fortran and/or C++ compilers are enabled in the Makefile, then just type
"make".  Of course, the compilation can also be done by hand, e.g.

  gfortran example.f mstwpdf.f alphaS.f -o example

Then run the programs with:


The C++ example program contains a wrapper to the Fortran alphaS code, and
therefore requires a Fortran compiler.  If this is not available, comment out
the corresponding parts of the C++ example program.  The Fortran and C++
example programs should give identical output.  Verify this with e.g. for
the gluon:

  diff xg_vs_x.dat xg_vs_x_cpp.dat
  diff xg_vs_q2.dat xg_vs_q2_cpp.dat

Note that the numbering scheme for the flavour "f" now follows the PDG 
convention (apart from the gluon has f=0, not 21) used in e.g. LHAPDF
and differs from the numbering scheme used in previous versions of
the MRST code.  See the example programs for usage.

Mathematica package

A Mathematica package is provided to access the PDFs.  The
grids are interpolated using exactly the same method adopted in the Fortran
and C++ code, rather than using Mathematica's own interpolation routines.  This
ensures that identical results will be obtained for the PDFs using the Fortran,
C++ or Mathematica interfaces.  The Mathematica example notebook will output
files in an identical format to the Fortran and C++ example programs.  Check
these with e.g.

  diff xg_vs_x.dat xg_vs_x_math.dat
  diff xg_vs_q2.dat xg_vs_q2_math.dat

A script diff3all.sh is provided to allow a check of all output files from the
Fortran, C++ and Mathematica example programs.

The Fortran alphaS code can be called from Mathematica using the Mathlink
interface. In order to compile the binary alphaS.exe the user should follow the 
steps below:
1) set the variables in the Makefile named 'MLDIR' and 'MLLIB' accordingly.
   MLDIR='path to mprep executable'
   MLLIB='path to libMLXXi3 library' (XX=32 on a 32-bit system and 64 on 
   a 64-bit system)
2) run "make alphaS.exe".

Comments to robert.thorne(at)ucl.ac.uk, l.harland-lang(at)ucl.ac.uk, p.motylinski(at)ucl.ac.uk.