ATLAS Offline Software
JetCalibToolsCfg.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 from JetRecConfig.StandardJetConstits import inputsFromContext
4 from PathResolver import PathResolver
5 
6 from AthenaCommon import Logging
7 jetcaliblog = Logging.logging.getLogger('JetCalibToolsConfig')
8 
9 all = ['getJetCalibTool']
10 
11 calibdic = {
12  "AntiKt4EMPFlow:T0" : "JetCalibTools/calibConfigExample.yaml",
13  "AntiKt4EMPFlow:TrigRun2" : "JetCalibTools/calibConfigExample.yaml", # this is for testing
14 }
15 
16 # This method actually sets up the tool
17 def defineJetCalibTool(jetdef, modspec):
18  from JetCalibTools.JetCalibStepsConfig import calibToolFromConfigFile
19 
20  jetcollection = jetdef.basename
21  cfg = calibdic[f"{jetdef.basename}:{modspec}"]
22  path_configFile = PathResolver.FindCalibFile(cfg)
23  toolname = "jetcalib_new_{0}_{1}".format(jetcollection,modspec)
24  jct = calibToolFromConfigFile(jetdef._cflags, path_configFile, toolname)
25 
26  return jct
27 
28 # This method extends the basic config getter to specify the requisite jet
29 # moments or other inputs
30 def getJetCalibToolPrereqs(jetdef, modspec):
31  from JetCalibTools.JetCalibStepsConfig import load_yaml_cfg
32 
33  cfg = calibdic[f"{jetdef.basename}:{modspec}"]
34  configDic = load_yaml_cfg(cfg)
35 
36  prereqs = ["mod:ConstitFourMom"]
37  pvname = "PrimaryVertices" # this can be set dinamically in future
38 
39  for step, step_config in configDic.items():
40  # JetArea
41  if step_config.get("DoJetArea", False):
42  if modspec.startswith("Trig"):
43  prereqs.append("input:HLT_EventDensity")
44  elif pvname == "PrimaryVertices_initial":
45  prereqs.append("input:EventDensityCustomVtxGNN")
46  elif pvname != "PrimaryVertices":
47  prereqs.append("input:EventDensityCustomVtx")
48  else:
49  prereqs.append(inputsFromContext("EventDensity")(jetdef))
50 
51  # read prereqs from context or default config block
52  prereq_block = step_config.get("prereqs", {})
53  step_prereqs = prereq_block.get(modspec, prereq_block.get("default", []))
54  prereqs.extend(step_prereqs)
55 
56  # remove duplication and keep order
57  seen = set()
58  prereqs_unique = []
59  for p in prereqs:
60  if p not in seen:
61  prereqs_unique.append(p)
62  seen.add(p)
63 
64  return prereqs_unique
65 
PathResolver::FindCalibFile
static std::string FindCalibFile(const std::string &logical_file_name)
Definition: PathResolver.h:63
vtune_athena.format
format
Definition: vtune_athena.py:14
JetCalibToolsCfg.getJetCalibToolPrereqs
def getJetCalibToolPrereqs(jetdef, modspec)
Definition: JetCalibToolsCfg.py:30
JetCalibToolsCfg.defineJetCalibTool
def defineJetCalibTool(jetdef, modspec)
Definition: JetCalibToolsCfg.py:17
JetCalibStepsConfig.calibToolFromConfigFile
def calibToolFromConfigFile(flags, configFile, name="jetcalib")
Definition: JetCalibStepsConfig.py:196
python.StandardJetContext.inputsFromContext
def inputsFromContext(inputKey, prefix="", suffix="")
Definition: StandardJetContext.py:112
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
JetCalibStepsConfig.load_yaml_cfg
def load_yaml_cfg(configFile)
Definition: JetCalibStepsConfig.py:205