Reimplement L1 data consistency check in HLT seeding
Run-3 reimplementation of the rel 21 Lvl1ConsistencyChecker
, addressing ATR-23697. The new tool is called L1DataConsistencyChecker
which I considered a slightly clearer name following some confusion in the Jira ticket as to what "Lvl1" stood for (it was L1 data rather than L1 menu). I hope the code is a bit clearer as well.
The tool checks the consistency of HLT inputs received from two sources: the CTP decisions and the corresponding L1 Trigger objects (TOBs) from the sub-system readout (L1Calo, L1Muon). It is based on counting TOBs passing a given threshold and comparing the multiplicity of that threshold accepted in the CTP decision. For example, if CTP tells us that L1 accepted the item L1_3EM10
it means we must have at least 3 L1Calo EM TOBs passing the EM10
threshold. If that is not the case, a warning is printed and a dedicated histogram "MissingTOBs" is filled to count problematic events for each L1 item.
In addition to the "MissingTOBs" histogram there are a few extra histograms added for debugging. In local tests the check takes around 1 ms per event, which is quite reasonable, but if needed in the future the filling of the extra histograms could be disabled to speed up the check. For the commissioning period it would be useful to keep them.
The new tool shows there are currently some inconsistencies in phase-1 L1Calo items which at least partially come from known issues which are being investigated by L1Calo and L1Topo experts.
Two missing features required for this to work are also implemented:
- add elements access methods to
TrigConf::Logic
- add a
thresholds
decoration with passed threshold hashes to all L1 decisions created by HLTSeeding "RoI unpacking" tools (except MET where TOBs are not used by HLT)
Closes ATR-23697