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.
ResidualOffsetCorrectionis now a standalone class (not a
JetCalibrationStep), as it doesn't actually calibrate anything - it's only a helper for
- 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).
JetCalibrationToolBasehas been rendered obsolete and removed.
JetCalibrationToolnow inherits directly from its interfaces and
- The logical structure of
JetCalibrationToolhas 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
InSituDataCorrectionnow 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
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.