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 # for track overlay, write out the signal RDOs because reco tracking will only run on them
45 if flags.Overlay.doTrackOverlay:
46 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
47 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
48 f"PixelRDO_Container#{flags.Overlay.SigPrefix}PLR_RDOs"
49 ]))
50
51 return acc
52
53
54def PLR_TruthOverlayCfg(flags, name="PLR_SDOOverlay", **kwargs):
55 """Return a ComponentAccumulator for the PLR SDO overlay algorithm"""
56 acc = ComponentAccumulator()
57
58 # We do not need background PLR SDOs for data overlay
59 if not flags.Input.isMC:
60 kwargs.setdefault("BkgInputKey", "")
61 else:
62 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}PLR_SDO_Map")
63
64 if kwargs["BkgInputKey"]:
65 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
66 acc.merge(SGInputLoaderCfg(flags, [f'InDetSimDataCollection#{kwargs["BkgInputKey"]}']))
67
68 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}PLR_SDO_Map")
69 kwargs.setdefault("OutputKey", "PLR_SDO_Map")
70
71 # Do PLR truth overlay
72 acc.addEventAlgo(CompFactory.InDetSDOOverlay(name, **kwargs))
73
74 # Setup output
75 if flags.Output.doWriteRDO:
76 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
77 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
78 "InDetSimDataCollection#PLR_SDO_Map"
79 ]))
80
81 if flags.Output.doWriteRDO_SGNL:
82 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
83 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
84 f"InDetSimDataCollection#{flags.Overlay.SigPrefix}PLR_SDO_Map"
85 ]))
86
87 return acc
88
89
90def PLR_OverlayCfg(flags):
91 """Configure and return a ComponentAccumulator for PLR overlay"""
92 acc = ComponentAccumulator()
93
94 # Add PLR overlay digitization algorithm
95 from PixelDigitization.PLR_DigitizationConfig import PLR_OverlayDigitizationBasicCfg
96 acc.merge(PLR_OverlayDigitizationBasicCfg(flags))
97
98 # Add PLR overlay algorithm
99 acc.merge(PLR_OverlayAlgCfg(flags))
100
101 # Add PLR truth overlay
102 if flags.Digitization.EnableTruth:
103 acc.merge(PLR_TruthOverlayCfg(flags))
104
105 return acc
PLR_OverlayAlgCfg(flags, name="PLR_Overlay", **kwargs)
PLR_TruthOverlayCfg(flags, name="PLR_SDOOverlay", **kwargs)