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.
- Previous version's release notes.
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.¶
Build system changes (
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.
- [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
artprocess resulted from previous implementations of how the
art::FileIndexbranch of the
TTreeobject was written to the output stream. This spike has been removed by writing the
TTreeobject separate form the
MetaDataone. Significant memory savings will now be realized for
artprocesses 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
--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
RootOutputmodule. See feature #4998 (resolved) for details.
- On-disk size of
artdata products: The size of data products in
ROOTfiles can now be printed using the command:
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.
View: Tests have been added to verify the operation of
FindMany. It is also now possible to call
Event::getViewto retrieve the ordered values (not the keys) of a
cet::map_vectorobject. Resolves feature #2967.
BranchIDcreation 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 #6490: Ensure range for support for art suite containers. This has been verified to be supported for
- Bug #8190: non-existing trigger and end paths are ignored. FHiCL configurations that specify non-existent trigger and end paths now induce
artto throw an exception. This may cause users to experience exceptions caused by configurations that were accepted previously.
- Issue #6339: Duplication of utility functionality in art vs cetlib. The CRC32, MD5, and CPU timing facilities in
cetlibhave been consolidated and now reside solely in
cetlib. For users who include any of the following headers:
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
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
RunIDdata member of
EventIDhas been removed as it is already included in
SubRunID. Consequently, the interface to
art::EventIDhas 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
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 fixed in version 1.14.01:
assertwhose argument is not defined ahead of time.
cetskelgenfacility 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.