24 flags, name="PhotonVariableCorrectionTool", **kwargs):
25 """Configure the e/gamma variable correction tool for photons"""
26 acc = ComponentAccumulator()
27 log = logging.getLogger(
"PhotonVariableCorrectionToolCfg")
29 defaultTuneFile =
"EGammaVariableCorrection/TUNE27E/ElPhVariableNominalCorrection.conf"
31 mcCampaign = flags.Input.MCCampaign
32 runPeriod = flags.GeoModel.Run
33 if runPeriod
is LHCPeriod.Run2:
35 tuneFile =
"EGammaVariableCorrection/TUNE25/ElPhVariableNominalCorrection.conf"
36 elif runPeriod
is LHCPeriod.Run3:
37 if mcCampaign
in [Campaign.MC23a, Campaign.MC23d]:
39 tuneFile =
"EGammaVariableCorrection/TUNE27AD/ElPhVariableNominalCorrection.conf"
40 elif mcCampaign
is Campaign.MC23e:
42 tuneFile =
"EGammaVariableCorrection/TUNE27E/ElPhVariableNominalCorrection.conf"
44 log.warning(
"No default FF file centrally provided for mc campaign %s", mcCampaign.value)
45 tuneFile = defaultTuneFile
47 log.warning(
"No default FF file centrally provided for run period %s", runPeriod.value)
48 tuneFile = defaultTuneFile
49 log.info(
"Setting as default FF file: %s", tuneFile)
50 kwargs.setdefault(
"ConfigFile", tuneFile)
52 CompFactory.ElectronPhotonVariableCorrectionTool(name, **kwargs))
57 flags, name="PhotonVariableNFCorrectionTool",
58 forceFold=-1, **kwargs):
59 """Configure the Normalizing Flow-based photon shower shape correction tool"""
60 acc = ComponentAccumulator()
62 from AthenaConfiguration.Enums
import LHCPeriod
64 if not flags.Input.isMC:
65 raise RuntimeError(
"ElectronPhotonVariableNFCorrectionToolCfg: "
66 "NF correction tool should not be called for data"
69 isFullSim = flags.Sim.ISF.Simulator.isFullSim()
70 isRun3 = flags.GeoModel.Run
is LHCPeriod.Run3
71 isRun2 = flags.GeoModel.Run
is LHCPeriod.Run2
73 if isFullSim
and isRun3:
74 default_conf =
"EGammaVariableCorrection/NF_y_TUNE1/Run3FS/ElectronPhotonVariableNFCorrectionTool.conf"
75 elif isFullSim
and isRun2:
76 default_conf =
"EGammaVariableCorrection/NF_y_TUNE1/Run2FS/ElectronPhotonVariableNFCorrectionTool.conf"
77 elif not isFullSim
and isRun3:
78 default_conf =
"EGammaVariableCorrection/NF_y_TUNE1/Run3AF3/ElectronPhotonVariableNFCorrectionTool.conf"
79 elif not isFullSim
and isRun2:
81 default_conf =
"EGammaVariableCorrection/NF_y_TUNE1/Run3AF3/ElectronPhotonVariableNFCorrectionTool.conf"
84 f
"ElectronPhotonVariableNFCorrectionToolCfg: no NF correction config available for Run period {flags.GeoModel.Run} "
85 f
"(isFullSim={isFullSim}). Only Run2 and Run3 are supported."
88 conf_key = kwargs.setdefault(
"ConfigFile", default_conf)
90 kwargs.setdefault(
"forceOneFold",
True)
94 raise RuntimeError(f
"PathResolver cannot find {conf_key}")
99 with open(conf_file,
'r')
as f:
102 if not line
or line.startswith(
'#'):
104 key, _, value = line.partition(
':')
106 value = value.strip()
109 elif key ==
'ONNXnamePattern':
112 if n_folds
is None or pattern
is None:
113 raise RuntimeError(f
'NFolds or ONNXnamePattern not found in config: {conf_file}')
118 for i
in range(n_folds):
120 if forceFold>=0
and i!=forceFold:
123 fwd_session = CompFactory.AthOnnx.OnnxRuntimeSessionToolCPU(
124 f
'NFCorrectionORTSessionToolForward_{i}',
125 ModelFileName=f
'{pattern}_forward_{i}.onnx')
126 fwd_tool = CompFactory.AthOnnx.OnnxRuntimeInferenceTool(
127 f
'NFCorrectionOnnxToolForward_{i}',
128 ORTSessionTool=fwd_session)
129 forward_tools.append(fwd_tool)
131 bwd_session = CompFactory.AthOnnx.OnnxRuntimeSessionToolCPU(
132 f
'NFCorrectionORTSessionToolBackward_{i}',
133 ModelFileName=f
'{pattern}_backward_{i}.onnx')
134 bwd_tool = CompFactory.AthOnnx.OnnxRuntimeInferenceTool(
135 f
'NFCorrectionOnnxToolBackward_{i}',
136 ORTSessionTool=bwd_session)
137 backward_tools.append(bwd_tool)
139 kwargs.setdefault(
"OnnxInferenceToolsForward", forward_tools)
140 kwargs.setdefault(
"OnnxInferenceToolsBackward", backward_tools)
143 CompFactory.ElectronPhotonVariableNFCorrectionTool(name, **kwargs))