This wiki is now closed and kept for historical purposes. Please visit the new wiki at

Garpi Based WCSim

Jump to navigationJump to search


Garpi development has ceased in favor of Worch

Also, see WCSim at its GitHub home:

WCSim and its dependencies can be installed in an automated manger using GARPI project. This topic shows how to start from an empty environment and end up with a working codebase with WCSim, Geant4, ROOT and other required packages. (see also Beam Software)

One time priming

WCSim code is actually held in another SVN repository served from Duke. It is "glued" into the LBNE/WCD repository through SVN "magic". If you have never accessed the Duke repository you will need to "prime" your authentication cache by doing a one-time direct access. For example, you can do:

svn export /tmp/README

The user name to use is "guest" as is the password.


Pick a location:

mkdir -p /path/to/install/area
cd /path/to/install/area

Note: the remainder of these instructions assume you continue to work in this directory.

Get the autoinstall script and make it executable.

wget -O autoinstall
chmod +x autoinstall

Get the WCSim configuration file

 svn export

Kick off the installation:

./autoinstall -c project.cfg everything


GARPI had an environment manager called "garpi-setenv" which leverages the underlying environment services provided by CMT. Details are are this page. After installing "everything" you can produce the configuration file example following this:

garpi emit_setenv_config

It will print something like:

base_release = /path/to/install/area/projects
release_package = interim/InterimRelease

This is minimal and assumes this is the only release around. The configuration mechanism is very flexible and can handle describing and setting up multiple base releases and also personal projects. But, for now, copy this into the file:


Next, create the scripts to source:

./garpi-RELEASE/scripts/garpi-setenv -S setup-interim -N setup-interim

This will print something like:

Generating shell function/alias setup-interim
Generating setup-interim.csh

Note, you can pick another name for both the setup script (-S) and the shell function/alias (-N).

For then after, every shell can do:

source /path/to/install/area/

This is fast and only adds a single shell function/alias to your environment so is "safe" to do in every shell. To finally set up the environment one runs


Which prints:

source in /path/to/install/area/projects
source in /path/to/install/area/projects/interim/InterimRelease/cmt

And gives something like:

$ which WCSim


The Garpi-based build uses Reflex dictionaries, not rootcint ones. ROOT has not yet transitioned to Reflex fully so you will need to do the following to load the dictionaries:


Some site-specific issues

OS packages

Some packages are assumed to be provide by the OS. These include:

  • subversion, g++, gcc, gfortran, make, wget/curl
  • X11 devel packages (ubu/deb names: libxpm-dev libx11-dev, libxft-dev, libxext-dev)

Deal with HTTP proxy

If behind a firewall with an HTTP proxy (such as at BNL) you must tell various network clients about it.

Many will check this environment variable:

export http_proxy=

SVN needs special configuration. See this topic for what to do.



See the topic on SVN Repository.


WCSim SVN is added to the BNL SVN as an external. You must still provide the correct authentication. The read only account is guest/guest. If the install halts early on, check the log files to see if it is requesting a user name and password. You can provide this by typing into the terminal running "autoinstall".

LCGCMT or GARPI commit access

The GARPI and GARPI's version of LCGCMT are managed in central git repositories and accessed via gitosis. Releases of the code are made as tar files and require no authentication.

If you want to contribute to these projects you can configure the installation (see below) to pull the lcgcmt project from the gitosis service of BNL Physics Department. For this you will need to first gain access. To access this, send your public (one ending in .pub) SSH2 key to You will need your private key available (directly or via ssh-agent) when running the install. Additional help with SSH keys is available. If you elect to use a release tarball, this is not needed.


This Garpi-based install needs a fairly modern version of Python 2 (>= 2.4).

What could go wrong?

Since nothing is perfect, here is some troubleshooting info.


The autoinstall script produces a logfile


The most recent log file can be accessed by the symlink


The underlying garpi script produces its own log file with lower-level info


Tested on

The list of platforms that this has been tested on are:

  • Ubuntu 10.4 and 10.10, 32 bits
  • Scientific Linux 5.3, 64 bits
  • Scientific Linux (Fermi) 5.x (check what fnal node is)