In order to enable to output of output-stream- (and if required, file-) specific SAM metadata for upload to SAM, we have instituted a new plugin type, FileCatalogMetadata.

A user wishing to specify metadata on a per stream or per-file basis should create a subclass of art::FileCatalogMetadataPlugin (#include "art/Framework/Core/FileCatalogMetadataPlugin.h) an an implementation file (no header), following the instructions in at the top of the base class header (source:art/Framework/Core/FileCatalogMetadataPlugin.h). A shared library should be created by your build system with the name my_path_to_<class-name> and linked to libart_Framework_Core. If you are using cetbuildtools / mrb, this would be:

simple_plugin(MyClassName "plugin" art_Framework_Core ...)

The following entry point is mandatory:

collection_type produceMetadata()
Other entry points are optional (see header documentation for up-to-date details).

A FileCatalogMetadataPlugin is configured for use by adding a parameter to the configuration of output modules for which you would like it to be used:

outputs.o1.FCMDPlugins: [ { plugin_type: PluginClassName ... }, ... ]

The entry points you define will be called at the appropriate points in the life-cycle of the module(s) for which your plugin is configured.