ATLAS Offline Software
PixelOverlayConfig.py
Go to the documentation of this file.
1 """Define methods to construct configured Pixel overlay algorithms
2 
3 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
4 """
5 
6 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7 from AthenaConfiguration.ComponentFactory import CompFactory
8 
9 
10 
11 def PixelDataOverlayExtraCfg(flags, **kwargs):
12  """Return a ComponentAccumulator with pixel data overlay specifics"""
13  acc = ComponentAccumulator()
14 
15  # We need to convert BS to RDO for data overlay
16  from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConfig import PixelRawDataProviderAlgCfg
17  acc.merge(PixelRawDataProviderAlgCfg(flags, RDOKey=f"{flags.Overlay.BkgPrefix}PixelRDOs"))
18 
19  return acc
20 
21 
22 def PixelOverlayAlgCfg(flags, name="PixelOverlay", **kwargs):
23  """Return a ComponentAccumulator for PixelOverlay algorithm"""
24  acc = ComponentAccumulator()
25 
26  kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}PixelRDOs")
27  kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}PixelRDOs")
28  kwargs.setdefault("OutputKey", "PixelRDOs")
29 
30  if not flags.Overlay.DataOverlay:
31  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
32  acc.merge(SGInputLoaderCfg(flags, [f'PixelRDO_Container#{kwargs["BkgInputKey"]}']))
33 
34  # Do Pixel overlay
35  acc.addEventAlgo(CompFactory.PixelOverlay(name, **kwargs))
36 
37  # Setup output
38  if flags.Output.doWriteRDO:
39  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
40  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
41  "PixelRDO_Container#PixelRDOs"
42  ]))
43 
44  if flags.Overlay.DataOverlay:
45  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
46  "IDCInDetBSErrContainer#PixelByteStreamErrs"
47  ]))
48 
49  if flags.Output.doWriteRDO_SGNL:
50  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
51  acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
52  f"PixelRDO_Container#{flags.Overlay.SigPrefix}PixelRDOs"
53  ]))
54 
55  if flags.Overlay.doTrackOverlay:
56  #for track overlay, write out the signal RDOs because reco tracking will only run on them
57  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
58  f"PixelRDO_Container#{flags.Overlay.SigPrefix}PixelRDOs"]))
59 
60  return acc
61 
62 
63 def PixelTruthOverlayCfg(flags, name="PixelSDOOverlay", **kwargs):
64  """Return a ComponentAccumulator for the Pixel SDO overlay algorithm"""
65  acc = ComponentAccumulator()
66 
67  # We do not need background Pixel SDOs
68  kwargs.setdefault("BkgInputKey", "")
69 
70  kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}PixelSDO_Map")
71  kwargs.setdefault("OutputKey", "PixelSDO_Map")
72 
73  # Do Pixel truth overlay
74  acc.addEventAlgo(CompFactory.InDetSDOOverlay(name, **kwargs))
75 
76  # Setup output
77  if flags.Output.doWriteRDO:
78  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
79  acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
80  "InDetSimDataCollection#PixelSDO_Map"
81  ]))
82 
83  if flags.Output.doWriteRDO_SGNL:
84  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
85  acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
86  f"InDetSimDataCollection#{flags.Overlay.SigPrefix}PixelSDO_Map"
87  ]))
88 
89  return acc
90 
91 
92 def PixelOverlayCfg(flags):
93  """Configure and return a ComponentAccumulator for Pixel overlay"""
94  acc = ComponentAccumulator()
95 
96  # Add data overlay specifics
97  if flags.Overlay.DataOverlay:
98  acc.merge(PixelDataOverlayExtraCfg(flags))
99 
100  # Add Pixel overlay digitization algorithm
101  from PixelDigitization.PixelDigitizationConfig import PixelOverlayDigitizationBasicCfg
102  acc.merge(PixelOverlayDigitizationBasicCfg(flags))
103  # Add Pixel overlay algorithm
104  acc.merge(PixelOverlayAlgCfg(flags))
105  # Add Pixel truth overlay
106  if flags.Digitization.EnableTruth:
107  acc.merge(PixelTruthOverlayCfg(flags))
108 
109  return acc
PixelRawDataByteStreamCnvConfig.PixelRawDataProviderAlgCfg
def PixelRawDataProviderAlgCfg(flags, RDOKey="PixelRDOs", **kwargs)
Definition: PixelRawDataByteStreamCnvConfig.py:15
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:12
SGInputLoaderConfig.SGInputLoaderCfg
def SGInputLoaderCfg(flags, Load=None, **kwargs)
Definition: SGInputLoaderConfig.py:7
PixelOverlayConfig.PixelOverlayCfg
def PixelOverlayCfg(flags)
Definition: PixelOverlayConfig.py:92
PixelOverlayConfig.PixelTruthOverlayCfg
def PixelTruthOverlayCfg(flags, name="PixelSDOOverlay", **kwargs)
Definition: PixelOverlayConfig.py:63
PixelOverlayConfig.PixelDataOverlayExtraCfg
def PixelDataOverlayExtraCfg(flags, **kwargs)
Definition: PixelOverlayConfig.py:11
PixelOverlayConfig.PixelOverlayAlgCfg
def PixelOverlayAlgCfg(flags, name="PixelOverlay", **kwargs)
Definition: PixelOverlayConfig.py:22
PixelDigitizationConfig.PixelOverlayDigitizationBasicCfg
def PixelOverlayDigitizationBasicCfg(flags, **kwargs)
Definition: PixelDigitizationConfig.py:312