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 master to a branch of the given version.


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

RootCore (< 2.5.X)

rcSetup Base,2.4.37

and then find all packages and then compile:

rc find_packages
rc compile


EventLoopGrid-00-00-54 has a bug affecting job submissions on the grid. Please downgrade via:


CMake-based RootCore (> 2.5.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 CMake RC release inside the source:

cd src
asetup AnalysisBase,21.2.13,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/${CMTCONFIG}/

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


If you run into a RuntimeError about RootCore/Packages.h, this is due to a known bug in ROOT auto-loading the dictionary for this file. To fix it, you just need to run


before running the commands. This should fix things up. Don’t forget to include the right version if you’re using 2.6.X! This should not happen in 21.2 releases.