1 """Define methods to construct configured ITk Pixel Digitization tools and algorithms
3 Copyright (C) 2002-2021 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 ProductionStep
8 from DigitizationConfig.PileUpMergeSvcConfig
import PileUpMergeSvcCfg, PileUpXingFolderCfg
9 from DigitizationConfig.PileUpToolsConfig
import PileUpToolsCfg
10 from DigitizationConfig.TruthDigitizationOutputConfig
import TruthDigitizationOutputCfg
11 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
12 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import (
13 ITkPixelModuleConfigCondAlgCfg, ITkPixelChargeCalibCondAlgCfg,
14 ITkPixelDistortionAlgCfg
16 from PixelConditionsTools.ITkPixelConditionsSummaryConfig
import ITkPixelConditionsSummaryCfg
17 from PixelGeoModelXml.ITkPixelGeoModelConfig
import ITkPixelReadoutGeometryCfg
18 from PixelReadoutGeometry.PixelReadoutGeometryConfig
import ITkPixelReadoutManagerCfg
19 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
20 from SiPropertiesTool.ITkPixelSiPropertiesConfig
import ITkPixelSiPropertiesToolCfg
21 from SimulationConfig.SimEnums
import PixelRadiationDamageSimulationType
31 if flags.Beam.BunchSpacing > 50:
38 """Return a configured EnergyDepositionTool"""
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"""
58 kwargs.setdefault(
"BarrelEC", 0)
59 kwargs.setdefault(
"DoNoise", flags.Digitization.DoITkPixelDetectorNoise)
60 kwargs.setdefault(
"PixelReadoutManager", acc.getPrimary())
61 kwargs.setdefault(
"PixelChargeCalibCondData",
"ITkPixelChargeCalibCondData")
63 kwargs.setdefault(
"DoTimeWalk",
False)
64 acc.setPrivateTools(CompFactory.RD53SimTool(name, **kwargs))
69 """Return a RD53SimTool configured for Endcap"""
73 kwargs.setdefault(
"BarrelEC", 2)
74 kwargs.setdefault(
"DoNoise", flags.Digitization.DoITkPixelDetectorNoise)
75 kwargs.setdefault(
"PixelReadoutManager", acc.getPrimary())
76 kwargs.setdefault(
"PixelChargeCalibCondData",
"ITkPixelChargeCalibCondData")
78 kwargs.setdefault(
"DoTimeWalk",
False)
79 RD53SimTool = CompFactory.RD53SimTool
85 """Return ComponentAccumulator with configured SensorSimPlanarTool for ITk"""
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"""
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"""
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"""
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"""
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"""
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"""
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"])
228 """Return ComponentAccumulator with Output for ITk Pixel. Not standalone."""
230 if flags.Output.doWriteRDO:
231 ItemList = [
"PixelRDO_Container#*"]
232 if flags.Digitization.EnableTruth:
233 ItemList += [
"InDetSimDataCollection#*"]
235 if flags.ITk.savePixelSiHits:
236 ItemList += [
"SiHitCollection#ITkPixelHits"]
242 """Return ComponentAccumulator for ITk Pixel digitization"""
244 if "PileUpTools" not in kwargs:
246 kwargs[
"PileUpTools"] = PileUpTools
252 """Return ComponentAccumulator with ITk Pixel Overlay digitization"""
254 if flags.Common.ProductionStep != ProductionStep.FastChain:
255 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
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"""
284 kwargs[
"PileUpTools"] = tool
291 """Return ComponentAccumulator with Pile-up-only ITk Pixel digitization and Output"""
294 kwargs[
"PileUpTools"] = tool