Design

PAF common code can be downloaded, installed and configured for personal use or in a central location through a well-defined documented procedure. Its modular design provides high adaptability to new requisites that may arise in the future. We have developed a clean and pure object oriented framework that can adapt to several different workflows and user preferences.
The code has been structured in four modules:

  • Computing: Core computing code, base project and analysis classes.
  • Environments: Integration of PoD,  PROOF Cluster, …
  • Utilities: Additional PAF tools to improve the user experience.
  • Settings: PAF requires some parameters to be configured to be able to run. Some of these settings are the path to the PAF binaries and libraries, the path to additional package repositories or the behavior of the logger. These settings are encapsulated in a strategy pattern which although, by default, takes these values from environment variables, it can be easily extended with additional mechanisms.
Configurable parameters in PAF
Configurable parameters in PAF

In the chart below a schematic representation of a normal analysis development cycle with PAF is shown. PAF installation and configuration should be done once and may be reused as many times as needed. The actual physics analysis code is encapsulated into at least one selector or analyzer that can be enriched with more packages and modules. All this is added to a project in a ROOT macro that once executed sets up the selected environment, transparently prepares and compiles all the code, loads it into the slaves, and starts the distributed processing.

PAF Workflow
PAF Workflow