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.TrigTauJetHypoAlg(
'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.TrigTauTrackingHypoAlg(
188 f
'TauFastTrackHypoAlg_PassBy{name}',
189 RoIKey=
'UpdatedTrackLRTRoI' if name ==
'LRT' else '',
190 TracksKey=TrackCollection
196 from TrigTauHypo.TrigTauHypoTool
import TrigTauTrackingHypoToolFromDict
197 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauTrackingHypoToolFromDict)
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.tracks_FTF
if flags.Trigger.useActsTracking \
253 else flags.Trigger.InDetTracking.tauCore.tracks_FTF
254 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
255 name=f
'{recoAcc.name}RecoVDV',
257 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
258 (
'xAOD::TrackParticleContainer', 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.TrigTauTrackingHypoAlg(
289 f
'TauFastTrackHypoAlg_PassBy{name}',
290 TracksKey=flags.Tracking.ActiveConfig.tracks_FTF,
296 from TrigTauHypo.TrigTauHypoTool
import TrigTauTrackingHypoToolFromDict
297 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauTrackingHypoToolFromDict)
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.TrigTauTrackingHypoAlg(
369 f
'TauPrecTrackHypoAlg_PassBy{name}',
370 TracksKey=flags.Tracking.ActiveConfig.tracks_IDTrig,
376 from TrigTauHypo.TrigTauHypoTool
import TrigTauTrackingHypoToolFromDict
377 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauTrackingHypoToolFromDict)
387 return _precTrackSeq(newflags, name=
'Iso', is_probe_leg=is_probe_leg)
395 return _precTrackSeq(newflags, name=
'LRT', is_probe_leg=is_probe_leg)
403 def _tauPrecisionSeq(flags, name, tau_ids: list[str], output_name=
None, is_probe_leg=
False):
404 '''Precision Tau step sequence, for all ID and reconstruction settings'''
407 InViewName =
'Iso' if 'LRT' not in name
else 'LRT'
412 recoAcc = InViewRecoCA(
413 name=f
'tauPrecisionReco_{name}',
414 RoITool=CompFactory.ViewCreatorPreviousROITool(),
415 InViewRoIs=f
'tauFastTrack{InViewName}',
416 RequireParentView=
True,
417 ViewFallThrough=
True,
418 isProbe=is_probe_leg,
420 RoIs = recoAcc.inputMaker().InViewRoIs
425 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
426 name=f
'{recoAcc.name}RecoVDV',
428 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
429 (
'SG::AuxElement',
'StoreGateSvc+EventInfo.averageInteractionsPerCrossing'),
430 (
'xAOD::VertexContainer', f
'StoreGateSvc+{flags.Tracking.ActiveConfig.vertex}'),
431 (
'xAOD::TrackParticleContainer', f
'StoreGateSvc+{flags.Tracking.ActiveConfig.tracks_IDTrig}'),
432 (
'xAOD::TauTrackContainer',
'StoreGateSvc+HLT_tautrack_dummy'),
433 (
'xAOD::TauJetContainer',
'StoreGateSvc+HLT_TrigTauRecMerged_CaloMVAOnly'),
441 from TrigTauRec.TrigTauRecConfig
import trigTauRecMergedPrecisionMVACfg
447 input_tracks=flags.Tracking.ActiveConfig.tracks_IDTrig,
448 output_name=output_name,
454 selAcc = SelectionCA(f
'tauPrecision_{name}', isProbe=is_probe_leg)
455 selAcc.mergeReco(recoAcc)
461 selAcc.addHypoAlgo(CompFactory.TrigTauJetHypoAlg(
462 f
'TauPrecisionHypoAlg_{name}',
463 TauJetsKey=f
'HLT_TrigTauRecMerged_{output_name if output_name else name}'
469 from TrigTauHypo.TrigTauHypoTool
import TrigTauPrecisionHypoToolFromDict
470 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauPrecisionHypoToolFromDict)
480 from TriggerMenuMT.HLT.Tau.TauConfigurationTools
import getPrecisionSequenceTauIDs
490 from TriggerMenuMT.HLT.Tau.TauConfigurationTools
import getPrecisionSequenceTauIDs