1"""Define methods to construct configured TRT Digitization tools and algorithms
3Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
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
28 """Return an TRT configured PileUpXingFolder tool"""
31 kwargs.setdefault(
"CacheRefreshFrequency", 1.0)
32 kwargs.setdefault(
"ItemList", [
"TRTUncompressedHitCollection#TRTUncompressedHits"])
33 return PileUpXingFolderCfg(flags, name, **kwargs)
37 """Return ComponentAccumulator with common TRT digitization tool config"""
38 acc = TRT_ReadoutGeometryCfg(flags)
39 acc.merge(AtlasFieldCacheCondAlgCfg(flags))
41 from TRT_ConditionsServices.TRT_ConditionsServicesConfig
import TRT_StrawStatusSummaryToolCfg
42 kwargs.setdefault(
"InDetTRTStrawStatusSummaryTool", acc.popToolsAndMerge(TRT_StrawStatusSummaryToolCfg(flags)))
43 kwargs.setdefault(
"PAI_Tool_Ar", acc.popToolsAndMerge(TRT_PAI_Process_ArToolCfg(flags)))
44 kwargs.setdefault(
"PAI_Tool_Kr", acc.popToolsAndMerge(TRT_PAI_Process_KrToolCfg(flags)))
45 kwargs.setdefault(
"PAI_Tool_Xe", acc.popToolsAndMerge(TRT_PAI_Process_XeToolCfg(flags)))
46 kwargs.setdefault(
"Override_TrtRangeCutProperty", flags.Sim.TRTRangeCut)
47 kwargs.setdefault(
"RandomSeedOffset", flags.Digitization.RandomSeedOffset)
48 if not flags.Digitization.DoInnerDetectorNoise:
49 kwargs.setdefault(
"Override_noiseInSimhits", 0)
50 kwargs.setdefault(
"Override_noiseInUnhitStraws", 0)
51 if flags.Beam.Type
is BeamType.Cosmics:
52 kwargs.setdefault(
"PrintDigSettings",
True)
53 kwargs.setdefault(
"Override_cosmicFlag", 0)
54 kwargs.setdefault(
"Override_doCosmicTimingPit", 1)
55 kwargs.setdefault(
"Override_jitterTimeOffset", 0.)
56 kwargs.setdefault(
"Override_timeCorrection", 0)
57 if flags.Digitization.DoXingByXingPileUp:
60 if flags.BField.configuredSolenoidFieldScale>0
and flags.BField.configuredSolenoidFieldScale<1:
61 from AthenaCommon.SystemOfUnits
import tesla
62 kwargs.setdefault(
"Override_solenoidFieldStrength", flags.BField.configuredSolenoidFieldScale * 2.0 * tesla)
63 from RngComps.RngCompsConfig
import AthRNGSvcCfg
64 kwargs.setdefault(
"RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
65 TRTDigitizationTool = CompFactory.TRTDigitizationTool
67 acc.setPrivateTools(tool)
72 """Return ComponentAccumulator with configured TRT digitization tool"""
73 acc = ComponentAccumulator()
74 if flags.Digitization.PileUp:
76 if not flags.Digitization.DoXingByXingPileUp:
78 kwargs.setdefault(
"MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)))
80 kwargs.setdefault(
"MergeSvc",
'')
81 kwargs.setdefault(
"OnlyUseContainerName", flags.Digitization.PileUp)
82 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
83 kwargs.setdefault(
"OutputObjectName", flags.Overlay.BkgPrefix +
"TRT_RDOs")
84 kwargs.setdefault(
"OutputSDOName", flags.Overlay.BkgPrefix +
"TRT_SDO_Map")
86 kwargs.setdefault(
"OutputObjectName",
"TRT_RDOs")
87 kwargs.setdefault(
"OutputSDOName",
"TRT_SDO_Map")
88 kwargs.setdefault(
"HardScatterSplittingMode", 0)
89 if flags.Digitization.TRT.HeavyIonHT:
90 kwargs.setdefault(
"Override_highThresholdBarShort", 0.00129875)
91 kwargs.setdefault(
"Override_highThresholdBarLong", 0.00118775)
92 kwargs.setdefault(
"Override_highThresholdECAwheels", 0.001185591)
93 kwargs.setdefault(
"Override_highThresholdECBwheels", 0.001145376)
94 kwargs.setdefault(
"Override_highThresholdBarShortArgon", 0.000468802)
95 kwargs.setdefault(
"Override_highThresholdBarLongArgon", 0.000456754)
96 kwargs.setdefault(
"Override_highThresholdECAwheelsArgon", 0.0006035)
97 kwargs.setdefault(
"Override_highThresholdECBwheelsArgon", 0.00057375)
99 acc.setPrivateTools(tool)
104 """Return ComponentAccumulator with Geantino configured TRT digitization tool"""
105 acc = ComponentAccumulator()
106 if flags.Digitization.PileUp:
108 if not flags.Digitization.DoXingByXingPileUp:
109 intervals += [acc.popToolsAndMerge(
TRT_RangeCfg(flags))]
110 kwargs.setdefault(
"MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)))
112 kwargs.setdefault(
"MergeSvc",
'')
113 kwargs.setdefault(
"OnlyUseContainerName", flags.Digitization.PileUp)
114 kwargs.setdefault(
"VetoPileUpTruthLinks",
False)
116 acc.setPrivateTools(tool)
121 """Return ComponentAccumulator with Hard Scatter configured TRT digitization tool"""
122 acc = ComponentAccumulator()
124 kwargs.setdefault(
"MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=rangetool)))
125 kwargs.setdefault(
"OutputObjectName",
"TRT_RDOs")
126 kwargs.setdefault(
"OutputSDOName",
"TRT_SDO_Map")
127 kwargs.setdefault(
"HardScatterSplittingMode", 1)
129 acc.setPrivateTools(tool)
134 """Return ComponentAccumulator with Pile Up configured TRT digitization tool"""
135 acc = ComponentAccumulator()
137 kwargs.setdefault(
"MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=rangetool)))
138 kwargs.setdefault(
"OutputObjectName",
"TRT_PU_RDOs")
139 kwargs.setdefault(
"OutputSDOName",
"TRT_PU_SDO_Map")
140 kwargs.setdefault(
"HardScatterSplittingMode", 2)
146 """Return ComponentAccumulator with PileUpTRT_Hits configured TRT digitization tool"""
147 acc = ComponentAccumulator()
149 kwargs.setdefault(
"MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=rangetool)))
150 kwargs.setdefault(
"HardScatterSplittingMode", 0)
151 kwargs.setdefault(
"DataObjectName",
"PileupTRTUncompressedHits")
152 kwargs.setdefault(
"OutputObjectName",
"TRT_PU_RDOs")
153 kwargs.setdefault(
"OutputSDOName",
"TRT_PU_SDO_Map")
154 kwargs.setdefault(
"Override_noiseInSimhits", 0)
155 kwargs.setdefault(
"Override_noiseInUnhitStraws", 0)
157 acc.setPrivateTools(tool)
162 """Return ComponentAccumulator with configured Overlay TRT digitization tool"""
163 acc = ComponentAccumulator()
164 kwargs.setdefault(
"OnlyUseContainerName",
False)
165 kwargs.setdefault(
"OutputObjectName", flags.Overlay.SigPrefix +
"TRT_RDOs")
166 kwargs.setdefault(
"OutputSDOName", flags.Overlay.SigPrefix +
"TRT_SDO_Map")
167 kwargs.setdefault(
"Override_isOverlay", 1)
168 kwargs.setdefault(
"HardScatterSplittingMode", 0)
169 kwargs.setdefault(
"Override_getT0FromData", 0)
170 kwargs.setdefault(
"Override_noiseInSimhits", 0)
171 kwargs.setdefault(
"Override_noiseInUnhitStraws", 0)
172 kwargs.setdefault(
"MergeSvc",
'')
174 acc.setPrivateTools(tool)
179 """Return ComponentAccumulator with Output for TRT. Not standalone."""
180 acc = ComponentAccumulator()
181 if flags.Output.doWriteRDO:
182 ItemList = [
"TRT_RDO_Container#*"]
183 if flags.Digitization.EnableTruth:
184 ItemList += [
"InDetSimDataCollection#*"]
185 acc.merge(TruthDigitizationOutputCfg(flags))
186 acc.merge(OutputStreamCfg(flags,
"RDO", ItemList))
191 """Return ComponentAccumulator for TRT digitization"""
192 acc = ComponentAccumulator()
193 if "PileUpTools" not in kwargs:
195 kwargs[
"PileUpTools"] = PileUpTools
196 acc.merge(PileUpToolsCfg(flags, **kwargs))
201 """Return ComponentAccumulator with TRT Overlay digitization"""
202 acc = ComponentAccumulator()
203 if flags.Common.ProductionStep != ProductionStep.FastChain:
204 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
205 acc.merge(SGInputLoaderCfg(flags, [
"TRTUncompressedHitCollection#TRTUncompressedHits"]))
207 if "DigitizationTool" not in kwargs:
209 kwargs[
"DigitizationTool"] = tool
211 if flags.Concurrency.NumThreads > 0:
212 kwargs.setdefault(
"Cardinality", flags.Concurrency.NumThreads)
215 kwargs.setdefault(
"ExtraInputs", flags.Overlay.ExtraInputs)
217 TRTDigitization = CompFactory.TRTDigitization
218 acc.addEventAlgo(
TRTDigitization(name=
"TRT_OverlayDigitization", **kwargs))
224 """Return ComponentAccumulator for TRT digitization and Output"""
231 """Return ComponentAccumulator with TRT Overlay digitization and Output"""
239 """Return ComponentAccumulator for Hard-Scatter-only TRT digitization and Output"""
241 kwargs[
"PileUpTools"] = acc.popPrivateTools()
248 """Return ComponentAccumulator with Pile-up-only TRT digitization and Output"""
250 kwargs[
"PileUpTools"] = acc.popPrivateTools()
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_DigitizationCfg(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)