3 from AthenaCommon.Logging
import logging
4 log = logging.getLogger(
'TrigDJHypoTools')
7 object_cuts_sets = {
"set1": {
"min_trk_pt": 1.0,
"trk_d0cut": 3.0,
"max_z0st": 3.0,
"d0_sigcut": 10.0}}
12 "object_cuts":
"set1",
19 "object_cuts":
"set1",
26 "object_cuts":
"set1",
30 "prompt_stage_max_prompt_trk": 2,
35 "object_cuts":
"set1",
45 threshold = [i[
'threshold']
for i
in chainDict[
'chainParts']
if i[
'signature'] ==
'UnconventionalTracking' and 'dispjet' in i[
'chainPartName']]
47 if len(threshold) != 1:
48 raise RuntimeError(
"Cannot support mutiple occurrences of dispjet in chain {}".
format(chainDict[
'chainName']))
50 return int(threshold[0])
55 values = [i[key]
for i
in chainDict[
'chainParts']
if i[
'signature'] ==
'UnconventionalTracking' and 'dispjet' in i[
'chainPartName']
and key
in i]
58 raise RuntimeError(
"Invalid chain dictionary for Displaced Jet Trigger, unable to find config value '{}' in {}".
format(key,
str(chainDict)))
63 return 'idMon:online' in chainDict[
'monGroups']
66 """ Use menu decoded chain dictionary to configure the tool """
68 name = chainDict[
'chainName']
72 cfg = config_dict[cfg_name]
75 raise RuntimeError(
"Unknown displaced jet config key: '{}'".
format(cfg_name))
77 obj_cuts = object_cuts_sets[cfg[
"object_cuts"]]
80 raise RuntimeError(
"Incorrectly configured displaced jet config key: '{}' Object cut set '{}' does not exist".
format(cfg_name, cfg[
"object_cuts"]))
82 from AthenaConfiguration.ComponentFactory
import CompFactory
83 tool = CompFactory.DisplacedJetPromptHypoTool(name)
86 tool.min_trk_pt = obj_cuts[
"min_trk_pt"]
87 tool.trk_d0cut = obj_cuts[
"trk_d0cut"]
88 tool.max_z0st = obj_cuts[
"max_z0st"]
89 tool.d0sigcut = obj_cuts[
"d0_sigcut"]
90 tool.cut_name = cfg[
"object_cuts"]
92 tool.max_prompt_trk = cfg[
"max_prompt_trk"]
93 tool.min_jet_pt =
float(threshold)
95 if "prompt_stage_max_prompt_trk" in cfg:
96 tool.max_prompt_trk = cfg[
"prompt_stage_max_prompt_trk"]
100 from AthenaMonitoringKernel.GenericMonitoringTool
import GenericMonitoringTool
103 monTool.defineHistogram(
"trk_d0sig", type=
'TH1F', path=
'EXPERT', title=
"Track d0sig", xbins=200, xmin=0.0, xmax=200.0)
104 monTool.defineHistogram(
"trk_z0st", type=
'TH1F', path=
'EXPERT', title=
"Track z0st", xbins=200, xmin=0.0, xmax=20.0)
105 monTool.defineHistogram(
"trk_d0", type=
'TH1F', path=
'EXPERT', title=
"Track d0", xbins=200, xmin=0.0, xmax=20.0)
106 monTool.defineHistogram(
"nprompt", type=
'TH1F', path=
'EXPERT', title=
"nPrompt tracks per Jet", xbins=20, xmin=0, xmax=20)
107 monTool.defineHistogram(
"pass_jet_pt", type=
'TH1F', path=
'EXPERT', title=
"pT of Jets passing the prompt selection", xbins=35, xmin=50, xmax=400)
108 monTool.defineHistogram(
"pass_jet_eta", type=
'TH1F', path=
'EXPERT', title=
"eta of Jets passing the prompt selection", xbins=30, xmin=-3, xmax=3)
110 tool.MonTool = monTool
116 """ Use menu decoded chain dictionary to configure the tool """
118 name = chainDict[
'chainName']
121 cfg = config_dict[cfg_name]
124 raise RuntimeError(
"Unknown displaced jet config key: '{}'".
format(cfg_name))
126 obj_cuts = object_cuts_sets[cfg[
"object_cuts"]]
129 raise RuntimeError(
"Incorrectly configured displaced jet config key: '{}' Object cut set '{}' does not exist".
format(cfg_name, cfg[
"object_cuts"]))
131 from AthenaConfiguration.ComponentFactory
import CompFactory
132 tool = CompFactory.DisplacedJetDispHypoTool(name)
135 tool.min_trk_pt = obj_cuts[
"min_trk_pt"]
136 tool.trk_d0cut = obj_cuts[
"trk_d0cut"]
137 tool.max_z0st = obj_cuts[
"max_z0st"]
138 tool.d0sigcut = obj_cuts[
"d0_sigcut"]
139 tool.cut_name = cfg[
"object_cuts"]
141 tool.nother_frac = cfg[
"other_frac"]
142 tool.min_disp_trk = cfg[
"min_disp_trk"]
143 tool.max_prompt_trk = cfg[
"max_prompt_trk"]
147 from AthenaMonitoringKernel.GenericMonitoringTool
import GenericMonitoringTool
150 monTool.defineHistogram(
"trk_d0sig", type=
'TH1F', path=
'EXPERT', title=
"Track d0sig", xbins=200, xmin=0.0, xmax=200.0)
151 monTool.defineHistogram(
"trk_z0st", type=
'TH1F', path=
'EXPERT', title=
"Track z0st", xbins=200, xmin=0.0, xmax=20.0)
152 monTool.defineHistogram(
"trk_d0", type=
'TH1F', path=
'EXPERT', title=
"Track d0", xbins=200, xmin=0.0, xmax=20.0)
153 monTool.defineHistogram(
"nprompt", type=
'TH1F', path=
'EXPERT', title=
"nPrompt tracks per Jet", xbins=20, xmin=0, xmax=20)
154 monTool.defineHistogram(
"ndisp", type=
'TH1F', path=
'EXPERT', title=
"nDisplaced tracks per Jet", xbins=20, xmin=0, xmax=20)
155 monTool.defineHistogram(
"frac_other", type=
'TH1F', path=
'EXPERT', title=
"Fraction of tracks which fail all cuts", xbins=20, xmin=0, xmax=1.1)
156 monTool.defineHistogram(
"pass_jet_pt", type=
'TH1F', path=
'EXPERT', title=
"pT of Jets passing the displaced selection", xbins=35, xmin=50, xmax=400)
157 monTool.defineHistogram(
"pass_jet_eta", type=
'TH1F', path=
'EXPERT', title=
"eta of Jets passing the displaced selection", xbins=30, xmin=-3, xmax=3)
159 tool.MonTool = monTool
164 name = chainDict[
'chainName']
166 from AthenaConfiguration.ComponentFactory
import CompFactory
167 tool = CompFactory.DisplacedJetRankComboHypoTool(name)
169 cfg_names = [i[
"dispjetConfig"]
for i
in chainDict[
'chainParts']
if i[
'signature'] ==
'UnconventionalTracking' and 'dispjet' in i[
'chainPartName']
and "dispjetConfig" in i]
170 cfgs = [config_dict[i]
for i
in cfg_names]
171 max_jets = [i[
"max_jets"]
for i
in cfgs
if "max_jets" in i]
172 max_rank = [i[
"max_jet_rank"]
for i
in cfgs
if "max_jet_rank" in i]
174 if len(max_jets) > 0:
175 tool.max_jets =
max(max_jets)
177 if len(max_rank) > 0:
178 tool.max_jet_rank =
max(max_rank)