You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
211 lines
8.7 KiB
211 lines
8.7 KiB
\topheading{Installation and directories}
|
|
\label{sec:Installation}
|
|
\midheading{Installation}
|
|
|
|
|
|
The external requirements for (CuTe-)MCFM are cmake (\textgreater=
|
|
3.13) and gcc/g++/gfortran (\textgreater= 7).
|
|
|
|
Optional external dependencies are LHAPDF (6.2.X or 6.5.X) and an MPI
|
|
implementation (we recommend OpenMPI) or Coarrays implementation
|
|
|
|
By default MCFM is bundled with LHAPDF 6.5.1. It can optionally be
|
|
compiled with an external LHAPDF installation. Note that LHAPDF 6.3.X has
|
|
a multithreading bug and therefore we do not recommend to use it.
|
|
Either use LHAPDF 6.2.X or 6.5.X. Version 5 of LHAPDF is not supported.
|
|
|
|
The MCFM package may be downloaded from the MCFM homepage at
|
|
\url{https://mcfm.fnal.gov}. After extracting, in the simplest case, the
|
|
source can be compiled by running \texttt{cmake\ ..} in the Bin
|
|
directory:
|
|
\begin{verbatim}
|
|
tar -xzvf MCFM-X.Y.tar.gz
|
|
cd MCFM-X.Y/Bin
|
|
\end{verbatim}
|
|
|
|
To compile with default options just run \texttt{cmake\ ..} in the Bin
|
|
directory or a new ``build'' directory, then run make to compile the
|
|
MCFM program. If you compile in a directory different than ``Bin'',
|
|
please run \texttt{make\ install} to copy some required files over from
|
|
the Bin directory. The Bin directory contains several example input
|
|
files that can be used as an argument to mcfm.
|
|
|
|
By default all necessary dependencies, including LHAPDF, are compiled
|
|
with the default compiler that \texttt{cmake} detects. The following
|
|
parameters can be added to choose a custom compiler. For example with
|
|
MPI the wrapper mpifort will have to be chosen as the Fortran compiler:
|
|
\begin{verbatim}
|
|
-DCMAKE_C_COMPILER=gcc-8
|
|
-DCMAKE_CXX_COMPILER=g++-8
|
|
-DCMAKE_Fortran_COMPILER=gfortan-8
|
|
\end{verbatim}
|
|
|
|
Please ensure that your compiler is working and can produce executable
|
|
program files. Please also ensure that it is at least version 7
|
|
(e.g.~\texttt{gfortran\ --version}). For example when your compiler
|
|
has been installed into a non-standard location you probably need to
|
|
append the compiler library path to \texttt{LD\_LIBRARY\_PATH}
|
|
(\texttt{DYLD\_FALLBACK\_LIBRARY\_PATH} on OS X). This can be achieved,
|
|
for example, as follows:
|
|
\begin{verbatim}
|
|
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/user/local/lib/gcc7
|
|
\end{verbatim}
|
|
|
|
Additional complications may arise especially on OS X systems, where by
|
|
default \texttt{gcc}/\texttt{g++} is linked to the clang compiler. Please
|
|
make sure to set the compiler names/paths to the correct GNU versions.
|
|
|
|
If CMake does not report any problems you can start the compilation of
|
|
MCFM with \texttt{make\ -j4}, where 4 (or more) is the number of
|
|
compilation threads.
|
|
|
|
Upon successful compilation, the executable \texttt{mcfm} is produced
|
|
and can be called with an input file (+path) as argument, for example:
|
|
\begin{verbatim}
|
|
./mcfm input_Z.ini
|
|
\end{verbatim}
|
|
|
|
It can happen that the CMake cache gets corrupted with wrong
|
|
configuration options. If you change options and errors occur, please
|
|
try to delete the file \texttt{CMakeCache.txt} and directory
|
|
\texttt{CMakeFiles} and restart \texttt{cmake\ ..} with the appropriate
|
|
arguments.
|
|
|
|
\bottomheading{Compiling at Fermilab}
|
|
|
|
To compile at Fermilab on the Wilson cluster (wc.fnal.gov):
|
|
\begin{verbatim}
|
|
cd MCFM-10.3/Bin/
|
|
cmake -DCMAKE_Fortran_COMPILER=gfortran -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ..
|
|
make -j
|
|
\end{verbatim}
|
|
|
|
\bottomheading{Compiling at CERN}
|
|
|
|
On the lxplus machine at CERN (lxplus.cern.ch):
|
|
\begin{verbatim}
|
|
cd MCFM-10.3/Bin/
|
|
cmake3 -DCMAKE_Fortran_COMPILER=gfortran -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ..
|
|
make -j
|
|
\end{verbatim}
|
|
|
|
|
|
\hypertarget{lhapdf}{%
|
|
\bottomheading{LHAPDF}\label{lhapdf}}
|
|
|
|
The following parameter specifies the use of LHAPDF (internal,
|
|
external):
|
|
\begin{verbatim}
|
|
-Duse_internal_lhapdf=ON (default)
|
|
\end{verbatim}
|
|
and can be set to OFF to link against an external LHAPDF library.
|
|
|
|
When an external LHAPDF is used, cmake might not find the library. A
|
|
library search path can be added with
|
|
\texttt{-DCMAKE\_PREFIX\_PATH=/usr/local}, for example. Additionally,
|
|
the LHAPDF include path can be set with
|
|
\texttt{-Dlhapdf\_include\_path=/usr/local/include} if it deviates from
|
|
a standard location.
|
|
|
|
For the bundled LHAPDF, PDF sets go into the directory Bin/PDFs. This
|
|
installation includes the central PDF members of \texttt{CT18NNLO} and
|
|
\texttt{NNPDF31\_nnlo\_as\_0118} with their resummation grids,
|
|
as well as the PDF sets for \texttt{LUXqed17\_plus\_PDF4LHC15\_nnlo\_30}. Additional PDFs
|
|
can be downloaded from \url{https://lhapdf.hepforge.org/pdfsets.html} and
|
|
untar'ed in the PDFs directory.
|
|
|
|
Additional PDF directories can be added to the LHAPDF search path by
|
|
using, for example:
|
|
\begin{verbatim}
|
|
export LHAPDF_DATA_PATH=/usr/local/share/LHAPDF
|
|
\end{verbatim}
|
|
|
|
\hypertarget{ww-wz-and-zz-with-vvamp}{%
|
|
\bottomheading{WW, WZ and ZZ with VVamp}\label{ww-wz-and-zz-with-vvamp}}
|
|
|
|
The processes WW,WZ and ZZ at NNLO require compilation of the VVamp
|
|
amplitudes, which are about 100MB of additional sourcecode and add
|
|
significant additional compilation time. The following flag disables
|
|
these amplitudes:
|
|
\begin{verbatim}
|
|
-Dwith_vvamp=OFF
|
|
\end{verbatim}
|
|
|
|
\hypertarget{openmp-and-mpi}{%
|
|
\bottomheading{OpenMP and MPI}\label{openmp-and-mpi}}
|
|
|
|
MCFM uses OMP (Open Multi-Processing) to implement multi-threading and
|
|
automatically adjusts to the number of available CPU threads. The
|
|
multi-threading is implemented with respect to the integration routine
|
|
Vegas, which distributes the event evaluations over the threads and
|
|
combines all events at the end of every iteration.
|
|
|
|
Two environment variables are useful. On some systems, depending on the
|
|
OMP implementation, the program will crash when calculating some of the
|
|
more complicated processes, for example \(W+2\)~jet production at NLO.
|
|
Then, adjusting \texttt{OMP\_STACKSIZE} may be needed for the program to
|
|
run correctly. Setting thisvariable to \texttt{16000}, for instance in
|
|
the Bash shell by using the command
|
|
\texttt{export\ OMP\_STACKSIZE=16000}, has been found to be sufficient
|
|
for all processes. The second useful variable \texttt{OMP\_NUM\_THREADS}
|
|
may be used to directly control the number of threads used during OMP
|
|
execution (the default is the maximum number of threads available on the
|
|
system).
|
|
|
|
To prepare MCFM with MPI support add the argument
|
|
\texttt{-Duse\_mpi=ON} to the cmake call before running
|
|
\texttt{make}.. At the same time custom compiler command names must be
|
|
specified with:
|
|
\begin{verbatim}
|
|
-DCMAKE_C_COMPILER=mpicc
|
|
-DCMAKE_CXX_COMPILER=mpic++
|
|
-DCMAKE_Fortran_COMPILER=mpifort
|
|
\end{verbatim}
|
|
Such commands must be used when
|
|
compiling with MPI support and their names can depend on the MPI
|
|
implementation. Please consult the manual of your MPI installation or
|
|
cluster system. Please ensure again that \texttt{mpifort\ --version}
|
|
and \texttt{mpic++\ --version} report the GNU compiler and a version
|
|
greater than 7.
|
|
|
|
Alternatively also a Fortran Coarray implementation can be used with:
|
|
\begin{verbatim}
|
|
-Duse_coarray=ON
|
|
\end{verbatim}
|
|
This option is experimental and cannot be used together with MPI.
|
|
|
|
\midheading{Directory structure}
|
|
The directory structure of MCFM is as follows:
|
|
\begin{itemize}
|
|
\item {\tt Doc}. The source for this document.
|
|
\item {\tt Bin}.
|
|
The directory containing the executable {\tt mcfm}, and various essential files -- notably the
|
|
options file {\tt input.ini}.
|
|
\item {\tt Bin/Pdfdata}.
|
|
The directory containing the internal PDF data-files.
|
|
\item {\tt Bin/PDFs}.
|
|
Directory for LHAPDF grid files used by bundled LHAPDF.
|
|
\item {\tt src}.
|
|
The Fortran source files in various subdirectories.
|
|
\item {\tt lib/TensorReduction}
|
|
General tensor reduction code based on the work of Passarino and Veltman~\cite{Passarino:1978jh}
|
|
and Oldenborgh and Vermaseren~\cite{vanOldenborgh:1989wn}.
|
|
\item {\tt lib/qcdloop-2.0.5}.
|
|
The source files to the library QCDLoop~\cite{Carrazza:2016gav,Ellis:2007qk}.
|
|
\item {\tt lib/oneloop}.
|
|
The source files to the library OneLOop~\cite{vanHameren:2010cp}.
|
|
\item {\tt lib/qd-2.3.22}.
|
|
Library to support double-double and quad-double precision data types \cite{libqd}.
|
|
\item {\tt lib/AMOS}.
|
|
Library for AMOS, `` A Portable Package for Bessel Functions of a Complex Argument and
|
|
Nonnegative Order'', taken from
|
|
\href{http://www.netlib.org/amos/}{http://www.netlib.org/amos/}.
|
|
\item {\tt lib/SpecialFns}.
|
|
Library containing the implementation of special functions from a variety of sources.
|
|
\item {\tt lib/VVamp}.
|
|
Library containing the implementation of two-loop helicity
|
|
amplitudes for $q\bar q \to V_1 V_2$, from the results of Ref.~\cite{Gehrmann:2015ora}.
|
|
\item The {\tt lib/handyG}
|
|
Library for the evaluation of generalized polylogarithms~\cite{Naterop:2019xaf}.
|
|
\end{itemize}
|
|
|