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 DiTauIDVarDecoratorCfg,
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}",
129 DiTauPtDecorName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.ditau_pt',
130 DiTauFCoreLeadName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.f_core_lead',
131 DiTauFCoreSubLeadName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.f_core_subl',
132 DiTauSubjetSublName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.f_subjet_subl',
133 DiTauSubjetsName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.f_subjets',
134 DiTauRMaxLeadName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.R_max_lead',
135 DiTauRMaxSubleadName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.R_max_subl',
136 DiTauNTrackName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.n_track',
137 DiTauRTrackAllName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.R_track_all',
138 DiTauRIsoTrackAllName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.R_isotrack',
139 DiTauRTrackSubleadName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.R_tracks_subl',
140 DiTauMCoreLeadName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.m_core_lead',
141 DiTauMCoreSubleadName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.m_core_subl',
142 DiTauMTrackLeadName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.m_tracks_lead',
143 DiTauD0LeadTrackLeadName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.d0_leadtrack_lead',
144 DiTauD0SubleadTrackLeadName = f
'{flags_ditau.DiTau.DiTauContainer[0]}.d0_leadtrack_subl',
145 DiTauFIsotracks = f
'{flags_ditau.DiTau.DiTauContainer[0]}.f_isotracks',
149 acc.addEventAlgo(CompFactory.DiTauBuilder(
151 DiTauContainer =
recordable(flags_ditau.DiTau.DiTauContainer[0]),
153 SeedJetName = inputJets,
154 minPt = flags_ditau.DiTau.JetSeedPt,
155 maxEta = flags_ditau.DiTau.MaxEta,
156 Rjet = flags_ditau.DiTau.Rjet,
157 Rsubjet = flags_ditau.DiTau.Rsubjet,
158 Rcore = flags_ditau.DiTau.Rcore,
164 prmVtxKey = flags.Trigger.InDetTracking.fullScan.vertex
165 roiTool = CompFactory.ViewCreatorCentredOnJetWithPVConstraintROITool(
166 RoisWriteHandleKey =
recordable(
'HLT_Roi_DiTau' ),
167 VertexReadHandleKey = prmVtxKey,
168 PrmVtxLink = prmVtxKey.replace(
"HLT_",
"" ),
173 ditauAcc = InViewRecoCA(
"Ditau", RoITool = roiTool,
174 InViewRoIs =
"InViewRoIs",
175 mergeUsingFeature =
True,
176 RequireParentView =
False,
177 ViewFallThrough =
True,
178 InViewJets = f
'{jet_name}_DiTau_jets',
179 PlaceJetInView =
True)
180 InputMakerAlg = ditauAcc.inputMaker()
184 inputRoI=InputMakerAlg.InViewRoIs,
185 inputVertex=prmVtxKey,
186 inputJets=InputMakerAlg.InViewJets
188 ditauAcc.mergeReco(trackingAcc)
191 inputJets = InputMakerAlg.InViewJets
192 inputVertex = prmVtxKey
193 inputFSTracks = flags.Trigger.InDetTracking.fullScan.tracks_FTF
194 inputIDTracks = flags.Trigger.InDetTracking.diTau.tracks_IDTrig
195 inputCells =
"CaloCellsFS"
196 inputClusters =
"HLT_TopoCaloClustersFS"
201 inputVertex=inputVertex,
202 inputFSTracks=inputFSTracks,
203 inputTracks=inputIDTracks,
204 inputCells=inputCells,
205 inputClusters=inputClusters
208 ditauAcc.mergeReco(recoAcc)
210 ditauAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
211 name=f
'{ditauAcc.name}RecoVDV',
213 (
'CaloCellContainer', f
'StoreGateSvc+{inputCells}'),
214 (
'xAOD::CaloClusterContainer', f
'StoreGateSvc+{inputClusters}'),
215 (
'CaloClusterCellLinkContainer', f
'StoreGateSvc+{inputClusters}_links'),
216 (
'xAOD::TrackParticleContainer' , f
'StoreGateSvc+{inputFSTracks}'),
220 selAcc = SelectionCA(f
'Trig_DitauReco_{seq_name}')
221 selAcc.mergeReco(ditauAcc)
222 selAcc.addHypoAlgo(CompFactory.TrigDiTauHypoAlg(
223 f
'DiTauHypoAlg_{seq_name}',
224 DiTauJets_key=
'HLT_DiTauJets',
227 from TrigDitauHypo.TrigDiTauHypoTool
import TrigDiTauHypoToolFromDict
228 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigDiTauHypoToolFromDict)