23 '''Calorimeter-only reconstruction and hypothesis (BRT-calibrated pT cut)'''
28 recoAcc = InViewRecoCA(name=f
'tauCalo{jet.upper()}MVA', 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',
53 from TrigCaloRec.TrigCaloRecConfig
import tauLCTopoClusteringCfg
54 recoAcc.mergeReco(tauLCTopoClusteringCfg(flags, RoIs=RoIs))
57 from TrigCaloRec.TrigCaloRecConfig
import tauEMTopoClusteringCfg
58 recoAcc.mergeReco(tauEMTopoClusteringCfg(flags, RoIs=RoIs))
61 from TrigTauRec.TrigTauRoIToolsConfig
import tauCaloRoiUpdaterCfg
62 recoAcc.mergeReco(tauCaloRoiUpdaterCfg(flags, inputRoIs=RoIs, clusters=f
'HLT_TopoCaloClusters{jet.upper()}', jet=jet))
65 from TrigTauRec.TrigTauRecConfig
import trigTauRecMergedCaloMVACfg
66 recoAcc.mergeReco(trigTauRecMergedCaloMVACfg(flags, jet=jet))
70 selAcc = SelectionCA(f
'tauCalo{jet.upper()}', isProbe=is_probe_leg)
71 selAcc.mergeReco(recoAcc)
76 selAcc.addHypoAlgo(CompFactory.TrigTauJetHypoAlg(
'TauCaloMVAHypoAlg', TauJetsKey=
'HLT_TrigTauRecMerged_CaloMVAOnly'))
78 selAcc.addHypoAlgo(CompFactory.TrigTauJetHypoAlg(
'TauCaloEMHypoAlg', TauJetsKey=
'HLT_TrigTauRecMerged_CaloEMOnly'))
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, jet: str =
'lc') -> 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=
'UpdatedCaloLCRoI',
106 RoIEtaWidth=flags.Tracking.ActiveConfig.etaHalfWidth,
107 RoIPhiWidth=flags.Tracking.ActiveConfig.phiHalfWidth,
108 RoIZedWidth=flags.Tracking.ActiveConfig.zedHalfWidth,
115 recoAcc = InViewRecoCA(
116 name=f
'tauCaloHits_{seq_name}',
118 ViewFallThrough=
True,
119 RequireParentView=
True,
120 mergeUsingFeature=
True,
123 RoIs = recoAcc.inputMaker().InViewRoIs
128 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
129 name=f
'{recoAcc.name}RecoVDV',
131 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
132 (
'xAOD::EventInfo',
'StoreGateSvc+EventInfo'),
133 (
'xAOD::TauJetContainer',
'StoreGateSvc+HLT_TrigTauRecMerged_CaloMVAOnly'),
134 (
'xAOD::TauTrackContainer',
'StoreGateSvc+HLT_tautrack_dummy'),
142 from TrigInDetConfig.TrigInDetConfig
import trigInDetSPFormationCfg
143 recoAcc.mergeReco(trigInDetSPFormationCfg(flags, roisKey=RoIs, signatureName=tracking_cfg))
146 if flags.Detector.GeometryITk:
147 from InDetConfig.InDetPrepRawDataToxAODConfig
import ITkPixelPrepDataToxAODCfg
as PixelPrepDataToxAODCfg
148 pixel_cluster_container =
'ITkTrigPixelClusters'
150 from InDetConfig.InDetPrepRawDataToxAODConfig
import InDetPixelPrepDataToxAODCfg
as PixelPrepDataToxAODCfg
151 pixel_cluster_container =
'PixelTrigClusters'
153 recoAcc.mergeReco(PixelPrepDataToxAODCfg(
155 SiClusterContainer=pixel_cluster_container,
156 OutputClusterContainer=
'PixelClusters',
157 WriteNNinformation=
False,
162 from BeamSpotConditions.BeamSpotConditionsConfig
import BeamSpotCondAlgCfg
163 recoAcc.mergeReco(BeamSpotCondAlgCfg(flags))
166 from TrigTauRec.TrigTauRecConfig
import trigTauRecMergedCaloHitsCfg
167 from .TauConfigurationTools
import getHitZAlgs, getCaloHitsPreselAlgs
168 recoAcc.mergeReco(trigTauRecMergedCaloHitsCfg(
171 hitz_algs=getHitZAlgs(flags, f
'{precision_seq_name}_{seq_name}', precision_seq_name),
172 presel_algs=getCaloHitsPreselAlgs(flags, f
'{precision_seq_name}_{seq_name}', precision_seq_name),
180 from TrigTauRec.TrigTauRoIToolsConfig
import tauHitZRoiUpdaterCfg
181 recoAcc.mergeReco(tauHitZRoiUpdaterCfg(
184 outputRoIs=f
'UpdatedCaloHits{seq_name}RoI',
185 taus=
'HLT_TrigTauRecMerged_CaloHits',
186 hitz_alg=hitz_config[0],
188 max_sigma=hitz_config[1],
189 tracking_cfg=next_tracking_cfg,
195 selAcc = SelectionCA(f
'tauCaloHits_{seq_name}', isProbe=is_probe_leg)
196 selAcc.mergeReco(recoAcc)
201 selAcc.addHypoAlgo(CompFactory.TrigTauJetHypoAlg(f
'TauCaloHitsHypoAlg_{seq_name}', TauJetsKey=
'HLT_TrigTauRecMerged_CaloHits'))
206 from TrigTauHypo.TrigTauHypoTool
import TrigTauCaloHitsHypoToolFromDict
207 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauCaloHitsHypoToolFromDict)
218def tauFTFCoreSequenceGenCfg(orig_flags: AthConfigFlags, calohits_seq_name: str |
None =
None, do_lrt: bool =
False, is_probe_leg: bool =
False, jet: str =
'lc') -> MenuSequence:
219 '''1st FTF step sequence, for both the tauCore(Hits) and tauLRT RoIs'''
223 tracking_cfg = next_tracking_cfg =
'tauLRT'
224 output_rois =
'UpdatedTrackLRTRoI'
227 tracking_cfg =
'tauCoreEM'
228 next_tracking_cfg =
'tauIsoEM'
229 output_rois =
'UpdatedTrackEMRoI'
232 tracking_cfg =
'tauCore'
233 next_tracking_cfg =
'tauIso'
234 output_rois =
'UpdatedTrackRoI'
236 if calohits_seq_name:
237 tracking_cfg = f
'tauCore{calohits_seq_name}'
238 next_tracking_cfg = f
'tauIso{calohits_seq_name}'
241 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
244 if calohits_seq_name:
245 name = f
'Core_{calohits_seq_name}'
246 input_rois = f
'UpdatedCaloHits{calohits_seq_name}RoI'
247 output_rois = f
'UpdatedTrack{calohits_seq_name}RoI'
249 input_rois =
'UpdatedCaloEMRoI' if jet==
'em' else 'UpdatedCaloLCRoI'
254 newRoITool = CompFactory.ViewCreatorFetchFromViewROITool(
255 RoisWriteHandleKey=recordable(flags.Tracking.ActiveConfig.roi),
256 InViewRoIs=input_rois,
257 doResize=
not calohits_seq_name,
258 RoIEtaWidth=flags.Tracking.ActiveConfig.etaHalfWidth,
259 RoIPhiWidth=flags.Tracking.ActiveConfig.phiHalfWidth,
260 RoIZedWidth=flags.Tracking.ActiveConfig.zedHalfWidth,
267 recoAcc = InViewRecoCA(
268 f
'tauFastTrack{name}',
270 ViewFallThrough=
True,
271 RequireParentView=
True,
272 mergeUsingFeature=
True,
275 RoIs = recoAcc.inputMaker().InViewRoIs
280 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
281 name=f
'{recoAcc.name}RecoVDV',
283 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
291 from TrigInDetConfig.TrigInDetConfig
import trigInDetFastTrackingCfg
292 recoAcc.mergeReco(trigInDetFastTrackingCfg(flags, roisKey=RoIs, signatureName=tracking_cfg))
295 TrackCollection = flags.Tracking.ActiveConfig.tracks_FTF
298 from TrigTauRec.TrigTauRoIToolsConfig
import tauTrackRoiUpdaterCfg
299 recoAcc.mergeReco(tauTrackRoiUpdaterCfg(
302 outputRoIs=output_rois,
303 tracks=TrackCollection,
306 tracking_cfg=next_tracking_cfg
if next_tracking_cfg != tracking_cfg
else None,
312 selAcc = SelectionCA(f
'tauFTF{name}', isProbe=is_probe_leg)
313 selAcc.mergeReco(recoAcc)
318 selAcc.addHypoAlgo(CompFactory.TrigTauTrackingHypoAlg(
319 f
'TauFastTrackHypoAlg_PassBy{name}',
320 RoIKey=
'UpdatedTrackLRTRoI' if do_lrt
else '',
321 TracksKey=TrackCollection,
327 from TrigTauHypo.TrigTauHypoTool
import TrigTauTrackingHypoToolFromDict
328 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauTrackingHypoToolFromDict)
339def tauFTFIsoSequenceGenCfg(orig_flags: AthConfigFlags, calohits_seq_name: str |
None =
None, is_probe_leg: bool =
False, jet: str =
'lc'):
340 '''2nd FTF step sequence, for the tauIso RoI'''
342 name =
'IsoEM' if jet==
'em' else 'Iso'
345 previous_tracking_cfg =
'tauCoreEM' if jet==
'em' else 'tauCore'
346 tracking_cfg =
'tauIsoEM' if jet==
'em' else 'tauIso'
347 if calohits_seq_name:
348 tracking_cfg = f
'tauIso{calohits_seq_name}'
349 previous_tracking_cfg = f
'tauCore{calohits_seq_name}'
351 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
355 if calohits_seq_name:
356 name = f
'Iso_{calohits_seq_name}'
357 input_rois = f
'UpdatedTrack{calohits_seq_name}RoI'
359 input_rois =
'UpdatedTrackEMRoI' if jet==
'em' else 'UpdatedTrackRoI'
363 newRoITool = CompFactory.ViewCreatorFetchFromViewROITool(
364 RoisWriteHandleKey=recordable(flags.Tracking.ActiveConfig.roi),
365 InViewRoIs=input_rois,
372 recoAcc = InViewRecoCA(
373 f
'tauFastTrack{name}',
375 RequireParentView=
True,
376 ViewFallThrough=
True,
379 RoIs = recoAcc.inputMaker().InViewRoIs
384 previous_step_flags = getFlagsForActiveConfig(orig_flags, previous_tracking_cfg, log)
385 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
386 name=f
'{recoAcc.name}RecoVDV',
388 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
389 (
'xAOD::TrackParticleContainer', f
'StoreGateSvc+{previous_step_flags.Tracking.ActiveConfig.tracks_FTF}'),
397 from TrigInDetConfig.TrigInDetConfig
import trigInDetFastTrackingCfg
398 recoAcc.mergeReco(trigInDetFastTrackingCfg(flags, roisKey=RoIs, signatureName=tracking_cfg))
402 selAcc = SelectionCA(f
'tauFTF{name}', isProbe=is_probe_leg)
403 selAcc.mergeReco(recoAcc)
408 selAcc.addHypoAlgo(CompFactory.TrigTauTrackingHypoAlg(
409 f
'TauFastTrackHypoAlg_PassBy{name}',
410 TracksKey=flags.Tracking.ActiveConfig.tracks_FTF,
416 from TrigTauHypo.TrigTauHypoTool
import TrigTauTrackingHypoToolFromDict
417 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauTrackingHypoToolFromDict)
428def tauPrecTrackSequenceGenCfg(orig_flags: AthConfigFlags, calohits_seq_name: str |
None =
None, do_lrt: bool =
False, is_probe_leg: bool =
False, jet: str =
'lc') -> MenuSequence:
429 '''Precision Tracking step sequence, for both the tauIso and tauLRT RoIs'''
433 tracking_cfg =
'tauLRT'
435 name =
'IsoEM' if jet==
'em' else 'Iso'
436 tracking_cfg =
'tauIsoEM' if jet==
'em' else 'tauIso'
438 if calohits_seq_name:
439 name = f
'Iso_{calohits_seq_name}'
440 tracking_cfg = f
'tauIso{calohits_seq_name}'
441 input_rois = f
'tauFastTrackIso_{calohits_seq_name}'
443 input_rois = f
'tauFastTrack{name}'
446 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
452 recoAcc = InViewRecoCA(
453 name=f
'tauPrecTrack{name}',
454 RoITool=CompFactory.ViewCreatorPreviousROITool(),
455 InViewRoIs=input_rois,
456 RequireParentView=
True,
457 ViewFallThrough=
True,
458 isProbe=is_probe_leg,
460 RoIs = recoAcc.inputMaker().InViewRoIs
465 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
466 name=f
'{recoAcc.name}RecoVDV',
468 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
469 (
'SG::AuxElement',
'StoreGateSvc+EventInfo.averageInteractionsPerCrossing'),
477 from TrigInDetConfig.TrigInDetConfig
import trigInDetPrecisionTrackingCfg
478 recoAcc.mergeReco(trigInDetPrecisionTrackingCfg(flags, rois=RoIs, signatureName=tracking_cfg))
481 from TrigInDetConfig.TrigInDetConfig
import trigInDetVertexingCfg
482 recoAcc.mergeReco(trigInDetVertexingCfg(flags, flags.Tracking.ActiveConfig.tracks_IDTrig, flags.Tracking.ActiveConfig.vertex))
487 selAcc = SelectionCA(f
'tauPT{name}', isProbe=is_probe_leg)
488 selAcc.mergeReco(recoAcc)
493 selAcc.addHypoAlgo(CompFactory.TrigTauTrackingHypoAlg(
494 f
'TauPrecTrackHypoAlg_PassBy{name}',
495 TracksKey=flags.Tracking.ActiveConfig.tracks_IDTrig,
501 from TrigTauHypo.TrigTauHypoTool
import TrigTauTrackingHypoToolFromDict
502 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauTrackingHypoToolFromDict)
513def 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, jet: str =
'lc') -> MenuSequence:
514 '''Precision Tau step sequence, for all ID and reconstruction settings'''
520 orig_seq_name = seq_name
521 if output_name
is None: output_name = orig_seq_name
524 tracking_cfg =
'tauLRT'
525 input_rois =
'tauFastTrackLRT'
527 tracking_cfg =
'tauIsoEM' if jet==
'em' else 'tauIso'
528 input_rois =
'tauFastTrackIsoEM' if jet==
'em' else 'tauFastTrackIso'
530 if calohits_seq_name:
531 seq_name = f
'MVA_{calohits_seq_name}'
532 tracking_cfg = f
'tauIso{calohits_seq_name}'
533 input_rois = f
'tauFastTrackIso{calohits_seq_name}'
534 input_taus =
'HLT_TrigTauRecMerged_CaloHits'
535 input_tau_tracks =
'HLT_tautrack_CaloHits_dummy'
537 input_taus =
'HLT_TrigTauRecMerged_CaloEMOnly' if jet==
'em' else 'HLT_TrigTauRecMerged_CaloMVAOnly'
538 input_tau_tracks =
'HLT_tautrack_dummy'
541 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
545 from TriggerMenuMT.HLT.Tau.TauConfigurationTools
import getPrecisionSequenceTauIDs
546 tau_ids = getPrecisionSequenceTauIDs(flags, seq_name, orig_seq_name)
551 from .TauConfigurationTools
import getHitZAlgs, getHitZVariables, getCaloHitsPreselAlgs, getTauIDScoreVariables
552 if calohits_seq_name:
553 decors_to_copy += [var
for alg
in getHitZAlgs(flags, seq_name, orig_seq_name)
for var
in getHitZVariables(alg)]
554 decors_to_copy += [var
for alg
in getCaloHitsPreselAlgs(flags, seq_name, orig_seq_name)
for var
in getTauIDScoreVariables(alg)]
560 recoAcc = InViewRecoCA(
561 name=f
'tauPrecisionReco_{seq_name}',
562 RoITool=CompFactory.ViewCreatorPreviousROITool(),
563 InViewRoIs=input_rois,
564 RequireParentView=
True,
565 ViewFallThrough=
True,
566 isProbe=is_probe_leg,
568 RoIs = recoAcc.inputMaker().InViewRoIs
573 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
574 name=f
'{recoAcc.name}RecoVDV',
576 (
'TrigRoiDescriptorCollection', f
'StoreGateSvc+{RoIs}'),
577 (
'SG::AuxElement',
'StoreGateSvc+EventInfo.averageInteractionsPerCrossing'),
578 (
'xAOD::VertexContainer', f
'StoreGateSvc+{flags.Tracking.ActiveConfig.vertex}'),
579 (
'xAOD::TrackParticleContainer', f
'StoreGateSvc+{flags.Tracking.ActiveConfig.tracks_IDTrig}'),
580 (
'xAOD::TauTrackContainer', f
'StoreGateSvc+{input_tau_tracks}'),
581 (
'xAOD::TauJetContainer', f
'StoreGateSvc+{input_taus}'),
583 (
'xAOD::TauJetContainer', f
'StoreGateSvc+{input_taus}.{var}')
584 for var
in decors_to_copy
592 from TrigTauRec.TrigTauRecConfig
import trigTauRecMergedPrecisionMVACfg
593 recoAcc.mergeReco(trigTauRecMergedPrecisionMVACfg(
598 input_tracks=flags.Tracking.ActiveConfig.tracks_IDTrig,
599 input_taus=input_taus,
600 input_tau_tracks=input_tau_tracks,
601 output_name=output_name,
602 decors_to_copy=decors_to_copy,
608 selAcc = SelectionCA(f
'tauPrecision_{seq_name}', isProbe=is_probe_leg)
609 selAcc.mergeReco(recoAcc)
615 selAcc.addHypoAlgo(CompFactory.TrigTauJetHypoAlg(
616 f
'TauPrecisionHypoAlg_{seq_name}',
617 TauJetsKey=f
'HLT_TrigTauRecMerged_{output_name}',
623 from TrigTauHypo.TrigTauHypoTool
import TrigTauPrecisionHypoToolFromDict
624 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauPrecisionHypoToolFromDict)