1"""Define methods to construct configured ITk Pixel Digitization tools and algorithms
3Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
5from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory
import CompFactory
7from AthenaConfiguration.Enums
import ProductionStep
8from DigitizationConfig.PileUpMergeSvcConfig
import PileUpMergeSvcCfg, PileUpXingFolderCfg
9from DigitizationConfig.PileUpToolsConfig
import PileUpToolsCfg
10from DigitizationConfig.TruthDigitizationOutputConfig
import TruthDigitizationOutputCfg
11from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
12from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import (
13 ITkPixelModuleConfigCondAlgCfg, ITkPixelChargeCalibCondAlgCfg,
14 ITkPixelDistortionAlgCfg
16from PixelConditionsTools.ITkPixelConditionsSummaryConfig
import ITkPixelConditionsSummaryCfg
17from PixelGeoModelXml.ITkPixelGeoModelConfig
import ITkPixelReadoutGeometryCfg
18from PixelReadoutGeometry.PixelReadoutGeometryConfig
import ITkPixelReadoutManagerCfg
19from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
20from SiPropertiesTool.ITkPixelSiPropertiesConfig
import ITkPixelSiPropertiesToolCfg
21from SimulationConfig.SimEnums
import PixelRadiationDamageSimulationType
31 if flags.Beam.BunchSpacing > 50:
38 """Return a configured EnergyDepositionTool"""
39 acc = ITkPixelDistortionAlgCfg(flags)
40 kwargs.setdefault(
"DeltaRayCut", 80.7687)
41 kwargs.setdefault(
"nCols", 5)
42 kwargs.setdefault(
"LoopLimit", 100000)
43 kwargs.setdefault(
"doBichsel",
True)
44 kwargs.setdefault(
"doBichselBetaGammaCut", 0.7)
45 kwargs.setdefault(
"doDeltaRay",
False)
46 kwargs.setdefault(
"doPU",
False)
47 kwargs.setdefault(
"PixelDistortionData",
"ITkPixelDistortionData")
48 EnergyDepositionTool = CompFactory.EnergyDepositionTool
54 """Return a RD53SimTool configured for Barrel"""
55 acc = ITkPixelReadoutManagerCfg(flags)
56 acc.merge(ITkPixelModuleConfigCondAlgCfg(flags))
57 acc.merge(ITkPixelChargeCalibCondAlgCfg(flags))
58 kwargs.setdefault(
"BarrelEC", 0)
59 kwargs.setdefault(
"DoNoise", flags.Digitization.DoITkPixelDetectorNoise)
60 kwargs.setdefault(
"PixelReadoutManager", acc.getPrimary())
61 kwargs.setdefault(
"PixelChargeCalibCondData",
"ITkPixelChargeCalibCondData")
62 kwargs.setdefault(
"PixelConditionsSummaryTool", acc.popToolsAndMerge(ITkPixelConditionsSummaryCfg(flags)))
63 kwargs.setdefault(
"DoTimeWalk",
False)
64 acc.setPrivateTools(CompFactory.RD53SimTool(name, **kwargs))
69 """Return a RD53SimTool configured for Endcap"""
70 acc = ITkPixelReadoutManagerCfg(flags)
71 acc.merge(ITkPixelModuleConfigCondAlgCfg(flags))
72 acc.merge(ITkPixelChargeCalibCondAlgCfg(flags))
73 kwargs.setdefault(
"BarrelEC", 2)
74 kwargs.setdefault(
"DoNoise", flags.Digitization.DoITkPixelDetectorNoise)
75 kwargs.setdefault(
"PixelReadoutManager", acc.getPrimary())
76 kwargs.setdefault(
"PixelChargeCalibCondData",
"ITkPixelChargeCalibCondData")
77 kwargs.setdefault(
"PixelConditionsSummaryTool", acc.popToolsAndMerge(ITkPixelConditionsSummaryCfg(flags)))
78 kwargs.setdefault(
"DoTimeWalk",
False)
79 RD53SimTool = CompFactory.RD53SimTool
85 """Return ComponentAccumulator with configured SensorSimPlanarTool for ITk"""
86 acc = ITkPixelModuleConfigCondAlgCfg(flags)
87 kwargs.setdefault(
"SiPropertiesTool", acc.popToolsAndMerge(ITkPixelSiPropertiesToolCfg(flags)))
88 kwargs.setdefault(
"LorentzAngleTool", acc.popToolsAndMerge(ITkPixelLorentzAngleToolCfg(flags)))
89 kwargs.setdefault(
"PixelModuleData",
"ITkPixelModuleData")
90 kwargs.setdefault(
"DigitizeITk3Das3D", flags.Digitization.DigitizeITk3Das3D)
91 kwargs.setdefault(
"RadiationDamageSimulationType", flags.Digitization.PixelPlanarRadiationDamageSimulationType.value)
94 kwargs.setdefault(
"TemplateCorrectionROOTfile",
"maps_ITk_Planar_100V_fl10e15.root")
95 kwargs.setdefault(
"LorentzAngleCorrectionHistos", [
"layer_1_100_um_la",
"layer_2_150_um_la",
"layer_3_150_um_la",
"layer_4_150_um_la"])
96 kwargs.setdefault(
"ChargeCorrectionHistos", [
"layer_1_100_um_cce",
"layer_2_150_um_cce",
"layer_3_150_um_cce",
"layer_4_150_um_cce"])
97 kwargs.setdefault(
"DistanceCorrectionHistos", [
"layer_1_100_um_dz",
"layer_2_150_um_dz",
"layer_3_150_um_dz",
"layer_4_150_um_dz"])
98 if flags.Digitization.PixelPlanarRadiationDamageSimulationType
is not PixelRadiationDamageSimulationType.NoRadiationDamage:
101 acc.setPrivateTools(CompFactory.SensorSimPlanarTool(name, **kwargs))
106 """Return ComponentAccumulator with configured SensorSim3DTool for ITk"""
107 acc = ITkPixelModuleConfigCondAlgCfg(flags)
108 kwargs.setdefault(
"SiPropertiesTool", acc.popToolsAndMerge(ITkPixelSiPropertiesToolCfg(flags)))
109 kwargs.setdefault(
"PixelModuleData",
"ITkPixelModuleData")
110 kwargs.setdefault(
"RadiationDamageSimulationType", flags.Digitization.Pixel3DRadiationDamageSimulationType.value)
111 kwargs.setdefault(
"DigitizeITk3Das3D", flags.Digitization.DigitizeITk3Das3D)
114 kwargs.setdefault(
"TemplateCorrectionROOTfile",
"maps_ITk_3D_100V_fl10e15.root")
115 kwargs.setdefault(
"ChargeCorrectionHistos", [
"barrel_25_um_cee",
"ring_25_um_cee"])
116 if flags.Digitization.Pixel3DRadiationDamageSimulationType
is not PixelRadiationDamageSimulationType.NoRadiationDamage:
119 acc.setPrivateTools(CompFactory.SensorSim3DTool(name, **kwargs))
124 """Return ComponentAccumulator with configured PixelDigitizationTool for ITk"""
125 acc = ITkPixelReadoutGeometryCfg(flags)
133 kwargs.setdefault(
"ChargeTools", chargeTools)
135 kwargs.setdefault(
"FrontEndSimTools", feSimTools)
136 kwargs.setdefault(
"InputObjectName",
"ITkPixelHits")
137 kwargs.setdefault(
"PixelDetEleCollKey",
"ITkPixelDetectorElementCollection")
138 if flags.Digitization.DoXingByXingPileUp:
141 from RngComps.RngCompsConfig
import AthRNGSvcCfg
142 kwargs.setdefault(
"RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
144 acc.setPrivateTools(CompFactory.PixelDigitizationTool(name, **kwargs))
149 """Return ComponentAccumulator with configured ITkPixelDigitizationBasicTool"""
150 acc = ComponentAccumulator()
151 if flags.Digitization.PileUp:
153 if not flags.Digitization.DoXingByXingPileUp:
155 kwargs.setdefault(
"PileUpMergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)))
157 kwargs.setdefault(
"PileUpMergeSvc",
'')
158 kwargs.setdefault(
"OnlyUseContainerName", flags.Digitization.PileUp)
159 kwargs.setdefault(
"HardScatterSplittingMode", 0)
160 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
161 kwargs.setdefault(
"RDOCollName", flags.Overlay.BkgPrefix +
"ITkPixelRDOs")
162 kwargs.setdefault(
"SDOCollName", flags.Overlay.BkgPrefix +
"ITkPixelSDO_Map")
164 kwargs.setdefault(
"RDOCollName",
"ITkPixelRDOs")
165 kwargs.setdefault(
"SDOCollName",
"ITkPixelSDO_Map")
167 acc.setPrivateTools(tool)
172 """Return ComponentAccumulator with PixelDigitizationTool configured for Hard Scatter ITk"""
173 acc = ComponentAccumulator()
175 kwargs.setdefault(
"PileUpMergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=rangetool)))
176 kwargs.setdefault(
"HardScatterSplittingMode", 1)
178 acc.setPrivateTools(tool)
183 """Return ComponentAccumulator with PixelDigitizationTool configured for PileUp ITk"""
184 acc = ComponentAccumulator()
186 kwargs.setdefault(
"PileUpMergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=rangetool)))
187 kwargs.setdefault(
"HardScatterSplittingMode", 2)
188 kwargs.setdefault(
"RDOCollName",
"ITkPixel_PU_RDOs")
189 kwargs.setdefault(
"SDOCollName",
"ITkPixel_PU_SDO_Map")
191 acc.setPrivateTools(tool)
196 """Return ComponentAccumulator with PixelDigitizationTool configured for PileUpITkPixelHits"""
197 acc = ComponentAccumulator()
199 kwargs.setdefault(
"PileUpMergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=rangetool)))
200 kwargs.setdefault(
"HardScatterSplittingMode", 0)
201 kwargs.setdefault(
"InputObjectName",
"PileupITkPixelHits")
202 kwargs.setdefault(
"RDOCollName",
"ITkPixel_PU_RDOs")
203 kwargs.setdefault(
"SDOCollName",
"ITkPixel_PU_SDO_Map")
205 acc.setPrivateTools(tool)
210 """Return ComponentAccumulator with PixelDigitizationTool configured for overlay"""
211 kwargs.setdefault(
"OnlyUseContainerName",
False)
212 kwargs.setdefault(
"RDOCollName", flags.Overlay.SigPrefix +
"ITkPixelRDOs")
213 kwargs.setdefault(
"SDOCollName", flags.Overlay.SigPrefix +
"ITkPixelSDO_Map")
214 kwargs.setdefault(
"HardScatterSplittingMode", 0)
219 """Return a configured PileUpXingFolder tool"""
222 kwargs.setdefault(
"CacheRefreshFrequency", 1.0)
223 kwargs.setdefault(
"ItemList", [
"SiHitCollection#ITkPixelHits"])
224 return PileUpXingFolderCfg(flags, name, **kwargs)
228 """Return ComponentAccumulator with Output for ITk Pixel. Not standalone."""
229 acc = ComponentAccumulator()
230 if flags.Output.doWriteRDO:
231 ItemList = [
"PixelRDO_Container#*"]
232 if flags.Digitization.EnableTruth:
233 ItemList += [
"InDetSimDataCollection#*"]
234 acc.merge(TruthDigitizationOutputCfg(flags))
235 if flags.ITk.savePixelSiHits:
236 ItemList += [
"SiHitCollection#ITkPixelHits"]
237 acc.merge(OutputStreamCfg(flags,
"RDO", ItemList))
242 """Return ComponentAccumulator for ITk Pixel digitization"""
243 acc = ComponentAccumulator()
244 if "PileUpTools" not in kwargs:
246 kwargs[
"PileUpTools"] = PileUpTools
247 acc.merge(PileUpToolsCfg(flags, **kwargs))
252 """Return ComponentAccumulator with ITk Pixel Overlay digitization"""
253 acc = ComponentAccumulator()
254 if flags.Common.ProductionStep != ProductionStep.FastChain:
255 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
256 acc.merge(SGInputLoaderCfg(flags, [
"SiHitCollection#ITkPixelHits"]))
258 if "DigitizationTool" not in kwargs:
260 kwargs[
"DigitizationTool"] = tool
262 if flags.Concurrency.NumThreads > 0:
263 kwargs.setdefault(
"Cardinality", flags.Concurrency.NumThreads)
266 kwargs.setdefault(
"ExtraInputs", flags.Overlay.ExtraInputs)
267 acc.addEventAlgo(CompFactory.PixelDigitization(name=
"ITkPixelOverlayDigitization", **kwargs))
273 """Return ComponentAccumulator for ITk Pixel digitization and Output"""
281 """Return ComponentAccumulator for Hard-Scatter-only ITk Pixel digitization and Output"""
282 acc = ComponentAccumulator()
284 kwargs[
"PileUpTools"] = tool
285 acc.merge(PileUpToolsCfg(flags, **kwargs))
291 """Return ComponentAccumulator with Pile-up-only ITk Pixel digitization and Output"""
292 acc = ComponentAccumulator()
294 kwargs[
"PileUpTools"] = tool
295 acc.merge(PileUpToolsCfg(flags, **kwargs))
ITkPixelDigitizationPUCfg(flags, **kwargs)
ITkSensorSim3DToolCfg(flags, name="ITkSensorSim3DTool", **kwargs)
ITkPixelDigitizationBasicToolCfg(flags, name="ITkPixelDigitizationBasicTool", **kwargs)
ITkPixelDigitizationHSCfg(flags, **kwargs)
BarrelRD53SimToolCfg(flags, name="BarrelRD53SimTool", **kwargs)
ITkPixelRangeCfg(flags, name="ITkPixelRange", **kwargs)
ITkPixelDigitizationPUToolCfg(flags, name="ITkPixelDigitizationPUTool", **kwargs)
ITkPixelDigitizationToolCfg(flags, name="ITkPixelDigitizationTool", **kwargs)
ITkEnergyDepositionToolCfg(flags, name="ITkEnergyDepositionTool", **kwargs)
ITkPixel_FirstXing(flags)
ITkPixelDigitizationSplitNoMergePUToolCfg(flags, name="ITkPixelDigitizationSplitNoMergePUTool", **kwargs)
ITkPixelOverlayDigitizationBasicCfg(flags, **kwargs)
ITkPixelDigitizationHSToolCfg(flags, name="ITkPixelDigitizationHSTool", **kwargs)
ITkPixelOverlayDigitizationToolCfg(flags, name="ITkPixelOverlayDigitizationTool", **kwargs)
ITkPixelDigitizationBasicCfg(flags, **kwargs)
ITkPixelDigitizationCfg(flags, **kwargs)
ITkSensorSimPlanarToolCfg(flags, name="ITkSensorSimPlanarTool", **kwargs)
EndcapRD53SimToolCfg(flags, name="EndcapRD53SimTool", **kwargs)