Skip to content

Update Jet interfaces to operate at container-level

Short summary:

  • Removed ISingleJetModifier.
  • Added IJetDecorator.
  • IJetModifier (and the new IJetDecorator) functions now return StatusCode instead of int.
  • IJetModifier has been simplified, modify(...) is now its only function.
  • Jet calibration tools no longer use the CP::CorrectionTool interface.
  • Jet calibration tools now only calibrate containers of jets rather than individual jets. The calibrated-copy functions have been removed as part of this.

Long explanation:

With the transition to AthenaMT, xAOD objects (in this case, jets) and their decorations will need to be accessed at container-level only using DataHandles and DecorHandles in order to maintain thread-safety. With this in mind, we're removing the ISingleJetModifier interface for operating on individual jets.

We're making the same change in jet calibration tools: they'll now only operate on containers rather than single jets. The interface IJetCalibrationTool has been changed accordingly, now the only function for calibration is modify(xAOD::JetContainer&) (now inherited from IJetModifier) or its alias applyCalibration(xAOD::JetContainer&).

In addition, due to the new event data access in AthenaMT, we'll want to run many JetModifiers (which don't actually modify the jet itself but only add new decorations) on const jets. To make this possible we're introducing a new interface IJetDecorator which is the same as IJetModifier but operates on const jets. This also inherits from IJetModifier, simply invoking the const version (called decorate()) if modify() is called through IJetModifier. Many of the classes which currently implement IJetModifier will be migrated to IJetDecorator in a later MR. This follow-up MR will also remove JetModifierBase.

Tagging @khoo, @loch, @delsart, @sschramm from the jet side and @akraszna, @krumnack (as the author of CorrectionTool) from the ASG side.

Edit: This MR originally changed the CP::CorrectionTool interface and had jet calibration continue to use it. We decided to instead just drop the use of this interface following the discussion here.

Edited by William Keaton Balunas

Merge request reports