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 selAcc = SelectionCA(
'tauCalo', isProbe=is_probe_leg)
66 selAcc.mergeReco(recoAcc)
71 selAcc.addHypoAlgo(CompFactory.TrigTauJetHypoAlg(
'TauCaloMVAHypoAlg', TauJetsKey=
'HLT_TrigTauRecMerged_CaloMVAOnly'))
76 from TrigTauHypo.TrigTauHypoTool
import TrigTauCaloMVAHypoToolFromDict
77 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauCaloMVAHypoToolFromDict)
87def tauCaloHitsSequenceGenCfg(orig_flags: AthConfigFlags, seq_name: str, precision_seq_name: str, hitz_config: tuple[str, float] |
None =
None, is_probe_leg: bool =
False) -> MenuSequence:
88 '''Calorimeter+Hits RoI updating and preselection hypothesis'''
90 tracking_cfg = f
'tauHits{seq_name}'
91 next_tracking_cfg = f
'tauCore{seq_name}'
93 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
96 newRoITool = CompFactory.ViewCreatorFetchFromViewROITool(
97 RoisWriteHandleKey=recordable(flags.Tracking.ActiveConfig.roi),
98 InViewRoIs=
'UpdatedCaloRoI',
100 RoIEtaWidth=flags.Tracking.ActiveConfig.etaHalfWidth,
101 RoIPhiWidth=flags.Tracking.ActiveConfig.phiHalfWidth,
102 RoIZedWidth=flags.Tracking.ActiveConfig.zedHalfWidth,
109 recoAcc = InViewRecoCA(
110 name=f
'tauCaloHits_{seq_name}',
112 ViewFallThrough=
True,
113 RequireParentView=
True,
114 mergeUsingFeature=
True,
117 RoIs = recoAcc.inputMaker().InViewRoIs
122 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
123 name=f
'{recoAcc.name}RecoVDV',
125 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
126 (
'xAOD::EventInfo',
'StoreGateSvc+EventInfo'),
127 (
'xAOD::TauJetContainer',
'StoreGateSvc+HLT_TrigTauRecMerged_CaloMVAOnly'),
128 (
'xAOD::TauTrackContainer',
'StoreGateSvc+HLT_tautrack_dummy'),
136 from TrigInDetConfig.TrigInDetConfig
import trigInDetSPFormationCfg
137 recoAcc.mergeReco(trigInDetSPFormationCfg(flags, roisKey=RoIs, signatureName=tracking_cfg))
140 if flags.Detector.GeometryITk:
141 from InDetConfig.InDetPrepRawDataToxAODConfig
import ITkPixelPrepDataToxAODCfg
as PixelPrepDataToxAODCfg
142 pixel_cluster_container =
'ITkTrigPixelClusters'
144 from InDetConfig.InDetPrepRawDataToxAODConfig
import InDetPixelPrepDataToxAODCfg
as PixelPrepDataToxAODCfg
145 pixel_cluster_container =
'PixelTrigClusters'
147 recoAcc.mergeReco(PixelPrepDataToxAODCfg(
149 SiClusterContainer=pixel_cluster_container,
150 OutputClusterContainer=
'PixelClusters',
151 WriteNNinformation=
False,
156 from BeamSpotConditions.BeamSpotConditionsConfig
import BeamSpotCondAlgCfg
157 recoAcc.mergeReco(BeamSpotCondAlgCfg(flags))
160 from TrigTauRec.TrigTauRecConfig
import trigTauRecMergedCaloHitsCfg
161 from .TauConfigurationTools
import getHitZAlgs, getCaloHitsPreselAlgs
162 recoAcc.mergeReco(trigTauRecMergedCaloHitsCfg(
165 hitz_algs=getHitZAlgs(flags, f
'{precision_seq_name}_{seq_name}', precision_seq_name),
166 presel_algs=getCaloHitsPreselAlgs(flags, f
'{precision_seq_name}_{seq_name}', precision_seq_name),
173 from TrigTauRec.TrigTauRoIToolsConfig
import tauHitZRoiUpdaterCfg
174 recoAcc.mergeReco(tauHitZRoiUpdaterCfg(
177 outputRoIs=f
'UpdatedCaloHits{seq_name}RoI',
178 taus=
'HLT_TrigTauRecMerged_CaloHits',
179 hitz_alg=hitz_config[0],
181 max_sigma=hitz_config[1],
182 tracking_cfg=next_tracking_cfg,
188 selAcc = SelectionCA(f
'tauCaloHits_{seq_name}', isProbe=is_probe_leg)
189 selAcc.mergeReco(recoAcc)
194 selAcc.addHypoAlgo(CompFactory.TrigTauJetHypoAlg(f
'TauCaloHitsHypoAlg_{seq_name}', TauJetsKey=
'HLT_TrigTauRecMerged_CaloHits'))
199 from TrigTauHypo.TrigTauHypoTool
import TrigTauCaloHitsHypoToolFromDict
200 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauCaloHitsHypoToolFromDict)
211def tauFTFCoreSequenceGenCfg(orig_flags: AthConfigFlags, calohits_seq_name: str |
None =
None, do_lrt: bool =
False, is_probe_leg: bool =
False) -> MenuSequence:
212 '''1st FTF step sequence, for both the tauCore(Hits) and tauLRT RoIs'''
216 tracking_cfg = next_tracking_cfg =
'tauLRT'
217 output_rois =
'UpdatedTrackLRTRoI'
220 tracking_cfg =
'tauCore'
221 next_tracking_cfg =
'tauIso'
222 output_rois =
'UpdatedTrackRoI'
224 if calohits_seq_name:
225 tracking_cfg += calohits_seq_name
226 next_tracking_cfg += calohits_seq_name
229 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
232 if calohits_seq_name:
233 name += f
'_{calohits_seq_name}'
234 input_rois = f
'UpdatedCaloHits{calohits_seq_name}RoI'
235 output_rois = f
'{output_rois[:-3]}{calohits_seq_name}RoI'
237 input_rois =
'UpdatedCaloRoI'
242 newRoITool = CompFactory.ViewCreatorFetchFromViewROITool(
243 RoisWriteHandleKey=recordable(flags.Tracking.ActiveConfig.roi),
244 InViewRoIs=input_rois,
245 doResize=
not calohits_seq_name,
246 RoIEtaWidth=flags.Tracking.ActiveConfig.etaHalfWidth,
247 RoIPhiWidth=flags.Tracking.ActiveConfig.phiHalfWidth,
248 RoIZedWidth=flags.Tracking.ActiveConfig.zedHalfWidth,
255 recoAcc = InViewRecoCA(
256 f
'tauFastTrack{name}',
258 ViewFallThrough=
True,
259 RequireParentView=
True,
260 mergeUsingFeature=
True,
263 RoIs = recoAcc.inputMaker().InViewRoIs
268 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
269 name=f
'{recoAcc.name}RecoVDV',
271 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
279 from TrigInDetConfig.TrigInDetConfig
import trigInDetFastTrackingCfg
280 recoAcc.mergeReco(trigInDetFastTrackingCfg(flags, roisKey=RoIs, signatureName=tracking_cfg))
283 TrackCollection = flags.Tracking.ActiveConfig.tracks_FTF
286 from TrigTauRec.TrigTauRoIToolsConfig
import tauTrackRoiUpdaterCfg
287 recoAcc.mergeReco(tauTrackRoiUpdaterCfg(
290 outputRoIs=output_rois,
291 tracks=TrackCollection,
294 tracking_cfg=next_tracking_cfg
if next_tracking_cfg != tracking_cfg
else None,
300 selAcc = SelectionCA(f
'tauFTF{name}', isProbe=is_probe_leg)
301 selAcc.mergeReco(recoAcc)
306 selAcc.addHypoAlgo(CompFactory.TrigTauTrackingHypoAlg(
307 f
'TauFastTrackHypoAlg_PassBy{name}',
308 RoIKey=
'UpdatedTrackLRTRoI' if do_lrt
else '',
309 TracksKey=TrackCollection,
315 from TrigTauHypo.TrigTauHypoTool
import TrigTauTrackingHypoToolFromDict
316 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauTrackingHypoToolFromDict)
328 '''2nd FTF step sequence, for the tauIso RoI'''
333 previous_tracking_cfg =
'tauCore'
334 tracking_cfg =
'tauIso'
335 if calohits_seq_name:
336 tracking_cfg += calohits_seq_name
337 previous_tracking_cfg += calohits_seq_name
339 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
343 if calohits_seq_name:
344 name += f
'_{calohits_seq_name}'
345 input_rois = f
'UpdatedTrack{calohits_seq_name}RoI'
347 input_rois =
'UpdatedTrackRoI'
351 newRoITool = CompFactory.ViewCreatorFetchFromViewROITool(
352 RoisWriteHandleKey=recordable(flags.Tracking.ActiveConfig.roi),
353 InViewRoIs=input_rois,
360 recoAcc = InViewRecoCA(
361 f
'tauFastTrack{name}',
363 RequireParentView=
True,
364 ViewFallThrough=
True,
367 RoIs = recoAcc.inputMaker().InViewRoIs
372 previous_step_flags = getFlagsForActiveConfig(orig_flags, previous_tracking_cfg, log)
373 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
374 name=f
'{recoAcc.name}RecoVDV',
376 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
377 (
'xAOD::TrackParticleContainer', f
'StoreGateSvc+{previous_step_flags.Tracking.ActiveConfig.tracks_FTF}'),
385 from TrigInDetConfig.TrigInDetConfig
import trigInDetFastTrackingCfg
386 recoAcc.mergeReco(trigInDetFastTrackingCfg(flags, roisKey=RoIs, signatureName=tracking_cfg))
390 selAcc = SelectionCA(f
'tauFTF{name}', isProbe=is_probe_leg)
391 selAcc.mergeReco(recoAcc)
396 selAcc.addHypoAlgo(CompFactory.TrigTauTrackingHypoAlg(
397 f
'TauFastTrackHypoAlg_PassBy{name}',
398 TracksKey=flags.Tracking.ActiveConfig.tracks_FTF,
404 from TrigTauHypo.TrigTauHypoTool
import TrigTauTrackingHypoToolFromDict
405 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauTrackingHypoToolFromDict)
416def tauPrecTrackSequenceGenCfg(orig_flags: AthConfigFlags, calohits_seq_name: str |
None =
None, do_lrt: bool =
False, is_probe_leg: bool =
False) -> MenuSequence:
417 '''Precision Tracking step sequence, for both the tauIso and tauLRT RoIs'''
421 tracking_cfg =
'tauLRT'
424 tracking_cfg =
'tauIso'
426 if calohits_seq_name:
427 name += f
'_{calohits_seq_name}'
428 tracking_cfg += calohits_seq_name
429 input_rois = f
'tauFastTrack{name}_{calohits_seq_name}'
431 input_rois = f
'tauFastTrack{name}'
434 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
440 recoAcc = InViewRecoCA(
441 name=f
'tauPrecTrack{name}',
442 RoITool=CompFactory.ViewCreatorPreviousROITool(),
443 InViewRoIs=input_rois,
444 RequireParentView=
True,
445 ViewFallThrough=
True,
446 isProbe=is_probe_leg,
448 RoIs = recoAcc.inputMaker().InViewRoIs
453 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
454 name=f
'{recoAcc.name}RecoVDV',
456 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
457 (
'SG::AuxElement',
'StoreGateSvc+EventInfo.averageInteractionsPerCrossing'),
465 from TrigInDetConfig.TrigInDetConfig
import trigInDetPrecisionTrackingCfg
466 recoAcc.mergeReco(trigInDetPrecisionTrackingCfg(flags, rois=RoIs, signatureName=tracking_cfg))
469 from TrigInDetConfig.TrigInDetConfig
import trigInDetVertexingCfg
470 recoAcc.mergeReco(trigInDetVertexingCfg(flags, flags.Tracking.ActiveConfig.tracks_IDTrig, flags.Tracking.ActiveConfig.vertex))
475 selAcc = SelectionCA(f
'tauPT{name}', isProbe=is_probe_leg)
476 selAcc.mergeReco(recoAcc)
481 selAcc.addHypoAlgo(CompFactory.TrigTauTrackingHypoAlg(
482 f
'TauPrecTrackHypoAlg_PassBy{name}',
483 TracksKey=flags.Tracking.ActiveConfig.tracks_IDTrig,
489 from TrigTauHypo.TrigTauHypoTool
import TrigTauTrackingHypoToolFromDict
490 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauTrackingHypoToolFromDict)
501def 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:
502 '''Precision Tau step sequence, for all ID and reconstruction settings'''
504 orig_seq_name = seq_name
505 if output_name
is None: output_name = orig_seq_name
508 tracking_cfg =
'tauLRT'
509 input_rois =
'tauFastTrackLRT'
511 tracking_cfg =
'tauIso'
512 input_rois =
'tauFastTrackIso'
514 if calohits_seq_name:
515 seq_name += f
'_{calohits_seq_name}'
516 tracking_cfg += calohits_seq_name
517 input_rois += f
'_{calohits_seq_name}'
518 input_taus =
'HLT_TrigTauRecMerged_CaloHits'
519 input_tau_tracks =
'HLT_tautrack_CaloHits_dummy'
521 input_taus =
'HLT_TrigTauRecMerged_CaloMVAOnly'
522 input_tau_tracks =
'HLT_tautrack_dummy'
525 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
529 from TriggerMenuMT.HLT.Tau.TauConfigurationTools
import getPrecisionSequenceTauIDs
530 tau_ids = getPrecisionSequenceTauIDs(flags, seq_name, orig_seq_name)
535 from .TauConfigurationTools
import getHitZAlgs, getHitZVariables, getCaloHitsPreselAlgs, getTauIDScoreVariables
536 if calohits_seq_name:
537 decors_to_copy += [var
for alg
in getHitZAlgs(flags, seq_name, orig_seq_name)
for var
in getHitZVariables(alg)]
538 decors_to_copy += [var
for alg
in getCaloHitsPreselAlgs(flags, seq_name, orig_seq_name)
for var
in getTauIDScoreVariables(alg)]
544 recoAcc = InViewRecoCA(
545 name=f
'tauPrecisionReco_{seq_name}',
546 RoITool=CompFactory.ViewCreatorPreviousROITool(),
547 InViewRoIs=input_rois,
548 RequireParentView=
True,
549 ViewFallThrough=
True,
550 isProbe=is_probe_leg,
552 RoIs = recoAcc.inputMaker().InViewRoIs
557 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
558 name=f
'{recoAcc.name}RecoVDV',
560 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
561 (
'SG::AuxElement',
'StoreGateSvc+EventInfo.averageInteractionsPerCrossing'),
562 (
'xAOD::VertexContainer', f
'StoreGateSvc+{flags.Tracking.ActiveConfig.vertex}'),
563 (
'xAOD::TrackParticleContainer', f
'StoreGateSvc+{flags.Tracking.ActiveConfig.tracks_IDTrig}'),
564 (
'xAOD::TauTrackContainer', f
'StoreGateSvc+{input_tau_tracks}'),
565 (
'xAOD::TauJetContainer', f
'StoreGateSvc+{input_taus}'),
567 (
'xAOD::TauJetContainer', f
'StoreGateSvc+{input_taus}.{var}')
568 for var
in decors_to_copy
576 from TrigTauRec.TrigTauRecConfig
import trigTauRecMergedPrecisionMVACfg
577 recoAcc.mergeReco(trigTauRecMergedPrecisionMVACfg(
582 input_tracks=flags.Tracking.ActiveConfig.tracks_IDTrig,
583 input_taus=input_taus,
584 input_tau_tracks=input_tau_tracks,
585 output_name=output_name,
586 decors_to_copy=decors_to_copy,
592 selAcc = SelectionCA(f
'tauPrecision_{seq_name}', isProbe=is_probe_leg)
593 selAcc.mergeReco(recoAcc)
599 selAcc.addHypoAlgo(CompFactory.TrigTauJetHypoAlg(
600 f
'TauPrecisionHypoAlg_{seq_name}',
601 TauJetsKey=f
'HLT_TrigTauRecMerged_{output_name}'
607 from TrigTauHypo.TrigTauHypoTool
import TrigTauPrecisionHypoToolFromDict
608 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauPrecisionHypoToolFromDict)