Skip to content

Draft: Store constant component of DataHeader in MetaDataStore

Much of the information in the DataHeader is constant from event to event in all events from the same sample. In the past the DataHeader was compressed by implementing some event-to-event communication and storing the constant elements in the DataHeaderForm_p6. This still functions in MT, but some amount of duplication in the DataHeaderForm has appeared, as @elmsheus pointed out in ATEAM-674.

At this point this is a very rough and incomplete draft (expect a new MR for the final product). This is to allow discussion on the work.

The idea is to keep the DataHeaderForm content in the MetaDataStore and have the DataHeader refer there. Care must be taken to allow different such object for workflows that read events from multiple samples (e.g. overlay. The idea would be to identify the MetaDataEntry by stream or event selector.

The transient object is generated by the IAthenaOutputStream when streaming the objects to the output. A warning should be issues if the content changes throughout a job - once generated the object should be the same for all events in the output stream.

The input object needs will be added to the MetaDataStore on BeginInputFile. Again there should be no change expected in a sequence of input files. However, we need to ensure multiple such objects can coexist and are properly resolved for workflows such as overlay.

Tag: @gemmeren @mnowak

Merge request reports