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")
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 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
34 acc.merge(SGInputLoaderCfg(flags, [f'BCM_RDO_Container#{kwargs["BkgInputKey"]}']))
35
36 # Do BCM overlay
37 acc.addEventAlgo(CompFactory.BCMOverlay(name, **kwargs))
38
39 # Setup output
40 if flags.Output.doWriteRDO:
41 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
42 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
43 "BCM_RDO_Container#BCM_RDOs"
44 ]))
45
46 if flags.Output.doWriteRDO_SGNL:
47 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
48 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
49 f"BCM_RDO_Container#{flags.Overlay.SigPrefix}BCM_RDOs"
50 ]))
51
52 return acc
53
54
55def BCMTruthOverlayCfg(flags, name="BCMSDOOverlay", **kwargs):
56 """Return a ComponentAccumulator for the BCM SDO overlay algorithm"""
57 acc = ComponentAccumulator()
58
59 # We do not need background BCM SDOs
60 kwargs.setdefault("BkgInputKey", "")
61
62 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}BCM_SDO_Map")
63 kwargs.setdefault("OutputKey", "BCM_SDO_Map")
64
65 # Do BCM truth overlay
66 acc.addEventAlgo(CompFactory.InDetSDOOverlay(name, **kwargs))
67
68 # Setup output
69 if flags.Output.doWriteRDO:
70 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
71 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
72 "InDetSimDataCollection#BCM_SDO_Map"
73 ]))
74
75 if flags.Output.doWriteRDO_SGNL:
76 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
77 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
78 f"InDetSimDataCollection#{flags.Overlay.SigPrefix}BCM_SDO_Map"
79 ]))
80
81 return acc
82
83
84def BCMOverlayCfg(flags):
85 """Configure and return a ComponentAccumulator for BCM overlay"""
86 acc = ComponentAccumulator()
87
88 # Add BCM overlay digitization algorithm
89 from BCM_Digitization.BCM_DigitizationConfig import BCM_OverlayDigitizationBasicCfg
90 acc.merge(BCM_OverlayDigitizationBasicCfg(flags))
91
92 # Add BCM overlay algorithm
93 acc.merge(BCMOverlayAlgCfg(flags))
94
95 # Add BCM truth overlay
96 if flags.Digitization.EnableTruth:
97 acc.merge(BCMTruthOverlayCfg(flags))
98
99 return acc
BCMRawDataProviderAlgCfg(flags, name="BCMRawDataProvider", **kwargs)