art series 2.00

Previous version's release notes
Next series release notes

This series was released in support of a new facility -- gallery -- that can read art/ROOT files without executing the full art framework. Two changes are worth noting upfront:
  • Various art headers and libraries that correspond to product reading have been moved to a new package called canvas.
  • The use of ROOT6 has been improved considerably such that any memory increase in moving from ROOT5 to ROOT6 is kept at a minimum.

 New features

  • Improved use of ROOT6: In order to facilitate more robust dictionary-lookup, ROOT6 enables "auto-parsing" by default. For classes whose dictionaries are not present, ROOT6 parses the associated header files automatically. Such parsing can significantly expand the memory profile of the process, perhaps inducing grid-submitted jobs to exceed their allotted memory quota. To avoid this scenario, art 2.00.01 implements customized ROOT I/O behavior for some subtle situations where auto-parsing might be performed. In addition, ROOT6 auto-parsing has been explicitly disabled for user-defined dictionaries.
    For ROOT5-produced art/ROOT input files, fast cloning has been deactivated due to differences in the splitting policies of ROOT5 vs. ROOT6. (Resolves issue #12572.)
  • Improved C++ usage and portability: Various adjustments have been made to refine the C++ usage within the art suite. In addition, the cetlib and fhiclcpp libraries have been updated to be more portable for different implementations such as clang and GCC5. (Resolves issues #11647, #11844, #11860, #11976, #11982, and #12385.)
  • One-parameter service constructors: In circumstances where services do not need to register callbacks, a one-parameter service constructor is available, accepting a const reference to a ParameterSet object. (Resolves issue #10886.)
  • Additional "under-the-covers" improvements.

 Breaking changes

The locations of product-reading libraries and headers have migrated to canvas. In order to update your source code and (if using cetbuildtools) the link lines in your CMakeLists.txt files, please use the following scripts:

  • canvas/tools/canvas_refactor/ - updates #include paths in source code.
  • canvas/tools/canvas_refactor/ - updates link lines in CMakeLists.txt files.
  • canvas/tools/canvas_refactor/ - performs both steps above.

  art releases