Porting by-vertex jet reconstruction and related derivation code from 21.2 to main

Vilius Cepaitis requested to merge vcepaiti/athena:jet-reco-by-vertex-port into main

This merge request is a main port of the by-vertex reconstruction of pileup jets and a dedicated pileup jet derivation (JETM7) which was originally developed by @sschramm in Rel21.2. The branch was therefore started by cherry-picking relevant commits from 21.2 and building on top of that.

Many thanks to @delsart and @sschramm for their invaluable help in both the implementation and code review.

The physics validation of the by-vertex reconstruction in Rel.24 is underway and was presented at the 2023 Hadronic Calibration Workshop.

Below is a non-exhaustive list of changes in this merge request:

  • Creating copies of neutral PFOs for each vertex in JetConstituentModSequence, necessary for by-vertex jet reconstruction
  • Modify PseudoJetGetter to facilitate the conversion of jet constituents into PseudoJets for by-vertex reco
  • Refactor JetClusterer and create a new algorithm JetClustererByVertex to cluster jets for each vertex interpretation
  • Add OriginVertex attribute for by-vertex jets
  • Configure various jet-related tools with optional flags to allow using the OriginVertex instead of a fixed vertex. These include GlobalSequentialCorrection, JetTrackSumMomentTools, JetVertexFractionTool, JetVertexTaggerTool, ChargedHadronSubtractionTool and CorrectPFOTool
  • Adding support for new AntiKt4EMPFlowByVertexJets container in .py files
  • Adding a new derivation (JETM7) that schedules the by-vertex jets
  • Misc: rewritten type-related (FlowElement vs PFO) but largely duplicated code using templates and constexpr-if

The MR should not affect the standard jet reconstruction, however only a few jet containers were explicitly checked during development to ensure no changes: AntiKt4EMPFlowJets and AntiKt4EMPFlowNoPtCutJets

Edited by Vilius Cepaitis

Merge request reports