3 from TriggerMenuMT.HLT.Config.MenuComponents
import MenuSequence, SelectionCA, InViewRecoCA
4 from AthenaConfiguration.ComponentFactory
import CompFactory
5 from AthenaConfiguration.AccumulatorCache
import AccumulatorCache
6 from TrigEDMConfig.TriggerEDM
import recordable
7 from TrigInDetConfig.utils
import getFlagsForActiveConfig
9 from AthenaCommon.Logging
import logging
10 log = logging.getLogger(__name__)
22 '''Calorimeter-only reconstruction and hypothesis (BRT-calibrated pT cut)'''
27 recoAcc = InViewRecoCA(name=
'tauCaloMVA', InViewRoIs=
'CaloMVA_RoIs', isProbe=is_probe_leg)
28 RoIs = recoAcc.inputMaker().InViewRoIs
34 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
35 (
'xAOD::EventInfo',
'StoreGateSvc+EventInfo'),
36 (
'SG::AuxElement',
'StoreGateSvc+EventInfo.actualInteractionsPerCrossing'),
37 (
'SG::AuxElement',
'StoreGateSvc+EventInfo.averageInteractionsPerCrossing'),
38 (
'CaloBCIDAverage',
'StoreGateSvc+CaloBCIDAverage')
40 if (
not flags.Input.isMC ):
41 Objects.add( (
'LArDeadOTXFromSC' ,
'StoreGateSvc+DeadOTXFromSC' ) )
42 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
43 name=f
'{recoAcc.name}RecoVDV',
51 from TrigCaloRec.TrigCaloRecConfig
import tauTopoClusteringCfg
55 from TrigTauRec.TrigTauRoIToolsConfig
import tauCaloRoiUpdaterCfg
56 recoAcc.mergeReco(
tauCaloRoiUpdaterCfg(flags, inputRoIs=RoIs, clusters=
'HLT_TopoCaloClustersLC'))
59 from TrigTauRec.TrigTauRecConfig
import trigTauRecMergedCaloMVACfg
64 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Calo
65 robPrefetchAlg =
ROBPrefetchingAlgCfg_Calo(flags, nameSuffix=f
'IM_{recoAcc.name}_probe' if is_probe_leg
else f
'IM_{recoAcc.name}')
70 selAcc = SelectionCA(
'tauCalo', isProbe=is_probe_leg)
71 selAcc.mergeReco(recoAcc, robPrefetchCA=robPrefetchAlg)
76 selAcc.addHypoAlgo(CompFactory.TrigTauCaloHypoAlg(
'TauCaloMVAHypoAlg', TauJetsKey=
'HLT_TrigTauRecMerged_CaloMVAOnly'))
81 from TrigTauHypo.TrigTauHypoTool
import TrigTauCaloMVAHypoToolFromDict
82 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauCaloMVAHypoToolFromDict)
93 '''1st FTF step sequence, for both the tauCore and tauLRT RoIs'''
95 if name
not in [
'Core',
'LRT']:
96 raise ValueError(
'Invalid name')
100 newRoITool = CompFactory.ViewCreatorFetchFromViewROITool(
101 RoisWriteHandleKey=
recordable(flags.Tracking.ActiveConfig.roi),
102 InViewRoIs=
'UpdatedCaloRoI',
104 RoIEtaWidth=flags.Tracking.ActiveConfig.etaHalfWidth,
105 RoIPhiWidth=flags.Tracking.ActiveConfig.phiHalfWidth,
106 RoIZedWidth=flags.Tracking.ActiveConfig.zedHalfWidth,
112 from TriggerJobOpts.TriggerConfigFlags
import ROBPrefetching
113 if doExtraPrefetching := name ==
'Core' and ROBPrefetching.TauCoreLargeRoI
in flags.Trigger.ROBPrefetchingOptions:
114 prefetchRoIUpdater = CompFactory.RoiUpdaterTool(
117 EtaWidth=flags.Trigger.InDetTracking.tauIso.etaHalfWidth,
118 PhiWidth=flags.Trigger.InDetTracking.tauIso.phiHalfWidth,
119 ZedWidth=flags.Trigger.InDetTracking.tauIso.zedHalfWidth,
122 prefetchRoITool = CompFactory.ViewCreatorExtraPrefetchROITool(
123 RoiCreator=newRoITool,
124 RoiUpdater=prefetchRoIUpdater,
125 ExtraPrefetchRoIsKey=f
'{newRoITool.RoisWriteHandleKey}_forPrefetching',
126 PrefetchRoIsLinkName=
'prefetchRoI',
127 MergeWithOriginal=
True,
134 recoAcc = InViewRecoCA(
135 f
'tauFastTrack{name}',
136 RoITool=prefetchRoITool
if doExtraPrefetching
else newRoITool,
137 ViewFallThrough=
True,
138 RequireParentView=
True,
139 mergeUsingFeature=
True,
142 RoIs = recoAcc.inputMaker().InViewRoIs
147 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
148 name=f
'{recoAcc.name}RecoVDV',
150 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
158 from TrigInDetConfig.TrigInDetConfig
import trigInDetFastTrackingCfg
162 TrackCollection = flags.Tracking.ActiveConfig.tracks_FTF
165 from TrigTauRec.TrigTauRoIToolsConfig
import tauTrackRoiUpdaterCfg
168 from TrigTauRec.TrigTauRoIToolsConfig
import tauLRTRoiUpdaterCfg
173 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
175 if doExtraPrefetching:
176 robPrefetchAlg.RoILinkName = prefetchRoITool.PrefetchRoIsLinkName
181 selAcc = SelectionCA(f
'tauFTF{name}', isProbe=is_probe_leg)
182 selAcc.mergeReco(recoAcc, robPrefetchCA=robPrefetchAlg)
187 selAcc.addHypoAlgo(CompFactory.TrigTauFastTrackHypoAlg(
188 f
'TauFastTrackHypoAlg_PassBy{name}',
189 RoIForIDReadHandleKey=
'UpdatedTrackLRTRoI' if name ==
'LRT' else '',
190 FastTracksKey=TrackCollection
196 from TrigTauHypo.TrigTauHypoTool
import TrigTauFastTrackHypoToolFromDict
197 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauFastTrackHypoToolFromDict)
207 return _ftfCoreSeq(newflags, name=
'Core', is_probe_leg=is_probe_leg)
215 return _ftfCoreSeq(newflags, name=
'LRT', is_probe_leg=is_probe_leg)
224 '''2nd FTF step sequence, for the tauIso RoI'''
226 if name
not in [
'Iso']:
227 raise ValueError(
'Invalid name')
231 newRoITool = CompFactory.ViewCreatorFetchFromViewROITool(
232 RoisWriteHandleKey=
recordable(flags.Tracking.ActiveConfig.roi),
233 InViewRoIs=
'UpdatedTrackRoI'
240 recoAcc = InViewRecoCA(
241 f
'tauFastTrack{name}',
243 RequireParentView=
True,
244 ViewFallThrough=
True,
247 RoIs = recoAcc.inputMaker().InViewRoIs
252 inputTracks = flags.Trigger.ActsTracking.tauCore.trkTracks_FTF
if flags.Trigger.useActsTracking \
253 else flags.Trigger.InDetTracking.tauCore.trkTracks_FTF
254 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
255 name=f
'{recoAcc.name}RecoVDV',
257 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
258 (
'TrackCollection', f
'StoreGateSvc+{inputTracks}' ),
266 from TrigInDetConfig.TrigInDetConfig
import trigInDetFastTrackingCfg
273 from TriggerJobOpts.TriggerConfigFlags
import ROBPrefetching
274 if name ==
'Iso' and ROBPrefetching.TauCoreLargeRoI
in flags.Trigger.ROBPrefetchingOptions:
275 robPrefetchAlg =
None
277 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
282 selAcc = SelectionCA(f
'tauFTF{name}', isProbe=is_probe_leg)
283 selAcc.mergeReco(recoAcc, robPrefetchCA=robPrefetchAlg)
288 selAcc.addHypoAlgo(CompFactory.TrigTauFastTrackHypoAlg(
289 f
'TauFastTrackHypoAlg_PassBy{name}',
290 FastTracksKey=flags.Tracking.ActiveConfig.tracks_FTF,
296 from TrigTauHypo.TrigTauHypoTool
import TrigTauFastTrackHypoToolFromDict
297 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauFastTrackHypoToolFromDict)
307 return _ftfTauIsoSeq(newflags, name=
'Iso', is_probe_leg=is_probe_leg)
316 '''Precision Tracking step sequence, for both the tauIso and tauLRT RoIs'''
318 if name
not in [
'Iso',
'LRT']:
319 raise ValueError(
'Invalid name')
325 recoAcc = InViewRecoCA(
326 name=f
'tauPrecTrack{name}',
327 RoITool=CompFactory.ViewCreatorPreviousROITool(),
328 InViewRoIs=f
'tauFastTrack{name}',
329 RequireParentView=
True,
330 ViewFallThrough=
True,
331 isProbe=is_probe_leg,
333 RoIs = recoAcc.inputMaker().InViewRoIs
338 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
339 name=f
'{recoAcc.name}RecoVDV',
341 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
342 (
'SG::AuxElement',
'StoreGateSvc+EventInfo.averageInteractionsPerCrossing'),
350 from TrigInDetConfig.TrigInDetConfig
import trigInDetPrecisionTrackingCfg
354 from TrigInDetConfig.TrigInDetConfig
import trigInDetVertexingCfg
355 recoAcc.mergeReco(
trigInDetVertexingCfg(flags, flags.Tracking.ActiveConfig.tracks_IDTrig, flags.Tracking.ActiveConfig.vertex))
362 selAcc = SelectionCA(f
'tauPT{name}', isProbe=is_probe_leg)
363 selAcc.mergeReco(recoAcc)
368 selAcc.addHypoAlgo(CompFactory.TrigTauPrecTrackHypoAlg(
369 f
'TauPrecTrackHypoAlg_PassBy{name}',
370 TracksKey=flags.Tracking.ActiveConfig.tracks_IDTrig,
371 RoIForIDReadHandleKey=
'',
377 from TrigTauHypo.TrigTauHypoTool
import TrigTauPrecTrackHypoToolFromDict
378 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauPrecTrackHypoToolFromDict)
388 return _precTrackSeq(newflags, name=
'Iso', is_probe_leg=is_probe_leg)
396 return _precTrackSeq(newflags, name=
'LRT', is_probe_leg=is_probe_leg)
404 def _tauPrecisionSeq(flags, name, tau_ids: list[str], output_name=
None, is_probe_leg=
False):
405 '''Precision Tau step sequence, for all ID and reconstruction settings'''
408 InViewName =
'Iso' if 'LRT' not in name
else 'LRT'
413 recoAcc = InViewRecoCA(
414 name=f
'tauPrecisionReco_{name}',
415 RoITool=CompFactory.ViewCreatorPreviousROITool(),
416 InViewRoIs=f
'tauFastTrack{InViewName}',
417 RequireParentView=
True,
418 ViewFallThrough=
True,
419 isProbe=is_probe_leg,
421 RoIs = recoAcc.inputMaker().InViewRoIs
426 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
427 name=f
'{recoAcc.name}RecoVDV',
429 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
430 (
'SG::AuxElement',
'StoreGateSvc+EventInfo.averageInteractionsPerCrossing'),
431 (
'xAOD::VertexContainer', f
'StoreGateSvc+{flags.Tracking.ActiveConfig.vertex}'),
432 (
'xAOD::TrackParticleContainer', f
'StoreGateSvc+{flags.Tracking.ActiveConfig.tracks_IDTrig}'),
433 (
'xAOD::TauTrackContainer',
'StoreGateSvc+HLT_tautrack_dummy'),
434 (
'xAOD::TauJetContainer',
'StoreGateSvc+HLT_TrigTauRecMerged_CaloMVAOnly'),
442 from TrigTauRec.TrigTauRecConfig
import trigTauRecMergedPrecisionMVACfg
448 input_tracks=flags.Tracking.ActiveConfig.tracks_IDTrig,
449 output_name=output_name,
455 selAcc = SelectionCA(f
'tauPrecision_{name}', isProbe=is_probe_leg)
456 selAcc.mergeReco(recoAcc)
462 selAcc.addHypoAlgo(CompFactory.TrigTauPrecisionHypoAlg(
463 f
'TauPrecisionHypoAlg_{name}',
464 TauJetsKey=f
'HLT_TrigTauRecMerged_{output_name if output_name else name}'
470 from TrigTauHypo.TrigTauHypoTool
import TrigTauPrecisionHypoToolFromDict
471 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauPrecisionHypoToolFromDict)
481 from TriggerMenuMT.HLT.Tau.TauConfigurationTools
import getPrecisionSequenceTauIDs
491 from TriggerMenuMT.HLT.Tau.TauConfigurationTools
import getPrecisionSequenceTauIDs