LArSoft at Nevis
This documents how to use the LArSoft and MicroBooNE software as managed by mrb+git. If you are looking for older LArSoft versions managed by SRT, see the
LArSoft at Nevis SRT page.
Setting up the Environment
The simplest way to initialize the mrb+git environment at Nevis is to execute the following command:
source /nevis/amsterdam/share/seligman/microboone/setup_uboone.sh
You only have to run this once per login session. If this command hasn't been run in a while, there may be a delay as files are downloaded via CVMFS; give it time!
After you've run this command, you can follow the instruction in the
MicroBooNE guide
(without running any of the FNAL system-specific scripts, of course).
Distribution
The MicroBooNE software directories are imported to Nevis via
CVMFS
. You can browse the files at
/cvmfs/fermilab.opensciencegrid.org/
and
/cvmfs/uboone.opensciencegrid.org/
on any of the Nevis Neutrino systems; they all have CVMFS installed. We automatically mirror Fermilab's
releases
.
A strong advantage of this set-up is that if you use the CVMFS paths (those that begin with
/cvmfs/fermilab.opensciencegrid.org/
) and abstract path variables (e.g., $MRB_INSTALL), you can write scripts that will work at both Nevis and FNAL without any changes. (Nevis
Condor jobs must be different from those at FNAL, since our batch cluster is organized differently.)
Limitations
Bash shell
The mrb+git scripts will only run in the
bash
shell. In other shells, you'll see error messages about missing libraries or being unable to set up products.
31-Jun-2014: Although for a time it seemed like some of the setup scripts would run in zsh, those same scripts would not run in a condor environment. LArSoft
and uboonecode
are still bash-only.
You can temporarily go into the bash shell simply by typing
bash
. If you want to permanently change your login shell to bash, you can do it via the
ypchsh
command.
Other shells (tcsh and zsh) may be fully supported (someday), according to the LArSoft maintenance team.
Builds and releases
Nightly builds are no longer available. LArSoft and
MicroBooNE have new releases on the order of once per week, so they're not needed anymore. For a list of available versions, set up the mrb+git environment and use:
ups list -aK+ uboonecode
See the
release page
for a description of the different releases.
If you're doing cutting-edge LArSoft development, you can get the development version of the entire LArSoft and/or uboonecode package. See
https://cdcvs.fnal.gov/redmine/projects/uboonecode/wiki/Uboone_guide
for more information.
Notes
Regular development work
The
MicroBooNE guide
contains several procedures, but most of them are not commands that you'd type in every day. If your typical work flow is to login and start editing code in something you've already checked out, you may be interested in this script that
WilliamSeligman wrote for himself:
/nevis/amsterdam/share/seligman/microboone/develop_uboone.sh
Let's assume that you've previously set up (via
mrb newDev
) and checked-out (via
mrb gitCheckout
) some code that you're working on into your directory
~/mydev
, and that code is part of LArSoft release v03_04_05. Then a typical use of this script would be:
source /nevis/amsterdam/share/seligman/microboone/develop_uboone.sh ~/mydev v03_04_05 e6 debug
This becomes handy if you set up an alias in
~/.bashrc
, the script that gets automatically executed when you login to bash:
alias MBD="source /nevis/amsterdam/share/seligman/microboone/develop_uboone.sh ~/mydev v03_04_05 e6 debug"
Then you just have to type
MBD
after you login, and you're ready to work.
Look at
~seligman/.bashrc
for more ideas.
Finding scripts
The production MicroBooNE .fcl scripts can be found by setting up
uboonecode
:
# If you haven't done this already; replace <vers> with
# your desired version number.
setup uboonecode <vers> -q e5:debug
ls $UBOONECODE_DIR/job
Similarly, you'll find the .xml files in
$UBOONECODE_DIR/job
and python scripts in
$UBOONECODE_DIR/python
; note that these files only work at Fermilab, since Nevis uses condor differently (we don't have BlueArc, for example).
Finding packages
One potentially confusing aspect of LArSoft is that it has been sub-divided into package groups. In order to check out a package, you have to know which group it's in. For example, you can't check out LArG4; you have to check out "larsim" which is a group of packages, one of which is LArG4.
For a guide as to which package is in which group, see
LArSoft dependencies
. Don't forget that there's also a "uboonecode" package group; code in that group supersedes the more general non-experiment-specific LArSoft code.
Browsing code on the web
If you want to browse the code in one of the package groups (e.g., larsim, larreco, ubooncode), you can use the Redmine repository listings at FNAL. The "magic formula" is:
https://cdcvs.fnal.gov/redmine/projects/<package-name>/repository
So if you want to look at the package group
larreco
, you'd visit the URL
https://cdcvs.fnal.gov/redmine/projects/larreco/repository
Browsing code in UNIX
My preferred way is to look at the code as it's stored on the local computer cluster. After you've set up LArSoft, you can find the code for a given package group in the directory:
$<PACKAGE-NAME>_DIR/source
If you wanted to look at the packages in group
larsim
, you can do:
ls $LARSIM_DIR/source
Where can one run LArSoft
You can run jobs on any of the Neutrino systems, since they all have CVMFS installed.
Setting up ROOT and Geant4
The LArSoft software distribution contains its own copies of
ROOT
and
Geant4
, so there's no need to use
environment modules (the
module
command) to set up the Nevis versions. In fact, to make sure the Nevis versions don't conflict with the LArSoft versions, check that there are no
setup
or
module
commands in any of your
shell initialization files like
~/.bashrc
, especially if you're switching to LArSoft from some other project or from working on the
ROOT tutorial
.
The LArSoft environment also affects some standard Linux features, such as the default rules for
make
and the
yum
command. If you are doing any work that does not involve LArSoft directly, you're advised
not to set up the LArSoft environment as described above.