Installation procedure#
The recipe detailed below is intended for “regular users”, who downloaded a version of the code from a current stable release. You may check in parallel the latest upstream version from the CepGen repository on GitHub.
General and usage-specific dependencies#
CepGen was designed to require only a limited set of external dependencies for its core features.
Among the mandatory dependencies,
CMake for the management of the build process,
GSL, for the integrators definition and general utilitaries. A version greater than or equal to
2.1
is recommended for the bilinear spline interpolation capability. This latter is used in e.g. the MSTW structure functions and KMR \(\kt\)-factorised gluon flux definitions.
Depending on your system architecture and distribution, these dependencies may be installed the following way:
Note
For Debian/Ubuntu, use the following
sudo apt-get install cmake
sudo apt-get install g++ gfortran
sudo apt-get install libgsl2 libgsl-dev
For RHEL/Fedora/CentOS, use the following
sudo dnf install cmake
sudo dnf install gcc-c++ gcc-gfortran
sudo dnf install gsl gsl-devel
It can further be extended through a set of add-ons loaded through shared libraries into the runtime environment.
For instance, it is highly recommended to install the following dependencies to ease your first steps:
CepGenPython
: complex Python version 2 or 3 steering cards parsing ; it requires thepython-devel
orlibpython-dev
development headers to be built,CepGenLHAPDF
with LHAPDF version 5 or above, for definition of partonic-level nucleon structure functions, and its \(\alpha_S(Q)\) strong coupling constant evolution algorithm.
A set of add-ons specifically designed to ease your workflow when generating and storing events is also provided, given the following libraries are available on your system:
CepGenPythia8
: Pythia version 8.1 or above, for the various particles decays and excited proton fragmentation, but also the LHEF event format generation,CepGenPythia6
: Pythia version 6, for the legacy steering of particles decays and excited proton fragmentation,CepGenHepMC2
andCepGenHepMC3
for the HepMC version ≥ 2, to handle its various ASCII output formats,Note
From version 3 on, a LHEF output is also supported. If not present, this latter format can be handled through the Pythia 8 interface instead.
CepGenROOT
: for the ROOT ntuples building/histogramming/plotting capabilities widely used in HEP.
CepGen installation#
Start by downloading the latest release in the bucket list of releases.
Unpack the sources in a location referred here as: $CEPGEN_SOURCES
.
For instance, for a CepGen version x.y.z
package:
tar xvfz cepgen-x.y.z.tar.gz
cd cepgen
export CEPGEN_SOURCES=`pwd -P`
Once you have set up the sources and downloaded/installed the required dependencies, create your building environment (here, we will use the general CMake
convention $CEPGEN_SOURCES/build
).
The compilation is hence done with:
mkdir $CEPGEN_SOURCES/build && cd $CEPGEN_SOURCES/build
cmake $CEPGEN_SOURCES # or `cmake ..`, path to the sources make
make # optionally, add -jN (N=number of parallel threads for compilation)
This compilation will build a collection of required sub-libraries to be linked against any executable built on top of CepGen.:
libCepGenCore
contains all physics constants, calculators, helpers, along with “non-physics” standard objects implementation, and nucleon structure function calculators objects,libCepGenProcesses
contains all processes definitions and implementations,libCepGenEvent
holds the definition of events and subleading particles objects (useful for analyses of CepGen outputs),libCepGenAddOns
provides a set of helper tools for the interfacing with external applications,libCepGenCards
for the input cards definition and handling part.
Note
If your usage requires the import of CepGen libraries and includes in your standard PATH
, e.g. for the purpose of interfacing library development, run either
make install
(as root), orCMAKE_INSTALL_PREFIX=/path/to/your/writeable/area make install
(to install locally ; do not forget to add this path to yourPATH
environment to be able to discover/runcepgen
directly).
This will install all required headers into the includes directory (e.g. /usr/include
), and copy the shared objects into the library path (e.g. /usr/lib64
or /usr/lib
).
As described here, several test executables can be linked against the CepGen libraries.
Note
You may build these executables using the CMAKE_BUILD_TESTS=1
configuration flag when running your CMake generation command.
All compiled executable will then be located either in the test/
directory of your build environment, for the general-purpose tests, or directly in the CepGenXXX/
folder in your build environment for the add-ons-specific tests.
These tests can all be triggered using e.g. the CTest suite of CMake, running ctest
.