## 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 m_{c},m_{b} ranges for different flavour schemes, as described in LHAPDF grids section.

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", [arXiv:1412.3989]. 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", [arXiv:1506.05682]. L.A. Harland-Lang, A. D. Martin, P. Motylinski and R. S. Thorne, "Charm and beauty quark masses in the MMHT2014 global PDF analysis", [arXiv:1510.02332]. 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 mmht2014lo135.tar.gz mmht2014nlo118.tar.gz mmht2014nlo120.tar.gz mmht2014nnlo118.tar.gz 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 mmht2014lo135.68cl.ii.dat mmht2014nlo118.68cl.ii.dat mmht2014nlo120.68cl.ii.dat mmht2014nnlo118.68cl.ii.dat 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 mmht2014lo_asmzsmallrange.tar.gz mmht2014nlo_asmzsmallrange.tar.gz mmht2014nnlo_asmzsmallrange.tar.gz while at NLO and NNLO the best fit grids for a large range of alpha_s values are stored in mmht2014nlo_asmzlargerange.tar.gz mmht2014nnlo_asmzlargerange.tar.gz 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 mmht2014nlo68cl_nfX.tar.gz mmht2014nlo68clas118_nfX.tar.gz mmht2014nnlo68cl_nfX.tar.gz 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 mmht2014nlo_asmzlargerange_nfX.tar.gz mmht2014nnlo_asmzlargerange_nfX.tar.gz where X=3,4. The NLO and NNLO grids for a range of m_c and m_b values are stored in mmhtnlo_mQrange_nfX.tar.gz mmhtnnlo_mQrange_nfX.tar.gz 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: ./example ./example_cpp 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.