How to run Athena with Geant4 in debug mode
This page explains how to run Athena with Geant4 in
debug mode. This can be done interactively, or with a script which is provided.
The main recipe was provided by Andy Buckley, and I have validated it and packaged it into a script.
The following script can be used on lxplus nodes. It checks out a version of Athena in a /tmp directory.
Things to note:
- the version of Athena must be changed in the script.
#!/bin/bash
runId=${1:-1}; shift
echo "To run number $runId "
if [[ $runId == -1 ]]; then
echo "Must supply runId as argument_1";
exit ;
fi
## From the 'current' directory several files needed for a run will be copied.
originalDir=`pwd`
## CHANGE HERE
# Below you must list all the files you need in order to run into the run directory
# These will be copied from the current directory into the run directory
files="jobConfig.LooperKiller.py postOptions.LooperKiller.py test_G4Atlas.py"
## CHANGE HERE - Version of Athena to use
## Identification of run
athVer="16.6.X-r4" ## Shorthand id for runs
athFull="here,16.6.X,r4,runtime,32" ## Full description string for 'asetup'
## <<<---- Must have "32" for use with i686 G4 libs
##
# Set up Atlas environment
##------------------------
echo "Setting new Atlas environment $athVer --- with full= $athFull **"
#-----------
# Check the files
for file in $files
do
if [[ ! -f $file ]]; then
echo "Fatal Error in " $0 " : cannot find file" $file
exit 1
fi
done
cd /tmp/japostzp
DirAthena="AthenaDir-$athVer-dbg"
if [[ ! -d $DirAthena ]]; then
mkdir $DirAthena
cd $DirAthena
# asetup $athVer,here,32
echo "**> calling asetup with argument " $athFull
source /afs/cern.ch/atlas/software/dist/AtlasSetup/scripts/asetup.sh $athFull
cmt co External/Geant4
cd External/Geant4/cmt
mv requirements requirements.orig
cp ~abuckley/public/g4-requirements.i686-slc5-gcc43-dbg .
## CHANGE - here ==> the above file must correspond to the RELEASE
# e.g. I created a local version for the latest release (simple changes)
#cp $originalDir/g4-requirements.i686-slc5-gcc43-dbg .
ln -s g4-requirements.i686-slc5-gcc43-dbg requirements
cmt config
make
else
echo "Using existing installation" in `pwd`/AthenaSetupDir-$athVer
cd $DirAthena
echo "**> calling asetup with argument " $athFull
source /afs/cern.ch/atlas/software/dist/AtlasSetup/scripts/asetup.sh $athFull
fi
alias athena=athena.py
# cd -
cd $originalDir
echo "Let us check that we can find Athena"
which athena.py
## Useful variables
hostNm=`hostname | sed 's/.cern.ch//' `
RUNDIR=/tmp/japostzp/Run-ath$athVer-gdb.$runId
if [[ -d $RUNDIR ]]; then
mv $RUNDIR/test_G4Atlas.py{,-bak-$$}
else
mkdir -p $RUNDIR
fi
cp $files $RUNDIR
if [[ ! -f am-running-$runId ]]; then
ln -s $RUNDIR running-on-$hostNm-$runId
## ln -s running-on-$hostNm-$runId am-running-$runId
echo=1
cd $RUNDIR
cp test_G4Atlas.py test_G4Atlas.py_ran_$$
# Options for running
# 1.) Running with a log file in a gzip-ed file
# athena.py -c "RTTRunNumber=$runId" test_G4Atlas.py 2>&1 | gzip -3 > log.ath$athVer.rtt$runId.gz
# 2.) Running with gdb
athena.py -c "RTTRunNumber=$runId" test_G4Atlas.py 2>&1 | gzip -8 > log.ath$athVer.rtt$runId.gz
# Adapted way to run debug from debug
# http://alxr.usatlas.bnl.gov/lxr/source/atlas/Control/AthenaCommon/share/athena.py
#
# A simple way to run gdb -- see
# athena.py -d exec -c "RTTRunNumber=$runId" test_G4Atlas.py 2>&1 | tee log.ath$athVer.rtt$runId
# athena.py --debug exec -c "RTTRunNumber=$runId" test_G4Atlas.py
exit 0
else
echo "ERROR - the job with run Id=$runId is running or already ran."
echo " Check the file running-$runId for the host running the job."
echo " >> Exiting."
exit 10
fi
###-----------------------------------------------------###
--
JohnApostolakis - 26-Oct-2011