Skip to content

JetCalibTools structural re-work

William Keaton Balunas requested to merge wbalunas/athena:jct-211116 into master

This implements some improvements to the structure of JetCalibTools which were recently discussed in the Jet/MET software & validation group and at the Hadronic Calibration Workshop. The main changes are:

  • A new base class, JetCalibrationStep, is introduced to provide common functionality/interface for the individual calibration methods. This is a standalone class, not a Tool.
  • ResidualOffsetCorrection is now a standalone class (not a JetCalibrationStep), as it doesn't actually calibrate anything - it's only a helper for JetPileupCorrection.
  • The individual calibration steps are no longer Tools in the Athena sense: they aren't configurable from python (there was no case in which a user was supposed to do this anyway).
  • JetCalibrationToolBase has been rendered obsolete and removed. JetCalibrationTool now inherits directly from its interfaces and AsgTool.
  • The logical structure of JetCalibrationTool has been simplified. It's now about 150 lines shorter, and there's only one vector<CalibrationStep> which includes all steps, even for expert usage.
  • The handling of time-dependent in situ calibrations has been streamlined. Each InSituDataCorrection now holds its own run number interval of validity (which is all runs unless otherwise specified) outside of which calibrate(...) does nothing. This improves over the previous logic where JetCalibrationTool conditionally called calibrate(...) based on the corresponding validity interval, requiring additional bookkeeping.
  • Some other obsolete code has been removed (file finding which has been superseded by PathResolver, etc.).
  • A few minor memory leaks have been remedied.
  • General improvements to code style have been made in various places.

The goal here is to make JetCalibTools more accessible for the general ATLAS population to read, work with, and contribute to. These changes are complementary to the lower-level configuration/data access proposals from @sschramm.

Tagging @sawyer, @schaarsc, @mswiatlo, @camacho for Jet/Etmiss. @jbossios might also be interested. All comments from anyone are welcome.

Merge request reports