Use of Run SubRun and Event numbers and ids

The art framework contains identifiers for various units of data:
  1. A RunID is the identifier for an interval of time (the run) of the running of a data acquisition system.
  2. A SubRunID is the identifier for an interval (the subrun), within a run, in which the operating conditions (e.g. calibration quantities) do not change.
  3. An EventID is the identifier for a unique readout (the event) of the data acquisition system during a time window with no further subdivision.

Each RunID contains a run number; each SubRunID contains a RunID and a subrun number; each EventID contains a SubRunID and an event number.

Each of the run number, subrun number and event number is a 32-bit unsigned integral type. One value of each (called INVALID_RUN_NUMBER, INVALID_SUBRUN_NUMBER, and INVALID_EVENT_NUMBER) is reserved to indicate lack of a value. Default-constructed identifiers always contain invalid values, so that they can be distinguished from identifiers issues to actual Run, SubRun and Event objects. Runs, SubRuns and Events should never contain an invalid identifier.

The issuing of identifiers is generally the job of the InputSource used in a program. Recommended practice is to reset the subrun number to 0 with each new run, and the event number to zero with each new subrun.