art-provided services

System services

These services are always loaded regardless of whether a configuration is specified:

Optional services

These services are only loaded if a configuration is specified (although it may be empty).


Part of the services block, although not actually a service, this allows the control of various aspects of art operation.

Exception control

See ExceptionInformation for more information.

The following sequence parameters are used to name categories of cet::exception or cet::coded_exception that should exhibit the directed behavior if exncountered during art execution:

  • Rethrow
    The exception is propagated upwards to the point where it causes safe termination of the art job.
  • FailModule
    The exception causes the failure of the module in whose context it was thrown.
  • FailPath
    The exception causes the truncation and failure of the path in whose context it was thrown.
  • SkipEvent
    The exception causes the processing of the current event to be truncated; execution will continue with the next normal scheduler operation (usually an event).
  • IgnoreCompletely
    A slight misnomer, the exception is caught and execution continues with the next scheduled module in the current path.

Some notes:

  • If an exception is thrown and is not caught in user code with a try / catch block, it will propagate out of the user's module routine to the framework. try / catch is the only way to prevent this, however please read our notes on the reasoning behind using exceptions rather than asserts in code. In general, exception handling should not be used for "normal" flow control, not least because it makes debugging harder.
  • The default behavior of the framework is to Rethrow for all exceptions except ProductNotFound, for which the default behavior is SkipEvent (this behavior is historical, and was inherited from CMSSW). However, this behavior may be modified by the command-line options --rethrow-default (all exceptions including ProductNotFound rethrow unless otherwise specified) and --rethrow-all (all exceptions rethrow, user configuration is ignored). --rethrow-default behavior may be selected in FHiCL with services.scheduler.defaultExceptions: false.


services.scheduler.FailModule: [ TooManyTracksToAnalyze, ImpossibleTime ]
services.scheduler.Rethrow: [ ProductNotFound ]

Here is a more complete list of the scheduler options.

  # Always-present services; configuration optional.
  floating_point_control: { ... }

  scheduler:  # options block in the old system
    # see other parts of this page for the complete table or options and defaults
    Rethrow: ['OtherArt','StdException','Unknown','BadAlloc',
    IgnoreCompletely: []
    wantSummary: true
    wantTracer: false
    handleEmptyRuns: true
    handleEmptySubRuns: true
    enableSigInt: true
    unloadRootSigHandler: false
    resetRootErrHandler: true