ATLAS Offline Software
Loading...
Searching...
No Matches
SCTOverlayConfig.py
Go to the documentation of this file.
1"""Define methods to construct configured SCT 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 SCTOverlayAlgCfg(flags, name="SCTOverlay", **kwargs):
11 """Return a ComponentAccumulator for SCTOverlay algorithm"""
12 acc = ComponentAccumulator()
13
14 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}SCT_RDOs")
15 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}SCT_RDOs")
16 kwargs.setdefault("OutputKey", "SCT_RDOs")
17
18 # Input setup
19 if flags.Overlay.ByteStream:
20 from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConfig import SCTRawDataProviderCfg, SCTEventFlagWriterCfg
21 acc.merge(SCTRawDataProviderCfg(flags))
22 acc.merge(SCTEventFlagWriterCfg(flags))
23 else:
24 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
25 acc.merge(SGInputLoaderCfg(flags, [f'SCT_RDO_Container#{kwargs["BkgInputKey"]}']))
26
27 # Do SCT overlay
28 acc.addEventAlgo(CompFactory.SCTOverlay(name, **kwargs))
29
30 # Setup output
31 if flags.Output.doWriteRDO:
32 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
33 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
34 "SCT_RDO_Container#SCT_RDOs"
35 ]))
36
37 if not flags.Input.isMC:
38 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
39 "IDCInDetBSErrContainer#SCT_ByteStreamErrs"
40 ]))
41
42 if flags.Output.doWriteRDO_SGNL:
43 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
44 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
45 f"SCT_RDO_Container#{flags.Overlay.SigPrefix}SCT_RDOs"
46 ]))
47
48 # for track overlay, write out the signal RDOs because reco tracking will only run on them
49 if flags.Overlay.doTrackOverlay:
50 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
51 f"SCT_RDO_Container#{flags.Overlay.SigPrefix}SCT_RDOs"
52 ]))
53
54 return acc
55
56
57def SCTTruthOverlayCfg(flags, name="SCTSDOOverlay", **kwargs):
58 """Return a ComponentAccumulator for the SCT SDO overlay algorithm"""
59 acc = ComponentAccumulator()
60
61 # We do not need background SCT SDOs
62 kwargs.setdefault("BkgInputKey", "")
63
64 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}SCT_SDO_Map")
65 kwargs.setdefault("OutputKey", "SCT_SDO_Map")
66
67 # Do SCT truth overlay
68 acc.addEventAlgo(CompFactory.InDetSDOOverlay(name, **kwargs))
69
70 # Setup output
71 if flags.Output.doWriteRDO:
72 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
73 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
74 "InDetSimDataCollection#SCT_SDO_Map"
75 ]))
76
77 if flags.Output.doWriteRDO_SGNL:
78 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
79 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
80 f"InDetSimDataCollection#{flags.Overlay.SigPrefix}SCT_SDO_Map"
81 ]))
82
83 return acc
84
85
86def SCTOverlayCfg(flags):
87 """Configure and return a ComponentAccumulator for SCT overlay"""
88 acc = ComponentAccumulator()
89
90 # Add SCT overlay digitization algorithm
91 from SCT_Digitization.SCT_DigitizationConfig import SCT_OverlayDigitizationBasicCfg
92 acc.merge(SCT_OverlayDigitizationBasicCfg(flags))
93
94 # Add SCT overlay algorithm
95 acc.merge(SCTOverlayAlgCfg(flags))
96
97 # Add SCT truth overlay
98 if flags.Digitization.EnableTruth:
99 acc.merge(SCTTruthOverlayCfg(flags))
100
101 return acc
SCTTruthOverlayCfg(flags, name="SCTSDOOverlay", **kwargs)
SCTOverlayAlgCfg(flags, name="SCTOverlay", **kwargs)