Add RoutingBitsWriter to Moore configuration

The Routing bits serve several purposes:

  • Streaming of events to monitoring and alignment tasks.
  • Streaming of events to different offline streams.

A Routing bit is usually a requirement on the decision of a set of trigger lines. In the old Hlt they were defined here: https://gitlab.cern.ch/lhcb/Hlt/blob/2018-patches/Hlt%2FHltConf%2Fpython%2FHltConf%2FHltOutput.py#L374 .

E.g.


                      # RB 33 Lumi after HLT1
        routingBits = { 33 : "HLT_PASS_RE('^Hlt1Lumi.*Decision$')"
                      # RB 35 Beam-Gas for Velo alignment
                      , 35 : "HLT_PASS_RE('Hlt1(?!BeamGasHighRhoVertices)BeamGas.*Decision')"}

The inputs to the Routing bits writer are the ODIN raw bank and the Hlt decision reports. The Routing bits are stored in a dedicated RawBank.

Looking at the code in HltRoutingBitsWriter it has several issues with the new framework.

  1. The algorithm updates the RawEvent with a new RawBank and is not therefore not Functional. This per se is not a problem, as the same is currently done in the HltDecReportsWriter. See also here: LHCb!2202 (closed) .
  2. The algorithm (implemented in HltEvaluator.h) relies on incidents to get the data of the next event. This is not supported by HLTControlFlowMgr and therefore leads to segfaults. This needs to be fixed before including HltRoutingBitsWriterin the Moore configuration.