The artmod command is useful for generating the boilerplate code required for plugging a new module (Analyzer, Producer, or Filter) into the framework. The command documents itself:
% artmod --help
and this guide will provide some information about how to get started using it in NOvA.
Another useful help option lists the different members one can include in the module:
% artmod --help-types
Suppose I'm working in a package called "TrackFit" which uses the namespace "trk" and I want to create a producer module called "SnugFit", I could start by:
% artmod producer trk::SnugFit
This creates a single file SnugFit_module.cc that has the necessary file header info and ART include paths, declares you have a class SnugFit in the namespace trk and also provides the constructor/destructor and producer event loop member functions.
If you know you what to include other functions, i.e. beginJob, endJob etc, you can do the following:
% artmod -e beginJob -e endJob producer trk::SnugFit
Note: you must pass the -e option to each member function you want to include.
Now you can start adding member data and writing that all important code!
In order to create your analyzer module with a skeleton structure you can just do:
% artmod analyzer trk::SnugFit
In order to create your filter module with a skeleton structure you can just do:
% artmod filter trk::SnugFit