Skip to content

TriggerEDMSerialiserTool: Skip serialisation into module IDs which won't be streamed

Skip serialising objects which won't be streamed to any output in a given event, and stop putting serialised objects into payload chunks which won't be streamed.

This has the largest and most important effect for events accepted into DataScouting streams (where there is little data to serialise) that do not overlap with other types of streams using full HLT output (a lot of data to serialise). In these cases we should skip serialising almost everything and only serialise those few objects needed for the DataScouting stream(s).

This MR speeds up the result building for DataScouting, as seen below: TIME_makeResult_log_labelled

This was tested with:

athenaHLT.py \
-o output \
--threads=12 --concurrent-events=12 \
-c "setMenu='LS2_v1';selectChains=['HLT_JetDS_j20_L1J100','HLT_JetDS_j20_L1HT190-J15s5pETA21','HLT_j165_LArPEBHLT_L1J100', 'HLT_4j120_subjesIS_L13J50'];" \
-R 360026 \
-f /scratch/rbielski/large.decompressed.data._0001.data \
TriggerJobOpts/runHLT_standalone.py

which resulted in 440 accepted JetDS events, 333 LArPEBHLT (which includes full HLT result) and 6 Main (also full result).

Output data verified by comparing the output of the following before and after the changes:

trigbs_dumpHLTContentInBS_run3.py --stag --hltres --sizeSummary data_test.00360026._.daq.RAW._lb0000._HLTMPPy_output._0001.data

cc @tbold, @wiedenma, @doglioni

Tagging jira ATR-19360 for reference

Merge request reports