Table of Contents

How to add a new version of a Gaudi software

Prerequisites

If you work locally, you first have to execute the lines described here (up to install CMT environment).

Install new Version

(The following examples will all be for DaVinci) Type

setenvDaVinci vXrYpZ

which will install a directory ~/cmtuser/DaVinci_vXrYpZ in your home directory (where: v stands for version, r for release and p for patch). If you only want to execute your own algorithms, thats all you have to install. Otherwise:

Install new packages

Packages are ordered in <package group>/<group>, for instance Phys/DaVinci or Hlt/HltSelections. If you want to install one of these packages, type:

getpack <package group>/<group>

You then have to type your password several times (locally) until the package is downloaded.

Add your own cpp-scripts to a package

In the package of your choice (for instance Phys/DaVinci), create a folder src, where you put your .cpp and your .h files in. Then go to the folder /cmt, open the requirements file and add:

branches          cmt doc job options python src

(only the src should be missing) and

# ============================================================================
# Component library building rule
# ============================================================================
library     Analysis     ../src/*.cpp -import=AIDA


# ============================================================================
# define component library link options
# ============================================================================
apply_pattern component_library library=Analysis

This will ensure that the code in the folder src is compiled and added to the Analysis-library. Then type:

cmt config
cmt make

which will finally compile your cpp-files.

Before you start your job

Type:

SetupProject DaVinci vXrYpZ

Cleaning up

Sometimes you need to clean up the directories, as compilation won't work anymore. When you compile your classes (algorithms, tools,…), only the ones which have changed since the last compilation will be recompiled. This may lead to ambiguities, f.ex. if you have renamed a tool, the old object file will still exist and the linker will return an error.

To delete all the object files and rerun the whole compilation on all the classes, do:

cmt make clean all

Running in debug mode

To investigate errors in your algorithm, tool, … it may (in some cases) be useful, to run gaudirun.py in debug-mode. To do this, execute the following commands (for a c-shell on lxplus):

setenv CMTCONFIG slc4_amd64_gcc34_dbg
source setup.csh -tag=$CMTDEB
make tag=$CMTDEB

in the cmt-directory of the package in question.

Then do:

setenv GAUDIRUN `gaudirun.py`
gdb python
run $GAUDIRUN yourOptions.py

In order to make this work on grid-ui (SLC 5 and bash environment) you need to following:

source /afs/cern.ch/lhcb/software/releases/LBSCRIPTS/prod/InstallArea/scripts/LbLogin.sh #get LHCb environment from AFS (with debug stuff)
export CMTCONFIG=x86_64-slc5-gcc43-dbg
source Phys/DecayTreeTuple/cmt/setup.sh # adapt according to what you have compiled

Note:

Information about CMT

Information about the use of CMT can be found at this page.