3 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory
import CompFactory
5 from TriggerMenuMT.HLT.Config.MenuComponents
import MenuSequence, SelectionCA, InViewRecoCA
6 from DiTauRec.DiTauToolsConfig
import (
7 SeedJetBuilderCfg, SubjetBuilderCfg,
10 DiTauConstituentFinderCfg,
12 DiTauExtraVarDecoratorCfg,
13 DiTauOnnxScoreCalculatorCfg,
17 from TrigEDMConfig.TriggerEDM
import recordable
19 from AthenaCommon.Logging
import logging
20 log = logging.getLogger(__name__)
23 def ditauTrackingCfg(flags, inputRoI: str, inputVertex: str, inputJets: str) -> ComponentAccumulator:
25 from TrigInDetConfig.utils
import getFlagsForActiveConfig
28 from TrigInDetConfig.InnerTrackingTrigSequence
import InnerTrackingTrigSequence
29 seq = InnerTrackingTrigSequence.create(trkflags,
30 trkflags.Tracking.ActiveConfig.input_name,
32 inView =
"VDVInDetFTF")
33 acc = seq.sequence(
"FastTrackFinder")
34 acc.merge(seq.sequenceAfterPattern())
36 verifier = CompFactory.AthViews.ViewDataVerifier(name =
'VDVsecondStageDitauTracking',
37 DataObjects = {(
'xAOD::VertexContainer', f
'StoreGateSvc+{inputVertex}'),
38 (
'xAOD::JetContainer', f
'StoreGateSvc+{inputJets}')} )
39 acc.addEventAlgo(verifier)
43 def JetTVAAlgCfg(flags, inputTracks, inputVertex, name="HLT_DiTauRec_JetAlgorithm"):
44 """Configure the JetAlgorithm"""
47 tools = [acc.popToolsAndMerge(
50 TrackParticleContainer = inputTracks,
51 VertexContainer = inputVertex,
52 TrackVertexAssociation =
"HLT_JetTrackVtxAssoc_forDiTaus"
57 acc.addEventAlgo(CompFactory.JetAlgorithm(name, Tools = tools))
60 def ditauRecoCfg(flags, inputJets: str, inputVertex: str, inputFSTracks: str, inputTracks: str, inputCells: str, inputClusters: str) -> ComponentAccumulator:
61 from .DitauConfigFlagsHLT
import createDiTauConfigFlags
67 inputTracks=inputFSTracks,
68 inputVertex=inputVertex,
75 TrackVertexAssociation =
"HLT_JetTrackVtxAssoc_forDiTaus",
76 PrimVtxContainerName = inputVertex,
77 AssociatedTracks =
"GhostTrack_ftf"
81 TrackParticleContainer=inputTracks
89 ditauPtDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.ditau_pt",
90 fCoreLeadDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.f_core_lead",
91 fCoreSublDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.f_core_subl",
92 fSubjetLeadDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.f_subjet_lead",
93 fSubjetSublDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.f_subjet_subl",
94 fSubjetsDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.f_subjets",
95 fTrackLeadDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.f_track_lead",
96 fTrackSublDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.f_track_subl",
97 RMaxLeadDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.R_max_lead",
98 RMaxSublDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.R_max_subl",
99 nTrackDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.n_track",
100 nTracksLeadDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.n_tracks_lead",
101 nTracksSublDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.n_tracks_subl",
102 nIsotrackDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.n_isotrack",
103 RTrackDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.R_track",
104 RTrackCoreDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.R_track_core",
105 RTrackAllDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.R_track_all",
106 RIsotrackDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.R_isotrack",
107 RCoreLeadDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.R_core_lead",
108 RCoreSublDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.R_core_subl",
109 RTracksLeadDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.R_tracks_lead",
110 RTracksSublDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.R_tracks_subl",
111 MTrackDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.m_track",
112 MTrackCoreDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.m_track_core",
113 MCoreLeadDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.m_core_lead",
114 MCoreSublDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.m_core_subl",
115 MTrackAllDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.m_track_all",
116 MTracksLeadDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.m_tracks_lead",
117 MTracksSublDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.m_tracks_subl",
118 EFracSublDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.E_frac_subl",
119 EFracSubsublDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.E_frac_subsubl",
120 RSubjetsSublDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.R_subjets_subl",
121 RSubjetsSubsublDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.R_subjets_subsubl",
122 d0LeadtrackLeadDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.d0_leadtrack_lead",
123 d0LeadtrackSublDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.d0_leadtrack_subl",
124 fIsotracksDecName = f
"{flags_ditau.DiTau.DiTauContainer[0]}.f_isotracks",
128 onnxModelPath = f
"{flags_ditau.DiTau.CalibFolder}{flags_ditau.DiTau.DiTauIDModel}",
132 acc.addEventAlgo(CompFactory.DiTauBuilder(
134 DiTauContainer =
recordable(flags_ditau.DiTau.DiTauContainer[0]),
136 SeedJetName = inputJets,
137 minPt = flags_ditau.DiTau.JetSeedPt,
138 maxEta = flags_ditau.DiTau.MaxEta,
139 Rjet = flags_ditau.DiTau.Rjet,
140 Rsubjet = flags_ditau.DiTau.Rsubjet,
141 Rcore = flags_ditau.DiTau.Rcore,
147 prmVtxKey = flags.Trigger.InDetTracking.fullScan.vertex
148 roiTool = CompFactory.ViewCreatorCentredOnJetWithPVConstraintROITool(
149 RoisWriteHandleKey =
recordable(
'HLT_Roi_DiTau' ),
150 VertexReadHandleKey = prmVtxKey,
151 PrmVtxLink = prmVtxKey.replace(
"HLT_",
"" ),
156 ditauAcc = InViewRecoCA(
"Ditau", RoITool = roiTool,
157 InViewRoIs =
"InViewRoIs",
158 mergeUsingFeature =
True,
159 RequireParentView =
False,
160 ViewFallThrough =
True,
161 InViewJets = f
'{jet_name}_DiTau_jets',
162 PlaceJetInView =
True)
163 InputMakerAlg = ditauAcc.inputMaker()
167 inputRoI=InputMakerAlg.InViewRoIs,
168 inputVertex=prmVtxKey,
169 inputJets=InputMakerAlg.InViewJets
171 ditauAcc.mergeReco(trackingAcc)
174 inputJets = InputMakerAlg.InViewJets
175 inputVertex = prmVtxKey
176 inputFSTracks = flags.Trigger.InDetTracking.fullScan.tracks_FTF
177 inputIDTracks = flags.Trigger.InDetTracking.diTau.tracks_IDTrig
178 inputCells =
"CaloCellsFS"
179 inputClusters =
"HLT_TopoCaloClustersFS"
184 inputVertex=inputVertex,
185 inputFSTracks=inputFSTracks,
186 inputTracks=inputIDTracks,
187 inputCells=inputCells,
188 inputClusters=inputClusters
191 ditauAcc.mergeReco(recoAcc)
193 ditauAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
194 name=f
'{ditauAcc.name}RecoVDV',
196 (
'CaloCellContainer', f
'StoreGateSvc+{inputCells}'),
197 (
'xAOD::CaloClusterContainer', f
'StoreGateSvc+{inputClusters}'),
198 (
'CaloClusterCellLinkContainer', f
'StoreGateSvc+{inputClusters}_links'),
199 (
'xAOD::TrackParticleContainer' , f
'StoreGateSvc+{inputFSTracks}'),
203 selAcc = SelectionCA(f
'Trig_DitauReco_{seq_name}')
204 selAcc.mergeReco(ditauAcc)
205 selAcc.addHypoAlgo(CompFactory.TrigDiTauHypoAlg(
206 f
'DiTauHypoAlg_{seq_name}',
207 DiTauJets_key=
'HLT_DiTauJets',
210 from TrigDitauHypo.TrigDiTauHypoTool
import TrigDiTauHypoToolFromDict
211 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigDiTauHypoToolFromDict)