Adding cache for MT - RPC RDO to PRD
This MR is updating the RPC RDOtoPRD converter to use a cache for the RPC PRD and RPC Coin containers. The Core code is very messy to the point that I did not want to edit it at all. There are const conversions (bad in MT I know) and other technicalities (multiple passes through the same RDO containers) which seem unwise to change. My approach instead is to create a local-thread container which is used in the Core code, and then take the contents from this container and pass it into the cache once the decoding is completed. Things which are not thread-safe are kept in the Core code, but they will not talk between threads as each view will have its own local container which is being filled, and only at the end will it update the cache.
One update that I can still make if people are happy with this format is to update what RDO hashes are decoded, based on the contents of the cache container, to avoid too much duplicate processing between views. We do make use of the removeCollection
function to take the collection from the local-thread container and pass into the cache container. There does not seem a nice way around this.
I have run many many tests (I spent too long debugging one, see ATR-21374) but I have now run a single muon trigger setup where I see identical output of AOD.pool.root
and expert-monitoring.root
, and additionally I have been monitoring the FrozenT0 tests to ensure nothing is changing there.
One unrelated change: MuonSpectrometer/MuonDigitization/CSC_Digitization/src/CscDigitizationTool.cxx
prints the word FATAL
when the whole code base is run in a debug mode. This causes a crash because the log parsing finds this print out. To avoid this, I have updated the printout. I suspect no one ever ran the full code in a debug mode (or this tool even).