The ROOT system provides a set of OO frameworks with all the functionality needed to handle and analyze large amounts of data in a very efficient way. Having the data defined as a set of objects, specialized storage methods are used to get direct access to the separate attributes of the selected objects, without having to touch the bulk of the data. Included are histograming methods in an arbitrary number of dimensions, curve fitting, function evaluation, minimization, graphics and visualization classes to allow the easy setup of an analysis system that can query and process the data interactively or in batch mode, as well as a general parallel processing framework, PROOF, that can considerably speed up an analysis.
Information
- Source: https://root.cern.ch/drupal/
- License: LGPL, except for the optional MathMore library which is licensed under GPL. See https://root.cern.ch/drupal/content/license for details.
- Documentation: https://root.cern.ch/drupal/content/documentation
- Path: depends on the version and OS
Using RooT (RedHat EL7)
Currently only RooT v6 is available as a system installation. No configurations required.
[el7]% /usr/bin/root-config # to show the configuration options. [elx]% /usr/bin/root # to actually run root.
Using RooT (RedHat EL6)
RooT v5 is installed as system installation, without any further configuration. RooT v5 and v6 are available as AFS-installations. To setup the environment use the module command:
[sl6]% module avail [sl6]% module load root6 # set environment for RooT v6.xx /afs/desy.de/products/root/amd64_rhel60/6.02.00/bin/root [sl6]% module load root # set environment for RooT. most recent version 5.xx [sl6]% module load root/5.32 # set environment for RooT v5.32.xx
Setting up RooT via CVMFS (the CERN Virtual Machine File System)
CVMFS is a global, read-only file-system, that is often used to distribute software. RooT is offered this way by the CERN IT Software Team in sft.cern.ch (other, experiment specific locations might also exist, please refer to experiment specific documentation on how to set up). An example walk-trough of the setup for one specific version is shown below:
[el7]% ls -l /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/ #list current ROOT versions in sft.cern.ch ... drwxr-xr-x 13 cvmfs cvmfs 4096 Jan 20 15:57 6.19.02 #an example of a recent RooT version ... [el7]% ls -l /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.19.02 #which platforms is this version compiled for? drwxr-xr-x 18 cvmfs cvmfs 4096 Jan 20 08:34 x86_64-centos7-gcc48-opt #best matching platform for EL7 ... #centos7-gcc48 tells you this is a version for CentOS 7 (=EL7), compiled with gcc48 [el7]% gcc --version gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39) #fine, the gcc version installed matches the required gcc version [el7]% source /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.19.02/x86_64-centos7-gcc48-opt/bin/thisroot.sh #or …thisroot.csh if you are in TCSH [el7]% root #to actually run root . The first start might take some seconds since files might need to be fetched from CERN. #The last RooT v6 version for SL6: RooT setup with additional gcc setup [sl6]% ls -l /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.06.08/ ... drwxr-xr-x 3 cvmfs cvmfs 4 Nov 28 2016 x86_64-slc6-gcc49-opt #last RooT v6 version compiled for SL6, needs gcc49 … [sl6]% gcc --version gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23) … #the system gcc is 4.4.7, which does not match the required gcc49 [sl6]% ls -l /cvmfs/sft.cern.ch/lcg/contrib/gcc/4.9/ ... lrwxrwxrwx 1 cvmfs cvmfs 11 Nov 26 2015 x86_64-slc6-gcc49-opt -> x86_64-slc6 … # there is a matching gcc version in SFT CVMFS, set it up: [sl6]% source /cvmfs/sft.cern.ch/lcg/contrib/gcc/4.9/x86_64-slc6/setup.sh #gcc version set to gcc 4.9 [sl6]% source /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.06.08/x86_64-slc6-gcc49-opt/root/bin/thisroot.sh #or …thisroot.csh, if you are in TCSH [sl6]% root #to actually run root . The first start might take some seconds since files might need to be fetched from CERN.
Compiling RooT v6 (RedHat EL6)
RooT v6 requires a c++11 capable compiler, for example gcc > v4.8. The default gcc under SL6 has v4.4x, which is way too old for this kind of jobs. You need to use RedHats developer toolset:
[sl6]% gcc --version gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11) [sl6]% scl enable devtoolset-3 bash # start a bash shell with the devtoolset-3 environment. The environment is not persistent! bash-4.1$ gcc --version gcc (GCC) 4.9.1 20140922 (Red Hat 4.9.1-10) bash-4.1$ ./configure [options] && make && make install bash-4.1$ exit [sl6]% gcc --version # the devtoolset env won't be needed at runtime. gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)