ATLAS Offline Software
Loading...
Searching...
No Matches
BCMOverlayConfig.py
Go to the documentation of this file.
1"""Define methods to construct configured BCM 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 BCMRawDataProviderAlgCfg(flags, name="BCMRawDataProvider", **kwargs):
11 """Return a ComponentAccumulator for BCM raw data provider"""
12 # Temporary until available in the central location
13 acc = ComponentAccumulator()
14
15 kwargs.setdefault("RDOKey", f"{flags.Overlay.BkgPrefix}BCM_RDOs")
16
17 acc.addEventAlgo(CompFactory.BCM_RawDataProvider(name, **kwargs))
18
19 return acc
20
21
22def BCMOverlayAlgCfg(flags, name="BCMOverlay", **kwargs):
23 """Return a ComponentAccumulator for BCMOverlay algorithm"""
24 acc = ComponentAccumulator()
25
26 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}BCM_RDOs" if not flags.Overlay.IgnoreBkgInputs else "")
27 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}BCM_RDOs")
28 kwargs.setdefault("OutputKey", "BCM_RDOs")
29
30 kwargs.setdefault("isDataOverlay", not flags.Input.isMC)
31
32 # Input setup
33 if kwargs["BkgInputKey"]:
34 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
35 acc.merge(SGInputLoaderCfg(flags, [f'BCM_RDO_Container#{kwargs["BkgInputKey"]}']))
36
37 # Do BCM overlay
38 acc.addEventAlgo(CompFactory.BCMOverlay(name, **kwargs))
39
40 # Setup output
41 if flags.Output.doWriteRDO:
42 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
43 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
44 "BCM_RDO_Container#BCM_RDOs"
45 ]))
46
47 if flags.Output.doWriteRDO_SGNL:
48 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
49 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
50 f"BCM_RDO_Container#{flags.Overlay.SigPrefix}BCM_RDOs"
51 ]))
52
53 return acc
54
55
56def BCMTruthOverlayCfg(flags, name="BCMSDOOverlay", **kwargs):
57 """Return a ComponentAccumulator for the BCM SDO overlay algorithm"""
58 acc = ComponentAccumulator()
59
60 # We do not need background BCM SDOs for data overlay
61 if not flags.Input.isMC:
62 kwargs.setdefault("BkgInputKey", "")
63 else:
64 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}BCM_SDO_Map")
65
66 if kwargs["BkgInputKey"]:
67 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
68 acc.merge(SGInputLoaderCfg(flags, [f'InDetSimDataCollection#{kwargs["BkgInputKey"]}']))
69
70 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}BCM_SDO_Map")
71 kwargs.setdefault("OutputKey", "BCM_SDO_Map")
72
73 # Do BCM truth overlay
74 acc.addEventAlgo(CompFactory.InDetSDOOverlay(name, **kwargs))
75
76 # Setup output
77 if flags.Output.doWriteRDO:
78 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
79 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
80 "InDetSimDataCollection#BCM_SDO_Map"
81 ]))
82
83 if flags.Output.doWriteRDO_SGNL:
84 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
85 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
86 f"InDetSimDataCollection#{flags.Overlay.SigPrefix}BCM_SDO_Map"
87 ]))
88
89 return acc
90
91
92def BCMOverlayCfg(flags):
93 """Configure and return a ComponentAccumulator for BCM overlay"""
94 acc = ComponentAccumulator()
95
96 # Add BCM overlay digitization algorithm
97 from BCM_Digitization.BCM_DigitizationConfig import BCM_OverlayDigitizationBasicCfg
98 acc.merge(BCM_OverlayDigitizationBasicCfg(flags))
99
100 # Add BCM overlay algorithm
101 acc.merge(BCMOverlayAlgCfg(flags))
102
103 # Add BCM truth overlay
104 if flags.Digitization.EnableTruth:
105 acc.merge(BCMTruthOverlayCfg(flags))
106
107 return acc
BCMRawDataProviderAlgCfg(flags, name="BCMRawDataProvider", **kwargs)