Porting by-vertex jet reconstruction and related derivation code from 21.2 to 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 algorithmJetClustererByVertex
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 includeGlobalSequentialCorrection
,JetTrackSumMomentTools
,JetVertexFractionTool
,JetVertexTaggerTool
,ChargedHadronSubtractionTool
andCorrectPFOTool
- 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