1 """Define methods to construct configured TRT Digitization tools and algorithms
3 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory
import CompFactory
7 from AthenaConfiguration.Enums
import BeamType, ProductionStep
8 from TRT_GeoModel.TRT_GeoModelConfig
import TRT_ReadoutGeometryCfg
9 from MagFieldServices.MagFieldServicesConfig
import AtlasFieldCacheCondAlgCfg
10 from TRT_PAI_Process.TRT_PAI_ProcessConfig
import TRT_PAI_Process_XeToolCfg, TRT_PAI_Process_ArToolCfg, TRT_PAI_Process_KrToolCfg
11 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
12 from DigitizationConfig.PileUpToolsConfig
import PileUpToolsCfg
13 from DigitizationConfig.PileUpMergeSvcConfig
import PileUpMergeSvcCfg, PileUpXingFolderCfg
14 from DigitizationConfig.TruthDigitizationOutputConfig
import TruthDigitizationOutputCfg
28 """Return an TRT configured PileUpXingFolder tool"""
31 kwargs.setdefault(
"CacheRefreshFrequency", 1.0)
32 kwargs.setdefault(
"ItemList", [
"TRTUncompressedHitCollection#TRTUncompressedHits"])
37 """Return ComponentAccumulator with common TRT digitization tool config"""
40 from AthenaServices.PartPropSvcConfig
import PartPropSvcCfg
41 kwargs.setdefault(
'PartPropSvc', acc.getPrimaryAndMerge(
PartPropSvcCfg(flags)))
43 from TRT_ConditionsServices.TRT_ConditionsServicesConfig
import TRT_StrawStatusSummaryToolCfg
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:
62 if flags.BField.configuredSolenoidFieldScale>0
and flags.BField.configuredSolenoidFieldScale<1:
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
69 acc.setPrivateTools(tool)
74 """Return ComponentAccumulator with configured TRT digitization tool"""
76 if flags.Digitization.PileUp:
78 if not flags.Digitization.DoXingByXingPileUp:
80 kwargs.setdefault(
"MergeSvc", acc.getPrimaryAndMerge(
PileUpMergeSvcCfg(flags, Intervals=intervals)))
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")
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)
101 acc.setPrivateTools(tool)
106 """Return ComponentAccumulator with Geantino configured TRT digitization tool"""
108 if flags.Digitization.PileUp:
110 if not flags.Digitization.DoXingByXingPileUp:
111 intervals += [acc.popToolsAndMerge(
TRT_RangeCfg(flags))]
112 kwargs.setdefault(
"MergeSvc", acc.getPrimaryAndMerge(
PileUpMergeSvcCfg(flags, Intervals=intervals)))
114 kwargs.setdefault(
"MergeSvc",
'')
115 kwargs.setdefault(
"OnlyUseContainerName", flags.Digitization.PileUp)
116 kwargs.setdefault(
"VetoPileUpTruthLinks",
False)
118 acc.setPrivateTools(tool)
123 """Return ComponentAccumulator with Hard Scatter configured TRT digitization tool"""
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)
131 acc.setPrivateTools(tool)
136 """Return ComponentAccumulator with Pile Up configured TRT digitization tool"""
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)
148 """Return ComponentAccumulator with PileUpTRT_Hits configured TRT digitization tool"""
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)
159 acc.setPrivateTools(tool)
164 """Return ComponentAccumulator with configured Overlay TRT digitization tool"""
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",
'')
176 acc.setPrivateTools(tool)
181 """Return ComponentAccumulator with Output for TRT. Not standalone."""
183 if flags.Output.doWriteRDO:
184 ItemList = [
"TRT_RDO_Container#*"]
185 if flags.Digitization.EnableTruth:
186 ItemList += [
"InDetSimDataCollection#*"]
193 """Return ComponentAccumulator for TRT digitization"""
195 if "PileUpTools" not in kwargs:
197 kwargs[
"PileUpTools"] = PileUpTools
203 """Return ComponentAccumulator with TRT Overlay digitization"""
205 if flags.Common.ProductionStep != ProductionStep.FastChain:
206 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
207 acc.merge(
SGInputLoaderCfg(flags, [
"TRTUncompressedHitCollection#TRTUncompressedHits"]))
209 if "DigitizationTool" not in kwargs:
211 kwargs[
"DigitizationTool"] = tool
213 if flags.Concurrency.NumThreads > 0:
214 kwargs.setdefault(
"Cardinality", flags.Concurrency.NumThreads)
217 kwargs.setdefault(
"ExtraInputs", flags.Overlay.ExtraInputs)
219 TRTDigitization = CompFactory.TRTDigitization
220 acc.addEventAlgo(
TRTDigitization(name=
"TRT_OverlayDigitization", **kwargs))
226 """Return ComponentAccumulator for TRT digitization and Output"""
233 """Return ComponentAccumulator with TRT Overlay digitization and Output"""
241 """Return ComponentAccumulator for Hard-Scatter-only TRT digitization and Output"""
243 kwargs[
"PileUpTools"] = acc.popPrivateTools()
250 """Return ComponentAccumulator with Pile-up-only TRT digitization and Output"""
252 kwargs[
"PileUpTools"] = acc.popPrivateTools()