93def tauCaloHitsSequenceGenCfg(orig_flags: AthConfigFlags, seq_name: str, precision_seq_name: str, hitz_config: tuple[str, float] | None = None, is_probe_leg: bool = False) -> MenuSequence:
94 '''Calorimeter+Hits RoI updating and preselection hypothesis'''
95
96 tracking_cfg = f'tauHits{seq_name}'
97 next_tracking_cfg = f'tauCore{seq_name}'
98
99 flags = getFlagsForActiveConfig(orig_flags, tracking_cfg, log)
100
101
102 newRoITool = CompFactory.ViewCreatorFetchFromViewROITool(
103 RoisWriteHandleKey=recordable(flags.Tracking.ActiveConfig.roi),
104 InViewRoIs='UpdatedCaloRoI',
105 doResize=True,
106 RoIEtaWidth=flags.Tracking.ActiveConfig.etaHalfWidth,
107 RoIPhiWidth=flags.Tracking.ActiveConfig.phiHalfWidth,
108 RoIZedWidth=flags.Tracking.ActiveConfig.zedHalfWidth,
109 )
110
111
112
113
114 from TriggerJobOpts.TriggerConfigFlags import ROBPrefetching
115 if doExtraPrefetching := ROBPrefetching.TauCoreLargeRoI in flags.Trigger.ROBPrefetchingOptions:
116 prefetch_flags = getFlagsForActiveConfig(orig_flags, f'tauIso{seq_name}', log)
117 prefetchRoIUpdater = CompFactory.RoiUpdaterTool(
118 useBeamSpot=True,
119 NSigma=1.5,
120 EtaWidth=prefetch_flags.Tracking.ActiveConfig.etaHalfWidth,
121 PhiWidth=prefetch_flags.Tracking.ActiveConfig.phiHalfWidth,
122 ZedWidth=prefetch_flags.Tracking.ActiveConfig.zedHalfWidth,
123 )
124
125 prefetchRoITool = CompFactory.ViewCreatorExtraPrefetchROITool(
126 RoiCreator=newRoITool,
127 RoiUpdater=prefetchRoIUpdater,
128 ExtraPrefetchRoIsKey=f'{newRoITool.RoisWriteHandleKey}_forPrefetching',
129 PrefetchRoIsLinkName='prefetchRoI',
130 MergeWithOriginal=True,
131 )
132
133
134
135
136
137 recoAcc = InViewRecoCA(
138 name=f'tauCaloHits_{seq_name}',
139 RoITool=prefetchRoITool if doExtraPrefetching else newRoITool,
140 ViewFallThrough=True,
141 RequireParentView=True,
142 mergeUsingFeature=True,
143 isProbe=is_probe_leg
144 )
145 RoIs = recoAcc.inputMaker().InViewRoIs
146
147
148
149
150 recoAcc.addRecoAlgo(CompFactory.AthViews.ViewDataVerifier(
151 name=f'{recoAcc.name}RecoVDV',
152 DataObjects={
153 ('TrigRoiDescriptorCollection', f'StoreGateSvc+{RoIs}'),
154 ('xAOD::EventInfo', 'StoreGateSvc+EventInfo'),
155 ('xAOD::TauJetContainer', 'StoreGateSvc+HLT_TrigTauRecMerged_CaloMVAOnly'),
156 ('xAOD::TauTrackContainer', 'StoreGateSvc+HLT_tautrack_dummy'),
157 }
158 ))
159
160
161
162
163
164 from TrigInDetConfig.TrigInDetConfig import trigInDetSPFormationCfg
165 recoAcc.mergeReco(trigInDetSPFormationCfg(flags, roisKey=RoIs, signatureName=tracking_cfg))
166
167
168 if flags.Detector.GeometryITk:
169 from InDetConfig.InDetPrepRawDataToxAODConfig import ITkPixelPrepDataToxAODCfg as PixelPrepDataToxAODCfg
170 pixel_cluster_container = 'ITkTrigPixelClusters'
171 else:
172 from InDetConfig.InDetPrepRawDataToxAODConfig import InDetPixelPrepDataToxAODCfg as PixelPrepDataToxAODCfg
173 pixel_cluster_container = 'PixelTrigClusters'
174
175 recoAcc.mergeReco(PixelPrepDataToxAODCfg(
176 flags,
177 SiClusterContainer=pixel_cluster_container,
178 OutputClusterContainer='PixelClusters',
179 WriteNNinformation=False,
180 UseTruthInfo=False,
181 ))
182
183
184 from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
185 recoAcc.mergeReco(BeamSpotCondAlgCfg(flags))
186
187
188 from TrigTauRec.TrigTauRecConfig import trigTauRecMergedCaloHitsCfg
189 from .TauConfigurationTools import getHitZAlgs, getCaloHitsPreselAlgs
190 recoAcc.mergeReco(trigTauRecMergedCaloHitsCfg(
191 flags,
192 seq_name,
193 hitz_algs=getHitZAlgs(flags, f'{precision_seq_name}_{seq_name}', precision_seq_name),
194 presel_algs=getCaloHitsPreselAlgs(flags, f'{precision_seq_name}_{seq_name}', precision_seq_name),
195 input_rois=RoIs,
196 ))
197
198
199 if hitz_config:
200
201 from TrigTauRec.TrigTauRoIToolsConfig import tauHitZRoiUpdaterCfg
202 recoAcc.mergeReco(tauHitZRoiUpdaterCfg(
203 flags,
204 inputRoIs=RoIs,
205 outputRoIs=f'UpdatedCaloHits{seq_name}RoI',
206 taus='HLT_TrigTauRecMerged_CaloHits',
207 hitz_alg=hitz_config[0],
208 max_pt=1000e3,
209 max_sigma=hitz_config[1],
210 tracking_cfg=next_tracking_cfg,
211 ))
212
213
214
215 from TrigGenericAlgs.TrigGenericAlgsConfig import ROBPrefetchingAlgCfg_Si
216 sfx = '_probe' if is_probe_leg else ''
217 robPrefetchAlg = ROBPrefetchingAlgCfg_Si(flags, nameSuffix=f'IM_{recoAcc.name}{sfx}')
218 if doExtraPrefetching:
219 robPrefetchAlg.RoILinkName = prefetchRoITool.PrefetchRoIsLinkName
220
221
222
223
224 selAcc = SelectionCA(f'tauCaloHits_{seq_name}', isProbe=is_probe_leg)
225 selAcc.mergeReco(recoAcc, robPrefetchCA=robPrefetchAlg)
226
227
228
229
230 selAcc.addHypoAlgo(CompFactory.TrigTauJetHypoAlg(f'TauCaloHitsHypoAlg_{seq_name}', TauJetsKey='HLT_TrigTauRecMerged_CaloHits'))
231
232
233
234
235 from TrigTauHypo.TrigTauHypoTool import TrigTauCaloHitsHypoToolFromDict
236 menuSeq = MenuSequence(flags, selAcc, HypoToolGen=TrigTauCaloHitsHypoToolFromDict)
237
238 return menuSeq
239
240
241
242
243
244
245
246@AccumulatorCache