MoCaNLO (MOnte CArlo at NLO accuracy) is a Fortran multi-purpose Monte Carlo integration program. It computes integrated cross sections and differential distributions with both NLO QCD and electroweak accuracy in the Standard Model for arbitrary processes at the LHC, at lepton–lepton and lepton–hadron colliders, as well as processes from ultra-peripheral collisions of photons from hadrons. The phase-space integration uses multi-channel importance sampling. The required tree-level and one-loop matrix elements are provided by the matrix-element generator Recola1, which relies on the Collier library to numerically evaluate the one-loop scalar and tensor integrals.
Installation
External Dependencies
- Recola1 matrix-element provider
- Collier tensor integral library
- CMake build system
- LHAPDF evaluation of parton distribution functions (PDFs)
- gammaUPC (optional) for photon-photon ultra-periferal collisions
Quickstart
Download the latest (mocanlo-1.0.0) MoCaNLO package, extract it and
switch to the MoCaNLO directory.
curl -O https://mocanlo.gitlab.io/releases/mocanlo-X.Y.Z.tar.gz
tar -zxvf mocanlo-X.Y.Z.tar.gz
cd mocanlo-X.Y.Z/MoCaNLO
Add paths to the Recola1, Collier and
LHAPDF dynamic libraries in compile_mocanlo,
then execute
./compile_mocanlo
Code Structure
The directory mocanlo-X.Y.Z has the following
structure:
mocanlo-X.Y.Z/
├── MoCaNLO/
├── Tests/
├── card_generator/
├── manual/
└── validated_processes/
The directory Tests offers some test runs with
corresponding sample input and output. In the directory
validated_processes, further example processes can be
found. The directory card_generator contains the
independent package MCG, which may be used to create input
cards for MoCaNLO (see
card_generator/mcg/README.md). In the directory
manual, the manual for MoCaNLO can be found as
a PDF file.
The MoCaNLO package is in the directory
mocanlo-X.Y.Z/MoCaNLO, which has the following
structure:
├── CMakeLists.txt
├── COPYING
├── bin/
├── compile_mocanlo
├── include/
└── src/
The subdirectory bin contains binaries upon successful
compilation and scripts for collecting results and generating plots. The
include directory holds include files containing different
preprocessor switches. Finally, the source code of MoCaNLO as well as
some supplementary tools are placed in the subdirectory
src.
Compilation
The MoCaNLO package requires the user to resolve
dependencies to Recola1, Collier and
LHAPDF by hand. It is assumed that these libraries have
been built and are ready to be dynamically linked to
MoCaNLO. The paths to these libraries must be assigned to
the variables RECOLA_ROOT, COLLIER_ROOT and
LHAPDF_PATH in the script
MoCaNLO/compile_mocanlo.
The configuration and compilation of MoCaNLO are taken
care of by the script compile_mocanlo, which runs the
cmake and make commands. In
compile_mocanlo, there are two commented lines that contain
alternative calls to cmake. If one wishes to compile in
debug mode, the call with the option
-DCMAKE_BUILD_TYPE=debug should be employed. Similarly, if
the use of gammaUPC is intended, the call to
cmake with the option -DUPC=ON must be
employed. After adjusting the script, execute
./compile_mocanlo
to compile the package. Upon successful compilation, the build
directory is created, containing compiled object (.o) and
Fortran module files (.mod). The main executable file
mocanlo will be created in MoCaNLO/bin/,
together with other executables that are employed by the analysis
tools.
Test Runs
The correct functionality of the code can be verified upon executing
the test runs in the directory Tests. Its structure is:
Tests/
├── check_process.sh
├── sl-vbs/
├── ttxz/
├── tzj/
├── vbs-zz/
└── wz-pol/
Each subdirectory corresponds to a physical process and defines a test based on a single partonic subprocess. The contents of each test are
cards: the cards directory containing cut, plot, parameter, process and run cards;input: a file with two lines containing 1) the process ID (integer from the run-card) and 2) a seed;output: the expected standard output of the MoCaNLO (together with the error output);results: the expected results directory of the run with the ID and seed specified ininput.
The script check_process.sh, which must be executed
inside Tests, takes one of the test directories
<test> as an argument
./check_process.sh <test>
and runs MoCaNLO using <test>/cards
and <test>/inputs. The standard output of
MoCaNLO is printed to screen and saved in the file
<test>/output_local, which is compared to
<test>/output. In the comparison, volatile data like
installation paths, timings, etc. is ignored. If the standard output is
as expected, the script compares all cross sections and histograms
calculated locally, which are written to
<test>/<test>/runs/.../run_.../results, to
their counterparts found in <test>/results. After
each pair of files is compared, the script warns if these differ and
offers their location for manual comparison. The test finishes with a
summary of failures, and is successful if 0 failures are reported. If no
argument is passed to check_process.sh, all directories are
tested.
Citation
If you use MoCaNLO, please cite the following
publication:
MoCaNLO: a Monte Carlo integrator for NLO calculations
A. Denner, D. Lombardi, S. Lopez Portillo Chavez, M. Pellen, G. Pelliccioli
e-Print: 2602.19842 [hep-ph] arXiv link
Contact information
For questions, comments or bug reports, please send an email to the
MoCaNLO developers:
Ansgar Denner ansgar.denner@uni-wuerzburg.de
Daniele Lombardi daniele.lombardi@unito.it
Santiago Lopez Portillo Chavez santiago.lopez-portillo-chavez@uni-wuerzburg.de
Mathieu Pellen mathieu.pellen@physik.uni-freiburg.de
Giovanni Pelliccioli giovanni.pelliccioli@unimib.it