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-2026 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" if not flags.Overlay.IgnoreBkgInputs else "")
15 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}PixelRDOs")
16 kwargs.setdefault("OutputKey", "PixelRDOs")
17
18 # Input setup
19 if kwargs["BkgInputKey"]:
20 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
21 acc.merge(SGInputLoaderCfg(flags, [f'PixelRDO_Container#{kwargs["BkgInputKey"]}']))
22
23 # Do Pixel overlay
24 acc.addEventAlgo(CompFactory.PixelOverlay(name, **kwargs))
25
26 # Setup output
27 if flags.Output.doWriteRDO:
28 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
29 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
30 "PixelRDO_Container#PixelRDOs"
31 ]))
32
33 if not flags.Input.isMC:
34 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
35 "IDCInDetBSErrContainer#PixelByteStreamErrs"
36 ]))
37
38 if flags.Output.doWriteRDO_SGNL:
39 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
40 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
41 f"PixelRDO_Container#{flags.Overlay.SigPrefix}PixelRDOs"
42 ]))
43
44 # for track overlay, write out the signal RDOs because reco tracking will only run on them
45 if flags.Overlay.doTrackOverlay:
46 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
47 f"PixelRDO_Container#{flags.Overlay.SigPrefix}PixelRDOs"
48 ]))
49
50 return acc
51
52
53def PixelTruthOverlayCfg(flags, name="PixelSDOOverlay", **kwargs):
54 """Return a ComponentAccumulator for the Pixel SDO overlay algorithm"""
55 acc = ComponentAccumulator()
56
57 # We do not need background Pixel SDOs
58 kwargs.setdefault("BkgInputKey", "")
59
60 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}PixelSDO_Map")
61 kwargs.setdefault("OutputKey", "PixelSDO_Map")
62
63 # Do Pixel truth overlay
64 acc.addEventAlgo(CompFactory.InDetSDOOverlay(name, **kwargs))
65
66 # Setup output
67 if flags.Output.doWriteRDO:
68 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
69 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
70 "InDetSimDataCollection#PixelSDO_Map"
71 ]))
72
73 if flags.Output.doWriteRDO_SGNL:
74 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
75 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
76 f"InDetSimDataCollection#{flags.Overlay.SigPrefix}PixelSDO_Map"
77 ]))
78
79 return acc
80
81
82def PixelOverlayCfg(flags):
83 """Configure and return a ComponentAccumulator for Pixel overlay"""
84 acc = ComponentAccumulator()
85
86 # Add Pixel overlay digitization algorithm
87 from PixelDigitization.PixelDigitizationConfig import PixelOverlayDigitizationBasicCfg
88 acc.merge(PixelOverlayDigitizationBasicCfg(flags))
89
90 # Add Pixel overlay algorithm
91 acc.merge(PixelOverlayAlgCfg(flags))
92
93 # Add Pixel truth overlay
94 if flags.Digitization.EnableTruth:
95 acc.merge(PixelTruthOverlayCfg(flags))
96
97 return acc
PixelOverlayAlgCfg(flags, name="PixelOverlay", **kwargs)
PixelTruthOverlayCfg(flags, name="PixelSDOOverlay", **kwargs)