The Pico Analysis Framework (PAF)

This is an attempt to summarize some of the features of PAF which are applicable to the MINOS software framework persistency design.

Overview

PAF was developed for use in the BaBar experiment for purposes of providing a versatile interface to the data. It is a ROOT based system and makes extensive use of ROOT I/O and data structures. Originally envisioned to be experiment independent, the current implementation has some BaBar'isms built into the code, and so while we can learn from and adapt aspects of the code for our purposes, it can't be adopted wholesale for our use.

The history of PAF is that it is designed to be a solution for those who wish to perform analysis on an arbitrary computing platform (e.g. a laptop PC running Linux) and who may not have access to the licenses required to run the main BaBar framework (which depends on Objectivity (a licensed product) for its object database store). PAF is advertised to be:

It is not an officially supported framework of the BaBar experiment.

Principles of Design

There are 4 basic components of the PAF system. These are:

Data Streams

There are currently 3 of these implemented in PAF. The 3 implemented streams in PAF are a subset of the data streams supported in the main BaBar framework. These are: Alternative data streams implemented in the main BaBar framework, but not in PAF, are [5]: Each data stream is supported by its own ROOT TTree data structure, i.e. there is a 1:1 relationship between TTree's and data streams. The structure of the TTree's and their contents in discussed in more detail in the section Organization of PAF Data Streams below.

Managers

The PAF managers manage the object data streams and other aspects of the analysis program. Some of these managers are: The managers in turn are managed by a singleton Application manager class TPico which maintains a set of pointers to each of the possible manager types as well as a pointer to a PAFAnalysis object. The PAFAnalysis class mantains a list of job modules (PAFModules) and controls the execution of the job, performing a function something like our Job Control package. All manager and analysis pointers are retrieved by first using a static TPico::Instance() method to retrieve the TPico singleton, and then invoking the appropriate Get method.

Selectors

This section is incomplete.
Selectors are used to filter the data. There are 3 basic types:

Collections

This section is incomplete.
Collections can be used to organize events into sets. There are 4 concrete implementations in PAF, all of which inherit from an abstract collection class and provide methods for incrementing over the members of the collection. The 4 collection classes are: Each collection contains some method of associating a member event to the file containing its data. The abstract base class that all of the collections inherit from ensures that all collections support a common set of interfaces for accessing the events in the collection.

Organization of PAF Data Streams

PAF supports access to two formats for the organization of data in ROOT files: the PAF and the Kanga model. This section discusses the PAF organizational scheme.

PAF streams (Tag, Aod, Mct) are each supported by their own ROOT TTree data structure, i.e. there is a 1:1 relationship between TTree's and data streams. Each TTree is stored in a separate file with a suffix indicating it's stream contents, e.g. "xxxTag.root","xxxAod.root", etc..

The three TTree's are organized as follows:

TagTree

The TagTree stores the data members of the PAFEventBase class. The Tree is organized as follows: Selection of events by "Tag" variables is done through an application of the TTreeFormula class. It allows the user to express a cut on events as an expression, e.g. "Tag_i_nTracks > 3 && Tag_f_eTotal > 5.0" to select events with more than 3 tracks and total energy greater than 5 GeV. The Tag cut expression can be supplied dynamically (e.g. on the command line) so that no recompilation of code is necessary.

AodTree

The AodTree stores Analysis Object Data (Aod) objects. The Aod objects can be of type PAFChargedAodBase or PAFNeutralAodBase, which are the classes for the storage of charged and neutral candidates respectively. The TTree is organized as follows:

MctTree

The MctTree stores Monte Carlo Truth objects of type PAFMcBase. The Tree is organized as follows:

References:

The first 2 references are from Marcel Kunze (an author of the PAF package) to whom I promised acknowledgement for any use of this code in the MINOS framework.
Reference 3 is from George and Reference 4 from the ROOT Example Applications site.
[1] PAF Class Documentation .
[2] A recent PAF tutorial given at SLAC.
[3] Pico Analysis Framework Documentation .
[4] More Pico Analysis Framework Documentation .
[5] S. Patton's BaBar Database Documentation .

If you have any comments about this page please send them to
Sue Kasahara
Last Updated: August 24, 2000.