art series 2.04

Previous series release notes
Next series release notes

 New features

Normalized SQLite database schemas

The SQLite databases produced by the MemoryTracker and TimeTracker services have been normalized, enabling easier querying of database tables. This could be a breaking change for users who would like to extend tables in current database files. In order to migrate to the newer schemas, database files can be converted using the migration scripts:

${ART_DIR}/tools/migration/migrate_db_memoryTracker <old.db> [<new.db>]
${ART_DIR}/tools/migration/migrate_db_timeTracker   <old.db> [<new.db>]
The default new database name will be the old base name with the suffix "_new.db". (Resolves issue #13609.)

TimeTracker and MemoryTracker SQLite queries

Users may use the queries found in ${ART_DIR}/tools/sqlite/ to query the TimeTracker and MemoryTracker databases for various pieces of information:

  • Time metrics including per event and per module execution time and various summaries (average, minimum, maximum, etc.), and
  • Memory metrics including per event and per module RSS, virtual memory, and changes in the aforementioned quantities.

Please see here for instructions.

Input-file concatenation utilities

In order for input art/ROOT files to be processed in the same art job, they must have consistent BranchIDLists objects stored on disk. An input file's BranchIDLists object can now be queried through the file_info_dumper --branch-ids program option. The consistency rules for concatenating input files are listed here. (Resolves issue #13736.)

Specifying ignorable keys for parameter validation

A template argument has been added to the fhiclcpp and art Table class templates, enabling users to specify a set of keys that should be ignored during configuration validation. For example, the following templates now exist:

One-argument template Two-argument template
fhicl::Table<T> fhicl::Table<T, KeysToIgnore>
art::EDProducer::Table<T> art::EDProducer::Table<T, KeysToIgnore>

For details on the two-argument Table templates, see the art documentation and the fhiclcpp documentation. (Resolves issue #11950.)

--status-bar option when using --print-available* (introduced in art 2.04.01)

A new program option can be invoked (--status-bar) that indicates the progress in loading the libraries necessary when invoking the --print-available* program options. For some experiments that have hundreds of modules, the time taken to load the information can be longer than desired. Since library-loading time within art is governed almost entirely by the implementation of dlopen/dlsym, which art does not control, we instead provide a status bar that dynamically reports to the user the progress made in loading the relevant information.

  art releases