L1TriggerByteStreamDecoderAlg: add monitoring, improve error reporting, check for data corruption
Improvements to the L1TriggerByteStreamDecoderAlg:
- In addition to checking for missing ROBs and ROBs with status!=0, check also for ROBs with corrupted data format (as implemented by
ROBFragment::check_noex()
). This is to prevent attempts to decode corrupted data as discovered/discussed in ATR-26340. - Allow ROBs listed in the
MaybeMissingROBs
list to not only be missing, but also have non-zero status or corrupted data. No errors will be printed for them. - Improve messages informing about ROB issues to be more meaningful and useful - add
SourceIdentifier::human()
printout of the ROB ID. - Add online monitoring histogram for timing of various part of the algorithm and tools' execution, as well as for each class of ROB problems. For the latter, there are plots with total count of problems per ROB ID, and TProfiles showing average fraction of ROBs with a given problem in a lumi block.
Tested on physics_Main data from run 429137 with some erroneous or missing phase-1 L1Calo ROBs and on debug_HltError data from run 435080 including some erroneous and corrupted MUCTPI ROBs.
FYI @wiedenma
Edited by Rafal Bielski