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(IDTIDEInDetTrackZ0AtPV) < 5.0")
570 # If true, Complains about missing PixelMSOSs
571 kwargs.setdefault("ThinHitsOnTrack", False)
572
573 from DerivationFrameworkInDet.InDetToolsConfig import (
574 TrackParticleThinningCfg)
575 return TrackParticleThinningCfg(flags, name, **kwargs)
576
577def ITkTrackParticleThinningCfg(flags, name, **kwargs):
578 """Configure the TrackParticleThining tool"""
579 # To produce ITkStripDetectorElementCollection
580 from StripGeoModelXml.ITkStripGeoModelConfig import (
581 ITkStripReadoutGeometryCfg)
582 acc = ITkStripReadoutGeometryCfg(flags)
583
584 kwargs.setdefault("InDetTrackStatesPixKey", "ITkPixelMSOSs")
585 kwargs.setdefault("InDetTrackMeasurementsPixKey", "ITkPixelMeasurements")
586 kwargs.setdefault("InDetTrackStatesSctKey", "ITkStripMSOSs")
587 kwargs.setdefault("InDetTrackMeasurementsSctKey", "ITkStripMeasurements")
588 kwargs.setdefault("InDetTrackStatesTrtKey", "")
589 kwargs.setdefault("InDetTrackMeasurementsTrtKey", "")
590 kwargs.setdefault("SCTDetEleCollKey", "ITkStripDetectorElementCollection")
591
592 acc.addPublicTool(CompFactory.DerivationFramework.TrackParticleThinning(
593 name, **kwargs), primary=True)
594 return acc
595
596def ITkTrackParticleThinningPHYSCfg(flags, name, **kwargs):
597 """Configure the TrackParticleThiningPHYS tool"""
598 # To produce ITkStripDetectorElementCollection
599 from StripGeoModelXml.ITkStripGeoModelConfig import (
600 ITkStripReadoutGeometryCfg)
601 acc = ITkStripReadoutGeometryCfg(flags)
602
603 kwargs.setdefault("InDetTrackStatesPixKey", "ITkPixelMSOSs")
604 kwargs.setdefault("InDetTrackMeasurementsPixKey", "ITkPixelMeasurements")
605 kwargs.setdefault("InDetTrackStatesSctKey", "ITkStripMSOSs")
606 kwargs.setdefault("InDetTrackMeasurementsSctKey", "ITkStripMeasurements")
607 kwargs.setdefault("InDetTrackStatesTrtKey", "")
608 kwargs.setdefault("InDetTrackMeasurementsTrtKey", "")
609 kwargs.setdefault("SCTDetEleCollKey", "ITkStripDetectorElementCollection")
610
611 acc.addPublicTool(CompFactory.DerivationFramework.TrackParticleThinningPHYS(
612 name, **kwargs), primary=True)
613 return acc
614
615def ITkTIDEThinningToolCfg(flags, name="ITkTIDEThinningTool", **kwargs):
616 if not flags.Detector.EnableITkPixel:
617 kwargs.setdefault("InDetTrackStatesPixKey", "")
618 kwargs.setdefault("InDetTrackMeasurementsPixKey", "")
619 if not flags.Detector.EnableITkStrip:
620 kwargs.setdefault("InDetTrackStatesSctKey", "")
621 kwargs.setdefault("InDetTrackMeasurementsSctKey", "")
622
623 kwargs.setdefault("SelectionString", "abs(IDTIDEInDetTrackZ0AtPV) < 5.0")
624 # If true, Complains about missing PixelMSOSs
625 kwargs.setdefault("ThinHitsOnTrack", False)
626
627 from DerivationFrameworkInDet.InDetToolsConfig import (
628 ITkTrackParticleThinningCfg)
629 return ITkTrackParticleThinningCfg(flags, name, **kwargs)
630
631# Tool for thinning TrackParticles that aren't associated with muons
632
633
634def MuonTrackParticleThinningCfg(flags, name, **kwargs):
635 """Configure the MuonTrackParticleThinning tool"""
636 acc = ComponentAccumulator()
637 acc.addPublicTool(
638 CompFactory.DerivationFramework.MuonTrackParticleThinning(
639 name, **kwargs), primary=True)
640 return acc
641
642# Tool for thinning TrackParticles that aren't associated with taus
643
644
645def TauTrackParticleThinningCfg(flags, name, **kwargs):
646 """Configure the TauTrackParticleThinning tool"""
647 acc = ComponentAccumulator()
648 acc.addPublicTool(CompFactory.DerivationFramework.TauTrackParticleThinning(
649 name, **kwargs), primary=True)
650 return acc
651
652# Tool for thinning TrackParticles that aren't associated high-pt di-taus
653
654
655def DiTauTrackParticleThinningCfg(flags, name, **kwargs):
656 """Configure the DiTauTrackParticleThinning tool"""
657 acc = ComponentAccumulator()
658 acc.addPublicTool(
659 CompFactory.DerivationFramework.DiTauTrackParticleThinning(
660 name, **kwargs), primary=True)
661 return acc
662
663# Tool for thinning TrackParticles that are associated with jets
664
665
666def JetTrackParticleThinningCfg(flags, name, **kwargs):
667 """Configure the JetTrackParticleThinning tool"""
668 acc = ComponentAccumulator()
669 acc.addPublicTool(CompFactory.DerivationFramework.JetTrackParticleThinning(
670 name, **kwargs), primary=True)
671 return acc
672
673
674def UFOTrackParticleThinningCfg(flags, name, **kwargs):
675 """Configure the UFOTrackParticleThinning tool"""
676 acc = ComponentAccumulator()
677 acc.addPublicTool(CompFactory.DerivationFramework.UFOTrackParticleThinning(
678 name, **kwargs), primary=True)
679 return acc
680
681
682def JetConstituentThinningCfg(flags, name, **kwargs):
683 """Configure the JetConstituentThinning tool"""
684 acc = ComponentAccumulator()
685 acc.addPublicTool(CompFactory.DerivationFramework.JetConstituentThinning(
686 name, **kwargs), primary=True)
687 return acc
688
689
690def JetGhostThinningCfg(flags, name, **kwargs):
691 """Configure the JetGhostThinning tool"""
692 acc = ComponentAccumulator()
693 acc.addPublicTool(CompFactory.DerivationFramework.JetGhostThinning(
694 name, **kwargs), primary=True)
695 return acc
696
697
698def TauJetLepRMParticleThinningCfg(flags, name, **kwargs):
699 """Configure the DiTauTrackParticleThinning tool"""
700 acc = ComponentAccumulator()
701 acc.addPublicTool(
702 CompFactory.DerivationFramework.TauJets_LepRMParticleThinning(
703 name, **kwargs), primary=True)
704 return acc
705
706# Tool for thinning TrackParticles that aren't associated with egamma objects
707
708
709def EgammaTrackParticleThinningCfg(flags, name, **kwargs):
710 """Configure the EgammaTrackParticleThinning tool"""
711 acc = ComponentAccumulator()
712 acc.addPublicTool(
713 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
714 name, **kwargs), primary=True)
715 return acc
716
717# Track to vertex wrapper
718
719
720def TrackToVertexWrapperCfg(flags, name, **kwargs):
721 """Configure the TrackToVertexWrapper tool"""
722 acc = ComponentAccumulator()
723
724 if "TrackToVertexIPEstimator" not in kwargs:
725 from TrkConfig.TrkVertexFitterUtilsConfig import (
726 TrackToVertexIPEstimatorCfg)
727 kwargs.setdefault("TrackToVertexIPEstimator", acc.popToolsAndMerge(
728 TrackToVertexIPEstimatorCfg(flags)))
729
730 kwargs.setdefault("ContainerName", "InDetTrackParticles")
731
732 acc.addPublicTool(CompFactory.DerivationFramework.TrackToVertexWrapper(
733 name, **kwargs), primary=True)
734 return acc
735
736
737def IDTIDETruthThinningToolCfg(flags, name="IDTIDETruthThinningTool", **kwargs):
738 kwargs.setdefault("WritePartons", True)
739 kwargs.setdefault("WriteHadrons", True)
740 kwargs.setdefault("WriteBHadrons", True)
741 kwargs.setdefault("WriteGeant", True)
742 kwargs.setdefault("GeantPhotonPtThresh", 20000)
743 kwargs.setdefault("WriteTauHad", True)
744 kwargs.setdefault("PartonPtThresh", -1.0)
745 kwargs.setdefault("WriteBSM", True)
746 kwargs.setdefault("WriteBosons", True)
747 kwargs.setdefault("WriteBosonProducts", True)
748 kwargs.setdefault("WriteBSMProducts", True)
749 kwargs.setdefault("WriteTopAndDecays", True)
750 kwargs.setdefault("WriteEverything", True)
751 kwargs.setdefault("WriteAllLeptons", True)
752 kwargs.setdefault("WriteLeptonsNotFromHadrons", True)
753 kwargs.setdefault("WriteNotPhysical", True)
754 kwargs.setdefault("WriteFirstN", -1)
755 kwargs.setdefault("PreserveAncestors", True)
756 kwargs.setdefault("PreserveGeneratorDescendants", True)
757
758 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import (
759 MenuTruthThinningCfg)
760 return MenuTruthThinningCfg(flags, name, **kwargs)
761
762def IDTRKVALIDTruthThinningToolCfg(
763 flags, name="IDTRKVALIDTruthThinningTool", **kwargs):
764
765 kwargs.setdefault("WriteEverything", True)
766 kwargs.setdefault("WriteFirstN", -1)
767 kwargs.setdefault("PreserveAncestors", True)
768 kwargs.setdefault("PreserveGeneratorDescendants", True)
769
770 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import (
771 MenuTruthThinningCfg)
772 return MenuTruthThinningCfg(flags, name, **kwargs)
773
774def EventInfoBSErrDecoratorCfg(
775 flags, name="EventInfoBSErrDecorator", **kwargs):
776 acc = ComponentAccumulator()
777 acc.addPublicTool(CompFactory.DerivationFramework.EventInfoBSErrDecorator(
778 name, **kwargs), primary=True)
779 return acc
780
781def UnassociatedHitsGetterToolCfg(
782 flags, name="UnassociatedHitsGetterTool", **kwargs):
783 acc = ComponentAccumulator()
784
785 if "AssociationTool" not in kwargs:
786 from InDetConfig.InDetAssociationToolsConfig import (
787 InDetPRDtoTrackMapToolGangedPixelsCfg)
788 kwargs.setdefault("AssociationTool", acc.popToolsAndMerge(
789 InDetPRDtoTrackMapToolGangedPixelsCfg(flags)))
790
791 acc.setPrivateTools(
792 CompFactory.DerivationFramework.UnassociatedHitsGetterTool(name, **kwargs))
793 return acc
794
795def UnassociatedHitsDecoratorCfg(
796 flags, name="UnassociatedHitsDecorator", **kwargs):
797 acc = ComponentAccumulator()
798
799 if "UnassociatedHitsGetter" not in kwargs:
800 from DerivationFrameworkInDet.InDetToolsConfig import (
801 UnassociatedHitsGetterToolCfg)
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)