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