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'''
503
504 orig_seq_name = seq_name
505 if output_name is None: output_name = orig_seq_name
506
507 if do_lrt:
508 tracking_cfg = 'tauLRT'
509 input_rois = 'tauFastTrackLRT'
510 else:
511 tracking_cfg = 'tauIso'
512 input_rois = 'tauFastTrackIso'
513
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'
520 else:
521 input_taus = 'HLT_TrigTauRecMerged_CaloMVAOnly'
522 input_tau_tracks = 'HLT_tautrack_dummy'
523
524
525 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
526
527
528
529 from TriggerMenuMT.HLT.Tau.TauConfigurationTools import getPrecisionSequenceTauIDs
530 tau_ids = getPrecisionSequenceTauIDs(flags, seq_name, orig_seq_name)
531
532
533
534 decors_to_copy = []
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)]
539
540
541
542
543
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,
551 )
552 RoIs = recoAcc.inputMaker().InViewRoIs
553
554
555
556
557 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
558 name=f'{recoAcc.name}RecoVDV',
559 DataObjects={
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}'),
566 } | {
567 ('xAOD::TauJetContainer', f'StoreGateSvc+{input_taus}.{var}')
568 for var in decors_to_copy
569 }
570 ))
571
572
573
574
575
576 from TrigTauRec.TrigTauRecConfig import trigTauRecMergedPrecisionMVACfg
577 recoAcc.mergeReco(trigTauRecMergedPrecisionMVACfg(
578 flags,
579 seq_name,
580 tau_ids=tau_ids,
581 input_rois=RoIs,
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,
587 ))
588
589
590
591
592 selAcc = SelectionCA(f'tauPrecision_{seq_name}', isProbe=is_probe_leg)
593 selAcc.mergeReco(recoAcc)
594
595
596
597
598
599 selAcc.addHypoAlgo(CompFactory.TrigTauJetHypoAlg(
600 f'TauPrecisionHypoAlg_{seq_name}',
601 TauJetsKey=f'HLT_TrigTauRecMerged_{output_name}'
602 ))
603
604
605
606
607 from TrigTauHypo.TrigTauHypoTool import TrigTauPrecisionHypoToolFromDict
608 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauPrecisionHypoToolFromDict)
609
610 return menuSeq