Installation

Dependencies

Python, ROOT, and Ph2 ACF are dependencies of dirigent but do not come packaged with it. Right now, we assume that test centres wishing to use dirigent already have all these dependencies installed, and are familiar with them. As more institutes develop their testing facilities, this may be revised and dependencies such as Ph2 ACF may come packaged. Below some notes are provided for correct configuration of dependencies. For additional help, Ph2 ACF provides very useful instructions for a lot of the process.

Python

Python 3.9 (minimum) is required for the installation of dirigent. Earlier versions cannot be substituted as modern syntax and language features are used throughout the project.

ROOT

For the installation of ROOT, it is recommended to follow the instructions on the official website of the ROOT project. This is a bit more work than the installation with the package manager, but it is generally easier for usage with environments than the installation through the package manager. For proper behaviour, ROOT should be sourced prior to running dirigent. Most accomplish this by sourcing thisroot.sh in their .bashrc.

On AlmaLinux 9, the following instructions might give some help on what the dependencies are. This is however not an official instruction and it might depend on the specific setup. Therefore, please refer also to the official website:

sudo dnf install epel-release git make cmake gcc-c++ gcc binutils \
libX11-devel libXpm-devel libXft-devel libXext-devel python openssl-devel \
xrootd-client-devel xrootd-libs-devel xxhash xxhash-libs tbb-devel python3-numpy
wget https://root.cern/download/root_v6.32.02.Linux-almalinux9.4-x86_64-gcc11.4.tar.gz
tar -xzvf root_v6.32.02.Linux-almalinux9.4-x86_64-gcc11.4.tar.gz
source root/bin/thisroot.sh # also available: thisroot.{csh,fish,bat,ps1}

On AlmaLinux 9, ROOT can also be installed through the package manager. However, this installation can cause difficulties with python environments. For this, use the following commands:

dnf install -y epel-release
dnf config-manager --set-enabled crb
dnf install -y root python3-root git

From these commands, it is likely, that only python3-root has to be installed. The rest should be already there, if Ph2 ACF was installed before.

On CentOS 7, both Python 3.9 and ROOT must be built from source in that order. On CentOS Stream 8, Python 3.9 can be installed via the python39 python39-devel python39-numpy packages prior to compiling ROOT. ROOT should be compiled against C++14 to ensure compatibility with Ph2 ACF.

Ph2 ACF

Ph2 ACF must be cloned from the TK_Ph2 gitlab repo (or for development versions, the Inner Tracker Upstream Repo) and compiled/installed using the instructions provided there. It is recommended to use the most recent tagged version of Ph2 ACF (v6-03 at the time of writing), but since Ph2 ACF is constantly under development, I also recommend maintaining the master branch of the development version on lab PCs just in case. Also, Ph2 ACF must be compiled against the ROOT installation with Python 3.9 bindings (see previous section).

The Ph2 ACF handler requires either xterm or a compatible version of tmux (newer than version 1.8). xterm is to be preferred usually due to a better overview during the scan and better testing. tmux is currently not fully supported. On AlmaLinux for example, xterm can simply be installed through the package manager:

dnf install -y xterm

Clone the repository

Navigate to your software folder and create a folder for dirigent:

mkdir dirigent && cd dirigent

Next, clone the repository into a folder named after the version you want, enter that directory, and checkout the correct version:

git clone https://gitlab.cern.ch/cms_tk_ph2/dirigent.git dirigent-3.1.0
cd dirigent-3.1.0
git checkout -b 3.1.0 3.1.0

Then initialise all the submodules (dependencies):

git submodule update --init --recursive

This command will clone the submodules inner-tracker-tests, icicle, felis, and resthub-dev. inner-tracker-tests is a repository containing standardised settings for Ph2 ACF scans. felis is the interface used for uploading data to the Panthera database. resthub-dev is the API used to provide access to the module database.``icicle`` is particularly important as it is used for controlling instruments.

Python environment

It is recommended to install dirigent in a separate python environment. One may use Python virtual environments or anaconda environments for this purpose - it makes litte practical difference. An example of how to set up a python virtual environment for this purpose is below:

python3 -m venv .venv
source .venv/bin/activate

Note: If ROOT was installed via the package manager, the environment has to be created with the flag --system-site-packages. For flexibility reasons, it is however recommended to install ROOT directly from the binary.

Then inside the python environment, make sure pip is upgraded:

pip install --upgrade pip

Then finally:

pip install .

Or for a developer installation of these packages (i.e. modifications of source files will affect the installation):

pip install -e .

Now that installation of dirigent has been performed in the python environment, on computer reboot, simply enabling that python environment will automatically load dirigent too:

source /path/to/software/dirigent/dirigent-3.1.0/.venv/bin/activate

Set up Ph2 ACF

The activation of the python environment can cause the environment variables set by Ph2 ACF to be reset. Therefore, the environment should be loaded before Ph2 ACF is sourced. Once the dirigent python virtual environment has been activated, you must source the setup.sh file for the specific version of Ph2 ACF you want to use:

cd path/to/Ph2_ACF/install/
source setup.sh

Note: Since Ph2 ACF uses absolute paths in their setup.sh, you must cd to the install directory first.

dirigent should now be ready to run. You can check with:

dirigent --help