FatalRootError upon writing an output file if a second input file is missing products
There are now many tests in
art that verify the expected behavior for various input-concatenation scenarios. Consider the following scenario, however.
Suppose input files
b.root were created by the same set of processes and therefore have the same products and event shape. To save disk space, a user decides to drop products in
b.root so that the unneeded products are no longer present, and only the desired products are persisted to
b_trimmed.root still have the same event shape, it is possible for both to serve as inputs:
art -c onlyAnalyze.fcl a.root b_trimmed.root
where no filtering or extra product creation is done. This works fine in current
art. However, suppose I want to write all the products to an aggregated output (
out.root). In this case, the nonexistent products in
b_trimmed.root should be replaced with dummies in
out.root. However, the following error is emitted:
---- FatalRootError BEGIN Fatal Root Error: @SUB=TBranchElement::Fill attempt to fill branch art::TriggerResults_TriggerResults__p2. while addresss is not set cet::exception going through module RootOutput/out run: 1 subRun: 0 event: 1 ---- FatalRootError END
Interestingly, the error is not triggered if
a.root in the input-file list. This should be remedied so that the behavior is symmetric wrt. the order of the above-specified inputs.
#4 Updated by Kyle Knoepfel about 3 years ago
- Category changed from Metadata to I/O
- Estimated time set to 16.00 h
The selected output item list for
RootOutputFile is updated based on the
keptProducts member. That member, in turn, is based on the present products in the input file. A mechanism must be put in place so that the selected output item list appropriately handles new input files that do not have products from older input files.