ROOT 6 support and technology previews of enhanced usability features


12 issues   (12 closed — 0 open)

Art Suite Release Notes 1.18.00 (2015/10/27).

External package changes.

  • ROOT v5_34_32 -> v6_04_06.

Important notes.

  • We would characterize this release as a, "technology proving" release. We would not recommend an immediate move to using this release for production, but we do need experiments to start working with this release to help us identify any problems that might be a function of the particular way they operate.
  • The cpp0x package has been retired. Going forward, any compiler used will be assumed by art to be fully compliant with the standard(s) used, to within the features we rely upon.
  • This release is the first one featuring ROOT 6. Apart from this, 1.18.00 is feature-identical with 1.17.03.
  • For experiments with a cetbuildtools / MRB-based build system, cetbuildtools >= 4.17.00 is required going forward for all packages built against art >= 1.18.00.
  • For experiments with other build systems, there are some important changes to how "dictionaries" and related files required by ROOT 6 are generated relative to those for ROOT 5, and your build system will need to incorporate these changes:
    • genreflex is still the appropriate tool for generating introspection information, despite the misleading name. Recommended invocation:
      genreflex <path>/classes.h -s <path>/classes_def.xml -I... \
      --fail_on_warnings -l <libdir>/libXXX_dict.<shared-lib-suffix> \
      --rootmap-lib=libXXX_dict.<shared-lib-suffix> --root-map=<libdir>libXXX_dict.rootmap
      genreflex will also produce a file <libdir>/libXXX_dict_rdict.pcm. Other options previously recommended for use such as --iocomments, --capabilities, and --gccxmlopt. The slate of -D definitions previously recommended are also no longer required.
    • If you wish to take advantage of the art-provided checkClassVersion tool for maintaining and updating class versions and checksums in selection XML files, you should ensure that no checkClassVersion invocation occurs until all dictionary shared libraries have been built, otherwise in a parallel build it is possible that pyROOT will attempt to read a .rootmap file or dictionary library that is in the process of being re-written by a different dictionary target. If you need advice on how to achieve this with your build tools, please let us know.
    • As a result of ROOT6's new "autoparse" technology, header files corresponding to the running code must be available at runtime.
  • We believe that files produced by previous versions of art with ROOT 5 are readable by those using ROOT 6. If you have a counter-example, please file a bug at and we will investigate.

Art 1.18.00.

New features:

  • With the arrival of ROOT 6, dictionary information is autoloaded as necessary rather than being loaded unconditionally. This is accomplished via the .rootmap files produced as part of the new recommended genreflex invocation options.

Known issues:

  • There is a significant memory increase relative to 1.17.03 due to ROOT 6's autoparse facility. The exact amount will vary with experiment's configurations and data product use, but could be over 200MiB. We are confident we will be able to address this significantly in a future art release by taking steps to avoid triggering the autoparse behavior.
  • There is an increase in start-up time with ROOT 6 with respect to ROOT 5. Some of this may be ameliorated with the anticipated reduction in autoparsing, but some of the initialization time increase relative to ROOT 5 is expected to be permanent.

messagefacility 1.16.08 (new version).

fhicl-cpp 3.13.00 (new version).

cetlib 1.16.00 (new version).

Time tracking
Estimated time 94.50 hours
Spent time 365.00 hours
Issues by