NOvA Issue-2c Implementation Proposal

Following a study of the existing InputSource inheritance tree in the old framework, we believe the simplest implementation of a NOvADAQInputSource will inherit from InputSource directly and use aspects of RawInputSource (FWCore/Sources) and its test concrete implementation ThingRawSource (FWCore/Integration/test):

  • RawInputSource has a lot of the structure desired, but includes treatment of runs and luminosity blocks that are beyond what is required for the new input source class.
  • ThingRawSource is a simple concrete implementation of RawInputSource which may be used for inspiration on the production of EDProduct objects and their insertion into the event.

Status meeting notes

input can be set of directories if Brian wants it or if it is easy.

each directory contains a set of event from one run. if an event file in that directory being processed is not from the this one run,
it should be rejected and an error message produced.

Final implementation details

Created a new input source LArRawInputSource inheriting directly from RawInputSource (note change from initial plan) to avoid significant code duplication. New class provides connection between behavior required by the framework and physical input functionality already provided by ArgoNeuT code. The class does so by treating (as requested) one directory's contents as a single run, and each data file in that directory as a single event. It would be straightforward to allow multiple directories, should such a need emerge in future.
Created new product LArRawProduct to hold result of reading one data file in a form suitable for insertion into a framework event.

  • FWCore/Sources/src/ has the complete definition of the new input source.
  • DataFormats/TestObjects contains the definition of the new product and its constituents:
    • interface contains headers LArDAQHeader.h, LArRawProduct.h, and LArRawDigit.h.
    • src contains implementations and
  • Example_Data/LArData contains a subdirectory of sample input files used for testing purposes.
  • FWCore/Integration/test/ provides a test of input functionality.
    Build details are found in the respective CMakeLists.txt files in each directory.

We expect all these files to be migrated to the larsoft repository. Once such migration is complete, we will keep (for reference) copies of these files, but will update our repository so that these items are not routinely built.