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
FWCore/Sources) and its test concrete implementation
RawInputSourcehas 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.
ThingRawSourceis a simple concrete implementation of
RawInputSourcewhich may be used for inspiration on the production of
EDProductobjects 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/LArRawInputSource_plugin.cchas the complete definition of the new input source.
DataFormats/TestObjectscontains the definition of the new product and its constituents:
Example_Data/LArDatacontains a subdirectory of sample input files used for testing purposes.
FWCore/Integration/test/testLArRawInputSource_cfg.pyprovides a test of input functionality.
Build details are found in the respective
CMakeLists.txtfiles 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.