23 '''Calorimeter-only reconstruction and hypothesis (BRT-calibrated pT cut)'''
28 recoAcc = InViewRecoCA(name=
'tauCaloMVA', InViewRoIs=
'CaloMVA_RoIs', isProbe=is_probe_leg)
29 RoIs = recoAcc.inputMaker().InViewRoIs
35 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
36 (
'xAOD::EventInfo',
'StoreGateSvc+EventInfo'),
37 (
'SG::AuxElement',
'StoreGateSvc+EventInfo.actualInteractionsPerCrossing'),
38 (
'SG::AuxElement',
'StoreGateSvc+EventInfo.averageInteractionsPerCrossing'),
39 (
'CaloBCIDAverage',
'StoreGateSvc+CaloBCIDAverage')
41 if (
not flags.Input.isMC ):
42 Objects.add( (
'LArDeadOTXFromSC' ,
'StoreGateSvc+DeadOTXFromSC' ) )
43 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
44 name=f
'{recoAcc.name}RecoVDV',
52 from TrigCaloRec.TrigCaloRecConfig
import tauTopoClusteringCfg
53 recoAcc.mergeReco(tauTopoClusteringCfg(flags, RoIs=RoIs))
56 from TrigTauRec.TrigTauRoIToolsConfig
import tauCaloRoiUpdaterCfg
57 recoAcc.mergeReco(tauCaloRoiUpdaterCfg(flags, inputRoIs=RoIs, clusters=
'HLT_TopoCaloClustersLC'))
60 from TrigTauRec.TrigTauRecConfig
import trigTauRecMergedCaloMVACfg
61 recoAcc.mergeReco(trigTauRecMergedCaloMVACfg(flags))
65 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Calo
66 robPrefetchAlg = ROBPrefetchingAlgCfg_Calo(flags, nameSuffix=f
'IM_{recoAcc.name}_probe' if is_probe_leg
else f
'IM_{recoAcc.name}')
71 selAcc = SelectionCA(
'tauCalo', isProbe=is_probe_leg)
72 selAcc.mergeReco(recoAcc, robPrefetchCA=robPrefetchAlg)
77 selAcc.addHypoAlgo(CompFactory.TrigTauJetHypoAlg(
'TauCaloMVAHypoAlg', TauJetsKey=
'HLT_TrigTauRecMerged_CaloMVAOnly'))
82 from TrigTauHypo.TrigTauHypoTool
import TrigTauCaloMVAHypoToolFromDict
83 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauCaloMVAHypoToolFromDict)
93def tauCaloHitsSequenceGenCfg(orig_flags: AthConfigFlags, seq_name: str, precision_seq_name: str, hitz_config: tuple[str, float] |
None =
None, is_probe_leg: bool =
False) -> MenuSequence:
94 '''Calorimeter+Hits RoI updating and preselection hypothesis'''
96 tracking_cfg = f
'tauHits{seq_name}'
97 next_tracking_cfg = f
'tauCore{seq_name}'
99 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
102 newRoITool = CompFactory.ViewCreatorFetchFromViewROITool(
103 RoisWriteHandleKey=recordable(flags.Tracking.ActiveConfig.roi),
104 InViewRoIs=
'UpdatedCaloRoI',
106 RoIEtaWidth=flags.Tracking.ActiveConfig.etaHalfWidth,
107 RoIPhiWidth=flags.Tracking.ActiveConfig.phiHalfWidth,
108 RoIZedWidth=flags.Tracking.ActiveConfig.zedHalfWidth,
114 from TriggerJobOpts.TriggerConfigFlags
import ROBPrefetching
115 if doExtraPrefetching := ROBPrefetching.TauCoreLargeRoI
in flags.Trigger.ROBPrefetchingOptions:
116 prefetch_flags = getFlagsForActiveConfig(orig_flags, f
'tauIso{seq_name}', log)
117 prefetchRoIUpdater = CompFactory.RoiUpdaterTool(
120 EtaWidth=prefetch_flags.Tracking.ActiveConfig.etaHalfWidth,
121 PhiWidth=prefetch_flags.Tracking.ActiveConfig.phiHalfWidth,
122 ZedWidth=prefetch_flags.Tracking.ActiveConfig.zedHalfWidth,
125 prefetchRoITool = CompFactory.ViewCreatorExtraPrefetchROITool(
126 RoiCreator=newRoITool,
127 RoiUpdater=prefetchRoIUpdater,
128 ExtraPrefetchRoIsKey=f
'{newRoITool.RoisWriteHandleKey}_forPrefetching',
129 PrefetchRoIsLinkName=
'prefetchRoI',
130 MergeWithOriginal=
True,
137 recoAcc = InViewRecoCA(
138 name=f
'tauCaloHits_{seq_name}',
139 RoITool=prefetchRoITool
if doExtraPrefetching
else newRoITool,
140 ViewFallThrough=
True,
141 RequireParentView=
True,
142 mergeUsingFeature=
True,
145 RoIs = recoAcc.inputMaker().InViewRoIs
150 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
151 name=f
'{recoAcc.name}RecoVDV',
153 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
154 (
'xAOD::EventInfo',
'StoreGateSvc+EventInfo'),
155 (
'xAOD::TauJetContainer',
'StoreGateSvc+HLT_TrigTauRecMerged_CaloMVAOnly'),
156 (
'xAOD::TauTrackContainer',
'StoreGateSvc+HLT_tautrack_dummy'),
164 from TrigInDetConfig.TrigInDetConfig
import trigInDetSPFormationCfg
165 recoAcc.mergeReco(trigInDetSPFormationCfg(flags, roisKey=RoIs, signatureName=tracking_cfg))
168 if flags.Detector.GeometryITk:
169 from InDetConfig.InDetPrepRawDataToxAODConfig
import ITkPixelPrepDataToxAODCfg
as PixelPrepDataToxAODCfg
170 pixel_cluster_container =
'ITkTrigPixelClusters'
172 from InDetConfig.InDetPrepRawDataToxAODConfig
import InDetPixelPrepDataToxAODCfg
as PixelPrepDataToxAODCfg
173 pixel_cluster_container =
'PixelTrigClusters'
175 recoAcc.mergeReco(PixelPrepDataToxAODCfg(
177 SiClusterContainer=pixel_cluster_container,
178 OutputClusterContainer=
'PixelClusters',
179 WriteNNinformation=
False,
184 from BeamSpotConditions.BeamSpotConditionsConfig
import BeamSpotCondAlgCfg
185 recoAcc.mergeReco(BeamSpotCondAlgCfg(flags))
188 from TrigTauRec.TrigTauRecConfig
import trigTauRecMergedCaloHitsCfg
189 from .TauConfigurationTools
import getHitZAlgs, getCaloHitsPreselAlgs
190 recoAcc.mergeReco(trigTauRecMergedCaloHitsCfg(
193 hitz_algs=getHitZAlgs(flags, f
'{precision_seq_name}_{seq_name}', precision_seq_name),
194 presel_algs=getCaloHitsPreselAlgs(flags, f
'{precision_seq_name}_{seq_name}', precision_seq_name),
201 from TrigTauRec.TrigTauRoIToolsConfig
import tauHitZRoiUpdaterCfg
202 recoAcc.mergeReco(tauHitZRoiUpdaterCfg(
205 outputRoIs=f
'UpdatedCaloHits{seq_name}RoI',
206 taus=
'HLT_TrigTauRecMerged_CaloHits',
207 hitz_alg=hitz_config[0],
209 max_sigma=hitz_config[1],
210 tracking_cfg=next_tracking_cfg,
215 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
216 sfx =
'_probe' if is_probe_leg
else ''
217 robPrefetchAlg = ROBPrefetchingAlgCfg_Si(flags, nameSuffix=f
'IM_{recoAcc.name}{sfx}')
218 if doExtraPrefetching:
219 robPrefetchAlg.RoILinkName = prefetchRoITool.PrefetchRoIsLinkName
224 selAcc = SelectionCA(f
'tauCaloHits_{seq_name}', isProbe=is_probe_leg)
225 selAcc.mergeReco(recoAcc, robPrefetchCA=robPrefetchAlg)
230 selAcc.addHypoAlgo(CompFactory.TrigTauJetHypoAlg(f
'TauCaloHitsHypoAlg_{seq_name}', TauJetsKey=
'HLT_TrigTauRecMerged_CaloHits'))
235 from TrigTauHypo.TrigTauHypoTool
import TrigTauCaloHitsHypoToolFromDict
236 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauCaloHitsHypoToolFromDict)
247def tauFTFCoreSequenceGenCfg(orig_flags: AthConfigFlags, calohits_seq_name: str |
None =
None, do_lrt: bool =
False, is_probe_leg: bool =
False) -> MenuSequence:
248 '''1st FTF step sequence, for both the tauCore(Hits) and tauLRT RoIs'''
252 tracking_cfg = next_tracking_cfg =
'tauLRT'
253 output_rois =
'UpdatedTrackLRTRoI'
256 tracking_cfg =
'tauCore'
257 next_tracking_cfg =
'tauIso'
258 output_rois =
'UpdatedTrackRoI'
260 if calohits_seq_name:
261 tracking_cfg += calohits_seq_name
262 next_tracking_cfg += calohits_seq_name
265 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
268 if calohits_seq_name:
269 name += f
'_{calohits_seq_name}'
270 input_rois = f
'UpdatedCaloHits{calohits_seq_name}RoI'
271 output_rois = f
'{output_rois[:-3]}{calohits_seq_name}RoI'
273 input_rois =
'UpdatedCaloRoI'
278 newRoITool = CompFactory.ViewCreatorFetchFromViewROITool(
279 RoisWriteHandleKey=recordable(flags.Tracking.ActiveConfig.roi),
280 InViewRoIs=input_rois,
281 doResize=
not calohits_seq_name,
282 RoIEtaWidth=flags.Tracking.ActiveConfig.etaHalfWidth,
283 RoIPhiWidth=flags.Tracking.ActiveConfig.phiHalfWidth,
284 RoIZedWidth=flags.Tracking.ActiveConfig.zedHalfWidth,
290 from TriggerJobOpts.TriggerConfigFlags
import ROBPrefetching
291 if doExtraPrefetching :=
not calohits_seq_name
and tracking_cfg ==
'tauCore' and ROBPrefetching.TauCoreLargeRoI
in flags.Trigger.ROBPrefetchingOptions:
292 prefetch_flags = getFlagsForActiveConfig(orig_flags,
'tauIso', log)
293 prefetchRoIUpdater = CompFactory.RoiUpdaterTool(
296 EtaWidth=prefetch_flags.Tracking.ActiveConfig.etaHalfWidth,
297 PhiWidth=prefetch_flags.Tracking.ActiveConfig.phiHalfWidth,
298 ZedWidth=prefetch_flags.Tracking.ActiveConfig.zedHalfWidth,
301 prefetchRoITool = CompFactory.ViewCreatorExtraPrefetchROITool(
302 RoiCreator=newRoITool,
303 RoiUpdater=prefetchRoIUpdater,
304 ExtraPrefetchRoIsKey=f
'{newRoITool.RoisWriteHandleKey}_forPrefetching',
305 PrefetchRoIsLinkName=
'prefetchRoI',
306 MergeWithOriginal=
True,
313 recoAcc = InViewRecoCA(
314 f
'tauFastTrack{name}',
315 RoITool=prefetchRoITool
if doExtraPrefetching
else newRoITool,
316 ViewFallThrough=
True,
317 RequireParentView=
True,
318 mergeUsingFeature=
True,
321 RoIs = recoAcc.inputMaker().InViewRoIs
326 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
327 name=f
'{recoAcc.name}RecoVDV',
329 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
337 from TrigInDetConfig.TrigInDetConfig
import trigInDetFastTrackingCfg
338 recoAcc.mergeReco(trigInDetFastTrackingCfg(flags, roisKey=RoIs, signatureName=tracking_cfg))
341 TrackCollection = flags.Tracking.ActiveConfig.tracks_FTF
344 from TrigTauRec.TrigTauRoIToolsConfig
import tauTrackRoiUpdaterCfg
345 recoAcc.mergeReco(tauTrackRoiUpdaterCfg(
348 outputRoIs=output_rois,
349 tracks=TrackCollection,
352 tracking_cfg=next_tracking_cfg
if next_tracking_cfg != tracking_cfg
else None,
357 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
358 robPrefetchAlg = ROBPrefetchingAlgCfg_Si(flags, nameSuffix=f
'IM_{recoAcc.name}')
359 if doExtraPrefetching:
360 robPrefetchAlg.RoILinkName = prefetchRoITool.PrefetchRoIsLinkName
365 selAcc = SelectionCA(f
'tauFTF{name}', isProbe=is_probe_leg)
366 selAcc.mergeReco(recoAcc, robPrefetchCA=robPrefetchAlg)
371 selAcc.addHypoAlgo(CompFactory.TrigTauTrackingHypoAlg(
372 f
'TauFastTrackHypoAlg_PassBy{name}',
373 RoIKey=
'UpdatedTrackLRTRoI' if do_lrt
else '',
374 TracksKey=TrackCollection,
380 from TrigTauHypo.TrigTauHypoTool
import TrigTauTrackingHypoToolFromDict
381 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauTrackingHypoToolFromDict)
393 '''2nd FTF step sequence, for the tauIso RoI'''
398 previous_tracking_cfg =
'tauCore'
399 tracking_cfg =
'tauIso'
400 if calohits_seq_name:
401 tracking_cfg += calohits_seq_name
402 previous_tracking_cfg += calohits_seq_name
404 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
408 if calohits_seq_name:
409 name += f
'_{calohits_seq_name}'
410 input_rois = f
'UpdatedTrack{calohits_seq_name}RoI'
412 input_rois =
'UpdatedTrackRoI'
416 newRoITool = CompFactory.ViewCreatorFetchFromViewROITool(
417 RoisWriteHandleKey=recordable(flags.Tracking.ActiveConfig.roi),
418 InViewRoIs=input_rois,
425 recoAcc = InViewRecoCA(
426 f
'tauFastTrack{name}',
428 RequireParentView=
True,
429 ViewFallThrough=
True,
432 RoIs = recoAcc.inputMaker().InViewRoIs
437 previous_step_flags = getFlagsForActiveConfig(orig_flags, previous_tracking_cfg, log)
438 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
439 name=f
'{recoAcc.name}RecoVDV',
441 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
442 (
'xAOD::TrackParticleContainer', f
'StoreGateSvc+{previous_step_flags.Tracking.ActiveConfig.tracks_FTF}'),
450 from TrigInDetConfig.TrigInDetConfig
import trigInDetFastTrackingCfg
451 recoAcc.mergeReco(trigInDetFastTrackingCfg(flags, roisKey=RoIs, signatureName=tracking_cfg))
457 from TriggerJobOpts.TriggerConfigFlags
import ROBPrefetching
458 if ROBPrefetching.TauCoreLargeRoI
in flags.Trigger.ROBPrefetchingOptions:
459 robPrefetchAlg =
None
461 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
462 robPrefetchAlg = ROBPrefetchingAlgCfg_Si(flags, nameSuffix=f
'IM_{recoAcc.name}')
466 selAcc = SelectionCA(f
'tauFTF{name}', isProbe=is_probe_leg)
467 selAcc.mergeReco(recoAcc, robPrefetchCA=robPrefetchAlg)
472 selAcc.addHypoAlgo(CompFactory.TrigTauTrackingHypoAlg(
473 f
'TauFastTrackHypoAlg_PassBy{name}',
474 TracksKey=flags.Tracking.ActiveConfig.tracks_FTF,
480 from TrigTauHypo.TrigTauHypoTool
import TrigTauTrackingHypoToolFromDict
481 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauTrackingHypoToolFromDict)
492def tauPrecTrackSequenceGenCfg(orig_flags: AthConfigFlags, calohits_seq_name: str |
None =
None, do_lrt: bool =
False, is_probe_leg: bool =
False) -> MenuSequence:
493 '''Precision Tracking step sequence, for both the tauIso and tauLRT RoIs'''
497 tracking_cfg =
'tauLRT'
500 tracking_cfg =
'tauIso'
502 if calohits_seq_name:
503 name += f
'_{calohits_seq_name}'
504 tracking_cfg += calohits_seq_name
505 input_rois = f
'tauFastTrack{name}_{calohits_seq_name}'
507 input_rois = f
'tauFastTrack{name}'
510 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
516 recoAcc = InViewRecoCA(
517 name=f
'tauPrecTrack{name}',
518 RoITool=CompFactory.ViewCreatorPreviousROITool(),
519 InViewRoIs=input_rois,
520 RequireParentView=
True,
521 ViewFallThrough=
True,
522 isProbe=is_probe_leg,
524 RoIs = recoAcc.inputMaker().InViewRoIs
529 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
530 name=f
'{recoAcc.name}RecoVDV',
532 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
533 (
'SG::AuxElement',
'StoreGateSvc+EventInfo.averageInteractionsPerCrossing'),
541 from TrigInDetConfig.TrigInDetConfig
import trigInDetPrecisionTrackingCfg
542 recoAcc.mergeReco(trigInDetPrecisionTrackingCfg(flags, rois=RoIs, signatureName=tracking_cfg))
545 from TrigInDetConfig.TrigInDetConfig
import trigInDetVertexingCfg
546 recoAcc.mergeReco(trigInDetVertexingCfg(flags, flags.Tracking.ActiveConfig.tracks_IDTrig, flags.Tracking.ActiveConfig.vertex))
553 selAcc = SelectionCA(f
'tauPT{name}', isProbe=is_probe_leg)
554 selAcc.mergeReco(recoAcc)
559 selAcc.addHypoAlgo(CompFactory.TrigTauTrackingHypoAlg(
560 f
'TauPrecTrackHypoAlg_PassBy{name}',
561 TracksKey=flags.Tracking.ActiveConfig.tracks_IDTrig,
567 from TrigTauHypo.TrigTauHypoTool
import TrigTauTrackingHypoToolFromDict
568 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauTrackingHypoToolFromDict)
579def tauPrecisionSequenceGenCfg(orig_flags: AthConfigFlags, seq_name: str, calohits_seq_name: str |
None =
None, output_name: str |
None =
None, do_lrt: bool =
False, is_probe_leg: bool =
False) -> MenuSequence:
580 '''Precision Tau step sequence, for all ID and reconstruction settings'''
582 orig_seq_name = seq_name
583 if output_name
is None: output_name = orig_seq_name
586 tracking_cfg =
'tauLRT'
587 input_rois =
'tauFastTrackLRT'
589 tracking_cfg =
'tauIso'
590 input_rois =
'tauFastTrackIso'
592 if calohits_seq_name:
593 seq_name += f
'_{calohits_seq_name}'
594 tracking_cfg += calohits_seq_name
595 input_rois += f
'_{calohits_seq_name}'
596 input_taus =
'HLT_TrigTauRecMerged_CaloHits'
597 input_tau_tracks =
'HLT_tautrack_CaloHits_dummy'
599 input_taus =
'HLT_TrigTauRecMerged_CaloMVAOnly'
600 input_tau_tracks =
'HLT_tautrack_dummy'
603 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
607 from TriggerMenuMT.HLT.Tau.TauConfigurationTools
import getPrecisionSequenceTauIDs
608 tau_ids = getPrecisionSequenceTauIDs(flags, seq_name, orig_seq_name)
613 from .TauConfigurationTools
import getHitZAlgs, getHitZVariables, getCaloHitsPreselAlgs, getTauIDScoreVariables
614 if calohits_seq_name:
615 decors_to_copy += [var
for alg
in getHitZAlgs(flags, seq_name, orig_seq_name)
for var
in getHitZVariables(alg)]
616 decors_to_copy += [var
for alg
in getCaloHitsPreselAlgs(flags, seq_name, orig_seq_name)
for var
in getTauIDScoreVariables(alg)]
622 recoAcc = InViewRecoCA(
623 name=f
'tauPrecisionReco_{seq_name}',
624 RoITool=CompFactory.ViewCreatorPreviousROITool(),
625 InViewRoIs=input_rois,
626 RequireParentView=
True,
627 ViewFallThrough=
True,
628 isProbe=is_probe_leg,
630 RoIs = recoAcc.inputMaker().InViewRoIs
635 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
636 name=f
'{recoAcc.name}RecoVDV',
638 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
639 (
'SG::AuxElement',
'StoreGateSvc+EventInfo.averageInteractionsPerCrossing'),
640 (
'xAOD::VertexContainer', f
'StoreGateSvc+{flags.Tracking.ActiveConfig.vertex}'),
641 (
'xAOD::TrackParticleContainer', f
'StoreGateSvc+{flags.Tracking.ActiveConfig.tracks_IDTrig}'),
642 (
'xAOD::TauTrackContainer', f
'StoreGateSvc+{input_tau_tracks}'),
643 (
'xAOD::TauJetContainer', f
'StoreGateSvc+{input_taus}'),
645 (
'xAOD::TauJetContainer', f
'StoreGateSvc+{input_taus}.{var}')
646 for var
in decors_to_copy
654 from TrigTauRec.TrigTauRecConfig
import trigTauRecMergedPrecisionMVACfg
655 recoAcc.mergeReco(trigTauRecMergedPrecisionMVACfg(
660 input_tracks=flags.Tracking.ActiveConfig.tracks_IDTrig,
661 input_taus=input_taus,
662 input_tau_tracks=input_tau_tracks,
663 output_name=output_name,
664 decors_to_copy=decors_to_copy,
670 selAcc = SelectionCA(f
'tauPrecision_{seq_name}', isProbe=is_probe_leg)
671 selAcc.mergeReco(recoAcc)
677 selAcc.addHypoAlgo(CompFactory.TrigTauJetHypoAlg(
678 f
'TauPrecisionHypoAlg_{seq_name}',
679 TauJetsKey=f
'HLT_TrigTauRecMerged_{output_name}'
685 from TrigTauHypo.TrigTauHypoTool
import TrigTauPrecisionHypoToolFromDict
686 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauPrecisionHypoToolFromDict)