Customization of ROOT for NOvA DAQ

The ROOT Analysis framework has been built for the NOvA teststand and DAQ environment using the following procedure:

Source Setup

The root version 5.24.00 source tree was retrived from [] and copied to the /cern area on the build machine.

The environment variables ROOTSYS and LD_LIBRARY_PATH were set to point to the /cern/root area.

export ROOTSYS=/cern/root
export LD_LIBRARY_PATH=/cern/root/lib;$LD_LIBRARY_PATH

The current root directory was moved out of he way (mv /cern/root /cern/root-5.22) or if a symbolic link was being used the link was removed (unlink /cern/root). The source code was unpacked to create the directory "root" under the /cern area. The /cern/root directory was entered into.

cd /cern/root


To configure the root distribution properly the script was run. The target "linuxx8664gcc" was used to produce a full 64bit build of ROOT and it's libraries. The package was configured with the following options:

# Script with the config options for ROOT on a General
# NOVA-DAQ Machine running Fermi Sci Linux 5.3
export TOP=/usr
./configure linuxx8664gcc \
--build=debug \
--enable-xml \
--enable-asimage \
--enable-gdml \
--enable-g4root \
--enable-krb5 \
--enable-mathmore \
--enable-minuit2 \
--enable-opengl \
--enable-pgsql \
--enable-pythia6 \
--enable-python \
--enable-roofit \
--enable-rpath \
--enable-shadowpw \
--enable-shared \
--enable-ssl  \
--enable-xrootd \
--enable-afs \
--enable-qt \
--disable-builtin-freetype \
--with-pythia6-libdir=/cern/pythia6 \
--with-clhep-incdir=/cern/CLHEP/include \
--with-g4-incdir=/cern/geant4/include \
--with-g4-libdir=/cern/geant4/lib/geant4/Linux-g++/ \
--with-pgsql-incdir=/fnal/ups/prd/postgres/v8_2_3/Linux-2-6/include \
--with-pgsql-libdir=/usr/local/postgres/postgresql-8.2.3/lib \
--with-krb5=/usr/kerberos \

The output of the configure command was checked to make sure that the proper paths to all libraries were correctly detected, and that the version of the library that was detected was the 64bit version. For pythia, a 64bit version of the library was produced and located in /cern/pythia6 using the standard pythia build scripts. The freetype libraries were rebuilt to include both 32bit and 64bit versions, and these were reinstalled system wide in /usr/lib and /usr/lib64. The builtin freetype code for ROOT was disabled.


The root libraries and binaries were built using the standard "gmake" command. Due to incompatibilities with parallel builds (ROOTs make files don't have the correct dependencies for parallel build) the only way to obtain a clean build was with all parallelism turned off (i.e. gmake -j 1).

The build takes a while, a long while. Now would be a good time to go get coffee.

When the build is complete the output was checked to make absolutely sure that everything build, and tested correctly.


After the build was verified, the build tree was moved out of the way prior to installation.

mv /cern/root /cern/root-5.24.00-nova-build

Then from the build directory the install was performed to /cern/root. This results in a nice clean installation of the system and libraries, with the build area preserved.

The install area was then moved to have the right version number.

mv /cern/root /cern/root-5.24.00-nova

And a sim link was setup to point to it.

ln -s /cern/root-5.24.00-nova root

At this point the root full root distribution is correctly build and installed with the nova options and points at all the right libraries.


To use ROOT on a nova DAQ machine, simply make sure that your ROOTSYS and LD_LIBRARY_PATH point at the right version of root (i.e. /cern/root and /cern/root/lib).

If you need to setup a specific version of root, this can be done with the ups/upd setup process. (see the installed ups products for details)