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'''
515
516 if jet=='em':
517 seq_name="EM"
518 output_name='EM'
519 orig_seq_name='EM'
520 orig_seq_name = seq_name
521 if output_name is None: output_name = orig_seq_name
522
523 if do_lrt:
524 tracking_cfg = 'tauLRT'
525 input_rois = 'tauFastTrackLRT'
526 else:
527 tracking_cfg = 'tauIsoEM' if jet=='em' else 'tauIso'
528 input_rois = 'tauFastTrackIsoEM' if jet=='em' else 'tauFastTrackIso'
529
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'
536 else:
537 input_taus = 'HLT_TrigTauRecMerged_CaloEMOnly' if jet=='em' else 'HLT_TrigTauRecMerged_CaloMVAOnly'
538 input_tau_tracks = 'HLT_tautrack_dummy'
539
540
541 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
542
543
544
545 from TriggerMenuMT.HLT.Tau.TauConfigurationTools import getPrecisionSequenceTauIDs
546 tau_ids = getPrecisionSequenceTauIDs(flags, seq_name, orig_seq_name)
547
548
549
550 decors_to_copy = []
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)]
555
556
557
558
559
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,
567 )
568 RoIs = recoAcc.inputMaker().InViewRoIs
569
570
571
572
573 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
574 name=f'{recoAcc.name}RecoVDV',
575 DataObjects={
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}'),
582 } | {
583 ('xAOD::TauJetContainer', f'StoreGateSvc+{input_taus}.{var}')
584 for var in decors_to_copy
585 }
586 ))
587
588
589
590
591
592 from TrigTauRec.TrigTauRecConfig import trigTauRecMergedPrecisionMVACfg
593 recoAcc.mergeReco(trigTauRecMergedPrecisionMVACfg(
594 flags,
595 seq_name,
596 tau_ids=tau_ids,
597 input_rois=RoIs,
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,
603 ))
604
605
606
607
608 selAcc = SelectionCA(f'tauPrecision_{seq_name}', isProbe=is_probe_leg)
609 selAcc.mergeReco(recoAcc)
610
611
612
613
614
615 selAcc.addHypoAlgo(CompFactory.TrigTauJetHypoAlg(
616 f'TauPrecisionHypoAlg_{seq_name}',
617 TauJetsKey=f'HLT_TrigTauRecMerged_{output_name}',
618 ))
619
620
621
622
623 from TrigTauHypo.TrigTauHypoTool import TrigTauPrecisionHypoToolFromDict
624 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauPrecisionHypoToolFromDict)
625
626 return menuSeq