Hall A C++ Analyzer Installation Guide


General

The C++ Analyzer is a general-purpose data analysis framework built on top of ROOT. Because of the large number of possible combinations of ROOT versions and compilers, which are often not compatible at the binary level, the Analyzer generally needs to be built from source. (A precompiled version is installed in the Hall A counting house, however.) To build the Analyzer, please download the latest source distribution and follow the instructions below.


System Requirements


Prerequisites

The following software must be installed and set up prior to unpacking and compiling the analyzer:

Getting the analyzer source code

Source distributions can be downloaded from here. Unpack the archive as follows:
  % tar xzf analyzer-1.6-alpha1.tar.gz
The sources will be unpacked into the subdirectory "analyzer-1.6". Go there
  % cd analyzer-1.6

Compilation

First, ensure that ROOT is properly set up. Inspect the value of the environment variable ROOTSYS. It must point to the version of ROOT you intend to use. See if you can start ROOT by typing
  % root
$ROOTSYS/bin must be in your PATH.

Currently, there is no "configure" script that automatically detects and configures system-dependent parameters such as compiler, path to applications, etc. Thus, changing the platform must be done by hand. Fortunately this is rather easy. The default configuration is for Linux. So, on Linux you can simply type

  % make

On Mac OS X, edit the top-level Makefile and change the value of "ARCH" from "linux" to "macosx". Then type

  % make
On other Unices, you will have to provide an appropriate "ARCH" section in each of the three Makefiles:
  ./Makefile
  hana_decode/Makefile
  hana_scaler/Makefile
Recovering from a corrupted build

If you build fails because something wasn't set up right, restarting the build may fail with weird error messages. In such a case, try

  % find . -name '*.d' -exec rm {} \;
  % make realclean
  % make
Only if this fails you are likely to have a real problem with the source code.

Installation

To run the analyzer in an arbitrary directory, a number of environment variables need to be set up. Assuming you built the Analyzer in ~/analyzer-1.6, the setup would be as follows:
For bash (Linux default):

  % export LD_LIBRARY_PATH=~/analyzer-1.6:$ROOTSYS/lib
  % export DB_DIR=~/analyzer-1.6/DB
  % export PATH=~/analyzer-1.6:$PATH

For tcsh (JLab CUE default):

  % setenv LD_LIBRARY_PATH ~/analyzer-1.6:${ROOTSYS}/lib
  % setenv DB_DIR ~/analyzer-1.6/DB
  % set path = ( ~/analyzer-1.6 $path )

Instead of adding the build directory to PATH, you could link ~/analyzer-1.6/analyzer to your working directory.

You probably want to put these definitions in your login script: ~/.bash_profile or ~/.login.


Running

Go to your working directory and type:
  % analyzer
or, if you did not modify the PATH:
  % ./analyzer
You should see the startup message:
  ************************************************
  *                                              *
  *            W E L C O M E  to  the            *
  *       H A L L A   C++  A N A L Y Z E R       *
  *                                              *
  *  Release     1.6.0-alpha1        Dec 10 2015 *
  *  Based on ROOT  5.34/32          Jun 23 2015 *
  *                                              *
  *            For information visit             *
  *        http://hallaweb.jlab.org/podd/        *
  *                                              *
  ************************************************

CINT/ROOT C/C++ Interpreter version 5.18.00, July 2, 2010
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
analyzer [0]
Since the Analyzer is built on top of ROOT, you now have access to all ROOT commands from the Analyzer command prompt. Running the Analyzer is like running ROOT with a bunch of extra classes available. The special Analyzer classes are listed in the Analyzer Class Index.

If you are a new user, you might want to look at the example scripts in the examples/ subdirectory of the distribution. Documentation of them can be found in the Quickstart Guide.


Ole Hansen <ole@jlab.org>