Breaking changes for art series 2.08


C++ interface changes

  • The getProductID function template that is provided by the EDProducer and EDFilter base classes no longer requires an event argument:
    - getProductID<MyProduct>(event)
    - getProductID<MyProduct>(event, instance_name)
    + getProductID<MyProduct>()
    + getProductID<MyProduct>(instance_name)
  • The art::get_BranchDescription function has been renamed:
    - art::BranchDescription get_BranchDescription(...)
    + art::BranchDescription get_ProductDescription(...)
    Although the return type has not changed, the change in function name anticipates when the BranchDescription class will be replaced by a ProductDescription class.
  • The art::Event::branchIDToProductID function has been removed as it is no longer necessary. Consider the following replacement:
    - e.branchIDToProductID(branchDescription.branchID()) // ==> returns ProductID
    +                       branchDescription.productID() // ==> returns same ProductID
    For users who need to know more about how to move forward without this function, please contact .

Removed facilities

The following unused facilities have been removed:
  • the art::JobMode class
  • the HRRealTime facility; the std::chrono::high_resolution_clock should be used instead
  • the math_private facilities, which allow retrievals of integers from floating-point values

Configuration changes

  • There are three deprecated FHiCL parameters that will no longer be supported--see the last three entries of this table under the art heading.
  • The RootInput fileMatchMode parameter has been removed.

Miscellaneous changes

  • File format change from 9 to 10
  • Due to a typographical error, if a user had, in the past, specified both --rethrow-all at the command line and services.scheduler.FailModule: [...] in the configuration file, the latter specification was retained for the modules listed in the sequence. The consequence is that if an exception was thrown in one of the modules listed, instead of the framework rethrowing the exception, a "failed" state was recorded for the module and processing continued. This inconsistency has been resolved (i.e. --rethrow-all now takes precedence over services.scheduler.FailModule).
  • The unconditional loading of ROOT libraries when executing any of the art executables has been removed. Thirteen ROOT libraries have been loaded unconditionally by art as a "convenience" for users. For experiments that use closed linking, loading these libraries unconditionally is superfluous and results in slightly larger memory footprints of art jobs. For experiments that do not use closed linking, any necessary ROOT libraries must be specified on the appropriate link line.
  • The severity level of the logged art end-of-job summary message has been changed from "severe" to "warning". Such a change allows the suppression of the art summary to a given destination.
  • The AllowedConfiguration and ConfigurationTable utilities have been moved to fhicl-cpp.
  • The OutputModule::selected(BranchDescription const&) const function has been removed. It will be restored in a later version of art.


  • art::BranchID is no longer used in art, except for ensuring backwards compatibility.
  • art::ProductID schema has changed--we guarantee the ability to read files with the older schema.
  • art::PassID has been removed--this affects the schema of the ProcessConfiguration class.
  • Please make the following substitutions where necessary:
    - art::BranchDescription::branchID()
    + art::BranchDescription::productID()
  • The art::Parentage schema has changed from std::vector<art::BranchID> to std::vector<art::ProductID>.
  • The TestHelper facility has been removed--not used by anyone.
  • The BranchDescription::MatchMode enumeration has been removed.


  • Configuration validation and description is now supported for messagefacility; this means that extraneous or erroneously-specified FHiCL parameters will trigger an exception throw that ends the process. The system has been instrumented to tell you where the configuration failure has occurred.
  • The ELdestination::changeFile virtual functions have been removed.
  • All format-related parameters have been moved to the format table of a destination's configuration.

Removed parameters

The following configuration parameters have been removed and have no replacement:
  • the message.generate_preconfiguration_message parameter
  • the placeholder parameter for destinations
  • the output and extension parameters for destinations of file type--use the already-supported filename parameter

Parameter replacements

  • Suppressing timestamps
    - message.destinations.<dest name>.noTimeStamps: true
    + message.destinations.<dest name>.format.timestamp: "none" 
  • Enabling millisecond precision
    - message.destinations.<dest name>.useMilliseconds: true
    + message.destinations.<dest name>.format.timestamp: "default_ms" 
  • No line breaks for a logged message
    - message.destinations.<dest name>.noLineBreaks: true
    + message.destinations.<dest name>.format.noLineBreaks: true
  • Specifying the line length of the logged message
    - message.destinations.<dest name>.lineLength: <unsigned long long>
    + message.destinations.<dest name>.format.lineLength: <unsigned long long>


  • The AllowedConfiguration and ConfigurationTable utilities (formerly of art) are now part of fhicl-cpp.
  • The deprecated fhicl::parse_value function has been removed.
  • Any fhicl::(Optional)Table objects that specify a conditional, must now specify an explicit MaybeUseFunction (e.g.):
      Table<Config> table{Name("some_table", 
                          Comment("Use only if condition X is true."), 
    -                     [this]{...}};
    +                     MaybeUseFunction([this]{...})};
    This requirement applies only to fhicl::(Optional)Tables and none of the other fhicl-cpp types.


  • The utilities provided in cetlib/detail/metaprogramming.h have been moved to cetlib/metaprogramming.h; the utilities provided therein have migrated from the cet::detail namespace to cet.