MoCaNLO logo

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

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

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: