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