Add new code to allow creation of electron and muon free particle flow jets (V3)
This includes updates to JetPFlowSelectionAlg.cxx to add options to remove all neutral contributions from particle flow jets that belong to electrons or muons of a given particle ID level.
On the python side new configuration functionality has been added to allow users to make use of these workflows.
This should not change the output of standard particle flow jets and hence should preserve frozen tier0 for jets.
The new muon free jets rely on an additional decoration that is added to charged FlowElement - thus this aspect violates frozen tier0 and adds a new decoration:
JetETMissChargedParticleFlowObjectsAuxDyn.FE_efrac_matched_muon
This is used by the new muon-less jet finding configuration included in this MR.
Whilst testing this I found two further unexpected differences in neutral FlowElements:
JetETMissNeutralParticleFlowObjectsAuxDyn.FE_efrac_matched_muon
JetETMissNeutralParticleFlowObjectsAuxDyn.FE_nMatchedMuons
MuonsAuxDyn.muon_efrac_matched_FE
as well as changes in MET container output.
Further investigation revealed an existing bug in the eflowRec code here:
whereby an iterator over the muon calormeter clusters cells is not reset to begin() in each loop over a calorimeter clusters cells. Thus only one cell can ever be matched, rather than N. This was (unintentionally) fixed in this MR because the code we redesigned and switched to range based for loops.
Due to the MET changes, this is a bug fix that affects MET output so it ought to go into 24.0? Flagging to @jdandoy and @christos .
I can prepare a MR for 24.0 that only contains the eflowRec bug fix.