MINOS Offline Documentation
[home] [installing MINOS software] [supported platforms] [package links] [mailing list] [HyperNews] [FAQ] [computing help] [MINOS glossary] [archives]

External Products

This page has links to the versions of external products that are required by the MINOS offline software.
Installation instructions are provided for each product.

The following are instruction how to install external packages required for the MINOS Offline Framework. Most packages will be installed in the $INSTALLATION directory. This installation does not require admin privileges. If you have such privileges, you can opt to install all external packages in the "/usr" area. To do so, you need to substitute all occurrences of $INSTALLATION in these instructions with "/usr".

Tar files of the recommended version of the external packages can be found at:

One will find source for mysql, and sigc++. Currently the dCache source can not be distributed, but a binary version built for Linux is provided.

Note: you should install these packages in the order listed here.


The recommended compiler for MINOS offline software is gcc 3.4, although other 3.x versions may work. If a suitable version is not provided as part of your system there are some notes here.
See also msrt with multiple compilers

dCache (optional)

dCache (http://dcache.desy.de/) is a disk caching system that provides access to the FNAL Mass Store http://www-numi.fnal.gov/minwork/computing/enstore.html. To integrate this with ROOT one must install the associated library (dcap.so) and header file (dcap.h) prior to building ROOT.

  1. Download the tar file from the location given at the top of this page, namely from here (not from DESY).
  2. Unwind the tar file
       prompt> cd $INSTALLATION
       prompt> tar xvzf path_to_tarfile/dcap_v2_26_f1107_Linux+2.4.tar.gz


We use ROOT interface to the MySQL database. See the Installation instructions further details.


Libsigc++ is a small library which provides a templated, type safe signal/slot mechanism. A recipe for installation of this software is here.


In order to use the ParticleTransportSim and G3PTSim one will need pythia6 built into ROOT. This presents a bit of a chicken-and-egg situation as the script to build pythia6 is distributed as part of the minossoft code base, so you'll need to check that out before you can proceed with this step.
  1. cd path/to/where/pythia6/will/live
  2. mkdir pythia6
  3. cd pythia6
  4. $SRT_PUBLIC_CONTEXT/GridTools/RemoteSoftwareDeployment/libs_and_builds/build_pythia6.sh

It will then create a directory 'v6_412' and it will download from remote sites all that it needs and build the routines/libraries.

You'll then need to

  • Define PYTHIA6=path/.../live/pythia6/v6_412 with export or setenv as appropriate for your shell
    Note in the next step you will build ROOT with the --with-pythia6-libdir=$PYTHIA6/lib (make sure you're consistent about PYTHIA6 w/ or w/o "/lib")
  • add $PYTHIA6/lib to $LD_LIBRARY_PATH


ROOT is required by all the MINOS software

Frozen releases are tied to specific versions of ROOT. See the frozen release page for this tie. The development release will likely need the latest pre-built ROOT release, if not ROOT from Subversion.

NOTE! After 2007-11-01 ROOT will no longer be available via CVS. Instead CVS usage will be replaced by Subversion which is the new-and-improved CVS. Most of the commands look very similar though there are some differences. How to get/install Subversion is in the next section if it is not already installed on your system.

There are two ways to install ROOT, the "ROOTSYS" method and the "prefix" method. Both should work but the former is preferable as most people use it and assume it is the only way. The latter is used in Debian or Red Hat package installations. Each method is described below

For both methods, getting the source is the same:
  1. svn checkout http://root.cern.ch/svn/root/trunk root

    This trunk is the equivalent of CVS "HEAD", i.e the bleeding edge of the development branch. The trailing root is the directory name and so could just as well be trunk or bleeding-edge as the user desires.

    The equivalent of CVS tagged releases are checkout via:
    svn checkout http://root.cern.ch/svn/root/tags/v5-17-03 v5-17-03
    Again the last arg is the local directory name.

  2. cd root (or whatever.)
The older CVS method (no longer supported after 2007-11-01):
  1. cvs -d :pserver:cvs@root.cern.ch:/user/cvs login
    password: cvs
  2. cvs -z3 -d :pserver:cvs@root.cern.ch:/user/cvs checkout root
    You may optionally add a flag like "-r v4-00-04" just after the "checkout" comand to get, for eg. tagged version 4.00/04.
  3. cd root

For both installation approaches it is important that some flags set by SRT are disabled. If minossoft SRT has been setup you must

Failure to do so will interfere with the ability to build the AsImage subpackage of ROOT. Certain bits of the MINOS code subtly rely on this subpackage getting built -- though most will work fine. After ROOT is built remember to re-setup SRT if you are going to proceed to build minossoft.

Then continue for the ROOTSYS method:

  1.  ./configure linux \
        --enable-mysql \
        --with-mysql-incdir=${INSTALLATION}/include/mysql \
        --with-mysql-libdir=${INSTALLATION}/lib/mysql     \
        --enable-dcache \
        --with-dcap-incdir=${INSTALLATION}/include \
        --with-dcap-libdir=${INSTALLATION}/lib  \
        --enable-pythia6 \
        --with-pythia6-libdir=$PYTHIA6/lib \
        --enable-xml \
        --enable-asimage \
        --enable-minuit2 \
    replace linux with appropriate platform if non-Linux. Use ./configure --help to get list of platforms and other options.
  2. gmake
  3. gmake cintdlls
    This builds the "glue" so that compiled STL objects like <string> can interoperate with CINT and was optional. This step will now do nothing as it has been incorporated into the default build of the first step.
  4. Define ROOTSYS:
           tcsh> setenv ROOTSYS /where/to/install/root
           bash> export ROOTSYS=/where/to/install/root
  5. gmake install
  6. Permanently define the ROOTSYS environment variable in your .{bash,csh}rc or your, setup_minossoft or equivalent file.
  7. Make sure that $ROOTSYS/bin is added to your PATH environment variable.
Else continue for the prefix method:
  1.  ./configure linux \
        --prefix=/where/to/install/root \
        --enable-mysql \
        --with-mysql-incdir=${INSTALLATION}/include/mysql \
        --with-mysql-libdir=${INSTALLATION}/lib/mysql     \
        --enable-dcache \
        --with-dcap-incdir=${INSTALLATION}/include \
        --enable-pythia6 \
        --with-pythia6-libdir=$PYTHIA6/lib \
        --enable-xml \
        --enable-asimage \
        --enable-minuit2 \
    replace linux with appropriate platform if non-Linux. Use ./configure --help to get list of platforms and other options.
  2. gmake
  3. gmake cintdlls
    This builds the "glue" so that compiled STL objects like <string> can interoperate with CINT and is optional. This step will now do nothing as it has been incorporated into the default build of the first step.
  4. gmake install
  5. Do NOT define ROOTSYS environment variable anywhere.
  6. Make sure that /where/to/install/root/bin is added to your PATH variable.


Subversion is the code management system that is supplanting CVS in the open source community. This not just a change of the client but the whole structure behind the scenes. In many ways it works in a similar fashion to cvs but it is incompatible in others; there are tools for exporting and importing svn repositories to/from cvs repositories as long as certain more advanced svn features are not used. But a client (code user) can not use one system to access a repository of the other type.

On some platforms you may find it already installed, on others you'll need to install it. The primary executable is svn.

Instructions for installing and using subversion can be found here.


Additional external products are required for installing the Labyrinth. The Labyrinth is the old Fortran77 GEANT3 based GMINOS and a fortran based reconstruction framework (now obsolete). Unless one actually plans to generate GMINOS events or convert existing ADAMO files to ROOT files, installation of Labyrinth is not necessary.

See the instructions for the Labyrinth for more detail.

The package Rerootjob, the ADAMO file to ROOT file converter, requires ADAMO to build a working executable. AMAMO is the data structure and I/O package used by the Labyrinth. Rerootjob will correctly handle the non-existence of the Labyrinth (and ADAMO) as long as environment variables that should point at those packages are not defined.

There is also a small dependency on some BField data files that are distributed with the Labyrinth, but can also be independently checked out of CVS.

Last Modified: $Date: 2007/10/19 18:08:25 $
Contact: minos_software_discussion@fnal.gov
Page viewed from http://www-numi.fnal.gov/offline_software/srt_public_context/WebDocs/external_products.html
Security, Privacy, Legal Fermi National Accelerator Laboratory