Description
split out creation of file and instantiation of tables into a standalone C++ interface, which is invoked by the art producer module.
the idea is to have a parent numl::File
C++ class, which will create an HDF5 file, instantiate tables, populate the tables per event, and then close the file when complete. this class will hold onto a vector of table objects, each representing a single table.
each table class in this vector will inherit from an abstract base class numl::Table
, which declares a virtual AddEvent
function which takes in a const art::Event&
and uses it to fill the tables in the file. we can then declare boilerplate table classes for various data structures (ie. EventTable
, ParticleTable
, EdepTable
, HitTable
and so on. the user can use inheritance to specialise these classes (ie. an event table for a specific type of event, etc) or add completely new tables (ie. the custom uboone pandora tables). this allows the user to make modifications to the file without needing to modify this base code.