ATLAS Offline Software
Loading...
Searching...
No Matches
InDetToolsConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2
3# ==============================================================================
4# Provides configs for the tools used for building/thinning tracking related
5# object containers and decorations in the DAODs
6# ==============================================================================
7
8from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
9from AthenaConfiguration.ComponentFactory import CompFactory
10from AthenaConfiguration.Enums import BeamType
11from AthenaCommon.Constants import INFO
12from AthenaCommon.Logging import logging
13logIDTools = logging.getLogger('InDetToolsConfig')
14
15# Track collection merger
16def InDetLRTMergeCfg(flags, name="InDetLRTMerge", **kwargs):
17 acc = ComponentAccumulator()
18 alg = CompFactory.CP.TrackParticleMergerAlg(name, **kwargs)
19 kwargs.setdefault("InputTrackParticleLocations",
20 ["InDetTrackParticles", "InDetLargeD0TrackParticles"])
21 kwargs.setdefault("OutputTrackParticleLocation",
22 "InDetWithLRTTrackParticles")
23 kwargs.setdefault("CreateViewCollection", True)
24 acc.addEventAlgo(alg, primary=True)
25 return acc
26
27# Used in vertex fit track decorator
28
29
31 flags, name="UsedInVertexFitTrackDecorator", **kwargs):
32 """Configure the UsedInVertexFitTrackDecorator"""
33 acc = ComponentAccumulator()
34
35 if "UsedInFitDecoratorTool" not in kwargs:
36 from InDetConfig.InDetUsedInFitTrackDecoratorToolConfig import (
37 InDetUsedInFitTrackDecoratorToolCfg)
38 kwargs.setdefault("UsedInFitDecoratorTool", acc.popToolsAndMerge(
39 InDetUsedInFitTrackDecoratorToolCfg(flags)))
40
41 acc.addPublicTool(
42 CompFactory.DerivationFramework.UsedInVertexFitTrackDecorator(
43 name, **kwargs), primary=True)
44 return acc
45
46
47
48def HardScatterVertexDecoratorCfg(flags, name = "DFCommonHSDecorator", **kwargs):
49 """Configure the hard process vertex decorator"""
50 acc = ComponentAccumulator()
51 from InDetConfig.InDetHardScatterSelectionToolConfig import InDetHardScatterSelectionToolCfg
52 kwargs.setdefault("HardScatterSelectionTool", acc.getPrimaryAndMerge(InDetHardScatterSelectionToolCfg(flags, name = "HSSelectionTool",
53 ReturnDeco = False)))
54 kwargs.setdefault("VertexContainerName", "PrimaryVertices")
55 kwargs.setdefault("HardScatterDecoName", "hardScatterVertexLink")
56 the_tool = CompFactory.DerivationFramework.HardScatterVertexDecorator(name = "HardScatterDecorTool", **kwargs)
57 acc.addPublicTool(the_tool, primary=True)
58 the_alg = CompFactory.DerivationFramework.CommonAugmentation(name, AugmentationTools=[the_tool])
59 acc.addEventAlgo(the_alg)
60 return acc
61
62# TrackStateOnSurface decorator
63
64def TrackStateOnSurfaceDecoratorCfg(flags, name, **kwargs):
65 """Configure the TSOS decorator"""
66 acc = ComponentAccumulator()
67
68 # To produce SCT_DetectorElementCollection
69 from SCT_GeoModel.SCT_GeoModelConfig import SCT_ReadoutGeometryCfg
70 acc.merge(SCT_ReadoutGeometryCfg(flags))
71
72 kwargs.setdefault("DecorationPrefix", "notSet")
73
74 if "Updator" not in kwargs:
75 from TrkConfig.TrkMeasurementUpdatorConfig import KalmanUpdatorCfg
76 kwargs.setdefault("Updator", acc.popToolsAndMerge(
77 KalmanUpdatorCfg(flags)))
78
79 if "TrackExtrapolator" not in kwargs:
80 from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
81 kwargs.setdefault("TrackExtrapolator", acc.popToolsAndMerge(
82 AtlasExtrapolatorCfg(flags)))
83
84 if "HoleSearch" not in kwargs:
85 from InDetConfig.InDetTrackHoleSearchConfig import (
86 InDetTrackHoleSearchToolCfg)
87 kwargs.setdefault("HoleSearch", acc.popToolsAndMerge(
88 InDetTrackHoleSearchToolCfg(flags)))
89
90 if "ResidualPullCalculator" not in kwargs:
91 from TrkConfig.TrkResidualPullCalculatorConfig import (
92 ResidualPullCalculatorCfg)
93 kwargs.setdefault("ResidualPullCalculator", acc.popToolsAndMerge(
94 ResidualPullCalculatorCfg(flags)))
95
96 kwargs.setdefault("StorePixel", flags.Tracking.writeExtendedSi_PRDInfo)
97 kwargs.setdefault("StoreSCT", flags.Tracking.writeExtendedSi_PRDInfo)
98 kwargs.setdefault("StoreTRT", flags.Tracking.writeExtendedTRT_PRDInfo)
99 kwargs.setdefault("AddExtraEventInfo", flags.Beam.Type is BeamType.Cosmics)
100
101 if kwargs["StoreTRT"]:
102 if "TRT_ToT_dEdx" not in kwargs:
103 from InDetConfig.TRT_ElectronPidToolsConfig import TRT_dEdxToolCfg
104 kwargs.setdefault("TRT_ToT_dEdx", acc.popToolsAndMerge(
105 TRT_dEdxToolCfg(flags)))
106
107 if "TRT_CalDbTool" not in kwargs:
108 from TRT_ConditionsServices.TRT_ConditionsServicesConfig import (
109 TRT_CalDbToolCfg)
110 kwargs.setdefault("TRT_CalDbTool", acc.popToolsAndMerge(
111 TRT_CalDbToolCfg(flags)))
112
113 kwargs.setdefault("PRDtoTrackMap", "PRDtoTrackMapMerge_CombinedInDetTracks")
114
115 acc.addPublicTool(
116 CompFactory.DerivationFramework.TrackStateOnSurfaceDecorator(
117 name, **kwargs), primary=True)
118 return acc
119
120def TSOS_CommonKernelCfg(flags, name="TSOS_CommonKernel",
121 listOfExtensions=[]):
122 acc = ComponentAccumulator()
123
124 listOfAugmTools = []
125 for extension in listOfExtensions:
126 # Fix inconsistency in naming convention for R3LargeD0
127 if extension == "R3LargeD0":
128 extension = "LargeD0"
129 TrackStateOnSurfaceDecorator = acc.getPrimaryAndMerge(
130 TrackStateOnSurfaceDecoratorCfg(
131 flags, name = f"{extension}TrackStateOnSurfaceDecorator",
132 ContainerName = f"InDet{extension}TrackParticles",
133 PixelMsosName = f"{extension}PixelMSOSs",
134 SctMsosName = f"{extension}SCT_MSOSs",
135 TrtMsosName = f"{extension}TRT_MSOSs"))
136 TrackStateOnSurfaceDecorator.DecorationPrefix = "Reco_"
137 listOfAugmTools.append(TrackStateOnSurfaceDecorator)
138
139 acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(
140 name, AugmentationTools=listOfAugmTools))
141 return acc
142
143def DFTrackStateOnSurfaceDecoratorCfg(
144 flags, name="DFTrackStateOnSurfaceDecorator", **kwargs):
145 kwargs.setdefault("StorePixel", flags.InDet.DAODStorePixel)
146 kwargs.setdefault("StoreSCT", flags.InDet.DAODStoreSCT)
147 kwargs.setdefault("StoreTRT", flags.InDet.DAODStoreTRT)
148 # never decorate EventInfo with TRTPhase, doubt this is useful for IDTIDE
149 kwargs.setdefault("AddExtraEventInfo", flags.InDet.DAODStoreExtra and flags.Beam.Type is BeamType.Cosmics)
150 kwargs.setdefault("DecorationPrefix", "")
151 kwargs.setdefault("PRDtoTrackMap", "")
152 kwargs.setdefault("OutputLevel", INFO)
153 return TrackStateOnSurfaceDecoratorCfg(flags, name, **kwargs)
154
155def DFInDetTSOSKernelCfg(flags, name='DFInDetTSOSKernel'):
156 acc = ComponentAccumulator()
157
158 # ====================================================================
159 # AUGMENTATION TOOLS
160 # ====================================================================
161 tsos_augmentationTools = []
162
163 DFTSOS = acc.getPrimaryAndMerge(DFTrackStateOnSurfaceDecoratorCfg(flags))
164 tsos_augmentationTools.append(DFTSOS)
165
166 # shared between IDTIDE and IDTRKVALID
167 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
168 name,
169 AugmentationTools=tsos_augmentationTools,
170 ThinningTools=[],
171 OutputLevel=INFO))
172 return acc
173
174def ObserverTrackStateOnSurfaceDecoratorCfg(
175 flags, name="ObserverTrackStateOnSurfaceDecorator", **kwargs):
176 kwargs.setdefault("ContainerName", "InDetObservedTrackParticles")
177 kwargs.setdefault("DecorationPrefix", "ObservedTrack_")
178 kwargs.setdefault("PixelMsosName", "ObservedTrack_Pixel_MSOSs")
179 kwargs.setdefault("SctMsosName", "ObservedTrack_SCT_MSOSs")
180 kwargs.setdefault("TrtMsosName", "ObservedTrack_TRT_MSOSs")
181 kwargs.setdefault("AddPRD", True)
182 kwargs.setdefault("StoreHoles", False)
183 return TrackStateOnSurfaceDecoratorCfg(flags, name, **kwargs)
184
185def ObserverTSOS_CommonKernelCfg(flags, name="ObserverTSOS_CommonKernel"):
186 acc = ComponentAccumulator()
187 ObserverTrackStateOnSurfaceDecorator = acc.getPrimaryAndMerge(
188 ObserverTrackStateOnSurfaceDecoratorCfg(flags))
189 acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(
190 name, AugmentationTools=[ObserverTrackStateOnSurfaceDecorator]))
191 return acc
192
193def PseudoTrackStateOnSurfaceDecoratorCfg(
194 flags, name="PseudoTrackStateOnSurfaceDecorator", **kwargs):
195 kwargs.setdefault("ContainerName", "InDetPseudoTrackParticles")
196 kwargs.setdefault("DecorationPrefix", "Pseudo_")
197 kwargs.setdefault("PixelMsosName", "Pseudo_Pixel_MSOSs")
198 kwargs.setdefault("SctMsosName", "Pseudo_SCT_MSOSs")
199 kwargs.setdefault("TrtMsosName", "Pseudo_TRT_MSOSs")
200 kwargs.setdefault("AddPRD", True)
201 kwargs.setdefault("StoreHoles", False)
202 return TrackStateOnSurfaceDecoratorCfg(flags, name, **kwargs)
203
204def PseudoTSOS_CommonKernelCfg(flags, name="PseudoTSOS_CommonKernel"):
205 acc = ComponentAccumulator()
206 PseudoTrackStateOnSurfaceDecorator = acc.getPrimaryAndMerge(
207 PseudoTrackStateOnSurfaceDecoratorCfg(flags))
208 acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(
209 name, AugmentationTools=[PseudoTrackStateOnSurfaceDecorator]))
210 return acc
211
212def SiSPSeedsTrackStateOnSurfaceDecoratorCfg(
213 flags, name="SiSPSeedsTrackStateOnSurfaceDecorator", **kwargs):
214 kwargs.setdefault("ContainerName", "SiSPSeedSegmentsTrackParticles")
215 kwargs.setdefault("DecorationPrefix", "Reco_")
216 kwargs.setdefault("PixelMsosName", "SiSPSeedSegments_PixelMSOSs")
217 kwargs.setdefault("SctMsosName", "SiSPSeedSegments_SCT_MSOSs")
218 kwargs.setdefault("TrtMsosName", "SiSPSeedSegments_TRT_MSOSs")
219 kwargs.setdefault("AddPRD", True)
220 kwargs.setdefault("StoreHoles", False)
221 return TrackStateOnSurfaceDecoratorCfg(flags, name, **kwargs)
222
223def SiSPSeedsTSOS_CommonKernelCfg(flags, name="SiSPSeedsTSOS_CommonKernel",
224 listOfExtensions=[]):
225 acc = ComponentAccumulator()
226
227 listOfAugmTools = []
228 for extension in listOfExtensions:
229 SiSPSeedsTrackStateOnSurfaceDecorator = acc.getPrimaryAndMerge(
230 SiSPSeedsTrackStateOnSurfaceDecoratorCfg(
231 flags, name = f"SiSPSeeds{extension}TrackStateOnSurfaceDecorator",
232 ContainerName = f"SiSPSeedSegments{extension}TrackParticles",
233 PixelMsosName = f"SiSPSeedSegments{extension}_PixelMSOSs",
234 SctMsosName = f"SiSPSeedSegments{extension}_SCT_MSOSs",
235 TrtMsosName = f"SiSPSeedSegments{extension}_TRT_MSOSs"))
236 listOfAugmTools.append(SiSPSeedsTrackStateOnSurfaceDecorator)
237
238 acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(
239 name, AugmentationTools=listOfAugmTools))
240 return acc
241
242def SiSPTrackStateOnSurfaceDecoratorCfg(
243 flags, name="SiSPTrackStateOnSurfaceDecorator", **kwargs):
244 kwargs.setdefault("ContainerName", "SiSPSeededTracksTrackParticles")
245 kwargs.setdefault("DecorationPrefix", "Reco_")
246 kwargs.setdefault("PixelMsosName", "SiSP_PixelMSOSs")
247 kwargs.setdefault("SctMsosName", "SiSP_SCT_MSOSs")
248 kwargs.setdefault("TrtMsosName", "SiSP_TRT_MSOSs")
249 kwargs.setdefault("AddPRD", True)
250 kwargs.setdefault("StoreHoles", False)
251 return TrackStateOnSurfaceDecoratorCfg(flags, name, **kwargs)
252
253def SiSPTSOS_CommonKernelCfg(flags, name="SiSPTSOS_CommonKernel",
254 listOfExtensions=[]):
255 acc = ComponentAccumulator()
256
257 listOfAugmTools = []
258 for extension in listOfExtensions:
259 SiSPTrackStateOnSurfaceDecorator = acc.getPrimaryAndMerge(
260 SiSPTrackStateOnSurfaceDecoratorCfg(
261 flags, name = f"SiSP{extension}TrackStateOnSurfaceDecorator",
262 ContainerName = f"SiSPSeededTracks{extension}TrackParticles",
263 PixelMsosName = f"SiSP{extension}_PixelMSOSs",
264 SctMsosName = f"SiSP{extension}_SCT_MSOSs",
265 TrtMsosName = f"SiSP{extension}_TRT_MSOSs"))
266 listOfAugmTools.append(SiSPTrackStateOnSurfaceDecorator)
267
268 acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(
269 name, AugmentationTools=listOfAugmTools))
270 return acc
271
272def GSFTrackStateOnSurfaceDecoratorCfg(
273 flags, name="GSFTrackStateOnSurfaceDecorator", **kwargs):
274 kwargs.setdefault("ContainerName", "GSFTrackParticles")
275 kwargs.setdefault("DecorationPrefix", "GSF_")
276 kwargs.setdefault("PixelMsosName", "GSF_Pixel_MSOSs")
277 kwargs.setdefault("SctMsosName", "GSF_SCT_MSOSs")
278 kwargs.setdefault("TrtMsosName", "GSF_TRT_MSOSs")
279 kwargs.setdefault("PRDtoTrackMap", "")
280 return TrackStateOnSurfaceDecoratorCfg(flags, name, **kwargs)
281
282def GSFTSOS_CommonKernelCfg(flags, name="GSFTSOS_CommonKernel"):
283 if flags.Detector.GeometryITk:
284 return ITkGSFTSOS_CommonKernelCfg(flags)
285 acc = ComponentAccumulator()
286 GSFTrackStateOnSurfaceDecorator = acc.getPrimaryAndMerge(
287 GSFTrackStateOnSurfaceDecoratorCfg(flags))
288 acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(
289 name, AugmentationTools=[GSFTrackStateOnSurfaceDecorator]))
290 return acc
291
292def ITkTrackStateOnSurfaceDecoratorCfg(
293 flags, name="TrackStateOnSurfaceDecorator", **kwargs):
294 """Configure the TSOS decorator"""
295 # To produce ITkStripDetectorElementCollection
296 from StripGeoModelXml.ITkStripGeoModelConfig import (
297 ITkStripReadoutGeometryCfg)
298 acc = ITkStripReadoutGeometryCfg(flags)
299
300 kwargs.setdefault("DecorationPrefix", "notSet")
301
302 if "Updator" not in kwargs:
303 from TrkConfig.TrkMeasurementUpdatorConfig import KalmanUpdatorCfg
304 kwargs.setdefault("Updator", acc.popToolsAndMerge(
305 KalmanUpdatorCfg(flags)))
306
307 if "TrackExtrapolator" not in kwargs:
308 from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
309 kwargs.setdefault("TrackExtrapolator", acc.popToolsAndMerge(
310 AtlasExtrapolatorCfg(flags)))
311
312 if "HoleSearch" not in kwargs:
313 from InDetConfig.InDetTrackHoleSearchConfig import (
314 ITkTrackHoleSearchToolCfg)
315 kwargs.setdefault("HoleSearch", acc.popToolsAndMerge(
316 ITkTrackHoleSearchToolCfg(flags)))
317
318 if "ResidualPullCalculator" not in kwargs:
319 from TrkConfig.TrkResidualPullCalculatorConfig import (
320 ResidualPullCalculatorCfg)
321 kwargs.setdefault("ResidualPullCalculator", acc.popToolsAndMerge(
322 ResidualPullCalculatorCfg(flags)))
323
324 kwargs.setdefault("AddExtraEventInfo", False) # Controls decoration of TrtPhaseTime
325 kwargs.setdefault("PixelMapName", "ITkPixelClustersOffsets")
326 kwargs.setdefault("SctMapName", "ITkStripClustersOffsets")
327 kwargs.setdefault("PixelClustersName", "ITkPixelMeasurements")
328 kwargs.setdefault("SctClustersName", "ITkStripMeasurements")
329 kwargs.setdefault("PRDtoTrackMap", "ITkPRDtoTrackMapMerge_CombinedITkTracks")
330 kwargs.setdefault("PixelMsosName", "ITkPixelMSOSs")
331 kwargs.setdefault("SctMsosName", "ITkStripMSOSs")
332 kwargs.setdefault("SCTDetEleCollKey", "ITkStripDetectorElementCollection")
333
334 acc.addPublicTool(
335 CompFactory.DerivationFramework.TrackStateOnSurfaceDecorator(
336 name, **kwargs), primary=True)
337 return acc
338
339def ITkTSOS_CommonKernelCfg(flags, name="ITkTSOS_CommonKernel",
340 listOfExtensions=[]):
341 acc = ComponentAccumulator()
342 listOfAugmTools = []
343 for extension in listOfExtensions:
344 TrackStateOnSurfaceDecorator = acc.getPrimaryAndMerge(
345 ITkTrackStateOnSurfaceDecoratorCfg(flags,
346 DecorationPrefix = "Reco_"))
347 listOfAugmTools.append(TrackStateOnSurfaceDecorator)
348
349 acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(
350 name, AugmentationTools=listOfAugmTools))
351 return acc
352
353def DFITkTrackStateOnSurfaceDecoratorCfg(
354 flags, name="DFITkTrackStateOnSurfaceDecorator", **kwargs):
355 kwargs.setdefault("StorePixel", flags.ITk.DAODStorePixel)
356 kwargs.setdefault("StoreSCT", flags.ITk.DAODStoreStrip)
357 kwargs.setdefault("DecorationPrefix", "")
358 kwargs.setdefault("PRDtoTrackMap", "")
359 kwargs.setdefault("OutputLevel", INFO)
360 return ITkTrackStateOnSurfaceDecoratorCfg(flags, name, **kwargs)
361
362def DFITkTSOSKernelCfg(flags, name='DFITkTSOSKernel'):
363 acc = ComponentAccumulator()
364
365 # ====================================================================
366 # AUGMENTATION TOOLS
367 # ====================================================================
368 tsos_augmentationTools = []
369
370 from InDetConfig.ITkActsHelpers import primaryPassUsesActs
371 if primaryPassUsesActs(flags):
372 logIDTools.warning("No TrackStateOnSurfaceDecorator available yet for ACTS")
373 else:
374 DFTSOS = acc.getPrimaryAndMerge(DFITkTrackStateOnSurfaceDecoratorCfg(flags))
375 tsos_augmentationTools.append(DFTSOS)
376
377 # shared between IDTIDE and IDTRKVALID
378 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
379 name,
380 AugmentationTools=tsos_augmentationTools,
381 ThinningTools=[],
382 OutputLevel=INFO))
383 return acc
384
385def ITkSiSPSeedsTrackStateOnSurfaceDecoratorCfg(
386 flags, name="ITkSiSPSeedsTrackStateOnSurfaceDecorator", **kwargs):
387 kwargs.setdefault("ContainerName", "SiSPSeedSegmentsTrackParticles")
388 kwargs.setdefault("DecorationPrefix", "Reco_")
389 kwargs.setdefault("PixelMsosName", "SiSPSeedSegments_ITkPixelMSOSs")
390 kwargs.setdefault("SctMsosName", "SiSPSeedSegments_ITkStripMSOSs")
391 kwargs.setdefault("TrtMsosName", "")
392 kwargs.setdefault("AddPRD", True)
393 kwargs.setdefault("StoreHoles", False)
394 return ITkTrackStateOnSurfaceDecoratorCfg(flags, name, **kwargs)
395
396def ITkSiSPSeedsTSOS_CommonKernelCfg(flags, name="ITkSiSPSeedsTSOS_CommonKernel",
397 listOfExtensions=[]):
398 acc = ComponentAccumulator()
399
400 listOfAugmTools = []
401 for extension in listOfExtensions:
402 SiSPSeedsTrackStateOnSurfaceDecorator = acc.getPrimaryAndMerge(
403 ITkSiSPSeedsTrackStateOnSurfaceDecoratorCfg(
404 flags, name = f"SiSPSeeds{extension}TrackStateOnSurfaceDecorator",
405 ContainerName = f"SiSPSeedSegments{extension}TrackParticles",
406 PixelMsosName = f"SiSPSeedSegments{extension}_ITkPixelMSOSs",
407 SctMsosName = f"SiSPSeedSegments{extension}_ITkStripMSOSs"))
408 listOfAugmTools.append(SiSPSeedsTrackStateOnSurfaceDecorator)
409
410 acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(
411 name, AugmentationTools=listOfAugmTools))
412 return acc
413
414def ITkSiSPTrackStateOnSurfaceDecoratorCfg(
415 flags, name="SiSPTrackStateOnSurfaceDecorator", **kwargs):
416 kwargs.setdefault("ContainerName", "SiSPSeededTracksTrackParticles")
417 kwargs.setdefault("DecorationPrefix", "SiSP_")
418 kwargs.setdefault("PixelMsosName", "SiSP_ITkPixel_MSOSs")
419 kwargs.setdefault("SctMsosName", "SiSP_ITkStrip_MSOSs")
420 kwargs.setdefault("AddPRD", True)
421 kwargs.setdefault("StoreHoles", False)
422 return ITkTrackStateOnSurfaceDecoratorCfg(flags, name, **kwargs)
423
424def ITkSiSPTSOS_CommonKernelCfg(flags, name="ITkSiSPTSOS_CommonKernel",
425 listOfExtensions=[]):
426 acc = ComponentAccumulator()
427 listOfAugmTools = []
428 for extension in listOfExtensions:
429 ITkSiSPTrackStateOnSurfaceDecorator = acc.getPrimaryAndMerge(
430 ITkSiSPTrackStateOnSurfaceDecoratorCfg(
431 flags, name = f"SiSP{extension}TrackStateOnSurfaceDecorator",
432 ContainerName = f"SiSPSeededTracks{extension}TrackParticles",
433 PixelMsosName = f"SiSP{extension}_ITkPixel_MSOSs",
434 SctMsosName = f"SiSP{extension}_ITkStrip_MSOSs"))
435 listOfAugmTools.append(ITkSiSPTrackStateOnSurfaceDecorator)
436
437 acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(
438 name, AugmentationTools=listOfAugmTools))
439 return acc
440
441def ITkGSFTrackStateOnSurfaceDecoratorCfg(
442 flags, name="ITkGSFTrackStateOnSurfaceDecorator", **kwargs):
443 kwargs.setdefault("ContainerName", "GSFTrackParticles")
444 kwargs.setdefault("DecorationPrefix", "GSF_")
445 kwargs.setdefault("PixelMsosName", "GSF_ITkPixel_MSOSs")
446 kwargs.setdefault("SctMsosName", "GSF_ITkStrip_MSOSs")
447 kwargs.setdefault("TrtMsosName", "")
448 kwargs.setdefault("PRDtoTrackMap", "")
449 kwargs.setdefault("AddExtraEventInfo", flags.Beam.Type is BeamType.Cosmics)
450 return ITkTrackStateOnSurfaceDecoratorCfg(flags, name, **kwargs)
451
452def ITkGSFTSOS_CommonKernelCfg(flags, name="ITkGSFTSOS_CommonKernel"):
453 acc = ComponentAccumulator()
454 GSFTrackStateOnSurfaceDecorator = acc.getPrimaryAndMerge(
455 ITkGSFTrackStateOnSurfaceDecoratorCfg(flags))
456 acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(
457 name, AugmentationTools=[GSFTrackStateOnSurfaceDecorator]))
458 return acc
459
460# Expression of Z0 at the primary vertex
461
462
463def TrackParametersAtPVCfg(flags, name, **kwargs):
464 """Configure the TrackParametersAtPV tool"""
465 acc = ComponentAccumulator()
466 acc.addPublicTool(CompFactory.DerivationFramework.TrackParametersAtPV(
467 name, **kwargs), primary=True)
468 return acc
469
470# Pseudotrack selector
471
472
473def PseudoTrackSelectorCfg(flags, name, **kwargs):
474 """Configure the pseudotrack selector"""
475 acc = ComponentAccumulator()
476
477 if "trackTruthOriginTool" not in kwargs:
478 from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig import InDetTrackTruthOriginToolCfg
479 kwargs.setdefault("trackTruthOriginTool", acc.popToolsAndMerge(
480 InDetTrackTruthOriginToolCfg(flags)))
481
482 acc.addPublicTool(
483 CompFactory.DerivationFramework.PseudoTrackSelector(
484 name, **kwargs), primary=True)
485 return acc
486
487# Tool for decorating tracks with the outcome of the track selector tool
488
489
490def InDetTrackSelectionToolWrapperCfg(
491 flags, name, CutLevel="TightPrimary", **kwargs):
492 """Configure the InDetTrackSelectionToolWrapper"""
493 acc = ComponentAccumulator()
494
495 if "TrackSelectionTool" not in kwargs:
496 from InDetTrackSelectionTool.InDetTrackSelectionToolConfig import (
497 InDetTrackSelectionToolCfg)
498 kwargs.setdefault("TrackSelectionTool", acc.popToolsAndMerge(
499 InDetTrackSelectionToolCfg(
500 flags, name="InDetTrackSelectionTool_"+CutLevel,
501 CutLevel=CutLevel)))
502
503 acc.addPublicTool(
504 CompFactory.DerivationFramework.InDetTrackSelectionToolWrapper(
505 name, **kwargs), primary=True)
506 return acc
507
508# Tool for decorating the track and calo isolation
509
510
511def IsolationTrackDecoratorCfg(flags, name, **kwargs):
512 """Confiure the isolation track decorator tool"""
513 acc = ComponentAccumulator()
514 IsolationTrackDecorator = CompFactory.DerivationFramework.IsolationTrackDecorator
515 acc.addPublicTool(IsolationTrackDecorator(name, **kwargs),
516 primary = True)
517 return acc
518
519# Tool for thinning TrackParticle containers via string selection
520
521
522def TrackParticleThinningCfg(flags, name, **kwargs):
523 """Configure the TrackParticleThining tool"""
524 if flags.Detector.GeometryITk:
525 return ITkTrackParticleThinningCfg(flags, name, **kwargs)
526
527 # To produce SCT_DetectorElementCollection
528 from SCT_GeoModel.SCT_GeoModelConfig import SCT_ReadoutGeometryCfg
529 acc = SCT_ReadoutGeometryCfg(flags)
530
531 acc.addPublicTool(CompFactory.DerivationFramework.TrackParticleThinning(
532 name, **kwargs), primary=True)
533 return acc
534
535# Tool for thinning TrackParticle containers via string selection
536
537
538def TrackParticleThinningPHYSCfg(flags, name, **kwargs):
539 """Configure the TrackParticleThining tool"""
540 if flags.Detector.GeometryITk:
541 return ITkTrackParticleThinningPHYSCfg(flags, name, **kwargs)
542
543 # To produce SCT_DetectorElementCollection
544 from SCT_GeoModel.SCT_GeoModelConfig import SCT_ReadoutGeometryCfg
545 acc = SCT_ReadoutGeometryCfg(flags)
546 acc.addPublicTool(CompFactory.DerivationFramework.TrackParticleThinningPHYS(
547 name, **kwargs), primary=True)
548 return acc
549
550# Tool for thinning PixelClusters via string selection
551
552
553def PixelClusterThinningCfg(
554 flags, name="PixelClusterThinningTool", **kwargs):
555 pix_lumi_sel = "PixelClusters.bec == 0 && PixelClusters.layer >= 0 && PixelClusters.sizeZ > 1 && ( PixelClusters.nRDO < PixelClusters.sizeZ + 5 ) && PixelClusters.charge > 30000"
556 kwargs.setdefault("SelectionString", pix_lumi_sel)
557 acc = ComponentAccumulator()
558 acc.addPublicTool(
559 CompFactory.DerivationFramework.TrackMeasurementThinning(
560 name, **kwargs), primary=True)
561 return acc
562
563
564def IDTIDEThinningToolCfg(flags, name="IDTIDEThinningTool", **kwargs):
565 if not flags.Detector.EnablePixel:
566 kwargs.setdefault("InDetTrackStatesPixKey", "")
567 kwargs.setdefault("InDetTrackMeasurementsPixKey", "")
568 if not flags.Detector.EnableSCT:
569 kwargs.setdefault("InDetTrackStatesSctKey", "")
570 kwargs.setdefault("InDetTrackMeasurementsSctKey", "")
571 if not flags.Detector.EnableTRT:
572 kwargs.setdefault("InDetTrackStatesTrtKey", "")
573 kwargs.setdefault("InDetTrackMeasurementsTrtKey", "")
574
575 kwargs.setdefault("SelectionString", "abs(InDetTrackParticles.IDTIDEInDetTrackZ0AtPV) < 5.0")
576 # If true, Complains about missing PixelMSOSs
577 kwargs.setdefault("ThinHitsOnTrack", False)
578
579 return TrackParticleThinningCfg(flags, name, **kwargs)
580
581def ITkTrackParticleThinningCfg(flags, name, **kwargs):
582 """Configure the TrackParticleThining tool"""
583 # To produce ITkStripDetectorElementCollection
584 from StripGeoModelXml.ITkStripGeoModelConfig import (
585 ITkStripReadoutGeometryCfg)
586 acc = ITkStripReadoutGeometryCfg(flags)
587
588 kwargs.setdefault("InDetTrackStatesPixKey", "ITkPixelMSOSs")
589 kwargs.setdefault("InDetTrackMeasurementsPixKey", "ITkPixelMeasurements")
590 kwargs.setdefault("InDetTrackStatesSctKey", "ITkStripMSOSs")
591 kwargs.setdefault("InDetTrackMeasurementsSctKey", "ITkStripMeasurements")
592 kwargs.setdefault("InDetTrackStatesTrtKey", "")
593 kwargs.setdefault("InDetTrackMeasurementsTrtKey", "")
594 kwargs.setdefault("SCTDetEleCollKey", "ITkStripDetectorElementCollection")
595
596 acc.addPublicTool(CompFactory.DerivationFramework.TrackParticleThinning(
597 name, **kwargs), primary=True)
598 return acc
599
600def ITkTrackParticleThinningPHYSCfg(flags, name, **kwargs):
601 """Configure the TrackParticleThiningPHYS tool"""
602 # To produce ITkStripDetectorElementCollection
603 from StripGeoModelXml.ITkStripGeoModelConfig import (
604 ITkStripReadoutGeometryCfg)
605 acc = ITkStripReadoutGeometryCfg(flags)
606
607 kwargs.setdefault("InDetTrackStatesPixKey", "ITkPixelMSOSs")
608 kwargs.setdefault("InDetTrackMeasurementsPixKey", "ITkPixelMeasurements")
609 kwargs.setdefault("InDetTrackStatesSctKey", "ITkStripMSOSs")
610 kwargs.setdefault("InDetTrackMeasurementsSctKey", "ITkStripMeasurements")
611 kwargs.setdefault("InDetTrackStatesTrtKey", "")
612 kwargs.setdefault("InDetTrackMeasurementsTrtKey", "")
613 kwargs.setdefault("SCTDetEleCollKey", "ITkStripDetectorElementCollection")
614
615 acc.addPublicTool(CompFactory.DerivationFramework.TrackParticleThinningPHYS(
616 name, **kwargs), primary=True)
617 return acc
618
619def ITkTIDEThinningToolCfg(flags, name="ITkTIDEThinningTool", **kwargs):
620 if not flags.Detector.EnableITkPixel:
621 kwargs.setdefault("InDetTrackStatesPixKey", "")
622 kwargs.setdefault("InDetTrackMeasurementsPixKey", "")
623 if not flags.Detector.EnableITkStrip:
624 kwargs.setdefault("InDetTrackStatesSctKey", "")
625 kwargs.setdefault("InDetTrackMeasurementsSctKey", "")
626
627 kwargs.setdefault("SelectionString", "abs(InDetTrackParticles.IDTIDEInDetTrackZ0AtPV) < 5.0")
628 # If true, Complains about missing PixelMSOSs
629 kwargs.setdefault("ThinHitsOnTrack", False)
630
631 return ITkTrackParticleThinningCfg(flags, name, **kwargs)
632
633# Tool for thinning TrackParticles that aren't associated with muons
634
635
636def MuonTrackParticleThinningCfg(flags, name, **kwargs):
637 """Configure the MuonTrackParticleThinning tool"""
638 acc = ComponentAccumulator()
639 acc.addPublicTool(
640 CompFactory.DerivationFramework.MuonTrackParticleThinning(
641 name, **kwargs), primary=True)
642 return acc
643
644# Tool for thinning TrackParticles that aren't associated with taus
645
646
647def TauTrackParticleThinningCfg(flags, name, **kwargs):
648 """Configure the TauTrackParticleThinning tool"""
649 acc = ComponentAccumulator()
650 acc.addPublicTool(CompFactory.DerivationFramework.TauTrackParticleThinning(
651 name, **kwargs), primary=True)
652 return acc
653
654# Tool for thinning TrackParticles that aren't associated high-pt di-taus
655
656
657def DiTauTrackParticleThinningCfg(flags, name, **kwargs):
658 """Configure the DiTauTrackParticleThinning tool"""
659 acc = ComponentAccumulator()
660 acc.addPublicTool(
661 CompFactory.DerivationFramework.DiTauTrackParticleThinning(
662 name, **kwargs), primary=True)
663 return acc
664
665# Tool for thinning TrackParticles that are associated with jets
666
667
668def JetTrackParticleThinningCfg(flags, name, **kwargs):
669 """Configure the JetTrackParticleThinning tool"""
670 acc = ComponentAccumulator()
671 acc.addPublicTool(CompFactory.DerivationFramework.JetTrackParticleThinning(
672 name, **kwargs), primary=True)
673 return acc
674
675
676def UFOTrackParticleThinningCfg(flags, name, **kwargs):
677 """Configure the UFOTrackParticleThinning tool"""
678 acc = ComponentAccumulator()
679 acc.addPublicTool(CompFactory.DerivationFramework.UFOTrackParticleThinning(
680 name, **kwargs), primary=True)
681 return acc
682
683
684def JetConstituentThinningCfg(flags, name, **kwargs):
685 """Configure the JetConstituentThinning tool"""
686 acc = ComponentAccumulator()
687 acc.addPublicTool(CompFactory.DerivationFramework.JetConstituentThinning(
688 name, **kwargs), primary=True)
689 return acc
690
691
692def JetGhostThinningCfg(flags, name, **kwargs):
693 """Configure the JetGhostThinning tool"""
694 acc = ComponentAccumulator()
695 acc.addPublicTool(CompFactory.DerivationFramework.JetGhostThinning(
696 name, **kwargs), primary=True)
697 return acc
698
699
700def TauJetLepRMParticleThinningCfg(flags, name, **kwargs):
701 """Configure the DiTauTrackParticleThinning tool"""
702 acc = ComponentAccumulator()
703 acc.addPublicTool(
704 CompFactory.DerivationFramework.TauJets_LepRMParticleThinning(
705 name, **kwargs), primary=True)
706 return acc
707
708# Tool for thinning TrackParticles that aren't associated with egamma objects
709
710
711def EgammaTrackParticleThinningCfg(flags, name, **kwargs):
712 """Configure the EgammaTrackParticleThinning tool"""
713 acc = ComponentAccumulator()
714 acc.addPublicTool(
715 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
716 name, **kwargs), primary=True)
717 return acc
718
719# Track to vertex wrapper
720
721
722def TrackToVertexWrapperCfg(flags, name, **kwargs):
723 """Configure the TrackToVertexWrapper tool"""
724 acc = ComponentAccumulator()
725
726 if "TrackToVertexIPEstimator" not in kwargs:
727 from TrkConfig.TrkVertexFitterUtilsConfig import (
728 TrackToVertexIPEstimatorCfg)
729 kwargs.setdefault("TrackToVertexIPEstimator", acc.popToolsAndMerge(
730 TrackToVertexIPEstimatorCfg(flags)))
731
732 kwargs.setdefault("ContainerName", "InDetTrackParticles")
733
734 acc.addPublicTool(CompFactory.DerivationFramework.TrackToVertexWrapper(
735 name, **kwargs), primary=True)
736 return acc
737
738
739def IDTIDETruthThinningToolCfg(flags, name="IDTIDETruthThinningTool", **kwargs):
740 kwargs.setdefault("WritePartons", True)
741 kwargs.setdefault("WriteHadrons", True)
742 kwargs.setdefault("WriteBHadrons", True)
743 kwargs.setdefault("WriteGeant", True)
744 kwargs.setdefault("GeantPhotonPtThresh", 20000)
745 kwargs.setdefault("WriteTauHad", True)
746 kwargs.setdefault("PartonPtThresh", -1.0)
747 kwargs.setdefault("WriteBSM", True)
748 kwargs.setdefault("WriteBosons", True)
749 kwargs.setdefault("WriteBosonProducts", True)
750 kwargs.setdefault("WriteBSMProducts", True)
751 kwargs.setdefault("WriteTopAndDecays", True)
752 kwargs.setdefault("WriteEverything", True)
753 kwargs.setdefault("WriteAllLeptons", True)
754 kwargs.setdefault("WriteLeptonsNotFromHadrons", True)
755 kwargs.setdefault("WriteNotPhysical", True)
756 kwargs.setdefault("WriteFirstN", -1)
757 kwargs.setdefault("PreserveAncestors", True)
758 kwargs.setdefault("PreserveGeneratorDescendants", True)
759
760 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import (
761 MenuTruthThinningCfg)
762 return MenuTruthThinningCfg(flags, name, **kwargs)
763
764def IDTRKVALIDTruthThinningToolCfg(
765 flags, name="IDTRKVALIDTruthThinningTool", **kwargs):
766
767 kwargs.setdefault("WriteEverything", True)
768 kwargs.setdefault("WriteFirstN", -1)
769 kwargs.setdefault("PreserveAncestors", True)
770 kwargs.setdefault("PreserveGeneratorDescendants", True)
771
772 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import (
773 MenuTruthThinningCfg)
774 return MenuTruthThinningCfg(flags, name, **kwargs)
775
776def EventInfoBSErrDecoratorCfg(
777 flags, name="EventInfoBSErrDecorator", **kwargs):
778 acc = ComponentAccumulator()
779 acc.addPublicTool(CompFactory.DerivationFramework.EventInfoBSErrDecorator(
780 name, **kwargs), primary=True)
781 return acc
782
783def UnassociatedHitsGetterToolCfg(
784 flags, name="UnassociatedHitsGetterTool", **kwargs):
785 acc = ComponentAccumulator()
786
787 if "AssociationTool" not in kwargs:
788 from InDetConfig.InDetAssociationToolsConfig import (
789 InDetPRDtoTrackMapToolGangedPixelsCfg)
790 kwargs.setdefault("AssociationTool", acc.popToolsAndMerge(
791 InDetPRDtoTrackMapToolGangedPixelsCfg(flags)))
792
793 acc.setPrivateTools(
794 CompFactory.DerivationFramework.UnassociatedHitsGetterTool(name, **kwargs))
795 return acc
796
797def UnassociatedHitsDecoratorCfg(
798 flags, name="UnassociatedHitsDecorator", **kwargs):
799 acc = ComponentAccumulator()
800
801 if "UnassociatedHitsGetter" not in kwargs:
802 kwargs.setdefault("UnassociatedHitsGetter", acc.popToolsAndMerge(
803 UnassociatedHitsGetterToolCfg(flags)))
804
805 acc.addPublicTool(CompFactory.DerivationFramework.UnassociatedHitsDecorator(
806 name, **kwargs), primary=True)
807 return acc
UsedInVertexFitTrackDecoratorCfg(flags, name="UsedInVertexFitTrackDecorator", **kwargs)
InDetLRTMergeCfg(flags, name="InDetLRTMerge", **kwargs)