MT-safe replacement of TRT_ByteStream_ConditionsSvc
As discussed in ATLASRECTS-5534, the TRT_ByteStream_ConditionsSvc
is per-design thread-hostile and bombed in the MT-Reco tests at the Tier0.
With this MR, the already-existing EDM class TRT_BSErrContainer
takes over. It was updated to sport similar interface as TRT_ByteStream_ConditionsSvc
, thus incorporating also the data of the TRT_BSErrIdContainer
. I introduced also an new persistent version and a T/P converter. I did NOT bother maintaining backward compatiblity with the _p1 version because I did not find any use case.
As it turns out, the only client of the TRT_ByteStream_ConditionsSvc
is monitoring. The offline monitoring is done at the RAWtoESD step, so no need to have this data in the ESD. It was easy to adjust, just adding a WriteHandle (optional, for MC) and read the data from a different source.
The trigger-monitoring done via TRT_TrgRIO_Maker was a bit tricker. @jmasik confirmed that this tool is legacy and doesn't need to be thread safe. The solution I chose is to use a stub of the old TRT_ByteStream_ConditionsSvc
to transmit the information from the TrigTRTRawDataProvider
to the TRT_TrgRIO_Maker
. This is a rather ugly hack, but good enough to keep a legacy tool going.
Further possible improvments:
- The TRT_ByteStream_ConditionsSvc used to print a summary of errors in finalize. This table is now lost. It could be re-instated by augmeting the TRT_RodDecoder with a few atomic counter variables.
- Check if any DESD relies on the TRT_BSErrContainer. If not, remove it from the ESD (in that case, all my work to create a _p2 version + converter was wasted).
- Remove the TRT_BSErrIdContainer + Converter + test from the repository
Closes ATLASRECTS-5534.