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))
40 from AthenaServices.PartPropSvcConfig
import PartPropSvcCfg
41 kwargs.setdefault(
'PartPropSvc', acc.getPrimaryAndMerge(PartPropSvcCfg(flags)))
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:
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"""
75 acc = ComponentAccumulator()
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"""
107 acc = ComponentAccumulator()
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"""
124 acc = ComponentAccumulator()
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"""
137 acc = ComponentAccumulator()
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"""
149 acc = ComponentAccumulator()
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"""
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",
'')
176 acc.setPrivateTools(tool)
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))
193 """Return ComponentAccumulator for TRT digitization"""
194 acc = ComponentAccumulator()
195 if "PileUpTools" not in kwargs:
197 kwargs[
"PileUpTools"] = PileUpTools
198 acc.merge(PileUpToolsCfg(flags, **kwargs))
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"]))
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()
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)