Getting the Source

Start in a work directory

mkdir workdir && cd $_

Then clone the source

git clone


If you have ssh-keys set up, then you can clone over SSH instead of HTTPS:

git clone

At this point, you have the FULL state of the code. You can run git log to view the recent changes (no more ChangeLog!).

Checking out a specific tag

You can run git tag to view all current tags. You can checkout a specific tag (in a detached head state):

cd xAODAnaHelpers
git checkout tags/XX-YY-ZZ
cd ../

or you can use:

cd xAODAnaHelpers
git checkout -b XX-YY-ZZ tags/XX-YY-ZZ
cd ../

which switches you from main to a branch of the given version.


For all sets of instructions below, make sure you run setupATLAS first.

CMake-based (21.2.X)

This step requires a little extra work, but compiles significantly faster. First, inside the workdir directory, we’ll create a build and source directory. The source directory will contain all packages we build in CMake:

mkdir src build

Then we’ll set up a release inside the source:

cd src
asetup (RELEASE),here

This also sets up a CMakeLists.txt file in this top-level directory that searches for all packages you’ve checked out inside it. At this point, clone/checkout all packages you need such as xAODAnaHelpers:

git clone <url>/UCATLAS/xAODAnaHelpers.git

Next, you will need to change to your build directory that builds all your checked-out packages which is separate from your source code:

cd ../build


This is inside the workdir, so you will have workdir/src/xAODAnaHelpers and workdir/build as paths, for example.

and then run cmake to generate our makefiles, then compile:

cmake ../src
cd ../

The last thing you need to do is get your environment set up correctly, so you will need to source (from the top-level directory):

source build/*/

Environment variables like ${AnalysisBase_PLATFORM} (or ${AnalysisTop_PLATFORM}) seem to contain the correct variable which represents the architecture of the system, e.g. x86_64-slc6-gcc49-opt.


Assuming you have docker, you can always grab the latest image for a given release (e.g. 21.2.4) like so:

docker pull ucatlas/xah:21.2.4-latest
docker run -it --rm ucatlas/xah:21.2.4-latest bash

which puts you into the docker image and xAH is precompiled and the environment is set up so you can:

  • compile your package on top of xAH [using cmake, make]

  • run vanilla `` with a config on some ROOT files

For example, if you want to have the docker image have access to ROOT files locally on your computer, you can “mount” a folder in it like so:

docker run -it --rm -v /path/to/data/files:/home/atlas/data ucatlas/xah:21.2.4-latest bash

and /home/atlas/data inside the docker file will map to /path/to/data/files on your computer (host).