ATLAS Offline Software
TRT_DigitizationConfig.py
Go to the documentation of this file.
1 """Define methods to construct configured TRT Digitization tools and algorithms
2 
3 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
4 """
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
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 
27 def 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 
36 def 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 
73 def 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 
105 def 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 
122 def 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 
135 def 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 
147 def 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 
163 def 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 
180 def 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 
192 def 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 
202 def TRT_OverlayDigitizationBasicCfg(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"]))
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
225 def 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 
232 def 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
240 def 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 
249 def 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
SystemOfUnits
python.TRT_ConditionsServicesConfig.TRT_StrawStatusSummaryToolCfg
def TRT_StrawStatusSummaryToolCfg(flags, name="TRT_StrawStatusSummaryTool", **kwargs)
Definition: TRT_ConditionsServicesConfig.py:23
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
TRT_DigitizationConfig.TRT_DigitizationPUCfg
def TRT_DigitizationPUCfg(flags, name="TRT_DigitizationPU", **kwargs)
Definition: TRT_DigitizationConfig.py:249
TRT_DigitizationConfig.TRT_RangeCfg
def TRT_RangeCfg(flags, name="TRTRange", **kwargs)
Definition: TRT_DigitizationConfig.py:27
TRT_DigitizationConfig.TRT_DigitizationHSCfg
def TRT_DigitizationHSCfg(flags, name="TRT_DigitizationHS", **kwargs)
Definition: TRT_DigitizationConfig.py:240
TRT_DigitizationConfig.TRT_DigitizationBasicCfg
def TRT_DigitizationBasicCfg(flags, **kwargs)
Definition: TRT_DigitizationConfig.py:192
python.TruthDigitizationOutputConfig.TruthDigitizationOutputCfg
def TruthDigitizationOutputCfg(flags)
Definition: TruthDigitizationOutputConfig.py:9
TRT_GeoModelConfig.TRT_ReadoutGeometryCfg
def TRT_ReadoutGeometryCfg(flags)
Definition: TRT_GeoModelConfig.py:59
TRT_PAI_ProcessConfig.TRT_PAI_Process_ArToolCfg
def TRT_PAI_Process_ArToolCfg(flags, name="TRT_PAI_Process_Ar", **kwargs)
Definition: TRT_PAI_ProcessConfig.py:20
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, keepProvenanceTagsRegEx=None, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:16
TRT_DigitizationConfig.TRT_OverlayDigitizationToolCfg
def TRT_OverlayDigitizationToolCfg(flags, name="TRT_OverlayDigitizationTool", **kwargs)
Definition: TRT_DigitizationConfig.py:163
TRT_DigitizationConfig.TRT_DigitizationGeantinoTruthToolCfg
def TRT_DigitizationGeantinoTruthToolCfg(flags, name="TRT_GeantinoTruthDigitizationTool", **kwargs)
Definition: TRT_DigitizationConfig.py:105
TRT_DigitizationConfig.TRT_OverlayDigitizationBasicCfg
def TRT_OverlayDigitizationBasicCfg(flags, **kwargs)
Definition: TRT_DigitizationConfig.py:202
TRT_DigitizationConfig.TRT_DigitizationPUToolCfg
def TRT_DigitizationPUToolCfg(flags, name="TRT_DigitizationToolPU", **kwargs)
Definition: TRT_DigitizationConfig.py:135
SGInputLoaderConfig.SGInputLoaderCfg
def SGInputLoaderCfg(flags, Load=None, **kwargs)
Definition: SGInputLoaderConfig.py:7
TRT_DigitizationConfig.TRT_DigitizationBasicToolCfg
def TRT_DigitizationBasicToolCfg(flags, name="TRT_DigitizationBasicTool", **kwargs)
Definition: TRT_DigitizationConfig.py:36
TRTDigitization
Top algorithm class for TRT digitization.
Definition: TRTDigitization.h:13
TRT_DigitizationConfig.TRT_DigitizationSplitNoMergePUToolCfg
def TRT_DigitizationSplitNoMergePUToolCfg(flags, name="TRT_DigitizationToolSplitNoMergePU", **kwargs)
Definition: TRT_DigitizationConfig.py:147
TRT_DigitizationConfig.TRT_DigitizationToolCfg
def TRT_DigitizationToolCfg(flags, name="TRTDigitizationTool", **kwargs)
Definition: TRT_DigitizationConfig.py:73
python.PileUpToolsConfig.PileUpToolsCfg
def PileUpToolsCfg(flags, **kwargs)
Definition: PileUpToolsConfig.py:14
python.PartPropSvcConfig.PartPropSvcCfg
def PartPropSvcCfg(flags, **kwargs)
Definition: PartPropSvcConfig.py:6
TRT_DigitizationConfig.TRT_DigitizationHSToolCfg
def TRT_DigitizationHSToolCfg(flags, name="TRT_DigitizationToolHS", **kwargs)
Definition: TRT_DigitizationConfig.py:122
TRT_DigitizationConfig.TRT_OutputCfg
def TRT_OutputCfg(flags)
Definition: TRT_DigitizationConfig.py:180
TRT_DigitizationConfig.TRT_DigitizationCfg
def TRT_DigitizationCfg(flags, **kwargs)
Definition: TRT_DigitizationConfig.py:225
TRTDigitizationTool
Definition: TRTDigitizationTool.h:63
TRT_PAI_ProcessConfig.TRT_PAI_Process_KrToolCfg
def TRT_PAI_Process_KrToolCfg(flags, name="TRT_PAI_Process_Kr", **kwargs)
Definition: TRT_PAI_ProcessConfig.py:26
TRT_PAI_ProcessConfig.TRT_PAI_Process_XeToolCfg
def TRT_PAI_Process_XeToolCfg(flags, name="TRT_PAI_Process_Xe", **kwargs)
Definition: TRT_PAI_ProcessConfig.py:14
TRT_DigitizationConfig.TRT_LastXing
def TRT_LastXing()
Definition: TRT_DigitizationConfig.py:23
python.PileUpMergeSvcConfig.PileUpXingFolderCfg
def PileUpXingFolderCfg(flags, name="PileUpXingFolder", **kwargs)
Definition: PileUpMergeSvcConfig.py:35
TRT_DigitizationConfig.TRT_OverlayDigitizationCfg
def TRT_OverlayDigitizationCfg(flags, **kwargs)
Definition: TRT_DigitizationConfig.py:232
python.MagFieldServicesConfig.AtlasFieldCacheCondAlgCfg
def AtlasFieldCacheCondAlgCfg(flags, **kwargs)
Definition: MagFieldServicesConfig.py:8
TRT_DigitizationConfig.TRT_FirstXing
def TRT_FirstXing()
Definition: TRT_DigitizationConfig.py:19
python.PileUpMergeSvcConfig.PileUpMergeSvcCfg
def PileUpMergeSvcCfg(flags, name="PileUpMergeSvc", Intervals=[], **kwargs)
Definition: PileUpMergeSvcConfig.py:10
RngCompsConfig.AthRNGSvcCfg
def AthRNGSvcCfg(flags, name="AthRNGSvc")
Definition: RngCompsConfig.py:51