Fix PersistReco propagation and Turbo truth-matching
See LHCBGAUSS1006 for a complete overview. An executive ‘summary’ follows.
PersistReco
When running Brunel before Tesla, the PersistReco raw bank, DstData
, is moved from Trigger/RawEvent
to Unstripped/RawEvent
. Tesla is not configured to look in the second location, so PersistReco truth matching can't happen, plus the second location is removed by the Stripping (micro)DST writer, so PersistReco candidates aren't available.
The fix is two-fold:
- Move
DstData
intoPersistReco/RawEvent
instead, requiring a new raw event output format to be used by Brunel (see r 209297 and r 209298 in AppConfig). - Have the PersistReco decoder look in the new location,
PersistReco/RawEvent
, for the raw banks.
For Step 2, I've added PersistReco/RawEvent
to the list of default locations the HltPackedDataDecoder
looks in, and modified the behaviour of the decoder base class to remove some caching that assumed all raw banks required by a decoder would live in one raw event location (which isn't the case here).
Truth matching
Truth matching in performed in Tesla, which builds the various relations tables, but the tables weren't being persisted. This meant truth information wasn't available for ‘Pure’ Turbo nor for PersistReco.
This happened because the packing was being run before the tables were created. This has been fixed by moving the packing to after the relations building.
Propagation in the Stripping
To allow the usage of the PersistReco objects after the Stripping step, I've added PersistReco/RawEvent
to the list of locations that are always saved by both the DST and µDST writer.
Sorry for all the junk included in the MR
/cc @sstahl @raaij @rmatev @sbenson @cattanem @jonrob (as I've touched things I know you've been involved in)