Add LHCb::Particle-compatible ThOr algorithm configuration and tests
The over-arching goal is to provide a configuration API which allows HLT2 line authors to write their lines using ThOr functors.
This MR adds Python wrappers, Hlt2Conf.algorithms_thor
, around the ThOr filter and combiner algorithms which act on the legacy LHCb::Particle
objects. The wrappers follow the look-and-feel of those around the legacy DVCommonBase
-based algorithms in Hlt2Conf.algorithms
. There's a new example options file and corresponding test which demonstrates the functionality.
A couple of changes were needed in Moore's backend to maintain persistence feature parity when using the ThOr algorithms:
- The particle moving logic, which ensures line output ends up in a pretty TES location like
/Event/HLT2/Hlt2MyLine/Particles
, now handles anyLHCb::Particle
producer, not justDVCommonBase
. - The particle moving algorithm has been migrated from a hacky
FilterDesktop
configuration to a dedicated algorithmCopyParticlesWithPVRelations
, adding in Phys!933 (merged). Aside from moving one step further away fromDVCommonBase
, it's nice in that it ensures P2PV relations are persisted for all particles in a decay tree regardless of whether those relations were created or used as part of the HLT2 line selection.
The infrastructure for the v1-to-v2 switch is in place (Hlt2Conf.algorithms_thor.thor_backend
) but support for the v2 backend is missing. It will come in a separate MR. Our priority is getting folks writing lines with ThOr functors, which this MR enables.
Requires gaudi/Gaudi!1210 (merged), Rec!2425 (merged), and Phys!933 (merged).