What is gallery?

gallery provides lightweight access to event data in art/ROOT files outside the art event processing framework executable. gallery is not an alternative framework; rather, it provides a library that can be used to write programs that need to read (but not write) art/ROOT files. You must have access to the ROOT dictionaries for the classes in a data file to use that data file. The availability of such dictionaries is provided by the experiments.

Demonstration code available at github gallery-demo shows:

  • Using compiled C++
  • Using a ROOT macro
  • Using PyROOT

It is recommended to use compiled C++ whenever possible, and interactive ROOT when you really want the interactivity. Use PyROOT only when you require the use of other Python libraries; be prepared to work around defects in the model.

gallery is built:

  • without the use of EDProducers, EDAnalyzers, etc., thus
  • without the facilities of the framework (e.g. callbacks from framework transitions, writing of art/ROOT files).

You can use gallery to write:

  1. compiled C++ programs (the most robust)
  2. ROOT macros (allows the flexibility of interacting with ROOT objects, but bugs in ROOT can cause crashes when using ACLiC.)
  3. Using PyROOT, Python scripts (least robust and slowest. See the demonstration for more information.)

Users can invoke any code they want to compile against and link to. Be careful to avoid introducing binary incompatibilities.

Note: to do certain things, you may want to use art. This page will give you more information about art.

For more information on gallery, please go to: or to the presentation at the LArSoft Workshop in 2016.