Merge feature (issue #6071)


19 issues   (19 closed — 0 open)

Art Suite Release Notes 1.14.00 (2015/05/01).

This new version of art contains many new features, including secondary file reading/merging, improved memory usage for art processes, extended parameter retrieval functionalities in fhiclcpp, as well as a new module plugin generator in cetlib. Version 1.14.01 of art is available for downloading, and it includes all of the changes described below and addresses the known issues.

Platform and compiler support.

  • Support continues upon request for e6 and GCC 4.9.1, with compilation to the C++2014 standard.
  • Support continues for e7 and GCC 4.9.2 (assumes compilation of C++ to the ISO 2014 standard).

External package changes.

  • CMake 3.2.1
  • Intel TBB 4.3.5.
  • ROOT 5.34.30.
  • GDB 7.9.
  • UPS 5.1.5.

Build system changes (cetbuildtools, etc.).

The art suite now uses cetbuildtools version 4.10.02. Please refer to the build system documentation for a list of changes since the last release.

Art 1.14.00.

New features:

  • [Release feature] Support reading data products from secondary input files: It is now possible to read the data products for any given Event, Run, or SubRun from more than one input file. This allows for the creation of substantially smaller primary data sets, for example by dropping raw data, while still allowing access to the dropped data from secondary input files. For details, see the documentation. Resolves feature #6071 and (more discussion) #6557.
  • Improved memory usage: A spike in memory behavior at the end of the art process resulted from previous implementations of how the art::FileIndex branch of the MetaData TTree object was written to the output stream. This spike has been removed by writing the art::FileIndex to a TTree object separate form the MetaData one. Significant memory savings will now be realized for art processes that read many events. No user interface changes are required, but a file format change was necessary. Resolves feature #4946.
  • Module/service command-line helpers: The following options can be specified when running an art executable:
    • --print-available-modules : Print all available modules accessible via LD_LIBRARY_PATH, their types and source locations
    • --print-available-services : Print all available services " "
    • --module-description <args...> : Describe specific module, its type, its source location, and provide placeholder printout for future module description facility
    • --service-description <args...> : Describe specific service, " "
      Resolves feature #7889.
  • Dropping events and subruns from output: Events and subruns can now be dropped from the output stream by providing additional FHiCL parameters to the RootOutput module. See feature #4998 (resolved) for details.
  • On-disk size of art data products: The size of data products in art ROOT files can now be printed using the command: product_sizes_dumper source_file.root
    A threshold option can be specified where a data product whose size does not exceed it is not printed.
    (Credit to Rob Kutschke for the implementation.) Resolves feature #5796.
  • cet::map_vector support for FindMany and View: Tests have been added to verify the operation of cet::map_vector with FindOne and FindMany. It is also now possible to call Event::getView to retrieve the ordered values (not the keys) of a cet::map_vector object. Resolves feature #2967.
  • BranchID creation debugging: The branch names and branch IDs are now logged whenever they are created using mf::LogDebug("BranchID"). This will enable easier diagnosis whenever branchID mismatches are found upon reading multiple input files. Resolves feature #8270.

Bug fixes:

  • Bug #6490: Ensure range for support for art suite containers. This has been verified to be supported for art::PtrVector.
  • Bug #8190: non-existing trigger and end paths are ignored. FHiCL configurations that specify non-existent trigger and end paths now induce art to throw an exception. This may cause users to experience exceptions caused by configurations that were accepted previously.

Breaking changes:

  • Issue #6339: Duplication of utility functionality in art vs cetlib. The CRC32, MD5, and CPU timing facilities in art and cetlib have been consolidated and now reside solely in cetlib. For users who include any of the following headers:
    • cetlib/md5.h
    • art/Utilities/CPUTimer.h
    • art/Utilities/CRC32Calculator.h
    • art/Utilities/Digest.h
    • art/Utilites/md5.h

please refer to the changes required to your code here: #6339-7.

  • Bug #8381: Un-put product can cause segmentation violation. For modules that called produces<T>(...) where T corresponds to std::string or some_type<std::string>, a failure to call ev.put(std::move(string_product)) resulted in a segmentation violation. This has been fixed.

  • Issue #8427: Remove unnecessary data member from art::EventID
    The RunID data member of EventID has been removed as it is already included in SubRunID. Consequently, the interface to art::EventID has changed. The following change is necessary for user code:
    // flushEvent
    - EventID::flushEvent(RunID rID, SubRunID srID)
    + EventID::flushEvent(SubRunID srID)

    Preprocessor flags can be set to select the correct signatures based on the art version.

N.B. New boost libraries required

  • Issue #7889: module and service availability information
    As part of the implementation of issue #7889, modules and services gained the ability to give you the location of their source, and this was done by a function defined in a macro invoked by DEFINE_ART_MODULE, which was of course in a header. This function uses Boost.Filesystem to convert a possibly-relative FILE into an absolute path, and so creates a link-time dependency on both Boost.Filesystem and Boost.System for any module or service.
    For users of the cetbuildtools build system, we can adjust simple_plugin() in the next release of art to add these libraries to the link line. In the meantime, users must add:

    themselves. Anyone not using the cetbuildtools system must add these libraries to module and service link lines.

Known issues:

Known issues fixed in version 1.14.01:

  • The debug version of art includes an assert whose argument is not defined ahead of time.
  • The cetskelgen facility fails to build on OSX due to the case-insensitivity of the file system.

Known issues fixed in version 1.14.02:

  • Issue #8897: Need restoration of erroneously-trimmed interface in art::OutputModule and art::ProductRegistryHelper
  • Issue #8765: Segfault on parsing secondary file configuration
  • Issue #8911: Modules and services need Boost.Filesystem and Boost.System: add to simple_plugin()

Known issues fixed in version 1.14.03:

  • Issue #9193: end-of-file crash under certain circumstances with run and subrun products.

messagefacility 1.14.04 (new version).

fhicl-cpp 3.05.01 (new version).

cetlib 1.12.00 (new version).

cpp0x 1.04.10 (new version).

Time tracking
Estimated time 369.50 hours
Spent time 351.75 hours
Issues by




Necessary Maintenance