Art Suite Release Notes 1.16.00 (2015/09/28).¶
- Download page.
- Previous version's release notes.
Platform and compiler support.¶
- Support continues for e7-qualified builds using GCC 4.9.2 and the C++14 standard for non-OS X platforms.
e7
builds will likely experience problems on OS X platforms running Xcode >= 7.0 (see known issues, below).
External package changes.¶
ups | v5_1_5 | v5_2_0 | first implementation of ups platform command |
cmake | v3_0_1 | Dropped from distribution | |
cmake | v3_1_2 | Dropped from distribution | |
cmake | v3_2_1 | Continues to be shipped | |
cmake | v3_3_2 | New version, better formatting of parallel make messages. | |
valgrind | v3_11_0 | ||
gitflow | v1_8_0 | v1_8_0a | setup getopt on OSX |
boost | v1_57_0 | v1_57_0a | |
sqlite | v3_08_08_02 | v3_08_10_02 | |
python | v2_7_9 | v2_7_10 | |
cppunit | v1_12_1b | v1_12_1c | |
gccxml | v0_9_20140718a | v0_9_20150423 | |
ninja | v1_6_0a | needs to build with python v2_7_10 | |
clhep | v2_2_0_5 | v2_2_0_8 | |
tbb | v4_3_5 | v4_4_0 | |
xrootd | v3_3_4c | v3_3_4d | |
xerces_c | v3_1_1d | v3_1_2 | |
cry | v1_7d | v1_7e | |
lhapdf | v5_9_1c | v5_9_1d | |
log4cpp | v1_1_1c | v1_1_1d | |
mysql_client | v5_5_42 | v5_5_45 | |
postgresql | v9_3_6 | v9_3_9 | |
pythia | v6_4_28c | v6_4_28d | |
gsl | v1_16 | v1_16a | |
root | v5_34_30 | v5_34_32 | |
genie | v2_8_6c | v2_8_6d | |
dk2nu | v01_01_03c | v01_02_00 | per NOvA request |
cstxsd | v4_0_0c | v4_0_0d | |
qt | v5_4_2 | v5_4_2a | |
geant4 | v4_9_6_p04b | v4_9_6_p04c | |
ifdhc | v1_8_5 | v1_8_7 | |
ifbeam | v1_4_12 | v1_4_14 | |
nucondb | v1_4_12 | v1_4_14 | |
cetpkgsupport | v1_08_06 | v1_08_07 | |
cetbuildtools | v4_12_06 | v4_14_01 | |
ifdh_art | v1_12_02 | v1_13_00 | |
nutools | v1_14_02 | v1_15_00 | |
artdaq_core | v1_04_17 | v1_04_18 |
Art suite highlights.¶
As always, one should visit the package-level release notes linked below, but the highlights are:
- A new
Results
data product to enable an analysis-level workflow - A technology preview for configuration validation and description
- Relaxed restrictions on instances of
Event
,SubRun
, andRun
products
Art 1.16.00.¶
New features:¶
[ Release feature ] Issue #7449 - Analysis support requires ability to store objects in file in branch other than Run
, SubRun
, or Event
.¶
Users wishing to write or read file-level products may implement a subclass of art::ResultsProducer
(#include "art/Framework/Core/ResultsProducer.h"
). ResultsProducer
plugins are managed and executed by instances of RootOutput
, and operate entirely within the scope of one output stream. Configure plugins for a particular RootOutput
by providing a results
parameter set, like so:
outputs.o1: { module_type: RootOutput fileName: "out.root" results: { producers: { rp1: { plugin_type: RPTest # ... } } rpPath: [ rp1 ] # Arbitrary name, sequence order implies execution order. } }Any data products produced by
rp1
will be in saved a new tree Results
in out.root
with one and only one row with the module label (for purposes of e.g. getByLabel()) o1#rp1
, with the labels of the output module and the ResultsProducer
plugin separated by a literal #
. The user should specify one or more paths containing an ordered sequence of plugin labels, with each plugin label appearing at most once. One should not rely on one path being executed before or after another, and in the case of no path being specified a default path will be created listing all defined plugins for that output stream in the order they are obtained from the ParameterSet
(currently sorted lexically).
Required and optional functions and invocations of ResultsProducer plugins are described fully in source:art/Framework/Core/ResultsProducer.h, but highlights are as follows:
- Implement a constructor taking a
fhicl::ParameterSet const &
as argument (or a suitable validation object as allowed by feature #8770). In this function, declare appropriateInResults
data products. - Incoming
InResults
data products in input files are available to the optionalreadResults(art::Results const &)
function (via e.g.art::Results::getByLabel()
) which is invoked when each new input file is opened. These incoming data products are NEVER transferred to the output file, which is a major departure from the behavior of the other record types (Event
,SubRun
andRun
).InResults
productsput()
into theResults
for a particular output stream are available to downstreamResultsProducer
implementations inwriteResults()
. A well-writtenResultsProducer
plugin should be able to deal with obtaining incomingInResults
data from either or both of these two entry points.
A modular extension has been added to allow the cetskelgen
utility to produce a skeleton for ResultsProducer
plugins.
Finally, the syntax of outputCommands
keep
and drop
statements has been enhanced to allow an optional third comonent, viz:
keep|drop <branch-spec> [<InEvent|InSubRun|InRun|InResults>]with the expected behavior of narrowing the applicability of the statement to the sepcified branch type. A branch type of
*
is equivalent to the default behavior: the statement will apply to all branch types. This feature can also be seen as useful in the context of new feature #2352 described below.
[ Technology preview ] Configuration validation and description¶
Users will now benefit from configuration validation for any art
-provided modules and services that are specified in their FHiCL files. The validation facility ensures that the user-provided configuration for an art
-provided service or module (as included in a trigger path or end path) is a configuration that is supported by the particular service or module. Any misspecified parameters (extra, missing, or misspelled parameters) will trigger an exception, which ends the art
process and emits a message stating how the job was misconfigured. For details about this, and also details as to how users can enable configuration validation and description for their own modules and services, see here. Implements Feature #9099.
Other new features¶
- Issue #2352 -
ProductList
to allow same module label, instance name and product type for different branch types. - Issue #8602 - Exit status after a signal should be an error.
Upon catching a signal that would cause the program to exit, art will exit with code 128 + n. This behavior may be modified in the case ofSIGINT
with the FHiCL configurationservices.scheduler.SIGINTisNotError : true
.
Bug fixes and minor improvements:¶
- Minor improvements to dictionary checking, dictionary linking and class version checks.
- New options
--annotate
,--prefix-annotate
to modify the behavior of--debug-config-out
. - Issue #8823 - art exit code rationalization.
- Issue #9648 -
--memcheck
should runMemoryTracker
instead ofSimpleMemoryCheck
. - Issue #9643 -
-o
option overrides implicitly-includedend_paths
modules. - Issue #9769 - Dereferencing a default-constructed (or cleared) Handle does not throw.
Breaking changes:¶
- Issue #9879 - The functions
fhicl::ParameterSet::get_keys()
andfhicl::ParameterSet::get_pset_keys()
are renamed tofhicl::ParameterSet::get_names()
andfhicl::ParameterSet::get_pset_names()
respectively. If your compiler warns or stops with error on use of deprecated entities (e.g.-Wdeprecated
) then a warning or error will be issued as appropriate.
Known issues:¶
- Due to issues with GCC 4.9.2 interacting with the Xcode 7.0 command-line tools and a problem with a test (Issue #10343), there will be no OS X build of art 1.16.00.
- Issue #10364 -
art::ResultsProducer::produces<>()
requires both template arguments (product class type and branch type) to be specified, as the default branch type ofInEvent
is inappropriate.
- [ Backwards incompatibility ] Issue #10614 - Versions 1.16.00 to 1.17.01 are unable to read input files that were produced prior to 1.16.00 due to a missing check on the new
ResultsTree
object. This is fixed in 1.17.02. This backwards incompatibility does not affect any files produced from this version forward.