ATLAS Offline Software
Loading...
Searching...
No Matches
JetCalibrationDecoratorConfig.py
Go to the documentation of this file.
1"""
2Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3"""
4
5import re
6
7from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8from AthenaConfiguration.ComponentFactory import CompFactory
9
10
11def _sanitize(name: str) -> str:
12 return re.sub(r"[^A-Za-z0-9_]", "_", name)
13
14
16 cfgFlags,
17 jetCollection: str,
18 configFile: str,
19 calibSequence: str,
20 calibArea: str,
21 calibrationScale: str,
22 isData: bool = False,
23) -> ComponentAccumulator:
24 """Decorate jets with calibrated four-momentum components."""
25
26 del cfgFlags
27
28 if jetCollection.endswith("Jets"):
29 jet_container = jetCollection
30 jet_collection_nosuffix = jetCollection[:-4]
31 else:
32 jet_container = f"{jetCollection}Jets"
33 jet_collection_nosuffix = jetCollection
34
35 safe_collection = _sanitize(jet_collection_nosuffix)
36 safe_scale = _sanitize(calibrationScale)
37
38 jet_calib_tool = CompFactory.JetCalibrationTool(
39 f"JetCalibrationTool_{safe_collection}_{safe_scale}",
40 JetCollection=jet_collection_nosuffix,
41 ConfigFile=configFile,
42 CalibSequence=calibSequence,
43 CalibArea=calibArea,
44 IsData=isData,
45 )
46
47 acc = ComponentAccumulator()
48 acc.addPublicTool(jet_calib_tool)
49 acc.addEventAlgo(
50 CompFactory.FlavorTagDiscriminants.JetCalibrationDecoratorAlg(
51 f"JetCalibrationDecoratorAlg_{_sanitize(jet_container)}_{safe_scale}",
52 JetCalibrationTool=jet_calib_tool,
53 JetContainer=jet_container,
54 ptCalibratedKey=f"{jet_container}.{calibrationScale}_pt",
55 etaCalibratedKey=f"{jet_container}.{calibrationScale}_eta",
56 phiCalibratedKey=f"{jet_container}.{calibrationScale}_phi",
57 massCalibratedKey=f"{jet_container}.{calibrationScale}_mass",
58 )
59 )
60
61 return acc
ComponentAccumulator JetCalibrationDecoratorCfg(cfgFlags, str jetCollection, str configFile, str calibSequence, str calibArea, str calibrationScale, bool isData=False)