Implement monitoring in TrigByteStreamCnvSvc
Adding several monitoring histograms for the ByteStream HLT output. The monitoring is done directly before the HLT result is sent to DataCollector (TDAQ interface), which ensures that we monitor exactly what we send out and nothing can happen to the result between filling histograms and sending the result. Downside of this is that we introduce some small overhead to read back the raw data after already packing them into uint32_t[]
. The advantage and main motivation is that we don't miss anything which happens in HLT - particularly HLT debug stream events, unlike in the HLTResultMTMaker monitoring which misses all debug streams. We do, of course, still miss what happens outside HLT between sending the result and writing the output to disk, i.e. DCM and SFO processing online in a partition.
Relevant Jira ticket is ATR-19667
The following histograms are added:
StreamTags
1D histogram counting how many events are sent by HLT to each stream
filled by accepted events only (at least one stream tag)
StreamTagsCorr
2D histogram showing correlation/overlap between streams
filled by accepted events only (at least one stream tag)
PscErrorCode
HLT-specific error codes set in the event header status word in case of HLT error
filled only if there are errors
ResultSizeByModule
2D histogram of HLT result ROBFragment size for each module ID
filled by all events with at least one HLT ROBFragment in output
ResultSizeByStream
2D histogram of HLT result ROBFragment size for each stream, counting all ROBFragments which go to a given stream in a given event, e.g. all ROBFragments in case of full event building
filled by accepted events only (at least one stream tag)
ResultSizeTotal
1D histogram showing the summed size of all HLT result ROBFragments
filled by all events with at least one HLT ROBFragment in output
ResultSizeFullEvFrag
1D histogram showing the size of the FullEventFragment sent to DataCollector (DCM)
filled by all events, accepted or rejected
TIME_EventDoneCall
1D histogram showing the time taken by the DataCollector::eventDone call (i.e. sending out the HLT result to DCM)
filled by all events, accepted or rejected
The first two histograms are also created by SFO, so comparing the HLT and SFO histograms gives us a good consistency check.