Skip to content

Support FlowElements in JetReconstruction

William Keaton Balunas requested to merge wbalunas/athena:feJets-201001 into master

The FlowElement (FE) EDM has been introduced to represent PFO/TCC/UFO objects, and PFO reconstruction is now capable of producing its output in FE format (TCC/UFOs in progress at the time of writing). This takes care of the next step, which is to add support for FEs in jet reconstruction itself. This affects tools which look at the constituents of jets, so most of the changes are related to jet modifier and constituent modifier tools.

This has also necessitated some more development of utilities for handling FlowElements, so I also introduce the FEHelpers collection of helper functions. The key difference is that all attribute handling lives outside of the EDM itself, allowing us more flexibility.

Quite a few other items came up during this development, so a summary of the changes is here:

JetMomentTools, JetRecTools, JetUtils

  • Added support for FlowElements to all tools which depend on the jet constituent type.
  • Only FlowElement representing PFOs are universally supported at the moment. We'll need a bit of further development to handle TCCs/UFOs when the time comes for that.
  • Fixed a bug in JetPtAssociationTool where it was trying to match the input jet collection to itself. This is the kind of thing it would be great to have ART tests for!

JetRec

  • Added a new job config flag jetFlags.usePFlowFE, which needs to be set to True for running FE-based jet reco. It is set to False by default.
  • Added FlowElement support to PseudoJetGetter
  • Added support for a FlowElement-based EMPFlow jet collection

eFlowRec

  • Updated the naming scheme for FlowElement moments to harmonize them with the CaloCluster scheme.
  • FlowElement reconstruction now correctly sets the signalType for the FEs it creates.
  • Fixed a bug where FlowElement moments weren't being saved correctly to the output collections.

xAODPFlow

  • Added a setP4(..) to the FlowElement EDM which takes in a FourMom_t instead of just the four individual components.

PFlowUtils

  • Added FEHelpers namespace, containing utility functions for FlowElements such as computing corrected 4-vectors and accessing cluster moments.

DerivationFramework

  • Added support for a "EMPFlowFE" chain in arbitrary derivations. This includes an addition to smart slimming lists, etc. This can be removed once we fully replace the nominal PFO collections and simply make "EMPFlow" the FlowElement-based one. But for now, we want to have both in parallel.

ThinningUtils

  • Added FlowElement support to ThinNegativeEnergyNeutralPFOsAlg

I've tested this full set of changes by running the full reco chain from RDO->AOD to get updated FlowElements, and the jet reconstruction itself in AOD->DAOD. I was able to produce a modified DAOD_PHYS with these new jets using the additions to DerivationFramework, and verified that they do correctly reproduce the existing PFlow jets. Constituent-level variables appear identical; some differences in calibrated quantities are observed, which we suspect are from the calibration itself differing between the two collections. These tests have been fairly limited in scope; we'll of course want to do a more complete validation after this is in.

After this MR, we'll need another doing the same thing for MET. That should be easier with the FE helper functions already in place. I also note that the config support added here uses the "old" jet config, which will soon be superseded. Putting the FlowElement support into the new config remains to be done, but that will be purely python-level and so isn't necessary before the feature freeze.

Tagging @delsart, @khoo, @mhodgkin, @sschramm for any input they might have.

Tagging @sawyer, @cdelitzs, @mswiatlo for their awareness.

Edited by William Keaton Balunas

Merge request reports