My Links


Programming Tips


Basic script

import user 
import ROOT
import PyCintex
import AthenaROOTAccess.transientTree

# a bit less ugly ROOT style...

f = ROOT.TFile.Open('/scratch0/brooks/MC09/mc09_7TeV.105200.T1_McAtNlo_Jimmy.recon.AOD.e510_s765_s767_r1205_tid123042_00/AOD.123042._000001.pool.root.1')
tt = AthenaROOTAccess.transientTree.makeTree(f)

Save this as something like and run it using python -i

Batching plots

Here's a quick bit of code to make a plot and save it straight to a file without making a window.
ROOT.gROOT.SetBatch(True)                  # Switch to batch mode
c1=ROOT.TCanvas( 'c1', 'Plot', 640, 480 )  # Make a canvas of size 640x480                                    # Set the output canvas (lets us have several going at once)
tt.Draw("ElectronAODCollection.phi()")     # Draw the phi distribution of electrons in the AOD
c1.Print("plot.png")                       # Save the canvas as an image file (ROOT uses the extension given)

Some things to play around with

  • from PyAnalysisUtils import PDG Lets you use PDG. instead of remembering pdgIds. Cool feature -> PDG.root_names[-PDG.nu_mu] returns a string with the ROOT syntax for an anti-muon-neutrino.
  • import AthenaCommon.SystemOfUnits as Units Gives you a Units object with most units in the ATLAS base units. e.g. Units.TeV = 1000000.0
  • ROOT.gROOT.SetBatch(True) Switches Root to batch mode.


Installing Root

The easiest method is if your distro has a root package. These don't seem to be kept very up-to-date, but I think Root is stable enough to use older versions for most features. On Ubuntu, there is a package called root-system so you can simply run:
sudo apt-get install root-system
This dumps the root binarys into /usr/bin and the libraries into /usr/lib/root, but I think the relevant paths get set up for you in the installation, so you needn't worry about the 'Setting up root' section below.

Installing Root from source

The Root source code can be downloaded from There are a few packages you will need on your system; on ubuntu 9.10, I needed libx11-dev, libxft-dev, libxpm-dev and libxext-dev. All the requirements the root page recommends can be had using:
sudo apt-get install make g++ gcc binutils libx11-dev libxpm-dev libxft-dev libxext-dev
Once that's done; untar the root package and in the unzipped folder run ./configure --prefix=/usr/local --enable-soversion then make (or, if you want; make -j n where j is the number of cores in your machine)

Setting up root

To use root you need to add the environment variable $ROOTSYS and append locations to $PATH and $LD_LIBRARY_PATH. A good way to do this is add the following to your ~/.bash_profile:

export ROOTSYS=/usr/local/root/v5.22.00/slc5.gcc3.4/root
export PATH=${PATH}:${ROOTSYS}/bin

Where /usr/local/root/v5.22.00/slc5.gcc3.4/root is the path of the current stable build of root (ie. check this is correct!)

For example; here are my .bashrc and .bash_profile.

Setting the plot style to plain

In your home directory, make a file called .rootrc containing the following line:
Rint.Logon: ~/rootlogon.C
Next make that file and paste in the following code:
  gStyle->SetCanvasBorderMode(0); // turn off canvas borders
  cout << "******************************" << endl; 
  cout << "* Welcome to ROOT v" << gROOT->GetVersion() << " *" << endl; 
  cout << "******************************" << endl; 
  cout << endl;
This switches off the toner wasting gray backgrounds on plots and the bizarre yellow borders.

ATLAS Software Links

ATLAS software information in the wiki: Good tutorial on running PowHeg for ATLAS.

Packages of note

  • Generators/EvgenJobTranforms
  • Generators/EvgenATLAS.JobOptions - Set of standard JobOptions for many processes of importance. Standardized such that samples can be merged with production sets.

Computing resources

Application servers are listed here: Application servers. For external use, linappserv1 acts as a gateway to the network, and is reasonably fast. Internally, linappserv0 is the fastest machine we have. linappserv3 & 4 are usually quiet, so good for running jobs that may take some time to complete. 1, 3, & 4 use 'Linux based on Scientific Linux CERN SLC release 4.8 (Beryllium)' while linappserv0 uses 'Linux based on Scientific Linux CERN SLC release 5.4 (Boron)'. All machine names can be accessed locally (e.g. ssh user@linappserv0) and those accessable outside can be found as (e.g. ssh

The faraday cluster is controlled via machine ui1. Instructions for using the cluster are here: How to use the cluster. The cluster uses 'Linux based on RedHat Scientific Linux CERN Release 3.0.5 (SL)' which does not support current ATLAS software.

First Name Timothy
Last Name Brooks
Telephone 07716159534
Location Egham
Country UK

This topic: PP/Public > TWikiUsers > TimothyBrooks
Topic revision: r12 - 09 Apr 2010 - TimothyBrooks
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding RHUL Physics Department TWiki? Send feedback