Docker Images

It is possible to avoid compiling both FairSoft and FairRoot, by using Docker images provided on the Docker Hub.

The information below is taken from the Docker Hub page

The instructions for MAC (from Step 1 to Step 4 are on a different page).

Step 1:

Create a local working dir (outside the container):

mkdir ~/tmp/r3brootdev

Step 2:

Create the docker container from the pre-built image and also include a volume that maps the local working dir into the container (otherwise data would not persist over restarts). This container gets a name as given by the --name option.

export VERSION=v-17.10b
docker create --name fairroot -it \
-v ${HOME}/tmp/r3brootdev:/work \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
bl0xfairsoft/fairrootdocker_fairroot:${VERSION} \
/bin/bash

Step 3:

Start the docker container. This will give you a shell (bash) inside your container environment.

docker start -ai fairroot

Step 4:

Clone and install ucesb and your unpacker:

cd /work
git clone http://fy.chalmers.se/~f96hajo/ucesb/ucesb.git
git clone $USER@lx-pool.gsi.de:/u/johansso/upexps.git
cd upexps/YOUR_UNPACKER
make -j8
export UCESB_DIR=/work/ucesb

Refer to ucesb unpacker stage documentation for more information on installation of ucesb. Refer to the ucesb web page for more general information on ucesb.

Step 5:

Clone and install R3BRoot:

cd /work
git clone https://github.com/R3BRootGroup/R3BRoot.git
cd R3BRoot
git checkout -b dev origin/dev
mkdir build
cd build
cmake ..
make -j10

Refer to r3b-root installation for more information.

Step 6:

Now your analysis package is ready for further development (or data analysis). You can edit your files from outside the container and recompile or run the macros from inside.

cd /work/R3BRoot/build
source config.sh

As a first test run the standard simulation:

cd /work/R3BRoot/macros/r3b
root r3bsim.C

Step 7:

Add a local data directory. To use a local data directory from inside the container, you have to specify it when creating the container:

docker create ... -v /YOUR/DATA/DIR:/data ...

Then you will be able to access the data from within the container.