Improve filtering and writing with L0App
Until now we had to hack together filters in options with limited success. This MR addresses that.
Three new properties are added for filtering and monitoring:
-
EventPreFilters
, a list of algorithms to be executed before the L0 sequence (a la DaVinci), -
L0Filter
, the Code for a LoKi L0Filter to be executed after the L0 sequence. -
Monitor
, True by default, controls whether L0DUReportMonitor is run (just after the L0 sequence and beforeL0Filter
).
The typical filter is
'L0_DECISION(LHCb.L0DUDecision.Any)'
, which will ensure that only
events where L0 fired will be written. Another possibility is to use
'L0_DECISION(LHCb.L0DUDecision.Physics)'
which will restrict further
to events from channels with mask ??1
.
Backward compatibility:
- Monitoring is enabled by default but otherwise default behaviour is not changed.
Testing:
- In the same merge request the scripts to run L0App in the Moore tests are adapted to use the new options. As a consequence, the prepare-input test is fixed (pre-filter actually works now) and the output contains only the triggered events (post-filter actually works).
- Simplify existing L0App tests and add a few more to cover features tested only by the Moore tests. Update input data for real data and simulation.
Edited by Rosen Matev