ATLAS Offline Software
Loading...
Searching...
No Matches
TRT_DigitizationConfig.py
Go to the documentation of this file.
1"""Define methods to construct configured TRT Digitization tools and algorithms
2
3Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
4"""
5from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory import CompFactory
7from AthenaConfiguration.Enums import BeamType, ProductionStep
8from TRT_GeoModel.TRT_GeoModelConfig import TRT_ReadoutGeometryCfg
9from MagFieldServices.MagFieldServicesConfig import AtlasFieldCacheCondAlgCfg
10from TRT_PAI_Process.TRT_PAI_ProcessConfig import TRT_PAI_Process_XeToolCfg, TRT_PAI_Process_ArToolCfg, TRT_PAI_Process_KrToolCfg
11from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
12from DigitizationConfig.PileUpToolsConfig import PileUpToolsCfg
13from DigitizationConfig.PileUpMergeSvcConfig import PileUpMergeSvcCfg, PileUpXingFolderCfg
14from DigitizationConfig.TruthDigitizationOutputConfig import TruthDigitizationOutputCfg
15
16
17# The earliest and last bunch crossing times for which interactions will be sent
18# to the TRT Digitization code
20 return -50
21
22
24 return 50
25
26
27def TRT_RangeCfg(flags, name="TRTRange", **kwargs):
28 """Return an TRT configured PileUpXingFolder tool"""
29 kwargs.setdefault("FirstXing", TRT_FirstXing())
30 kwargs.setdefault("LastXing", TRT_LastXing())
31 kwargs.setdefault("CacheRefreshFrequency", 1.0) #default 0 no dataproxy reset
32 kwargs.setdefault("ItemList", ["TRTUncompressedHitCollection#TRTUncompressedHits"])
33 return PileUpXingFolderCfg(flags, name, **kwargs)
34
35
36def TRT_DigitizationBasicToolCfg(flags, name="TRT_DigitizationBasicTool", **kwargs):
37 """Return ComponentAccumulator with common TRT digitization tool config"""
38 acc = TRT_ReadoutGeometryCfg(flags)
39 acc.merge(AtlasFieldCacheCondAlgCfg(flags))
40 from AthenaServices.PartPropSvcConfig import PartPropSvcCfg
41 kwargs.setdefault('PartPropSvc', acc.getPrimaryAndMerge(PartPropSvcCfg(flags))) # Property from GenBase
42 # default arguments
43 from TRT_ConditionsServices.TRT_ConditionsServicesConfig import TRT_StrawStatusSummaryToolCfg
44 kwargs.setdefault("InDetTRTStrawStatusSummaryTool", acc.popToolsAndMerge(TRT_StrawStatusSummaryToolCfg(flags)))
45 kwargs.setdefault("PAI_Tool_Ar", acc.popToolsAndMerge(TRT_PAI_Process_ArToolCfg(flags)))
46 kwargs.setdefault("PAI_Tool_Kr", acc.popToolsAndMerge(TRT_PAI_Process_KrToolCfg(flags)))
47 kwargs.setdefault("PAI_Tool_Xe", acc.popToolsAndMerge(TRT_PAI_Process_XeToolCfg(flags)))
48 kwargs.setdefault("Override_TrtRangeCutProperty", flags.Sim.TRTRangeCut)
49 kwargs.setdefault("RandomSeedOffset", flags.Digitization.RandomSeedOffset)
50 if not flags.Digitization.DoInnerDetectorNoise:
51 kwargs.setdefault("Override_noiseInSimhits", 0)
52 kwargs.setdefault("Override_noiseInUnhitStraws", 0)
53 if flags.Beam.Type is BeamType.Cosmics:
54 kwargs.setdefault("PrintDigSettings", True)
55 kwargs.setdefault("Override_cosmicFlag", 0)
56 kwargs.setdefault("Override_doCosmicTimingPit", 1)
57 kwargs.setdefault("Override_jitterTimeOffset", 0.)
58 kwargs.setdefault("Override_timeCorrection", 0)
59 if flags.Digitization.DoXingByXingPileUp:
60 kwargs.setdefault("FirstXing", TRT_FirstXing())
61 kwargs.setdefault("LastXing", TRT_LastXing())
62 if flags.BField.configuredSolenoidFieldScale>0 and flags.BField.configuredSolenoidFieldScale<1:
63 from AthenaCommon.SystemOfUnits import tesla
64 kwargs.setdefault("Override_solenoidFieldStrength", flags.BField.configuredSolenoidFieldScale * 2.0 * tesla)
65 from RngComps.RngCompsConfig import AthRNGSvcCfg
66 kwargs.setdefault("RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
67 TRTDigitizationTool = CompFactory.TRTDigitizationTool
68 tool = TRTDigitizationTool(name, **kwargs)
69 acc.setPrivateTools(tool)
70 return acc
71
72
73def TRT_DigitizationToolCfg(flags, name="TRTDigitizationTool", **kwargs):
74 """Return ComponentAccumulator with configured TRT digitization tool"""
75 acc = ComponentAccumulator()
76 if flags.Digitization.PileUp:
77 intervals = []
78 if not flags.Digitization.DoXingByXingPileUp:
79 intervals += [acc.popToolsAndMerge(TRT_RangeCfg(flags))]
80 kwargs.setdefault("MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)))
81 else:
82 kwargs.setdefault("MergeSvc", '')
83 kwargs.setdefault("OnlyUseContainerName", flags.Digitization.PileUp)
84 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
85 kwargs.setdefault("OutputObjectName", flags.Overlay.BkgPrefix + "TRT_RDOs")
86 kwargs.setdefault("OutputSDOName", flags.Overlay.BkgPrefix + "TRT_SDO_Map")
87 else:
88 kwargs.setdefault("OutputObjectName", "TRT_RDOs")
89 kwargs.setdefault("OutputSDOName", "TRT_SDO_Map")
90 kwargs.setdefault("HardScatterSplittingMode", 0)
91 if flags.Digitization.TRT.HeavyIonHT:
92 kwargs.setdefault("Override_highThresholdBarShort", 0.00129875)
93 kwargs.setdefault("Override_highThresholdBarLong", 0.00118775)
94 kwargs.setdefault("Override_highThresholdECAwheels", 0.001185591)
95 kwargs.setdefault("Override_highThresholdECBwheels", 0.001145376)
96 kwargs.setdefault("Override_highThresholdBarShortArgon", 0.000468802)
97 kwargs.setdefault("Override_highThresholdBarLongArgon", 0.000456754)
98 kwargs.setdefault("Override_highThresholdECAwheelsArgon", 0.0006035)
99 kwargs.setdefault("Override_highThresholdECBwheelsArgon", 0.00057375)
100 tool = acc.popToolsAndMerge(TRT_DigitizationBasicToolCfg(flags, name, **kwargs))
101 acc.setPrivateTools(tool)
102 return acc
103
104
105def TRT_DigitizationGeantinoTruthToolCfg(flags, name="TRT_GeantinoTruthDigitizationTool", **kwargs):
106 """Return ComponentAccumulator with Geantino configured TRT digitization tool"""
107 acc = ComponentAccumulator()
108 if flags.Digitization.PileUp:
109 intervals = []
110 if not flags.Digitization.DoXingByXingPileUp:
111 intervals += [acc.popToolsAndMerge(TRT_RangeCfg(flags))]
112 kwargs.setdefault("MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)))
113 else:
114 kwargs.setdefault("MergeSvc", '')
115 kwargs.setdefault("OnlyUseContainerName", flags.Digitization.PileUp)
116 kwargs.setdefault("VetoPileUpTruthLinks", False)
117 tool = acc.popToolsAndMerge(TRT_DigitizationToolCfg(flags, name, **kwargs))
118 acc.setPrivateTools(tool)
119 return acc
120
121
122def TRT_DigitizationHSToolCfg(flags, name="TRT_DigitizationToolHS", **kwargs):
123 """Return ComponentAccumulator with Hard Scatter configured TRT digitization tool"""
124 acc = ComponentAccumulator()
125 rangetool = acc.popToolsAndMerge(TRT_RangeCfg(flags))
126 kwargs.setdefault("MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=rangetool)))
127 kwargs.setdefault("OutputObjectName", "TRT_RDOs")
128 kwargs.setdefault("OutputSDOName", "TRT_SDO_Map")
129 kwargs.setdefault("HardScatterSplittingMode", 1)
130 tool = acc.popToolsAndMerge(TRT_DigitizationBasicToolCfg(flags, name, **kwargs))
131 acc.setPrivateTools(tool)
132 return acc
133
134
135def TRT_DigitizationPUToolCfg(flags, name="TRT_DigitizationToolPU", **kwargs):
136 """Return ComponentAccumulator with Pile Up configured TRT digitization tool"""
137 acc = ComponentAccumulator()
138 rangetool = acc.popToolsAndMerge(TRT_RangeCfg(flags))
139 kwargs.setdefault("MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=rangetool)))
140 kwargs.setdefault("OutputObjectName", "TRT_PU_RDOs")
141 kwargs.setdefault("OutputSDOName", "TRT_PU_SDO_Map")
142 kwargs.setdefault("HardScatterSplittingMode", 2)
143 acc.merge(TRT_DigitizationBasicToolCfg(flags, name, **kwargs))
144 return acc
145
146
147def TRT_DigitizationSplitNoMergePUToolCfg(flags, name="TRT_DigitizationToolSplitNoMergePU", **kwargs):
148 """Return ComponentAccumulator with PileUpTRT_Hits configured TRT digitization tool"""
149 acc = ComponentAccumulator()
150 rangetool = acc.popToolsAndMerge(TRT_RangeCfg(flags))
151 kwargs.setdefault("MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=rangetool)))
152 kwargs.setdefault("HardScatterSplittingMode", 0)
153 kwargs.setdefault("DataObjectName", "PileupTRTUncompressedHits")
154 kwargs.setdefault("OutputObjectName", "TRT_PU_RDOs")
155 kwargs.setdefault("OutputSDOName", "TRT_PU_SDO_Map")
156 kwargs.setdefault("Override_noiseInSimhits", 0)
157 kwargs.setdefault("Override_noiseInUnhitStraws", 0)
158 tool = acc.popToolsAndMerge(TRT_DigitizationBasicToolCfg(flags, name, **kwargs))
159 acc.setPrivateTools(tool)
160 return acc
161
162
163def TRT_OverlayDigitizationToolCfg(flags, name="TRT_OverlayDigitizationTool", **kwargs):
164 """Return ComponentAccumulator with configured Overlay TRT digitization tool"""
165 acc = ComponentAccumulator()
166 kwargs.setdefault("OnlyUseContainerName", False)
167 kwargs.setdefault("OutputObjectName", flags.Overlay.SigPrefix + "TRT_RDOs")
168 kwargs.setdefault("OutputSDOName", flags.Overlay.SigPrefix + "TRT_SDO_Map")
169 kwargs.setdefault("Override_isOverlay", 1)
170 kwargs.setdefault("HardScatterSplittingMode", 0)
171 kwargs.setdefault("Override_getT0FromData", 0)
172 kwargs.setdefault("Override_noiseInSimhits", 0)
173 kwargs.setdefault("Override_noiseInUnhitStraws", 0)
174 kwargs.setdefault("MergeSvc", '')
175 tool = acc.popToolsAndMerge(TRT_DigitizationBasicToolCfg(flags, name, **kwargs))
176 acc.setPrivateTools(tool)
177 return acc
178
179
180def TRT_OutputCfg(flags):
181 """Return ComponentAccumulator with Output for TRT. Not standalone."""
182 acc = ComponentAccumulator()
183 if flags.Output.doWriteRDO:
184 ItemList = ["TRT_RDO_Container#*"]
185 if flags.Digitization.EnableTruth:
186 ItemList += ["InDetSimDataCollection#*"]
187 acc.merge(TruthDigitizationOutputCfg(flags))
188 acc.merge(OutputStreamCfg(flags, "RDO", ItemList))
189 return acc
190
191
192def TRT_DigitizationBasicCfg(flags, **kwargs):
193 """Return ComponentAccumulator for TRT digitization"""
194 acc = ComponentAccumulator()
195 if "PileUpTools" not in kwargs:
196 PileUpTools = acc.popToolsAndMerge(TRT_DigitizationToolCfg(flags))
197 kwargs["PileUpTools"] = PileUpTools
198 acc.merge(PileUpToolsCfg(flags, **kwargs))
199 return acc
200
201
203 """Return ComponentAccumulator with TRT Overlay digitization"""
204 acc = ComponentAccumulator()
205 if flags.Common.ProductionStep != ProductionStep.FastChain:
206 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
207 acc.merge(SGInputLoaderCfg(flags, ["TRTUncompressedHitCollection#TRTUncompressedHits"]))
208
209 if "DigitizationTool" not in kwargs:
210 tool = acc.popToolsAndMerge(TRT_OverlayDigitizationToolCfg(flags))
211 kwargs["DigitizationTool"] = tool
212
213 if flags.Concurrency.NumThreads > 0:
214 kwargs.setdefault("Cardinality", flags.Concurrency.NumThreads)
215
216 # Set common overlay extra inputs
217 kwargs.setdefault("ExtraInputs", flags.Overlay.ExtraInputs)
218
219 TRTDigitization = CompFactory.TRTDigitization
220 acc.addEventAlgo(TRTDigitization(name="TRT_OverlayDigitization", **kwargs))
221 return acc
222
223
224# with output defaults
225def TRT_DigitizationCfg(flags, **kwargs):
226 """Return ComponentAccumulator for TRT digitization and Output"""
227 acc = TRT_DigitizationBasicCfg(flags, **kwargs)
228 acc.merge(TRT_OutputCfg(flags))
229 return acc
230
231
232def TRT_OverlayDigitizationCfg(flags, **kwargs):
233 """Return ComponentAccumulator with TRT Overlay digitization and Output"""
234 acc = TRT_OverlayDigitizationBasicCfg(flags, **kwargs)
235 acc.merge(TRT_OutputCfg(flags))
236 return acc
237
238
239# additional specialisations
240def TRT_DigitizationHSCfg(flags, name="TRT_DigitizationHS", **kwargs):
241 """Return ComponentAccumulator for Hard-Scatter-only TRT digitization and Output"""
242 acc = TRT_DigitizationHSToolCfg(flags)
243 kwargs["PileUpTools"] = acc.popPrivateTools()
244 acc = TRT_DigitizationBasicCfg(flags, name=name, **kwargs)
245 acc.merge(TRT_OutputCfg(flags))
246 return acc
247
248
249def TRT_DigitizationPUCfg(flags, name="TRT_DigitizationPU", **kwargs):
250 """Return ComponentAccumulator with Pile-up-only TRT digitization and Output"""
251 acc = TRT_DigitizationPUToolCfg(flags)
252 kwargs["PileUpTools"] = acc.popPrivateTools()
253 acc = TRT_DigitizationBasicCfg(flags, name=name, **kwargs)
254 acc.merge(TRT_OutputCfg(flags))
255 return acc
Top algorithm class for TRT digitization.
TRT_DigitizationToolCfg(flags, name="TRTDigitizationTool", **kwargs)
TRT_DigitizationPUCfg(flags, name="TRT_DigitizationPU", **kwargs)
TRT_DigitizationBasicCfg(flags, **kwargs)
TRT_DigitizationBasicToolCfg(flags, name="TRT_DigitizationBasicTool", **kwargs)
TRT_OverlayDigitizationCfg(flags, **kwargs)
TRT_DigitizationHSCfg(flags, name="TRT_DigitizationHS", **kwargs)
TRT_OverlayDigitizationToolCfg(flags, name="TRT_OverlayDigitizationTool", **kwargs)
TRT_RangeCfg(flags, name="TRTRange", **kwargs)
TRT_DigitizationSplitNoMergePUToolCfg(flags, name="TRT_DigitizationToolSplitNoMergePU", **kwargs)
TRT_DigitizationHSToolCfg(flags, name="TRT_DigitizationToolHS", **kwargs)
TRT_DigitizationGeantinoTruthToolCfg(flags, name="TRT_GeantinoTruthDigitizationTool", **kwargs)
TRT_OverlayDigitizationBasicCfg(flags, **kwargs)
TRT_DigitizationPUToolCfg(flags, name="TRT_DigitizationToolPU", **kwargs)