ATLAS Offline Software
Loading...
Searching...
No Matches
PLR_OverlayConfig.py
Go to the documentation of this file.
1"""Define methods to construct configured PLR 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 PLR_OverlayAlgCfg(flags, name="PLR_Overlay", **kwargs):
11 """Return a ComponentAccumulator for PLR Overlay algorithm"""
12 acc = ComponentAccumulator()
13
14 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}PLR_RDOs" if not flags.Overlay.IgnoreBkgInputs else "")
15 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}PLR_RDOs")
16 kwargs.setdefault("OutputKey", "PLR_RDOs")
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 PLR 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#PLR_RDOs"
31 ]))
32
33 if not flags.Input.isMC:
34 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
35 "IDCInDetBSErrContainer#PLR_ByteStreamErrs"
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}PLR_RDOs"
42 ]))
43
44 return acc
45
46
47def PLR_TruthOverlayCfg(flags, name="PLR_SDOOverlay", **kwargs):
48 """Return a ComponentAccumulator for the PLR SDO overlay algorithm"""
49 acc = ComponentAccumulator()
50
51 # We do not need background PLR SDOs for data overlay
52 if not flags.Input.isMC:
53 kwargs.setdefault("BkgInputKey", "")
54 else:
55 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}PLR_SDO_Map")
56
57 if kwargs["BkgInputKey"]:
58 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
59 acc.merge(SGInputLoaderCfg(flags, [f'InDetSimDataCollection#{kwargs["BkgInputKey"]}']))
60
61 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}PLR_SDO_Map")
62 kwargs.setdefault("OutputKey", "PLR_SDO_Map")
63
64 # Do PLR truth overlay
65 acc.addEventAlgo(CompFactory.InDetSDOOverlay(name, **kwargs))
66
67 # Setup output
68 if flags.Output.doWriteRDO:
69 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
70 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
71 "InDetSimDataCollection#PLR_SDO_Map"
72 ]))
73
74 if flags.Output.doWriteRDO_SGNL:
75 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
76 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
77 f"InDetSimDataCollection#{flags.Overlay.SigPrefix}PLR_SDO_Map"
78 ]))
79
80 return acc
81
82
83def PLR_OverlayCfg(flags):
84 """Configure and return a ComponentAccumulator for PLR overlay"""
85 acc = ComponentAccumulator()
86
87 # Add PLR overlay digitization algorithm
88 from PixelDigitization.PLR_DigitizationConfig import PLR_OverlayDigitizationBasicCfg
89 acc.merge(PLR_OverlayDigitizationBasicCfg(flags))
90
91 # Add PLR overlay algorithm
92 acc.merge(PLR_OverlayAlgCfg(flags))
93
94 # Add PLR truth overlay
95 if flags.Digitization.EnableTruth:
96 acc.merge(PLR_TruthOverlayCfg(flags))
97
98 return acc
PLR_OverlayAlgCfg(flags, name="PLR_Overlay", **kwargs)
PLR_TruthOverlayCfg(flags, name="PLR_SDOOverlay", **kwargs)