Installation

Download

A tar archive of the HEJ 2 source code can be downloaded and decompressed with the command:

curl https://hej.hepforge.org/downloads?f=HEJ_2.2.tar.gz | tar -xz

To obtain the latest stable HEJ version, HEJ_2.2.tar.gz should be replaced by HEJ.tar.gz.

Alternatively, the HEJ source code can be obtained by installing the git version control system. and running:

git clone https://phab.hepforge.org/source/hej.git

We also provide a Docker image containing a HEJ 2 installation (including the HEJ Fixed Order Generator). This image can be pulled with:

docker pull hejdock/hej

When using the Docker image the remaining installation steps can be skipped.

In addition to working with Docker, these images will also work with apptainer/ singularity. This comes with a caveat that you may need to source the software inside the image before running HEJ:

source /cvmfs/pheno.egi.eu/HEJV2/HEJ_env.sh

Users can also make use of the MPI libraries included in the images for efficient fixed order event generation for HEJ input using Sherpa which is configured with MPI support. Note that HEJ itself does not provide support for MPI.

Prerequisites

Before installing HEJ 2, you need the following programs and libraries:

In addition, some optional features have additional dependencies:

  • Version 2 of QCDLoop is required to include finite top mass corrections in Higgs boson + jets production.

  • HepMC versions 2 and 3 enable event output in the respective format.

  • Rivet version 3.1.4 or later together with HepMC 2 or 3 allow using Rivet analyses.

  • HighFive has to be installed in order to read and write event files in the HDF5-based format suggested in arXiv:1905.05120.

We strongly recommend to install these programs and libraries to standard locations:

  • The executable files should be inside one of the directories listed in the PATH environment variable. This concerns cmake, the C++ compiler, and the executables contained in autoconf and automake.

  • The library header files ending with .h, .hh, or .hpp should be in a directory where they are found by the C++ compiler. For gcc or clang, custom locations can be specified using the CPLUS_INCLUDE_PATH environment variable.

  • The compiled library files ending with .a, .so, or .dylib should be in a directory where they are found by the linker. Custom locations can be set via the LIBRARY_PATH environment variable. For shared object libraries (.so or .dylib) custom locations should also be part of LD_LIBRARY_PATH on linux and DYLD_FALLBACK_LIBRARY_PATH or DYLD_LIBRARY_PATH on macOS.

Compilation

To compile and install HEJ 2 run:

cmake source/directory -DCMAKE_INSTALL_PREFIX=target/directory
make install

source/directory is the directory containing the file CMakeLists.txt. If you omit -DCMAKE_INSTALL_PREFIX=target/directory HEJ 2 will be installed to some default location.

In case some of the aforementioned prerequisites are not found by cmake you can give a hint by adding an additional argument -Dlibname_ROOT_DIR=/directory/with/library, where libname should be replaced by the name of the library in question. For example, if FastJet is installed in the subdirectory .local of your home directory with the libfastjet.* library files in .local/lib and the header files ending with .hh in .local/include/fastjet you can pass -Dfastjet_ROOT_DIR=$HOME/.local to cmake.

If cmake fails to find (the correct) boost path, try setting -DBOOST_ROOT=/path/to/boost, this will force cmake to search for boost only in /path/to/boost.

To not include specific packages one can add -DEXCLUDE_packagename=TRUE to cmake, e.g. by setting -DEXCLUDE_rivet=TRUE HEJ 2 will not be interfaced to Rivet even if it is available on the system.

Testing

To test your installation, download the NNPDF 2.3 PDF set with:

lhapdf install NNPDF23_nlo_as_0119

and run:

make test

The test data of HEJ are stored in a Git Large File Storage format. git clone therefore requires git-lfs to download the data correctly.