ATLAS Offline Software
OverlayCopyAlgsConfig.py
Go to the documentation of this file.
1 """Define methods to construct configured overlay copy algorithms
2 
3 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
4 """
5 
6 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7 from AthenaConfiguration.ComponentFactory import CompFactory
8 from AthenaConfiguration.Enums import ProductionStep
9 
10 
11 def CopyCaloCalibrationHitContainerAlgCfg(flags, collectionName, name="CopyCaloCalibrationHitContainer", **kwargs):
12  """Return a ComponentAccumulator for the CaloCalibrationHitContainer copying"""
13  acc = ComponentAccumulator()
14 
15  kwargs.setdefault("collectionName", collectionName)
16  kwargs.setdefault("SignalInputKey", flags.Overlay.SigPrefix + collectionName)
17  kwargs.setdefault("OutputKey", collectionName)
18 
19  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
20  acc.merge(SGInputLoaderCfg(flags, [f'CaloCalibrationHitContainer#{kwargs["SignalInputKey"]}']))
21 
22  # Copy CaloCalibrationHitContainer
23  acc.addEventAlgo(CompFactory.CopyCaloCalibrationHitContainer(name + collectionName, **kwargs))
24 
25  # Re-map signal address
26  from SGComps.AddressRemappingConfig import AddressRemappingCfg
27  acc.merge(AddressRemappingCfg([
28  f"CaloCalibrationHitContainer#{collectionName}->{flags.Overlay.SigPrefix}{collectionName}"
29  ]))
30 
31  # Output
32  if flags.Output.doWriteRDO:
33  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
34  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
35  f"CaloCalibrationHitContainer#{collectionName}"
36  ]))
37 
38  # Add signal output
39  if flags.Output.doWriteRDO_SGNL:
40  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
41  acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
42  f"CaloCalibrationHitContainer#{flags.Overlay.SigPrefix}{collectionName}"
43  ]))
44 
45  return acc
46 
47 
48 def CopyJetTruthInfoAlgCfg(flags, name, **kwargs):
49  """Return a ComponentAccumulator for the pile-up jets copying"""
50  acc = ComponentAccumulator()
51 
52  if "OutputKey" not in kwargs or "BkgInputKey" not in kwargs:
53  raise RuntimeError("'OutputKey' and 'BkgInputKey' need to be defined")
54 
55  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
56  acc.merge(SGInputLoaderCfg(flags, [f'xAOD::JetContainer#{kwargs["BkgInputKey"]}']))
57 
58  # Copy jets
59  acc.addEventAlgo(CompFactory.CopyJetTruthInfo(name, **kwargs))
60 
61  # Output
62  if flags.Output.doWriteRDO:
63  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
64  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
65  f'xAOD::JetContainer#{kwargs["OutputKey"]}',
66  f'xAOD::AuxContainerBase!#{kwargs["OutputKey"]}Aux.-constituentLinks.-constituentWeights',
67  ]))
68 
69  return acc
70 
71 
72 def CopyInTimeAntiKt4JetTruthInfoCfg(flags, name="CopyInTimeAntiKt4JetTruthInfo", **kwargs):
73  """Return a ComponentAccumulator for the in-time pile-up jets copying"""
74  kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}InTimeAntiKt4TruthJets")
75  kwargs.setdefault("OutputKey", "InTimeAntiKt4TruthJets")
76 
77  return CopyJetTruthInfoAlgCfg(flags, name, **kwargs)
78 
79 
80 def CopyOutOfTimeAntiKt4JetTruthInfoCfg(flags, name="CopyOutOfTimeAntiKt4JetTruthInfo", **kwargs):
81  """Return a ComponentAccumulator for the out-of-time pile-up jets copying"""
82  kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}OutOfTimeAntiKt4TruthJets")
83  kwargs.setdefault("OutputKey", "OutOfTimeAntiKt4TruthJets")
84 
85  return CopyJetTruthInfoAlgCfg(flags, name, **kwargs)
86 
87 
88 def CopyInTimeAntiKt6JetTruthInfoCfg(flags, name="CopyInTimeAntiKt6JetTruthInfo", **kwargs):
89  """Return a ComponentAccumulator for the in-time pile-up jets copying"""
90  kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}InTimeAntiKt6TruthJets")
91  kwargs.setdefault("OutputKey", "InTimeAntiKt6TruthJets")
92 
93  return CopyJetTruthInfoAlgCfg(flags, name, **kwargs)
94 
95 
96 def CopyOutOfTimeAntiKt6JetTruthInfoCfg(flags, name="CopyOutOfTimeAntiKt6JetTruthInfo", **kwargs):
97  """Return a ComponentAccumulator for the out-of-time pile-up jets copying"""
98  kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}OutOfTimeAntiKt6TruthJets")
99  kwargs.setdefault("OutputKey", "OutOfTimeAntiKt6TruthJets")
100 
101  return CopyJetTruthInfoAlgCfg(flags, name, **kwargs)
102 
103 
104 def CopyJetTruthInfoCfg(flags, **kwargs):
105  """Return a ComponentAccumulator for the CopyJetTruthInfo algorithms"""
106  acc = ComponentAccumulator()
107  if flags.Overlay.DataOverlay:
108  return acc
109 
110  allowedContainers = [
111  f"{flags.Overlay.BkgPrefix}InTimeAntiKt4TruthJets",
112  f"{flags.Overlay.BkgPrefix}OutOfTimeAntiKt4TruthJets",
113  f"{flags.Overlay.BkgPrefix}InTimeAntiKt6TruthJets",
114  f"{flags.Overlay.BkgPrefix}OutOfTimeAntiKt6TruthJets"
115  ]
116  availableContainers = []
117 
118  # Detect the list of track record collections
119  for container in allowedContainers:
120  if container in flags.Input.Collections: # SecondaryCollections
121  availableContainers.append(container)
122  if allowedContainers[0] in availableContainers:
123  acc.merge(CopyInTimeAntiKt4JetTruthInfoCfg(flags, **kwargs))
124  if allowedContainers[1] in availableContainers:
125  acc.merge(CopyOutOfTimeAntiKt4JetTruthInfoCfg(flags, **kwargs))
126  if allowedContainers[2] in availableContainers:
127  acc.merge(CopyInTimeAntiKt6JetTruthInfoCfg(flags, **kwargs))
128  if allowedContainers[3] in availableContainers:
129  acc.merge(CopyOutOfTimeAntiKt6JetTruthInfoCfg(flags, **kwargs))
130  return acc
131 
132 
133 def CopyPileupParticleTruthInfoCfg(flags, name="CopyPileupParticleTruthInfo", **kwargs):
134  """Return a ComponentAccumulator for the in-time pile-up jets copying"""
135  acc = ComponentAccumulator()
136  if flags.Overlay.DataOverlay:
137  return acc
138 
139  requiredContainer = f"{flags.Overlay.BkgPrefix}TruthPileupParticles"
140 
141  # Detect the list of track record collections
142  if requiredContainer in flags.Input.Collections: # SecondaryCollections
143  kwargs.setdefault("BkgInputKey", requiredContainer)
144  kwargs.setdefault("OutputKey", "TruthPileupParticles")
145 
146  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
147  acc.merge(SGInputLoaderCfg(flags, [f'xAOD::TruthParticleContainer#{kwargs["BkgInputKey"]}']))
148 
149  # Copy jets
150  acc.addEventAlgo(CompFactory.CopyPileupParticleTruthInfo(name, **kwargs))
151 
152  if flags.Output.doWriteRDO:
153  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
154  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
155  "xAOD::TruthParticleContainer#TruthPileupParticles",
156  "xAOD::TruthParticleAuxContainer#TruthPileupParticlesAux."
157  ]))
158  return acc
159 
160 
161 def CopyMcEventCollectionCfg(flags, name="CopyMcEventCollection", **kwargs):
162  """Return a ComponentAccumulator for the CopyMcEventCollection algorithm"""
163  acc = ComponentAccumulator()
164 
165  kwargs.setdefault("RemoveBkgHardScatterTruth", True)
166 
167  inputs = []
168  if flags.Overlay.DataOverlay:
169  # Disable background for data overlay
170  kwargs.setdefault("BkgInputKey", "")
171  else:
172  kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}TruthEvent")
173  inputs.append(f'McEventCollection#{kwargs["BkgInputKey"]}')
174 
175  kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}TruthEvent")
176  if flags.Common.ProductionStep is not ProductionStep.FastChain:
177  inputs.append(f'McEventCollection#{kwargs["SignalInputKey"]}')
178 
179  if flags.Sim.DoFullChain and flags.Common.isOverlay:
180  kwargs.setdefault("OutputKey", "BeamTruthEvent")
181  else:
182  kwargs.setdefault("OutputKey", "TruthEvent")
183 
184  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
185  acc.merge(SGInputLoaderCfg(flags, inputs))
186 
187  # Merge and copy McEventCollection
188  acc.addEventAlgo(CompFactory.CopyMcEventCollection(name, **kwargs))
189 
190  # Re-map signal address
191  from SGComps.AddressRemappingConfig import AddressRemappingCfg
192  acc.merge(AddressRemappingCfg([
193  f"McEventCollection#TruthEvent->{flags.Overlay.SigPrefix}TruthEvent"
194  ]))
195 
196  # Output
197  if flags.Output.doWriteRDO:
198  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
199  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
200  "McEventCollection#TruthEvent"
201  ]))
202 
203  # Add signal output
204  if flags.Output.doWriteRDO_SGNL:
205  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
206  acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
207  f"McEventCollection#{flags.Overlay.SigPrefix}TruthEvent"
208  ]))
209 
210  return acc
211 
212 
213 def CopyPixelClusterContainerAlgCfg(flags, **kwargs):
214  """Return a ComponentAccumulator for the CopyPixelClusterContainer algorithm"""
215  acc = ComponentAccumulator()
216 
217  kwargs.setdefault("InputKey", "PixelClusters")
218  kwargs.setdefault("OutputKey", flags.Overlay.BkgPrefix+"PixelClusters")
219  kwargs.setdefault("ExtraInputs", {('InDetDD::SiDetectorElementCollection', 'ConditionStore+PixelDetectorElementCollection')})
220 
221  if kwargs["InputKey"] in flags.Input.Collections:
222  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
223  acc.merge(SGInputLoaderCfg(flags, [f'InDet::PixelClusterContainer#{kwargs["InputKey"]}']))
224 
225  alg = CompFactory.CopyPixelClusterContainer("CopyPixelClusterContainer", **kwargs)
226  acc.addEventAlgo(alg)
227 
228  return acc
229 
231  """Return a ComponentAccumulator for the CopyPixelClusterContainer algorithm"""
232  acc = ComponentAccumulator()
233 
234  kwargs.setdefault("InputKey", "ITkPixelClusters")
235  kwargs.setdefault("OutputKey", flags.Overlay.BkgPrefix+"ITkPixelClusters")
236  kwargs.setdefault("ExtraInputs", [('InDetDD::SiDetectorElementCollection', 'ConditionStore+ITkPixelDetectorElementCollection')])
237 
238  if kwargs["InputKey"] in flags.Input.Collections:
239  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
240  acc.merge(SGInputLoaderCfg(flags, [f'InDet::PixelClusterContainer#{kwargs["InputKey"]}']))
241 
242  alg = CompFactory.CopyPixelClusterContainer("CopyPixelClusterContainer", **kwargs)
243  acc.addEventAlgo(alg)
244 
245  return acc
246 
247 def CopySCT_ClusterContainerAlgCfg(flags, **kwargs):
248  """Return a ComponentAccumulator for the CopySCT_ClusterContainer algorithm"""
249  acc = ComponentAccumulator()
250 
251  kwargs.setdefault("InputKey", "SCT_Clusters")
252  kwargs.setdefault("OutputKey", flags.Overlay.BkgPrefix+"SCT_Clusters")
253  kwargs.setdefault("ExtraInputs", {('InDetDD::SiDetectorElementCollection', 'ConditionStore+SCT_DetectorElementCollection')})
254 
255  if kwargs["InputKey"] in flags.Input.Collections:
256  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
257  acc.merge(SGInputLoaderCfg(flags, [f'InDet::SCT_ClusterContainer#{kwargs["InputKey"]}']))
258 
259  alg = CompFactory.CopySCT_ClusterContainer("CopySCT_ClusterContainer", **kwargs)
260  acc.addEventAlgo(alg)
261 
262  return acc
263 
265  """Return a ComponentAccumulator for the CopySCT_ClusterContainer algorithm"""
266  acc = ComponentAccumulator()
267 
268  kwargs.setdefault("InputKey", "ITkStripClusters")
269  kwargs.setdefault("OutputKey", flags.Overlay.BkgPrefix+"ITkStripClusters")
270  kwargs.setdefault("ExtraInputs", [('InDetDD::SiDetectorElementCollection', 'ConditionStore+ITkStripDetectorElementCollection')])
271 
272  if kwargs["InputKey"] in flags.Input.Collections:
273  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
274  acc.merge(SGInputLoaderCfg(flags, [f'InDet::SCT_ClusterContainer#{kwargs["InputKey"]}']))
275 
276  alg = CompFactory.CopySCT_ClusterContainer("CopySCT_ClusterContainer", **kwargs)
277  acc.addEventAlgo(alg)
278 
279  return acc
280 
282  """Return a ComponentAccumulator for the CopyTRT_DriftCircleContainer algorithm"""
283  acc = ComponentAccumulator()
284 
285  kwargs.setdefault("InputKey", "TRT_DriftCircles")
286  kwargs.setdefault("OutputKey", flags.Overlay.BkgPrefix+"TRT_DriftCircles")
287  kwargs.setdefault("ExtraInputs", {('InDetDD::TRT_DetElementContainer' , 'ConditionStore+TRT_DetElementContainer')})
288 
289  if kwargs["InputKey"] in flags.Input.Collections:
290  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
291  acc.merge(SGInputLoaderCfg(flags, [f'InDet::TRT_DriftCircleContainer#{kwargs["InputKey"]}']))
292 
293  alg = CompFactory.CopyTRT_DriftCircleContainer("CopyTRT_DriftCircleContainer", **kwargs)
294  acc.addEventAlgo(alg)
295 
296  return acc
297 
298 
299 def CopyTrackCollectionAlgCfg(flags, collectionName, **kwargs):
300  """Return a ComponentAccumulator for the TrackCollection copying"""
301  acc = ComponentAccumulator()
302 
303  kwargs.setdefault("OutputKey", flags.Overlay.BkgPrefix + collectionName)
304  kwargs.setdefault("InputKey", collectionName)
305  extra_inputs = set()
306  if flags.Detector.GeometryPixel:
307  extra_inputs.add(('InDetDD::SiDetectorElementCollection', 'ConditionStore+PixelDetectorElementCollection'))
308  if flags.Detector.GeometrySCT:
309  extra_inputs.add(('InDetDD::SiDetectorElementCollection', 'ConditionStore+SCT_DetectorElementCollection'))
310  if flags.Detector.GeometryTRT:
311  extra_inputs.add(( 'InDetDD::TRT_DetElementContainer' , 'ConditionStore+TRT_DetElementContainer' ))
312  if flags.Detector.GeometryITkPixel:
313  extra_inputs.add(( 'InDetDD::SiDetectorElementCollection' , 'ConditionStore+ITkPixelDetectorElementCollection' ))
314  if flags.Detector.GeometryITkStrip:
315  extra_inputs.add(( 'InDetDD::SiDetectorElementCollection' , 'ConditionStore+ITkStripDetectorElementCollection' ))
316 
317  kwargs.setdefault("ExtraInputs", extra_inputs)
318 
319  if kwargs["InputKey"] in flags.Input.Collections:
320  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
321  acc.merge(SGInputLoaderCfg(flags, [f'TrackCollection#{kwargs["InputKey"]}']))
322 
323  alg = CompFactory.CopyTrackCollection("CopyTrackCollection"+collectionName, **kwargs)
324  acc.addEventAlgo(alg)
325 
326  if flags.Output.doWriteRDO:
327  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
328  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
329  "TrackCollection#" + flags.Overlay.BkgPrefix+collectionName]))
330 
331  return acc
332 
333 
334 def CopyDetailedTrackTruthCollectionAlgCfg(flags, collectionName, **kwargs):
335  """Return a ComponentAccumulator for the DetailedTrackTruthCollection copying"""
336  acc = ComponentAccumulator()
337 
338  kwargs.setdefault("OutputKey", flags.Overlay.BkgPrefix + collectionName)
339  kwargs.setdefault("InputKey", collectionName)
340 
341  alg = CompFactory.CopyDetailedTrackTruthCollection("CopyDetailedTrackTruthCollection"+collectionName)
342  acc.addEventAlgo(alg)
343 
344  if flags.Output.doWriteRDO:
345  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
346  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
347  "DetailedTrackTruthCollection#" + flags.Overlay.BkgPrefix+collectionName
348  ]))
349 
350  return acc
351 
352 
353 def CopyPRD_MultiTruthCollectionAlgCfg(flags, collectionName, **kwargs):
354  """Return a ComponentAccumulator for the PRD_MultiTruthCollection copying"""
355  acc = ComponentAccumulator()
356 
357  kwargs.setdefault("OutputKey", flags.Overlay.BkgPrefix + collectionName)
358  kwargs.setdefault("InputKey", collectionName)
359 
360  alg = CompFactory.CopyPRD_MultiTruthCollection("CopyPRD_MultiTruthCollection"+collectionName)
361  acc.addEventAlgo(alg)
362 
363  if flags.Output.doWriteRDO:
364  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
365  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
366  "PRD_MultiTruthCollection#" + flags.Overlay.BkgPrefix+collectionName
367  ]))
368 
369  return acc
370 
371 
372 def CopyTrackRecordCollectionAlgCfg(flags, collectionName, name="CopyTrackRecordCollection", **kwargs):
373  """Return a ComponentAccumulator for the TrackRecordCollection copying"""
374  acc = ComponentAccumulator()
375 
376  kwargs.setdefault("collectionName", collectionName)
377  kwargs.setdefault("SignalInputKey", flags.Overlay.SigPrefix + collectionName)
378  kwargs.setdefault("OutputKey", collectionName)
379  kwargs.setdefault("ExtraInputs", flags.Overlay.ExtraInputs)
380 
381  if flags.Common.ProductionStep is not ProductionStep.FastChain:
382  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
383  acc.merge(SGInputLoaderCfg(flags, [f'TrackRecordCollection#{kwargs["SignalInputKey"]}']))
384 
385  # Re-map signal address
386  from SGComps.AddressRemappingConfig import AddressRemappingCfg
387  acc.merge(AddressRemappingCfg([
388  f"TrackRecordCollection#{collectionName}->{flags.Overlay.SigPrefix}{collectionName}"
389  ]))
390 
391  # Copy TrackRecordCollection
392  acc.addEventAlgo(CompFactory.CopyTrackRecordCollection(name + collectionName, **kwargs))
393 
394  # Output
395  if flags.Output.doWriteRDO:
396  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
397  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
398  f"TrackRecordCollection#{collectionName}"
399  ]))
400 
401  # Add signal output
402  if flags.Output.doWriteRDO_SGNL:
403  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
404  acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
405  f"TrackRecordCollection#{flags.Overlay.SigPrefix}{collectionName}"
406  ]))
407 
408  return acc
409 
410 
412  """Return overlay configuration for the CopyCalibrationHitContainer algorithms"""
413 
414  acc = ComponentAccumulator()
415  kwargs.setdefault("ExtraInputs", flags.Overlay.ExtraInputs)
416 
417  allowedContainers = [
418  "LArCalibrationHitActive", "LArCalibrationHitDeadMaterial", "LArCalibrationHitInactive"
419  "TileCalibrationCellHitCnt", "TileCalibrationDMHitCnt",
420  "TileCalibHitActiveCell", "TileCalibHitInactiveCell", "TileCalibHitDeadMaterial",
421  ]
422  availableContainers = []
423 
424  # Detect the list of calibration hit containers
425  for container in allowedContainers:
426  if (flags.Overlay.ByteStream and container in flags.Input.Collections) \
427  or (not flags.Overlay.ByteStream and container in flags.Input.SecondaryCollections):
428  availableContainers.append(container)
429 
430  for container in availableContainers:
431  acc.merge(CopyCaloCalibrationHitContainerAlgCfg(flags, container, **kwargs))
432 
433  return acc
434 
435 
436 def CopyPixelClusterContainerCfg(flags, **kwargs):
437  """Return overlay configuration for the CopyPixelClusterContainer algorithm"""
438 
439  acc = CopyPixelClusterContainerAlgCfg(flags, **kwargs)
440  if flags.Output.doWriteRDO:
441  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
442  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
443  "InDet::PixelClusterContainer#Bkg_PixelClusters"
444  ]))
445 
446  return acc
447 
448 def CopyITkPixelClusterContainerCfg(flags, **kwargs):
449  """Return overlay configuration for the CopyITkPixelClusterContainer algorithm"""
450  acc = CopyITkPixelClusterContainerAlgCfg(flags, **kwargs)
451  if flags.Output.doWriteRDO:
452  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
453  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
454  "InDet::PixelClusterContainer#Bkg_ITkPixelClusters"
455  ]))
456 
457  return acc
458 
459 def CopySCT_ClusterContainerCfg(flags, **kwargs):
460  """Return overlay configuration for the CopySCT_ClusterContainer algorithm"""
461 
462  acc = CopySCT_ClusterContainerAlgCfg(flags, **kwargs)
463  if flags.Output.doWriteRDO:
464  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
465  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
466  "InDet::SCT_ClusterContainer#Bkg_SCT_Clusters"
467  ]))
468 
469  return acc
470 
471 def CopyITkStripClusterContainerCfg(flags, **kwargs):
472  """Return overlay configuration for the CopySCT_ClusterContainer algorithm"""
473 
474  acc = CopyITkStripClusterContainerAlgCfg(flags, **kwargs)
475  if flags.Output.doWriteRDO:
476  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
477  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
478  "InDet::SCT_ClusterContainer#Bkg_ITkStripClusters"
479  ]))
480 
481  return acc
482 
483 def CopyTRT_DriftCircleContainerCfg(flags, **kwargs):
484  """Return overlay configuration for the CopyTRT_DriftCircleContainer algorithm"""
485 
486  acc = CopyTRT_DriftCircleContainerAlgCfg(flags, **kwargs)
487  if flags.Output.doWriteRDO:
488  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
489  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
490  "InDet::TRT_DriftCircleContainer#Bkg_TRT_DriftCircles"]))
491 
492  return acc
493 
494 
495 def CopyTrackRecordCollectionsCfg(flags, **kwargs):
496  """Return overlay configuration for the TrackRecordCollection algorithms"""
497 
498  acc = ComponentAccumulator()
499 
500  allowedContainers = [
501  "MuonExitLayer",
502  "MuonEntryLayer",
503  "CaloEntryLayer"
504  ]
505  availableContainers = []
506 
507  # Detect the list of track record collections
508  if flags.Common.ProductionStep == ProductionStep.FastChain:
509  availableContainers = allowedContainers
510  else:
511  hardScatterInputCollections = flags.Input.Collections if flags.Overlay.ByteStream else flags.Input.SecondaryCollections
512  for container in allowedContainers:
513  if container in hardScatterInputCollections:
514  availableContainers.append(container)
515 
516  for container in availableContainers:
517  acc.merge(CopyTrackRecordCollectionAlgCfg(flags, container, **kwargs))
518 
519  return acc
520 
521 
522 def CopyTrackCollectionsCfg(flags, **kwargs):
523  """ Return overlay configuration for copying tracks"""
524 
525  acc = ComponentAccumulator()
526 
527  allowedContainers = [
528  "CombinedInDetTracks",
529  "DisappearingTracks",
530  "ResolvedForwardTracks",
531  "ExtendedLargeD0Tracks"
532  ]
533 
534  availableContainers = []
535  # Detect the list of track collections
536  if flags.Common.ProductionStep == ProductionStep.FastChain:
537  availableContainers = allowedContainers
538  else:
539  hardScatterInputCollections = flags.Input.Collections
540  for container in allowedContainers:
541  if container in hardScatterInputCollections:
542  availableContainers.append(container)
543  for container in availableContainers:
544  acc.merge(CopyTrackCollectionAlgCfg(flags, container, **kwargs))
545 
546  return acc
547 
548 def CopyITkTrackCollectionsCfg(flags, **kwargs):
549  """ Return overlay configuration for copying tracks"""
550 
551  acc = ComponentAccumulator()
552 
553  allowedContainers = [
554  "CombinedITkTracks",
555  "ResolvedConversionTracks"
556  ]
557  availableContainers = []
558  # Detect the list of track collections
559  if flags.Common.ProductionStep == ProductionStep.FastChain:
560  availableContainers = allowedContainers
561  else:
562  hardScatterInputCollections = flags.Input.Collections
563  for container in allowedContainers:
564  if container in hardScatterInputCollections:
565  availableContainers.append(container)
566  for container in availableContainers:
567  acc.merge(CopyTrackCollectionAlgCfg(flags, container, **kwargs))
568 
569  return acc
570 
572  """ Return overlay configuration for copying detailed track truth"""
573 
574  acc = ComponentAccumulator()
575 
576  allowedContainers = [
577  "DisappearingTracksDetailedTruth",
578  "ResolvedForwardTracksDetailedTruth",
579  "CombinedInDetTracksDetailedTruth",
580  "ExtendedLargeD0TracksDetailedTruth"
581  ]
582 
583  availableContainers = []
584 
585  # Detect the list of detailed track truth collections
586  if flags.Common.ProductionStep == ProductionStep.FastChain:
587  availableContainers = allowedContainers
588  else:
589  hardScatterInputCollections = flags.Input.Collections
590  for container in allowedContainers:
591  if container in hardScatterInputCollections:
592  availableContainers.append(container)
593 
594  for container in availableContainers:
595  acc.merge(CopyDetailedTrackTruthCollectionAlgCfg(flags, container, **kwargs))
596 
597  return acc
598 
599 
600 def CopyPRD_MultiTruthCollectionsCfg(flags, **kwargs):
601  """ Return overlay configuration for copying detailed track truth"""
602 
603  acc = ComponentAccumulator()
604 
605  allowedContainers = [
606  "PRD_MultiTruthTRT",
607  "PRD_MultiTruthPixel",
608  "PRD_MultiTruthSCT"
609  ]
610 
611  availableContainers = []
612 
613  # Detect the list of detailed track truth collections
614  if flags.Common.ProductionStep == ProductionStep.FastChain:
615  availableContainers = allowedContainers
616  else:
617  hardScatterInputCollections = flags.Input.Collections
618  for container in allowedContainers:
619  if container in hardScatterInputCollections:
620  availableContainers.append(container)
621 
622  for container in availableContainers:
623  acc.merge(CopyPRD_MultiTruthCollectionAlgCfg(flags, container, **kwargs))
624 
625  return acc
626 
628  acc = ComponentAccumulator()
629  if flags.Output.doWriteRDO:
630  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
631  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[f"xAOD::VertexContainer#{flags.Overlay.BkgPrefix}PrimaryVertices",
632  f'xAOD::VertexAuxContainer#{flags.Overlay.BkgPrefix}PrimaryVerticesAux.x.y.z']))
633  return acc
python.OverlayCopyAlgsConfig.CopyBackgroundVertexCfg
def CopyBackgroundVertexCfg(flags)
Definition: OverlayCopyAlgsConfig.py:627
AddressRemappingConfig.AddressRemappingCfg
def AddressRemappingCfg(renameMaps=[], overwriteMaps=[])
Definition: AddressRemappingConfig.py:10
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.OverlayCopyAlgsConfig.CopyMcEventCollectionCfg
def CopyMcEventCollectionCfg(flags, name="CopyMcEventCollection", **kwargs)
Definition: OverlayCopyAlgsConfig.py:161
python.OverlayCopyAlgsConfig.CopyPixelClusterContainerCfg
def CopyPixelClusterContainerCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:436
python.OverlayCopyAlgsConfig.CopyITkPixelClusterContainerCfg
def CopyITkPixelClusterContainerCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:448
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, keepProvenanceTagsRegEx=None, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:16
python.OverlayCopyAlgsConfig.CopyTrackCollectionAlgCfg
def CopyTrackCollectionAlgCfg(flags, collectionName, **kwargs)
Definition: OverlayCopyAlgsConfig.py:299
python.OverlayCopyAlgsConfig.CopyDetailedTrackTruthCollectionAlgCfg
def CopyDetailedTrackTruthCollectionAlgCfg(flags, collectionName, **kwargs)
Definition: OverlayCopyAlgsConfig.py:334
python.OverlayCopyAlgsConfig.CopyCaloCalibrationHitContainersCfg
def CopyCaloCalibrationHitContainersCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:411
python.OverlayCopyAlgsConfig.CopyOutOfTimeAntiKt4JetTruthInfoCfg
def CopyOutOfTimeAntiKt4JetTruthInfoCfg(flags, name="CopyOutOfTimeAntiKt4JetTruthInfo", **kwargs)
Definition: OverlayCopyAlgsConfig.py:80
python.OverlayCopyAlgsConfig.CopyPileupParticleTruthInfoCfg
def CopyPileupParticleTruthInfoCfg(flags, name="CopyPileupParticleTruthInfo", **kwargs)
Definition: OverlayCopyAlgsConfig.py:133
python.OverlayCopyAlgsConfig.CopyPRD_MultiTruthCollectionsCfg
def CopyPRD_MultiTruthCollectionsCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:600
python.OverlayCopyAlgsConfig.CopySCT_ClusterContainerCfg
def CopySCT_ClusterContainerCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:459
python.OverlayCopyAlgsConfig.CopyITkTrackCollectionsCfg
def CopyITkTrackCollectionsCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:548
python.OverlayCopyAlgsConfig.CopyInTimeAntiKt6JetTruthInfoCfg
def CopyInTimeAntiKt6JetTruthInfoCfg(flags, name="CopyInTimeAntiKt6JetTruthInfo", **kwargs)
Definition: OverlayCopyAlgsConfig.py:88
python.OverlayCopyAlgsConfig.CopyDetailedTrackTruthCollectionsCfg
def CopyDetailedTrackTruthCollectionsCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:571
python.OverlayCopyAlgsConfig.CopyInTimeAntiKt4JetTruthInfoCfg
def CopyInTimeAntiKt4JetTruthInfoCfg(flags, name="CopyInTimeAntiKt4JetTruthInfo", **kwargs)
Definition: OverlayCopyAlgsConfig.py:72
python.OverlayCopyAlgsConfig.CopyTrackCollectionsCfg
def CopyTrackCollectionsCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:522
python.OverlayCopyAlgsConfig.CopyTRT_DriftCircleContainerCfg
def CopyTRT_DriftCircleContainerCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:483
python.OverlayCopyAlgsConfig.CopyTrackRecordCollectionsCfg
def CopyTrackRecordCollectionsCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:495
SGInputLoaderConfig.SGInputLoaderCfg
def SGInputLoaderCfg(flags, Load=None, **kwargs)
Definition: SGInputLoaderConfig.py:7
python.OverlayCopyAlgsConfig.CopyITkStripClusterContainerCfg
def CopyITkStripClusterContainerCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:471
python.OverlayCopyAlgsConfig.CopyPixelClusterContainerAlgCfg
def CopyPixelClusterContainerAlgCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:213
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
python.OverlayCopyAlgsConfig.CopyTRT_DriftCircleContainerAlgCfg
def CopyTRT_DriftCircleContainerAlgCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:281
python.OverlayCopyAlgsConfig.CopyITkStripClusterContainerAlgCfg
def CopyITkStripClusterContainerAlgCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:264
python.OverlayCopyAlgsConfig.CopyCaloCalibrationHitContainerAlgCfg
def CopyCaloCalibrationHitContainerAlgCfg(flags, collectionName, name="CopyCaloCalibrationHitContainer", **kwargs)
Definition: OverlayCopyAlgsConfig.py:11
python.OverlayCopyAlgsConfig.CopyPRD_MultiTruthCollectionAlgCfg
def CopyPRD_MultiTruthCollectionAlgCfg(flags, collectionName, **kwargs)
Definition: OverlayCopyAlgsConfig.py:353
python.OverlayCopyAlgsConfig.CopyITkPixelClusterContainerAlgCfg
def CopyITkPixelClusterContainerAlgCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:230
python.OverlayCopyAlgsConfig.CopyTrackRecordCollectionAlgCfg
def CopyTrackRecordCollectionAlgCfg(flags, collectionName, name="CopyTrackRecordCollection", **kwargs)
Definition: OverlayCopyAlgsConfig.py:372
python.OverlayCopyAlgsConfig.CopyJetTruthInfoCfg
def CopyJetTruthInfoCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:104
python.OverlayCopyAlgsConfig.CopyJetTruthInfoAlgCfg
def CopyJetTruthInfoAlgCfg(flags, name, **kwargs)
Definition: OverlayCopyAlgsConfig.py:48
python.OverlayCopyAlgsConfig.CopySCT_ClusterContainerAlgCfg
def CopySCT_ClusterContainerAlgCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:247
python.OverlayCopyAlgsConfig.CopyOutOfTimeAntiKt6JetTruthInfoCfg
def CopyOutOfTimeAntiKt6JetTruthInfoCfg(flags, name="CopyOutOfTimeAntiKt6JetTruthInfo", **kwargs)
Definition: OverlayCopyAlgsConfig.py:96