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 nFolds=None, **kwargs):
59 """Configure the Normalizing Flow-based photon shower shape correction tool
61 nFolds: number of folds to use. If None (default), only 1 fold (fold 0) is used.
62 Otherwise must be >=1 and not exceed the NFolds value in the tool's config file.
64 acc = ComponentAccumulator()
66 from AthenaConfiguration.Enums
import LHCPeriod
68 if not flags.Input.isMC:
69 raise RuntimeError(
"ElectronPhotonVariableNFCorrectionToolCfg: "
70 "NF correction tool should not be called for data"
73 isFullSim = flags.Sim.ISF.Simulator.isFullSim()
74 isRun3 = flags.GeoModel.Run
is LHCPeriod.Run3
75 isRun2 = flags.GeoModel.Run
is LHCPeriod.Run2
77 if isFullSim
and isRun3:
78 default_conf =
"EGammaVariableCorrection/NF_y_TUNE1/Run3FS/ElectronPhotonVariableNFCorrectionTool.conf"
79 elif isFullSim
and isRun2:
80 default_conf =
"EGammaVariableCorrection/NF_y_TUNE1/Run2FS/ElectronPhotonVariableNFCorrectionTool.conf"
81 elif not isFullSim
and isRun3:
82 default_conf =
"EGammaVariableCorrection/NF_y_TUNE1/Run3AF3/ElectronPhotonVariableNFCorrectionTool.conf"
83 elif not isFullSim
and isRun2:
85 default_conf =
"EGammaVariableCorrection/NF_y_TUNE1/Run3AF3/ElectronPhotonVariableNFCorrectionTool.conf"
88 f
"ElectronPhotonVariableNFCorrectionToolCfg: no NF correction config available for Run period {flags.GeoModel.Run} "
89 f
"(isFullSim={isFullSim}). Only Run2 and Run3 are supported."
92 conf_key = kwargs.setdefault(
"ConfigFile", default_conf)
96 raise RuntimeError(f
"PathResolver cannot find {conf_key}")
101 with open(conf_file,
'r')
as f:
104 if not line
or line.startswith(
'#'):
106 key, _, value = line.partition(
':')
108 value = value.strip()
110 n_folds_config = int(value)
111 elif key ==
'ONNXnamePattern':
114 if n_folds_config
is None or pattern
is None:
115 raise RuntimeError(f
'NFolds or ONNXnamePattern not found in config: {conf_file}')
122 raise ValueError(f
'nFolds must be >= 1, got {nFolds}')
123 if nFolds > n_folds_config:
125 f
'Requested nFolds={nFolds} exceeds NFolds={n_folds_config} available in config: {conf_file}'
127 n_folds_used = nFolds
129 kwargs.setdefault(
"NFoldsOverride", n_folds_used)
134 for i
in range(n_folds_used):
136 fwd_session = CompFactory.AthOnnx.OnnxRuntimeSessionToolCPU(
137 f
'NFCorrectionORTSessionToolForward_{i}',
138 ModelFileName=f
'{pattern}_forward_{i}.onnx')
139 fwd_tool = CompFactory.AthOnnx.OnnxRuntimeInferenceTool(
140 f
'NFCorrectionOnnxToolForward_{i}',
141 ORTSessionTool=fwd_session)
142 forward_tools.append(fwd_tool)
144 bwd_session = CompFactory.AthOnnx.OnnxRuntimeSessionToolCPU(
145 f
'NFCorrectionORTSessionToolBackward_{i}',
146 ModelFileName=f
'{pattern}_backward_{i}.onnx')
147 bwd_tool = CompFactory.AthOnnx.OnnxRuntimeInferenceTool(
148 f
'NFCorrectionOnnxToolBackward_{i}',
149 ORTSessionTool=bwd_session)
150 backward_tools.append(bwd_tool)
152 kwargs.setdefault(
"OnnxInferenceToolsForward", forward_tools)
153 kwargs.setdefault(
"OnnxInferenceToolsBackward", backward_tools)
156 CompFactory.ElectronPhotonVariableNFCorrectionTool(name, **kwargs))