The current implementation of tagging efficincies provided to physics classes is incorrect, as it may change over the course of the event stream. In general, "changing" information passed to physics classes is only handled correctly if the information is contained within TEvent, or provided as a SlowControlVariable. The tagging efficiencies though are provided via the tagger detector instance directly, which is only correctly updated during reconstruction (and not during ProcessEvent of the physics classes). Those two phases differ in particular if slow control buffering is taking place!
The correct implementation would be to convert the tagging efficiencies information into a TSlowControl during reconstruction (that must probably be serialized into the Payload_String with cereal), then extract it again inside a to-be-created slow control variable (as it is already done for the tagger scalers). This way, the SlowControlManager correctly buffers the event.
The current implementation of tagging efficincies provided to physics classes is incorrect, as it may change over the course of the event stream. In general, "changing" information passed to physics classes is only handled correctly if the information is contained within TEvent, or provided as a SlowControlVariable. The tagging efficiencies though are provided via the tagger detector instance directly, which is only correctly updated during reconstruction (and not during ProcessEvent of the physics classes). Those two phases differ in particular if slow control buffering is taking place!
The correct implementation would be to convert the tagging efficiencies information into a TSlowControl during reconstruction (that must probably be serialized into the Payload_String with cereal), then extract it again inside a to-be-created slow control variable (as it is already done for the tagger scalers). This way, the SlowControlManager correctly buffers the event.