Welcome to the PROOF HOWTO!
PROOF (Parallel ROOT Facility)
is a framework integrated into ROOT which allows
for fast interactive analysis of large data sets. A data set is partitioned and each
piece is analyzed in parallel using separate CPUs. A client ROOT session, using PROOF,
connects to a master server which, in turn, connects to multiple slave servers (which
process your analysis in parallel).

Setting up a client to use PROOF on a cluster which is PROOF enabled is relatively
easy. Right now, Pharm is setup for PROOF use.
Setting yourself up to use PROOF:
- Make sure your .netrc file is up to date.
- Checkout PhobosUtils (if necessary)
(cvs -d /phobos/u/phobos/Repository co
PhobosUtils)
- Or Update PhobosUtils by running cvs update
in PhobosUtils directory
- Run enablerootd in the PhobosUtils
directory
- Point your ROOT to /usr/local/root (where a more current version of ROOT, compatible with
PROOF, exists). How you do this depends on which shell you use (if you don't know which shell
you use, type 'echo $SHELL' to find out).
- In csh or tcsh:
setenv ROOTSYS /usr/local/root
setenv PATH $ROOTSYS/bin:$PATH
setenv LD_LIBRARY_PATH $ROOTSYS/lib:$LD_LIBRARY_PATH
- In bash:
export ROOTSYS=/usr/local/root
export PATH=$ROOTSYS/bin:$PATH
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH
Note: When you want to revert back to your original version of ROOT, you must strip the
prepended $ROOTSYS/bin from your PATH and $ROOTSYS/lib from your LD_LIBRARY_PATH and set
ROOTSYS back to its original value.
- Test that PROOF works for you
- Run ROOT (rootn.exe)
- Type gROOT->Proof(); at the ROOT prompt
If PROOF starts up, a message should appear saying "PROOF set to parallel mode (XX slaves)"
where XX is the number of CPUs available for use by PROOF.
Code utilizing proof must be structured using the TSelector class in ROOT. Documentation about
the TSelector class can be found in $ROOTSYS/README/README.SELECTOR. Example macros using TSelectors
and PROOF exist in $PHAT2HOME/macros/proof.
To use libraries with PROOF they must be packaged in PROOF archive files (PAR
files). The structure of a PAR file is explained in the description of
TProof::UploadPackage(). When using PhatII, typing 'make phatpars' in the $PHAT2HOME
directory will make a par file for each library used by PhatII. A version of
PhatII compiled against the newest version of ROOT (/usr/local/root) exists in
/applications/phat/PhatII (it is recompiled nightly). Running
TPhModMapDynLib::SyncProof() after having started proof will upload (and enable)
any par files to proof slaves which have already been loaded into your client
session.
If this documentation is erroneous or you cannot get PROOF to work send an email to
gulbrand@mit.edu explaining (as clearly as possible)
the problem and/or symptoms.