60 toBeEmulatedTriggers: list,
61 InputChain_EMTopo: str =
'',
62 InputJetContainer_EMTopo: str =
'',
63 InputJetContainer_EMTopoPresel: str =
'',
64 InputJetContainer_PFlow: str =
'',
65 InputJetContainer_PFlowPresel: str =
'',
66 InputJetContainer_a4tcemsubjesJet: str =
'',
67 InputJetContainer_SplitJet: str =
'',
68 InputJetContainer_GSCJet: str =
'',
69 **kwargs) -> ComponentAccumulator:
70 assert isinstance(toBeEmulatedTriggers, list)
71 assert isinstance(InputChain_EMTopo, str)
72 assert isinstance(InputJetContainer_EMTopo, str)
73 assert isinstance(InputJetContainer_EMTopoPresel, str)
74 assert isinstance(InputJetContainer_PFlow, str)
75 assert isinstance(InputJetContainer_PFlowPresel, str)
76 assert isinstance(InputJetContainer_a4tcemsubjesJet, str)
77 assert isinstance(InputJetContainer_SplitJet, str)
78 assert isinstance(InputJetContainer_GSCJet, str)
80 from AthenaCommon.Logging
import logging
81 log = logging.getLogger(
'TrigBtagEmulationToolCfg')
84 if flags.GeoModel.Run
is LHCPeriod.Run2:
86 from Campaigns.Utils
import Campaign, getMCCampaign
88 if len(InputJetContainer_a4tcemsubjesJet) == 0:
89 InputJetContainer_a4tcemsubjesJet =
'HLT_xAOD__JetContainer_a4tcemsubjesFS' if campaign == Campaign.MC20a
or flags.Input.DataYear == 2016
else 'HLT_xAOD__JetContainer_a4tcemsubjesISFS'
90 if len(InputJetContainer_SplitJet) == 0:
91 InputJetContainer_SplitJet =
'HLT_xAOD__JetContainer_SplitJet'
92 if len(InputJetContainer_GSCJet) == 0:
93 if campaign != Campaign.MC20a
and flags.Input.DataYear != 2016:
94 InputJetContainer_GSCJet =
'HLT_xAOD__JetContainer_GSCJet'
96 if "StreamAOD" not in flags.Input.ProcessingTags:
97 import PyUtils.PoolFile
as PF
98 PF.PoolOpts.FAST_MODE =
True
99 for fname
in flags.Input.Files:
100 pool_file = PF.PoolFile(fname, verbose=
False)
101 btag_link_exists = any(
"BTagBtagToJetAssociator" in d.name
for d
in pool_file.data)
102 if not btag_link_exists:
103 log.error(f
"BTagBtagToJetAssociator not found in input file {fname}. Emulation of b-jet chains will be incorrect.")
104 elif flags.GeoModel.Run
is LHCPeriod.Run3:
106 if len(InputChain_EMTopo) == 0:
107 InputChain_EMTopo =
'HLT_j45_subjesgsc_ftf_L1J15'
108 if len(InputJetContainer_EMTopo) == 0:
109 InputJetContainer_EMTopo =
'HLT_AntiKt4EMTopoJets_subjesIS'
110 if len(InputJetContainer_EMTopoPresel) == 0:
111 InputJetContainer_EMTopoPresel =
'HLT_AntiKt4EMTopoJets_subjesIS'
112 if len(InputJetContainer_PFlow) == 0:
113 InputJetContainer_PFlow =
'HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf'
114 if len(InputJetContainer_PFlowPresel) == 0:
115 InputJetContainer_PFlowPresel =
'HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf'
117 raise ValueError(f
"Unsupported LHC Period {flags.GeoModel.Run}.")
120 chainDefinitions = {}
121 for chain
in toBeEmulatedTriggers:
123 from TriggerMenuMT.HLT.Config.Utility.DictFromChainName
import dictFromChainName
124 from TriggerMenuMT.HLT.Config.Utility.ChainDefInMenu
import ChainProp
126 chainParts = [
'L1item:' + chainDict[
'L1item']]
127 for chainPart
in chainDict[
'chainParts']:
131 partDefinition +=
'L1threshold:' + chainPart[
'L1threshold']
132 partDefinition +=
'|name:' + chainPart[
'chainPartName']
133 partDefinition +=
'|multiplicity:' + chainPart[
'multiplicity']
134 partDefinition +=
'|threshold:' + chainPart[
'threshold']
135 partDefinition +=
'|etaRange:' + chainPart[
'etaRange']
136 partDefinition +=
'|jvt:' + (chainPart[
'jvt']
if chainPart[
'jvt']
else '-99999')
137 partDefinition +=
'|tagger:' + chainPart[
'bTag']
138 partDefinition +=
'|jetpresel:' + chainPart[
'trkpresel']
139 partDefinition +=
'|dijetmass:' + (chainPart[
'hypoScenario'][len(
'DJMASS'):]
if (
'DJMASS' in chainPart[
'hypoScenario'])
else 'None')
140 partDefinition +=
'|isPFlow:' + (
'True' if (chainPart[
'constitType'] ==
'pf')
else 'False')
141 partDefinition +=
'|isShared:' + (
'True' if (
'SHARED' in chainPart[
'chainPartName'])
else 'False')
142 partDefinition +=
'|GSCthreshold:-99999'
143 chainParts.append(partDefinition)
144 chainName = chain.name
if isinstance(chain, ChainProp)
else chain
145 chainDefinitions[chainName] = chainParts
147 from ROOT.ChainNameParser
import HLTChainInfo
148 chainInfo = HLTChainInfo(chain)
149 chainParts = [
'L1item:' + chainInfo.l1Item()]
150 for legInfo
in chainInfo:
153 gscthreshold =
'-99999'
154 for part
in legInfo.legParts:
155 if part.startswith(
'b'):
159 elif part.startswith(
'gsc'):
160 gscthreshold =
str(part)[3:]
162 partDefinition +=
'L1threshold:' + chainInfo.l1Item()
163 partDefinition +=
'|name:' + legInfo.legName()
164 partDefinition +=
'|multiplicity:' +
str(legInfo.multiplicity)
165 partDefinition +=
'|threshold:' +
str(legInfo.threshold)
166 partDefinition +=
'|etaRange:' + eta
167 partDefinition +=
'|jvt:-99999'
168 partDefinition +=
'|tagger:' + tagger
169 partDefinition +=
'|jetpresel:nopresel'
170 partDefinition +=
'|dijetmass:None'
171 partDefinition +=
'|isPFlow:False'
172 partDefinition +=
'|isShared:False'
173 partDefinition +=
'|GSCthreshold:' + gscthreshold
174 chainParts.append(partDefinition)
175 chainDefinitions[chain] = chainParts
186 kwargs.setdefault(
'EmulatedChainDefinitions', chainDefinitions)
187 kwargs.setdefault(
'TrigDecisionTool', tdt)
188 kwargs.setdefault(
'LHCPeriod', period)
192 JetContainerName=InputJetContainer_PFlow)))
195 JetContainerName=InputJetContainer_EMTopoPresel)))
196 from TrigBjetHypo.TrigBjetBtagHypoTool
import bTaggingWP
197 from TrigBjetHypo.TrigBjetBtagHypoTool
import bbTaggingWP
199 working_points = {
"newTagger" : 1.234 }
200 working_points.update(bTaggingWP)
201 working_points.update(bbTaggingWP)
202 kwargs.setdefault(
'FTD_Remapping',
203 {
"DL1d20210519r22_pu" :
"DL1dEMUL_pu",
204 "DL1d20210519r22_pc" :
"DL1dEMUL_pc",
205 "DL1d20210519r22_pb" :
"DL1dEMUL_pb"})
209 JetContainerName=InputJetContainer_a4tcemsubjesJet)))
212 JetContainerName=InputJetContainer_SplitJet)))
215 JetContainerName=InputJetContainer_GSCJet)))
220 "mv2c2060": -0.0224729,
221 "mv2c2070": -0.509032,
222 "mv2c2077": -0.764668,
223 "mv2c2085": -0.938441,
225 working_points.update({
234 kwargs.setdefault(
'WorkingPoints', working_points)
235 acc.setPrivateTools(CompFactory.Trig.TrigBtagEmulationTool(
'TrigBtagEmulationTool', **kwargs))