Introduction to Athena
Athena Basics
The ATLAS offline software (known as Athena) is built on the GAUDI framework, which
organizes applications (ie generation, simulation, digitization,
reconstruction, analysis, etc...) into series of
algorithms which
rely on various
services for tasks such as input/output. Some
important services include
- StoreGate - The transient data storeage where algorithms store and retrieve data objects. This is the mechanism for communicating between algorithms.
- Ntuple - Interface to ROOT or HBOOK.
- POOL - A technology for persistifying (ie writing/reading from disk) data objects.
- Database
- Detector Store
Athena applications are managed through python (an interactive programming language) jobOptions files which allow users to load specific libraries of algorithms, specify the algorithm execution order, and configure each algorithm's behavior. In other words, a typical Athena application is defined by a jobOptions file which says:
- Load these libraries
- Read in this data
- Run these algorithms in this order
- Configure each algorithm in this way
- Output this data
Athena Code Organization
The Athena source code is organized into
packages and
domains . For example the top level reconstruction package is
Reconstruction/RecExample/RecExCommon
. Each package is organized into several sub-directories (not all are necessary):
- cmt : contains requirements + setup files. This is where you build your code. (See below)
- <PackageName> : contains the C++ header files.
- src : contains the C++ source files.
- share : contains job option (.py) files.
- run : where you run your jobs.
- python : any additional python source.
Packages are stored/managed in CVS and are assigned versions by being
tagged . For example
Reconstruction/RecExample/RecExCommon/RecExCommon-00-02-87
.
Athena releases are build using a set of tags of packages. An interface called
Tag Collector allows the hundreds of code developers on ATLAS to specify which versions of their packages are used in specific Athena releases.
Athena releases are assigned versions xx.y.z. Typically, y=0 releases are meant for general use or production, while y=1,2,3,... are development releases.
Athena Code Management
The development environment is managed by CMT, which provides the following functions:
- Setup environment
- Create make files
- Build code
In each package CMT uses a
requirement file to specify dependencies on other packages (and their versions) and details on how to build the package.
Setting up an Athena Release
Since CMT is rather flexible, there are lots of different ways of setting up Athena. Therefore you are likely to find multiple recipies on the web. We'll consider two approaches here:
- You may create a personal CMT area in your home area and write a requirements file which specify where you wish to keep your different versions of athena releases. The instructions in the workbook outline this procedure, and also explain some of the basics Athena release distribution.
- You may use my
new-athena-release
script to setup a new directory for each release. This script determines the proper cmt version and writes the appropriate requirements file into the directory. The install/usage directions for this script are given below. You'll find usage information for this and several other useful scripts at Athena Helper Scripts
.
-
Get your own copy of the scripts:
cd ~
tar -xvf /afs/cern.ch/user/a/afarbin/www/tutorial-10.0.1/TutorialScripts.tar
This will untar several scripts into ~/bin. The scripts are self documented, so you may
run them without arguments for help.
I recommend adding ~/bin to your PATH so these scripts are easily available. Otherwise,
you may simply specify the full path to these scripts whenever you need one.
To add the scripts
to your path, first check what shell you are using by typing "echo $SHELL". Then
- if you use zsh, enter:
touch ~/.zshrc ; echo 'export PATH=${PATH}:~/bin' >> ~/.zshrc
- if you use tcsh, enter:
touch ~/.tcshrc ; echo 'setenv PATH ${PATH}:~/bin' >> ~/.tcshrc
Appropriately replace the "rc" file in the above commands if you are using a different shell.
Now logout and login so you obtain your new PATH.
- Create a new release for yourself to use in the exercises:
new-athena-release 10.0.1 My-10.0.1
You will have to perform this step every time you want to use a new
release (or start from scratch).
Note: if you did not add the scripts to your PATH in the previous step, replace
new-athena-release with ~/bin/new-athena-release.
- cd to your release, and setup
cd ~/My-10.0.1
source setup.[c]sh
You'll have to perform this step every time you login.
EasyAthenaSetupInstructions