Skip to content

TrigT1CaloByteStream: Fix use of FullEventAssembler.

Previous changes make FullEventAssembler instanaces into local variables. However, this is not correct, as data held by the FullEventAssembler gets registered with a FullEventFragment, so the FullEventAssembler needs to remain live until the commitOutput step has finished.

Previously, the FullEventAssembler instances were member variables of the tools in this package; however, that's not thread-safe. They need to be made slot-specific. (Note that just adding a lock in the methods here that use the FEA instances is not sufficient, precisely because they need to remain live through commitOutput, which is outside the scope of any local lock.)

However, ByteStreamCnvSvc maintains a registry of FEA instances; earlier changes there made those slot-specific. This registry was only being used in a couple packages, but there should be no reason why we cannot use it here as well. The common registry also takes care of the fill() step, so as a side-effect we can simplify things by removing the retrieval of the RawEvent.

Merge request reports