SMOG2 trigger lines and prefilters
Implementation of core SMOG2 HLT1 trigger lines and filters (documentation in this twiki)
TODO: Following an old discussion with Alex, who was against trigger lines outputting a mask (breaking the requirement of independency among lines), I implemented as filters the selections outputting a mask. Is this changed now? (resolved in this comment )
Implemented filters:
- CheckPV: filters events with a PV in a z range, to switch off SMOG2 lines for events with only pp collisions (and vice versa, as can be relevant for PbPb + PbSMOG2 datasets)
- LowMult: filters events with a reconstructed number of Velo tracks in a range, to allow (e.g.) CEP physics lines implementation
- BeamCrossingType: filters a given beam crossing type, to be combined with the previous one to measure the SMOG2 lumi via p-e elastic scattering (closes Allen/#225)
Implemented SMOG2 lines:
- SMOG2_MinimumBiasLine: triggers on VELO tracks from the SMOG2 region and with a minimum number of VELO hits. It is required for astrophysics-motivated measurements + efficiency checks (will be prefiltered)
- SMOG2_DiMuonHighMass: triggers on dimuon signatures, required for charm measurements
- SMOG2_DiTrack: triggering on ditrack signatures, instantiated for D0 -> Kpi, eta ->pp and generic
- SMOG2_SingleTrack: generic high-pT signature
To cope with the possible simultaneous data-taking, all SMOG2 lines require the triggering object to be in the SMOG2 region. On pp lines, I applied requirements asking the triggering object to be and/or to be associated to a PV not in the SMOG2 region. This rejects the SMOG2 contamination (yet minor, considering the lower SMOG2 energy and collision rate).
Branch tested with pipeline 3979399. Only failing steps are:
- physics_efficiency, where:
- all physics lines keep the same rate, which demonstrates the requirements of objects not coming from SMOG2 are fully efficient;
- monitoring and HighPtMuNoID lines can change by a unit because of the different hashing string, affecting the postscaling
- physics_efficiency_full tests fail as expected (numbers of SMOG2 events accepted from pp lines go to zero)
Supersedes Allen/!520 (closed) (TODO: clean old branches)
With respect to the configuration:
- The default sequences only allowed the gec filter to be applied to lines. To cope with more complex prefiltering strategies, the make_line_composite_node_with_gec and the line_maker functions are replaced to accept no, a single or a list of prefilter algorithms (and are moved to utils to be shared between HLT1 and HLT1_no_calo);
- Line definition functions (like default_physics_lines and monitoring_lines) only define the lines, the upstream prefiltering is applied with a bind to line_maker
- Line names and hashing strings include the applied prefilters
cc @ggrazian