5from TriggerMenuMT.HLT.Config.MenuComponents
import MenuSequence, SelectionCA, InEventRecoCA
18from TrigCaloRec.TrigCaloRecConfig
import jetmetTopoClusteringCfg, jetmetTopoClusteringCfg_LC, HICaloTowerCfg
41 log.debug(
"jet FS tracking: useDynamicRoiZWidth: %s", flags.Trigger.InDetTracking.fullScan.useDynamicRoiZWidth )
44 if flags.Trigger.InDetTracking.fullScan.useDynamicRoiZWidth:
45 roiUpdater = CompFactory.RoiUpdaterTool( useBeamSpot=
True )
47 log.info( roiUpdater )
49 InputMakerAlg = CompFactory.InputMakerForRoI(
50 "IM_Jet_TrackingStep",
51 mergeUsingFeature =
False,
52 RoITool = CompFactory.ViewCreatorFSROITool(
54 RoiUpdater=roiUpdater,
55 RoisWriteHandleKey=recordable( flags.Trigger.InDetTracking.fullScan.roi )
60 InputMakerAlg = CompFactory.InputMakerForRoI(
61 "IM_Jet_TrackingStep",
62 mergeUsingFeature =
False,
63 RoITool = CompFactory.ViewCreatorInitialROITool(),
67 elif trkopt==
"roiftf":
68 InputMakerAlg = CompFactory.EventViewCreatorAlgorithm(
70 mergeUsingFeature =
False,
71 RoITool = CompFactory.ViewCreatorJetSuperROITool(
72 'ViewCreatorJetSuperRoI',
73 RoisWriteHandleKey = recordable( flags.Trigger.InDetTracking.jetSuper.roi ),
74 RoIEtaWidth = flags.Trigger.InDetTracking.jetSuper.etaHalfWidth,
75 RoIPhiWidth = flags.Trigger.InDetTracking.jetSuper.phiHalfWidth,
76 RoIZWidth = flags.Trigger.InDetTracking.jetSuper.zedHalfWidth,
78 Views =
"JetSuperRoIViews",
79 InViewRoIs =
"InViewRoIs",
80 RequireParentView =
False,
81 ViewFallThrough =
True,
84 raise RuntimeError(f
"Unrecognised trkopt '{trkopt}' provided, choices are ['ftf','roiftf']")
89 return CompFactory.EventViewCreatorAlgorithm(
91 mergeUsingFeature =
False,
92 RoITool = CompFactory.ViewCreatorJetSuperROITool(
93 'ViewCreatorJetSuperRoIHitZ',
94 RoisWriteHandleKey = recordable(
'HLT_Roi_JetSuperHitZ' ),
95 RoIEtaWidth = flags.Trigger.InDetTracking.jetSuper.etaHalfWidth,
96 RoIPhiWidth = flags.Trigger.InDetTracking.jetSuper.phiHalfWidth,
97 RoIZWidth = flags.Trigger.InDetTracking.jetSuper.zedHalfWidth,
99 Views =
"JetSuperRoIHitZViews",
100 InViewRoIs =
"InViewRoIs",
101 RequireParentView =
False,
102 ViewFallThrough =
True,
135 """constructs CA with hypo alg given arguments """
136 if hypoType==JetHypoAlgType.PASSTHROUGH:
137 hyponame = f
"TrigStreamerHypoAlg_{jetDefStr}_passthrough"
138 hypo = CompFactory.TrigStreamerHypoAlg(hyponame)
140 assert jetsIn
is not None
141 if hypoType==JetHypoAlgType.CALOPRESEL:
142 hyponame = f
"TrigJetHypoAlg_{jetDefStr}_calopresel"
143 hypo = CompFactory.TrigJetHypoAlg(hyponame, Jets=jetsIn, DoPresel=
True)
144 elif hypoType==JetHypoAlgType.ROIPRESEL:
145 hyponame = f
"TrigJetHypoAlg_{jetDefStr}_roipresel"
146 hypo = CompFactory.TrigJetHypoAlg(hyponame, Jets=jetsIn, DoPresel=
True)
148 hyponame = f
"TrigJetHypoAlg_{jetDefStr}"
149 hypo = CompFactory.TrigJetHypoAlg(hyponame, Jets=jetsIn)
150 ca = ComponentAccumulator()
151 ca.addEventAlgo(hypo)
154def selName(recoSequenceName, hypoType=JetHypoAlgType.STANDARD):
155 """Construct selection (the name passed to SelectionCA) given reco sequence and hypo type"""
156 selname = recoSequenceName.replace(
'RecoSequence',
'MenuSequence')
157 if hypoType==JetHypoAlgType.PASSTHROUGH:
158 selname +=
"_passthrough"
160 if hypoType==JetHypoAlgType.CALOPRESEL:
161 selname +=
"_calopresel"
162 elif hypoType==JetHypoAlgType.ROIPRESEL:
163 selname +=
"_roipresel"
168 """returns function (that in turn returns hypo tool) for menu sequence"""
169 def trigStreamerHypoTool(flags, chainDict):
170 return CompFactory.TrigStreamerHypoTool(chainDict[
"chainName"])
172 JetHypoAlgType.STANDARD: trigJetHypoToolFromDict,
173 JetHypoAlgType.PASSTHROUGH: trigStreamerHypoTool,
174 JetHypoAlgType.CALOPRESEL: caloPreselJetHypoToolFromDict,
175 JetHypoAlgType.ROIPRESEL: roiPreselJetHypoToolFromDict,
189 jetsOut, jetDef = jetDefDict[
'final']
190 jetDefStr = jetDefToString(jetDef)
191 reco = InEventRecoCA(f
"jetSeqCaloPresel_{jetDefStr}_RecoSequence", inputMaker=
getCaloInputMaker())
193 if 'LC' in jetDef.inputdef.label:
194 reco.mergeReco(jetmetTopoClusteringCfg_LC(flags, RoIs=
''))
196 reco.mergeReco(jetmetTopoClusteringCfg(flags, RoIs=
''))
198 from .JetRecoSequencesConfig
import JetRecoCfg
199 jetreco = JetRecoCfg(flags, **jetDefDict)
200 reco.mergeReco(jetreco)
202 log.debug(
"Generating jet preselection menu sequence for reco %s",jetDef.fullname())
203 selAcc = SelectionCA(
selName(reco.name, hypoType=JetHypoAlgType.CALOPRESEL))
204 selAcc.mergeReco(reco)
205 selAcc.mergeHypo(
jetSelectionCfg(flags, jetDefStr=jetDefStr, jetsIn=jetsOut, hypoType=JetHypoAlgType.CALOPRESEL))
207 return MenuSequence(flags, selAcc, HypoToolGen=
hypoToolGenerator(hypoType=JetHypoAlgType.CALOPRESEL))
213 reco = InEventRecoCA(f
"jetSeqCaloReco_{clusterCalib}_RecoSequence", inputMaker=
getCaloInputMaker())
215 if clusterCalib==
'lcw':
216 reco.mergeReco(jetmetTopoClusteringCfg_LC(flags, RoIs=
''))
218 reco.mergeReco(jetmetTopoClusteringCfg(flags, RoIs=
''))
220 selAcc = SelectionCA(
selName(reco.name, hypoType=JetHypoAlgType.PASSTHROUGH))
221 selAcc.mergeReco(reco)
222 selAcc.mergeHypo(
jetSelectionCfg(flags, jetDefStr=
"caloreco", jetsIn=
None, hypoType=JetHypoAlgType.PASSTHROUGH))
224 return MenuSequence(flags, selAcc, HypoToolGen=
hypoToolGenerator(hypoType=JetHypoAlgType.PASSTHROUGH))
232 jetsOut, jetDef = jetDefDict[
'final']
233 jetDefStr = jetDefToString(jetDef)
234 reco = InEventRecoCA(f
"jetSeqCaloHypo_{jetDefStr}{'_perf' if isPerf else ''}_RecoSequence", inputMaker=
getCaloInputMaker())
236 if 'LC' in jetDef.inputdef.label:
237 reco.mergeReco(jetmetTopoClusteringCfg_LC(flags, RoIs=
''))
239 reco.mergeReco(jetmetTopoClusteringCfg(flags, RoIs=
''))
241 from .JetRecoSequencesConfig
import JetRecoCfg
242 jetreco = JetRecoCfg(flags, **jetDefDict)
243 reco.mergeReco(jetreco)
244 log.debug(
"Generating jet calo hypo menu sequence for reco %s",jetDef.fullname())
246 hypoType = JetHypoAlgType.PASSTHROUGH
if isPerf
else JetHypoAlgType.STANDARD
247 selAcc = SelectionCA(
selName(reco.name, hypoType=hypoType))
248 selAcc.mergeReco(reco)
249 selAcc.mergeHypo(
jetSelectionCfg(flags, jetDefStr=jetDefStr, jetsIn=jetsOut, hypoType=hypoType))
259 reco = InEventRecoCA(f
"jetSeqHICaloHypo_{jetRecoDict['jetDefStr']}{'_perf' if isPerf else ''}_RecoSequence", inputMaker=
getCaloInputMaker())
261 reco.mergeReco( HICaloTowerCfg(flags) )
263 from .JetHIConfig
import jetHIRecoSequenceCA
264 jetreco, jetsOut, jetDef = jetHIRecoSequenceCA(flags, clustersKey=
"HLT_HICaloClustersFS",towerKey = fs_towers, **jetRecoDict)
265 reco.mergeReco(jetreco)
266 log.debug(
"Generating jet HI calo hypo menu sequence for reco %s",jetDef.fullname())
267 hypoType = JetHypoAlgType.PASSTHROUGH
if isPerf
else JetHypoAlgType.STANDARD
268 selAcc = SelectionCA(
selName(reco.name, hypoType=hypoType))
269 selAcc.mergeReco(reco)
270 selAcc.mergeHypo(
jetSelectionCfg(flags, jetDefStr=jetRecoDict[
'jetDefStr'], jetsIn=jetsOut, hypoType=hypoType))
279 jetsOut, jetDef = jetDefDict[
'final']
280 jetDefStr = jetDefToString(jetDef)
281 trkopt = jetDef.context
282 reco = InEventRecoCA(f
"jetFSTrackingHypo_{jetDefStr}{'_perf' if isPerf else ''}_RecoSequence", inputMaker=
getTrackingInputMaker(flags,trkopt))
284 assert trkopt !=
"notrk"
285 from .JetTrackingConfig
import JetFSTrackingCfg
286 trk_acc = JetFSTrackingCfg(flags, trkopt, trkFSRoI)
287 reco.mergeReco(trk_acc)
289 from .JetRecoSequencesConfig
import JetRecoCfg
290 jetreco = JetRecoCfg(flags, **jetDefDict)
291 reco.mergeReco(jetreco)
292 log.debug(
"Generating jet tracking hypo menu sequence for reco %s",jetDef.fullname())
294 if 'PFlow' in jetDef.basename
and jetDef.basename.startswith(
'AntiKt4')
and 'sub' in jetCalibFromJetDef(jetDef):
295 pvKey = flags.Trigger.InDetTracking.fullScan.vertex_jet
296 trig_evt_info_key = recordable(
"HLT_TCEventInfo_jet")
301 TrigEventInfoRecorderAlgCfg(
303 name=
"TrigEventInfoRecorderAlg_jet",
304 decoratePFlowInfo=
True,
305 decorateEMTopoInfo=
False,
306 trigEventInfoKey=trig_evt_info_key, primaryVertexInputName=pvKey,
307 RhoKey_EMTopo=
'HLT_Kt4EMTopoEventShape', RhoKey_PFlow=
'HLT_Kt4EMPFlowEventShape'
311 hypoType = JetHypoAlgType.PASSTHROUGH
if isPerf
else JetHypoAlgType.STANDARD
312 selAcc = SelectionCA(
selName(reco.name, hypoType=hypoType))
313 selAcc.mergeReco(reco)
314 selAcc.mergeHypo(
jetSelectionCfg(flags, jetDefStr=jetDefStr, jetsIn=jetsOut, hypoType=hypoType))
328 jetDefStr = jetDefToString(preselJetDef)+
'_roiftf'
330 reco = InEventRecoCA(
331 f
"jetRoITrackJetTagHypo_{jetDefStr}_RecoSequence",
336 from ..Bjet.BjetFlavourTaggingConfig
import OnlineBeamspotAugmenterCfg
337 reco.mergeReco(OnlineBeamspotAugmenterCfg(flags))
340 from .JetRecoSequencesConfig
import (
341 FastFtaggedJetCopyAlgCfg, JetRoITrackJetTagSequenceCfg, JetViewAlgCfg, formatFilteredJetsName, JET_DEFAULT_VIEW_PT_MIN_GEV
343 ftagjet_acc, ftaggedJetDef = FastFtaggedJetCopyAlgCfg(flags,preselJetDef)
344 ftaggedJetName = recordable(ftaggedJetDef.fullname())
345 reco.mergeReco(ftagjet_acc)
347 track_acc = JetRoITrackJetTagSequenceCfg(
351 RoIs=reco.inputMaker().InViewRoIs)
353 seqname = f
"JetRoITrackJetTag_{trkopt}_RecoSequence"
354 reco.addSequence(parOR(seqname),primary=
True)
355 verifier = CompFactory.AthViews.ViewDataVerifier(
"roiftf_ftag_ViewDataVerifier")
356 verifier.DataObjects = [
357 (
'SG::AuxElement',f
'EventInfo.{dec}')
358 for dec
in [
'onlineBeamPosSigmaXY',
'onlineBeamPosX',
'onlineBeamPosY',
'onlineBeamPosZ']
360 reco.addEventAlgo(verifier,seqname)
361 reco.merge(track_acc,seqname)
362 reco.inputMaker().ViewNodeName = seqname
366 jetview_Acc = JetViewAlgCfg(flags,jetDef=ftaggedJetDef)
367 filtered_jetsIn = formatFilteredJetsName(ftaggedJetName,JET_DEFAULT_VIEW_PT_MIN_GEV)
368 reco.merge(jetview_Acc)
371 hypoType = JetHypoAlgType.ROIPRESEL
if isPresel
else JetHypoAlgType.STANDARD
372 selAcc = SelectionCA(
selName(reco.name, hypoType=hypoType))
373 selAcc.mergeReco(reco)
374 selAcc.mergeHypo(
jetSelectionCfg(flags, jetDefStr=jetDefStr, jetsIn=filtered_jetsIn, hypoType=hypoType))
375 return selAcc, hypoType
385 jetDefStr = jetDefToString(preselJetDef)+
'_roihitz'
386 reco = InEventRecoCA(
387 f
"jetRoIHitZHypo_{jetDefStr}_RecoSequence",
391 from .JetRecoSequencesConfig
import (
392 HitZJetCopyAlgCfg, formatFilteredJetsName, JET_DEFAULT_VIEW_PT_MIN_GEV
394 from .JetRecoCommon
import getDecorList
395 hitzjet_acc, hitzJetDef = HitZJetCopyAlgCfg(flags,preselJetDef)
396 hitzJetName = recordable(hitzJetDef.fullname())
397 reco.mergeReco(hitzjet_acc)
399 seqname =
"JetRoIHitZ_RecoSequence"
400 reco.addSequence(parOR(seqname),primary=
True)
401 from ..Bjet.BjetHitZConfig
import hitZRoICfg
402 reco.merge(hitZRoICfg(flags, hitzJetName, RoIs=reco.inputMaker().InViewRoIs), seqname)
403 reco.inputMaker().ViewNodeName = seqname
407 filtered_jetsIn = formatFilteredJetsName(hitzJetName,JET_DEFAULT_VIEW_PT_MIN_GEV)
408 reco.addEventAlgo(CompFactory.JetViewAlg(
409 "jetview_"+filtered_jetsIn,
410 InputContainer=hitzJetName,
411 OutputContainer=filtered_jetsIn,
412 PtMin=JET_DEFAULT_VIEW_PT_MIN_GEV*1e3,
413 DecorDeps=getDecorList(hitzJetDef),
415 return reco, filtered_jetsIn