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 /a/share/amsterdam/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:

If you're doing cutting-edge LArSoft development, you can get the development version of the entire LArSoft and/or uboonecode package; e.g.,

mrb g larsoft_suite
mrb g uboonecode

This takes a while to compile the first time, and will take up about 1.5GB in your working directory.

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:

/a/share/amsterdam/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:

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 files used to be in a product called "uboone", which no longer exists as an independent entity. All the files that used to be part of "uboone" are now in "uboonecode". The production .fcl scripts can be found by setting up uboonecode:

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:

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.