ATLAS Offline Software
Loading...
Searching...
No Matches
TRTOverlayConfig.py
Go to the documentation of this file.
1"""Define methods to construct configured TRT 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 TRTOverlayAlgCfg(flags, name="TRTOverlay", **kwargs):
11 """Return a ComponentAccumulator for TRTOverlay algorithm"""
12 acc = ComponentAccumulator()
13
14 kwargs.setdefault("SortBkgInput", flags.Overlay.DataOverlay)
15 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}TRT_RDOs")
16 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}TRT_RDOs")
17 kwargs.setdefault("SignalInputSDOKey", f"{flags.Overlay.SigPrefix}TRT_SDO_Map")
18 kwargs.setdefault("OutputKey", "TRT_RDOs")
19
20 # Input setup
21 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
22 acc.merge(SGInputLoaderCfg(flags, [f'TRT_RDO_Container#{kwargs["BkgInputKey"]}']))
23
24 from TRT_GeoModel.TRT_GeoModelConfig import TRT_ReadoutGeometryCfg
25 acc.merge(TRT_ReadoutGeometryCfg(flags))
26
27 # HT hit correction fraction
28 kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrel", 0.110)
29 kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcap", 0.090)
30 kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrelNoE", 0.060)
31 kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcapNoE", 0.050)
32 kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrelAr", 0.100)
33 kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcapAr", 0.101)
34 kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrelArNoE", 0.088)
35 kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcapArNoE", 0.102)
36
37 from InDetConfig.TRT_ElectronPidToolsConfig import TRT_OverlayLocalOccupancyCfg
38 kwargs.setdefault("TRT_LocalOccupancyTool", acc.popToolsAndMerge(TRT_OverlayLocalOccupancyCfg(flags)))
39
40 from RngComps.RngCompsConfig import AthRNGSvcCfg
41 kwargs.setdefault("RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
42
43 # Do TRT overlay
44 acc.addEventAlgo(CompFactory.TRTOverlay(name, **kwargs))
45
46 # Setup output
47 if flags.Output.doWriteRDO:
48 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
49 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
50 "TRT_RDO_Container#TRT_RDOs"
51 ]))
52
53 if not flags.Input.isMC:
54 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
55 "TRT_BSErrContainer#TRT_ByteStreamErrs"
56 ]))
57
58 if flags.Output.doWriteRDO_SGNL:
59 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
60 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
61 f"TRT_RDO_Container#{flags.Overlay.SigPrefix}TRT_RDOs"
62 ]))
63
64 return acc
65
66
67def TRTTruthOverlayCfg(flags, name="TRTSDOOverlay", **kwargs):
68 """Return a ComponentAccumulator for the TRT SDO overlay algorithm"""
69 acc = ComponentAccumulator()
70
71 # We do not need background TRT SDOs for data overlay
72 if not flags.Input.isMC:
73 kwargs.setdefault("BkgInputKey", "")
74 else:
75 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}TRT_SDO_Map")
76
77 if kwargs["BkgInputKey"]:
78 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
79 acc.merge(SGInputLoaderCfg(flags, [f'InDetSimDataCollection#{kwargs["BkgInputKey"]}']))
80
81 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}TRT_SDO_Map")
82 kwargs.setdefault("OutputKey", "TRT_SDO_Map")
83
84 # Do TRT truth overlay
85 acc.addEventAlgo(CompFactory.InDetSDOOverlay(name, **kwargs))
86
87 # Setup output
88 if flags.Output.doWriteRDO:
89 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
90 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
91 "InDetSimDataCollection#TRT_SDO_Map"
92 ]))
93
94 if flags.Output.doWriteRDO_SGNL:
95 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
96 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
97 f"InDetSimDataCollection#{flags.Overlay.SigPrefix}TRT_SDO_Map"
98 ]))
99
100 return acc
101
102
103def TRTOverlayCfg(flags):
104 """Configure and return a ComponentAccumulator for TRT overlay"""
105 acc = ComponentAccumulator()
106
107 # Add TRT overlay digitization algorithm
108 from TRT_Digitization.TRT_DigitizationConfig import TRT_OverlayDigitizationBasicCfg
109 acc.merge(TRT_OverlayDigitizationBasicCfg(flags))
110
111 # Add TRT overlay algorithm
112 acc.merge(TRTOverlayAlgCfg(flags))
113
114 # Add TRT truth overlay
115 if flags.Digitization.EnableTruth:
116 acc.merge(TRTTruthOverlayCfg(flags))
117
118 return acc
TRTOverlayAlgCfg(flags, name="TRTOverlay", **kwargs)
TRTTruthOverlayCfg(flags, name="TRTSDOOverlay", **kwargs)