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:

  1. Make sure your .netrc file is up to date.


  2. 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).


    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.
  3. Test that PROOF works for you


    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.