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.1.tar.gz | tar -xz

To obtain the latest stable HEJ version, HEJ_2.1.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. This image can be pulled with:

docker pull hejdock/hej

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

Prerequisites

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

In addition, some optional features have additional dependencies:

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.