ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Reconstruction
Jet
JetCalibTools
python
CalibratedJetCopyConfig.py
Go to the documentation of this file.
1
"""
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
"""
4
5
import
re
6
7
from
AthenaConfiguration.ComponentAccumulator
import
ComponentAccumulator
8
from
AthenaConfiguration.ComponentFactory
import
CompFactory
9
10
11
def
sanitizeName
(name: str) -> str:
12
return
re.sub(
r"[^A-Za-z0-9_]"
,
"_"
, name)
13
14
15
def
getJetCalibrationTool
(
16
jetCollection: str,
17
configFile: str,
18
calibSequence: str,
19
calibArea: str,
20
calibrationScale: str,
21
isData: bool,
22
calibJetCollection: str |
None
,
23
rhoKey: str |
None
,
24
pvKey: str |
None
,
25
):
26
"""Build the JetCalibrationTool and return (tool, jet_container)."""
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 =
sanitizeName
(jet_collection_nosuffix)
36
safe_scale =
sanitizeName
(calibrationScale)
37
38
calib_collection = calibJetCollection
if
calibJetCollection
is
not
None
else
jet_collection_nosuffix
39
40
tool_kwargs = dict(
41
JetCollection=calib_collection,
42
ConfigFile=configFile,
43
CalibSequence=calibSequence,
44
CalibArea=calibArea,
45
IsData=isData,
46
)
47
if
rhoKey
is
not
None
:
48
tool_kwargs[
'RhoKey'
] = rhoKey
49
if
pvKey
is
not
None
:
50
tool_kwargs[
'PrimaryVerticesContainerName'
] = pvKey
51
52
jet_calib_tool = CompFactory.JetCalibrationTool(
53
f
"JetCalibrationTool_{safe_collection}_{safe_scale}"
,
54
**tool_kwargs,
55
)
56
57
return
jet_calib_tool, jet_container
58
59
60
def
CalibratedJetCopyCfg
(
61
cfgFlags,
62
jetCollection: str,
63
outputCollection: str,
64
configFile: str,
65
calibSequence: str,
66
calibArea: str,
67
calibrationScale: str,
68
isData: bool =
False
,
69
calibJetCollection: str |
None
=
None
,
70
rhoKey: str |
None
=
None
,
71
pvKey: str |
None
=
None
,
72
) -> ComponentAccumulator:
73
"""Record a calibrated shallow copy of a jet collection.
74
75
The copy is written to *outputCollection* and each input jet is
76
decorated with an element link ('calibratedJetLink') to its copy.
77
"""
78
79
jet_calib_tool, jet_container =
getJetCalibrationTool
(
80
jetCollection=jetCollection,
81
configFile=configFile,
82
calibSequence=calibSequence,
83
calibArea=calibArea,
84
calibrationScale=calibrationScale,
85
isData=isData,
86
calibJetCollection=calibJetCollection,
87
rhoKey=rhoKey,
88
pvKey=pvKey,
89
)
90
91
acc = ComponentAccumulator()
92
acc.addPublicTool(jet_calib_tool)
93
acc.addEventAlgo(
94
CompFactory.CalibratedJetCopyAlg(
95
f
"CalibratedJetCopyAlg_{sanitizeName(outputCollection)}"
,
96
JetCalibrationTool=jet_calib_tool,
97
JetContainer=jet_container,
98
OutputContainer=outputCollection,
99
)
100
)
101
102
return
acc
CalibratedJetCopyConfig.getJetCalibrationTool
getJetCalibrationTool(str jetCollection, str configFile, str calibSequence, str calibArea, str calibrationScale, bool isData, str|None calibJetCollection, str|None rhoKey, str|None pvKey)
Definition
CalibratedJetCopyConfig.py:25
CalibratedJetCopyConfig.sanitizeName
str sanitizeName(str name)
Definition
CalibratedJetCopyConfig.py:11
CalibratedJetCopyConfig.CalibratedJetCopyCfg
ComponentAccumulator CalibratedJetCopyCfg(cfgFlags, str jetCollection, str outputCollection, str configFile, str calibSequence, str calibArea, str calibrationScale, bool isData=False, str|None calibJetCollection=None, str|None rhoKey=None, str|None pvKey=None)
Definition
CalibratedJetCopyConfig.py:72
Generated on
for ATLAS Offline Software by
1.17.0