expand Results concept
Please consider if it would be possible and logical to expand the concept of
Results products. I am thinking of it as a container for products that are
relevant to the file (or whole dataset) in the same way as products in a Run record
are relevant to the run.
I particular, add a "art::Results& getResults()" method to the Event, SubRun and Run,
and a readResults(art::Results) method to EDProducer, etc. as a call-back when Results change.
The use case I'm thinking about is the following. In the first stage of a simulation
job we create a geant geometry with a number for each volume. We then record, in the event products,
for example, the volume number where a particle started or stopped. To convert this number
back to a volume name in later jobs, we write a conversion table product to the subrun record. But when
we concatenate, we end up with too many of these records, all duplicates. The right conceptual
procedure is to write one product per file (can only have one geant geometry per job), and allow
all modules to access it while reading in later jobs. A ResultsProducer would purge duplicates
during concatenation in this application, but you could keep all records with a range of validity
or similar by default. I think there are other use cases too.