ATLAS Offline Software
Loading...
Searching...
No Matches
InDetTrigSequence.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3from TrigInDetConfig.InnerTrackerTrigSequence import InnerTrackerTrigSequence
4from AthenaConfiguration.Enums import Format
5from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory import CompFactory
7from AthenaConfiguration.AthConfigFlags import AthConfigFlags
8from AthenaCommon.Logging import logging
9
10
11class InDetTrigSequence(InnerTrackerTrigSequence):
12
13 def __init__(self,flags : AthConfigFlags, signature : str, rois : str, inView : str):
14 super().__init__(flags, signature,rois,inView)
15 self.log = logging.getLogger("InDetTrigSequence")
16 self.log.info(f"signature: {self.signature} rois: {self.rois} inview: {self.inView}")
17
18
19
20 def offlinePattern(self) -> ComponentAccumulator:
21
22 ca = ComponentAccumulator()
23
24 from InDetConfig.SiSPSeededTrackFinderConfig import TrigSiSPSeededTrackFinderCfg
25 ca.merge(TrigSiSPSeededTrackFinderCfg(self.flags,
26 name = 'EFsiSPSeededTrackFinder'+self.flags.Tracking.ActiveConfig.input_name ))
27
28 self.lastTrkCollection = self.flags.Tracking.ActiveConfig.trkTracks_IDTrig
29 self.ambiPrefix = "EFAmbi"
30
31 return ca
32
33
34
35 def viewDataVerifier(self, viewVerifier='IDViewDataVerifier') -> ComponentAccumulator:
36
37 acc = ComponentAccumulator()
38
39 dataObjs = {( 'InDet::PixelClusterContainerCache' , self.flags.Trigger.InDetTracking.PixelClusterCacheKey ),
40 ( 'PixelRDO_Cache' , self.flags.Trigger.InDetTracking.PixRDOCacheKey ),
41 ( 'InDet::SCT_ClusterContainerCache' , self.flags.Trigger.InDetTracking.SCTClusterCacheKey ),
42 ( 'SCT_RDO_Cache' , self.flags.Trigger.InDetTracking.SCTRDOCacheKey ),
43 ( 'SpacePointCache' , self.flags.Trigger.InDetTracking.SpacePointCachePix ),
44 ( 'SpacePointCache' , self.flags.Trigger.InDetTracking.SpacePointCacheSCT ),
45 ( 'IDCInDetBSErrContainer_Cache' , self.flags.Trigger.InDetTracking.PixBSErrCacheKey ),
46 ( 'IDCInDetBSErrContainer_Cache' , self.flags.Trigger.InDetTracking.SCTBSErrCacheKey ),
47 ( 'xAOD::EventInfo' , 'StoreGateSvc+EventInfo' ),
48 ( 'TagInfo' , 'DetectorStore+ProcessingTags' )}
49
50 ViewDataVerifier = CompFactory.AthViews.ViewDataVerifier( name = viewVerifier + "_" + self.signature,
51 DataObjects = dataObjs)
52
53 isByteStream = self.flags.Input.Format == Format.BS
54 if not isByteStream:
55 ViewDataVerifier.DataObjects |= {( 'PixelRDO_Container' , 'PixelRDOs' ),
56 ( 'SCT_RDO_Container' , 'SCT_RDOs' )}
57
58 ViewDataVerifier.DataObjects.add(( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+%s' % self.rois ))
59
60 acc.addEventAlgo(ViewDataVerifier)
61 return acc
62
63
64
65
66 def viewDataVerifierTRT(self, viewVerifier='IDViewDataVerifierTRT') -> ComponentAccumulator:
67
68 acc = ComponentAccumulator()
69
70 ViewDataVerifier = \
71 CompFactory.AthViews.ViewDataVerifier( name = viewVerifier + "_" + self.signature,
72 DataObjects = {
73 ( 'InDet::TRT_DriftCircleContainerCache' ,
74 f'StoreGateSvc+{self.flags.Trigger.InDetTracking.TRT_DriftCircleCacheKey}' ),
75
76 }
77 )
78
79 if self.flags.Input.Format == Format.BS:
80 ViewDataVerifier.DataObjects.add(( 'TRT_RDO_Cache' , f'StoreGateSvc+{self.flags.Trigger.InDetTracking.TRTRDOCacheKey}'))
81 else:
82 ViewDataVerifier.DataObjects.add(( 'TRT_RDO_Container' , 'StoreGateSvc+TRT_RDOs' ))
83
84 acc.addEventAlgo(ViewDataVerifier)
85 return acc
86
87
88
89 def viewDataVerifierAfterDataPrep(self, viewVerifier='IDViewDataVerifierAfterDataPrep') -> ComponentAccumulator:
90
91 acc = ComponentAccumulator()
92
93 ViewDataVerifier = \
94 CompFactory.AthViews.ViewDataVerifier( name = viewVerifier + "_" + self.signature,
95 DataObjects = {
96 ( 'SpacePointContainer', 'StoreGateSvc+SCT_TrigSpacePoints' ),
97 ( 'SpacePointContainer', 'StoreGateSvc+PixelTrigSpacePoints' ),
98 ( 'SpacePointOverlapCollection', 'StoreGateSvc+OverlapSpacePoints' ),
99 #( 'InDet::PixelGangedClusterAmbiguities' , 'StoreGateSvc+TrigPixelClusterAmbiguitiesMap' ),
100 ( 'InDet::SCT_ClusterContainer', 'StoreGateSvc+SCT_TrigClusters' ),
101 ( 'InDet::PixelClusterContainer', 'StoreGateSvc+PixelTrigClusters' ),
102 }
103 )
104
105 if self.flags.Input.Format == Format.BS:
106 ViewDataVerifier.DataObjects |= {
107 ( 'IDCInDetBSErrContainer' , 'StoreGateSvc+SCT_ByteStreamErrs' ),
108 ( 'IDCInDetBSErrContainer' , 'StoreGateSvc+PixelByteStreamErrs' ),
109 }
110
111 acc.addEventAlgo(ViewDataVerifier)
112 return acc
113
114
115
116
117 def viewDataVerifierAfterPattern(self, viewVerifier='IDViewDataVerifierForAmbi') -> ComponentAccumulator:
118
119 acc = ComponentAccumulator()
120
121 ViewDataVerifier = \
122 CompFactory.AthViews.ViewDataVerifier( name = viewVerifier + "_" + self.signature,
123 DataObjects = {
124 ( 'InDet::PixelGangedClusterAmbiguities' , 'TrigPixelClusterAmbiguitiesMap'),
125 }
126 )
127 if self.flags.Input.Format == Format.BS:
128 ViewDataVerifier.DataObjects |= {
129 ( 'IDCInDetBSErrContainer' , 'StoreGateSvc+PixelByteStreamErrs' ),
130 ( 'IDCInDetBSErrContainer' , 'StoreGateSvc+SCT_ByteStreamErrs' ),
131 }
132
133 acc.addEventAlgo(ViewDataVerifier)
134 return acc
135
136
137
138
139 def dataPreparation(self) -> ComponentAccumulator:
140
141 signature = self.flags.Tracking.ActiveConfig.input_name
142
143 acc = ComponentAccumulator()
144
145 self.log.info(f"DataPrep signature: {self.signature} rois: {self.rois} inview: {self.inView}")
146
147 if self.flags.Input.Format == Format.BS:
148 from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConfig import TrigPixelRawDataProviderAlgCfg
149 acc.merge(TrigPixelRawDataProviderAlgCfg(self.flags,suffix=signature,RoIs=self.rois))
150
151 from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConfig import TrigSCTRawDataProviderCfg
152 acc.merge(TrigSCTRawDataProviderCfg(self.flags,suffix=signature,RoIs=self.rois))
153 elif not self.inView:
154 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
155 loadRDOs = [( 'PixelRDO_Container' , 'StoreGateSvc+PixelRDOs' ),
156 ( 'SCT_RDO_Container' , 'StoreGateSvc+SCT_RDOs' ) ]
157 acc.merge(SGInputLoaderCfg(self.flags, Load=loadRDOs))
158
159 #Clusterisation
160 from InDetConfig.InDetPrepRawDataFormationConfig import TrigPixelClusterizationCfg
161 acc.merge(TrigPixelClusterizationCfg(self.flags,
162 self.rois,
163 name=f"InDetPixelClusterization_{signature}"))
164
165
166 from InDetConfig.InDetPrepRawDataFormationConfig import TrigSCTClusterizationCfg
167 acc.merge(TrigSCTClusterizationCfg(self.flags,
168 self.rois,
169 name=f"InDetSCTClusterization_{signature}"))
170
171 return acc
172
173
174
175
176 def dataPreparationTRT(self) ->ComponentAccumulator:
177
178 acc = ComponentAccumulator()
179
180 acc.merge(self.viewDataVerifierTRT())
181
182 if self.flags.Input.Format == Format.BS:
183 from TRT_RawDataByteStreamCnv.TRT_RawDataByteStreamCnvConfig import TrigTRTRawDataProviderCfg
184 acc.merge(TrigTRTRawDataProviderCfg(self.flags, RoIs=self.lastRois))
185
186 elif not self.inView:
187 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
188 loadRDOs = [( 'TRT_RDO_Container' , 'StoreGateSvc+TRT_RDOs' )]
189 acc.merge(SGInputLoaderCfg(self.flags, Load=loadRDOs))
190
191 from InDetConfig.InDetPrepRawDataFormationConfig import TrigTRTRIOMakerCfg
192 signature = self.flags.Tracking.ActiveConfig.input_name
193 acc.merge(TrigTRTRIOMakerCfg(self.flags,
195 name=f"TrigTRTDriftCircleMaker_{signature}"))
196
197
198 return acc
199
200
201
202
203
204 def spacePointFormation(self) -> ComponentAccumulator:
205
206 signature = self.flags.Tracking.ActiveConfig.input_name
207 acc = ComponentAccumulator()
208
209 from InDetConfig.SiSpacePointFormationConfig import TrigSiTrackerSpacePointFinderCfg
210 acc.merge(TrigSiTrackerSpacePointFinderCfg(self.flags, name="TrigSpacePointFinder"+signature))
211 return acc
212
214 extraFlags : AthConfigFlags = None,
215 inputTracksName : str = None) -> ComponentAccumulator:
216 acc = self.fastTrackFinderBase(extraFlags, inputTracksName)
217 if not self.flags.Tracking.ActiveConfig.doZFinderOnly:
218 from TrkConfig.TrkParticleCreatorConfig import InDetTrigParticleCreatorToolFTFCfg
219 creatorTool = acc.popToolsAndMerge(InDetTrigParticleCreatorToolFTFCfg(self.flags))
220 acc.addPublicTool(creatorTool)
221
222 from xAODTrackingCnv.xAODTrackingCnvConfig import TrigTrackParticleCnvAlgCfg
223 prefix = "InDet"
224 acc.merge(
225 TrigTrackParticleCnvAlgCfg(
226 self.flags,
227 name = prefix+'xAODParticleCreatorAlg'+self.flags.Tracking.ActiveConfig.input_name+'_FTF',
228 TrackParticleCreator = creatorTool,
229 TrackContainerName = self.lastTrkCollection,
230 xAODTrackParticlesFromTracksContainerName = self.flags.Tracking.ActiveConfig.tracks_FTF,
231 )
232 )
233 return acc
234
235
236
237
238
239 def ambiguitySolver(self) -> ComponentAccumulator:
240
241 acc = ComponentAccumulator()
242
243 if self.inView:
244 acc.merge(self.viewDataVerifierAfterPattern())
245
246 from TrkConfig.TrkAmbiguitySolverConfig import TrkAmbiguityScore_Trig_Cfg
247 acc.merge(
248 TrkAmbiguityScore_Trig_Cfg(
249 self.flags,
250 name = f"{self.ambiPrefix}Score_{self.flags.Tracking.ActiveConfig.input_name}",
251 TrackInput = [self.lastTrkCollection],
252 AmbiguityScoreProcessor = None
253 )
254 )
255
256 from TrkConfig.TrkAmbiguitySolverConfig import TrkAmbiguitySolver_Trig_Cfg
257 acc.merge(
258 TrkAmbiguitySolver_Trig_Cfg(
259 self.flags,
260 name = f"{self.ambiPrefix}guitySolver_{self.flags.Tracking.ActiveConfig.input_name}",
261 )
262 )
263
264 self.lastTrkCollection = self.flags.Tracking.ActiveConfig.trkTracks_IDTrig+"_Amb"
265 return acc
266
267
268
269
270
271 def trtExtensions(self) -> ComponentAccumulator:
272
273 acc = self.dataPreparationTRT()
274
275 from InDetConfig.TRT_TrackExtensionAlgConfig import Trig_TRT_TrackExtensionAlgCfg
276 acc.merge(Trig_TRT_TrackExtensionAlgCfg(self.flags, self.lastTrkCollection, name="TrigTrackExtensionAlg%s"% self.signature))
277
278 from InDetConfig.InDetExtensionProcessorConfig import TrigInDetExtensionProcessorCfg
279 acc.merge(TrigInDetExtensionProcessorCfg(self.flags, name="TrigExtensionProcessor%s"% self.signature))
280
281 self.lastTrkCollection = self.flags.Tracking.ActiveConfig.trkTracks_IDTrig
282
283 return acc
284
285
286
287
288
289 def xAODParticleCreation(self) -> ComponentAccumulator:
290
291 if self.flags.Tracking.ActiveConfig.doTRT:
292 acc = self.dataPreparationTRT()
293 else:
294 acc = ComponentAccumulator()
295
296 from xAODTrackingCnv.xAODTrackingCnvConfig import TrigTrackParticleCnvAlgCfg
297 prefix = "InDet"
298 acc.merge(
299 TrigTrackParticleCnvAlgCfg(
300 self.flags,
301 name = prefix+'xAODParticleCreatorAlg'+self.flags.Tracking.ActiveConfig.input_name+'_IDTrig',
302 TrackContainerName = self.lastTrkCollection,
303 xAODTrackParticlesFromTracksContainerName = self.flags.Tracking.ActiveConfig.tracks_IDTrig,
304 ))
305 return acc
306
ComponentAccumulator viewDataVerifier(self, viewVerifier='IDViewDataVerifier')
__init__(self, AthConfigFlags flags, str signature, str rois, str inView)
ComponentAccumulator viewDataVerifierTRT(self, viewVerifier='IDViewDataVerifierTRT')
ComponentAccumulator viewDataVerifierAfterDataPrep(self, viewVerifier='IDViewDataVerifierAfterDataPrep')
ComponentAccumulator viewDataVerifierAfterPattern(self, viewVerifier='IDViewDataVerifierForAmbi')
ComponentAccumulator fastTrackFinder(self, AthConfigFlags extraFlags=None, str inputTracksName=None)
ComponentAccumulator xAODParticleCreation(self)