Release Notes Podd 1.6.0-rc2

18 January 2018

The Hall A software team is pleased to present the second release candidate of version 1.6 of the data analysis package Podd. This version contains many significant improvements motivated by the long experience with version 1.5. This is still an unstable release, i.e. not all features have yet been frozen.

Version 1.6 is not binary compatible nor fully source-compatible with the previous release 1.5. Several parts of the programming interface have changed. As a result, libraries and plug-ins for version 1.5 will have to be recompiled and, in some cases, minor source code changes may be necessary.

As much as possible, the bug fixes as well as some of the additional functionality of this release will be) backported to version 1.5. We plan to support version 1.5 for several years into the future because many earlier Hall A experiments have spent considerable effort on developing complex libraries for this release. They should not be forced to upgrade. For new development, however, version 1.6 is strongly recommended.

The main improvements in this release are the modular decoder, the unbundled EVIO library, and a partial rewrite of the VDC reconstruction code. Additionally, all analysis classes now use the new database API that was introduced in version 1.5 and has been generalized since then.

What's New

Compared to Release 1.5, the following features have been added:

  • All analysis objects (detectors, spectrometers, etc.) that are part of the core analyzer now use the LoadDB database API, which reads database files in key/value format. This means that existing fixed-format databases for these detectors etc. must be converted to the new free-format key/value style. Release 1.6 includes a conversion program, dbconvert, that automates this task as much as possible. Please see the documentation for details.
  • The EVIO subsystem is loaded from an external shared library. This brings support for the latest version of EVIO (currently 4.4.6) and permits updating of EVIO without having to rebuild the core analyzer. If EVIO is not installed on the user's system, the analyzer build system will attempt to download and install it automatically.
  • The decoder has been rewritten to support drivers for front-end hardware as plug-ins. New decoding routines for new hardware can be added easily via user-written shared libraries. Documentation can be found here
  • The new decoder makes the processing of different event or trigger types configurable via "event type handler" plug-ins.
  • Preliminary support is available for JLab 12 GeV pipelined electronics (FADC250, F1TDC, etc.)
  • The generic hardware channel decoder, THaDecData has been completely rewritten, using an object-oriented design.
  • The track reconstruction of the VDCs of the Hall A HRS spectrometers has been partly rewritten. Known bugs have been fixed. The reconstruction of multi-cluster events should be greatly improved.
  • The VDC efficiency calculation code has been moved from THaDecData into a standalone physics module, VDCeff.
  • Many limitations of the formula and test package have been removed. It is now possible to define formulas and tests on variable-sized arrays, including std::vector global variables.
  • Explicit support for simulation input data has been added, simplifying the handling of Monte Carlo truth data (base class Podd::SimDecoder).
  • There is experimental support for building the analyzer with the scons build system. Users will have to install scons version 2.1 or greater themselves.
  • Support for ROOT 6 and current compilers.
  • Compatibility fixes for Mac OS X. The analyzer has been tested on OS X 10.6 (Snow Leopard) through 10.12 (Sierra) with the matching command line tools for Xcode. A full installation of Xcode is not required.
  • Miscellaneous minor bug fixes.

Compatibility

Version 1.6 is neither source-compatible nor binary-compatible with version 1.5 and prior releases. Plug-ins and user libraries will need to be recompiled and possibly changed. Please contact the developers if you need to do this and run into problems.

System requirements

  • Linux with gcc/g++ 4 or higher; or Mac OS X 10.6 or higher with Apple's command line tools for Xcode (providing gcc/g++ or clang/clang++). Both 32-bit and 64-bit platforms are supported.
  • ROOT 5.10 or higher, including ROOT 6. Version 6.08 or higher strongly recommended.
  • GNU make
  • Reasonably powerful hardware (2GHz CPU, 1GB RAM). Less will work, but it won't be fun.

The following platforms have been explicitly tested:

  • RedHat Enterprise Linux 5, 6 and 7
  • Fedora 14 through 25
  • Ubuntu 12.04 LTS (Precise)
  • Mac OS X 10.6 through 10.13

Most other recent Unix-like installations should work as well.

Building and installing the software

Please see docs/install.html

Running the program / How to analyze data

Please see docs/quickstart.html and the main documentation page.

Example Scripts

Example scripts can be found in the "examples" and "examples/BPM" subdirectories.

Documentation

Further documentation is available in the "docs" subdirectory and at the project home page.

Credits

Special thanks to Robert Michaels, Steve Wood, Ed Brash and everyone else who made valuable contributions to this version.