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.DoInnerDetectorNoise)
60 kwargs.setdefault(
"PixelReadoutManager", acc.getPrimary())
61 kwargs.setdefault(
"PixelModuleData",
"ITkPixelModuleData")
62 kwargs.setdefault(
"PixelChargeCalibCondData",
"ITkPixelChargeCalibCondData")
64 kwargs.setdefault(
"DoTimeWalk",
False)
65 acc.setPrivateTools(CompFactory.RD53SimTool(name, **kwargs))
70 """Return a RD53SimTool configured for Endcap"""
74 kwargs.setdefault(
"BarrelEC", 2)
75 kwargs.setdefault(
"DoNoise", flags.Digitization.DoInnerDetectorNoise)
76 kwargs.setdefault(
"PixelReadoutManager", acc.getPrimary())
77 kwargs.setdefault(
"PixelModuleData",
"ITkPixelModuleData")
78 kwargs.setdefault(
"PixelChargeCalibCondData",
"ITkPixelChargeCalibCondData")
80 kwargs.setdefault(
"DoTimeWalk",
False)
81 RD53SimTool = CompFactory.RD53SimTool
87 """Return ComponentAccumulator with configured SensorSimPlanarTool for ITk"""
91 kwargs.setdefault(
"PixelModuleData",
"ITkPixelModuleData")
92 kwargs.setdefault(
"DigitizeITk3Das3D",
False)
93 kwargs.setdefault(
"RadiationDamageSimulationType", flags.Digitization.PixelPlanarRadiationDamageSimulationType.value)
94 if flags.Digitization.PixelPlanarRadiationDamageSimulationType
is not PixelRadiationDamageSimulationType.NoRadiationDamage:
97 acc.setPrivateTools(CompFactory.SensorSimPlanarTool(name, **kwargs))
102 """Return ComponentAccumulator with configured SensorSim3DTool for ITk"""
105 kwargs.setdefault(
"PixelModuleData",
"ITkPixelModuleData")
106 kwargs.setdefault(
"RadiationDamageSimulationType", flags.Digitization.Pixel3DRadiationDamageSimulationType.value)
107 kwargs.setdefault(
"DigitizeITk3Das3D",
False)
108 if flags.Digitization.Pixel3DRadiationDamageSimulationType
is not PixelRadiationDamageSimulationType.NoRadiationDamage:
111 acc.setPrivateTools(CompFactory.SensorSim3DTool(name, **kwargs))
116 """Return ComponentAccumulator with configured PixelDigitizationTool for ITk"""
125 kwargs.setdefault(
"ChargeTools", chargeTools)
127 kwargs.setdefault(
"FrontEndSimTools", feSimTools)
128 kwargs.setdefault(
"InputObjectName",
"ITkPixelHits")
129 kwargs.setdefault(
"PixelDetEleCollKey",
"ITkPixelDetectorElementCollection")
130 if flags.Digitization.DoXingByXingPileUp:
133 from RngComps.RngCompsConfig
import AthRNGSvcCfg
134 kwargs.setdefault(
"RndmSvc", acc.getPrimaryAndMerge(
AthRNGSvcCfg(flags)).name)
136 acc.setPrivateTools(CompFactory.PixelDigitizationTool(name, **kwargs))
141 """Return ComponentAccumulator with configured ITkPixelDigitizationBasicTool"""
143 if flags.Digitization.PileUp:
145 if not flags.Digitization.DoXingByXingPileUp:
147 kwargs.setdefault(
"PileUpMergeSvc", acc.getPrimaryAndMerge(
PileUpMergeSvcCfg(flags, Intervals=intervals)).name)
149 kwargs.setdefault(
"PileUpMergeSvc",
'')
150 kwargs.setdefault(
"OnlyUseContainerName", flags.Digitization.PileUp)
151 kwargs.setdefault(
"HardScatterSplittingMode", 0)
152 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
153 kwargs.setdefault(
"RDOCollName", flags.Overlay.BkgPrefix +
"ITkPixelRDOs")
154 kwargs.setdefault(
"SDOCollName", flags.Overlay.BkgPrefix +
"ITkPixelSDO_Map")
156 kwargs.setdefault(
"RDOCollName",
"ITkPixelRDOs")
157 kwargs.setdefault(
"SDOCollName",
"ITkPixelSDO_Map")
159 acc.setPrivateTools(tool)
164 """Return ComponentAccumulator with PixelDigitizationTool configured for Hard Scatter ITk"""
167 kwargs.setdefault(
"PileUpMergeSvc", acc.getPrimaryAndMerge(
PileUpMergeSvcCfg(flags, Intervals=rangetool)).name)
168 kwargs.setdefault(
"HardScatterSplittingMode", 1)
170 acc.setPrivateTools(tool)
175 """Return ComponentAccumulator with PixelDigitizationTool configured for PileUp ITk"""
178 kwargs.setdefault(
"PileUpMergeSvc", acc.getPrimaryAndMerge(
PileUpMergeSvcCfg(flags, Intervals=rangetool)).name)
179 kwargs.setdefault(
"HardScatterSplittingMode", 2)
180 kwargs.setdefault(
"RDOCollName",
"ITkPixel_PU_RDOs")
181 kwargs.setdefault(
"SDOCollName",
"ITkPixel_PU_SDO_Map")
183 acc.setPrivateTools(tool)
188 """Return ComponentAccumulator with PixelDigitizationTool configured for PileUpITkPixelHits"""
191 kwargs.setdefault(
"PileUpMergeSvc", acc.getPrimaryAndMerge(
PileUpMergeSvcCfg(flags, Intervals=rangetool)).name)
192 kwargs.setdefault(
"HardScatterSplittingMode", 0)
193 kwargs.setdefault(
"InputObjectName",
"PileupITkPixelHits")
194 kwargs.setdefault(
"RDOCollName",
"ITkPixel_PU_RDOs")
195 kwargs.setdefault(
"SDOCollName",
"ITkPixel_PU_SDO_Map")
197 acc.setPrivateTools(tool)
202 """Return ComponentAccumulator with PixelDigitizationTool configured for overlay"""
203 kwargs.setdefault(
"OnlyUseContainerName",
False)
204 kwargs.setdefault(
"RDOCollName", flags.Overlay.SigPrefix +
"ITkPixelRDOs")
205 kwargs.setdefault(
"SDOCollName", flags.Overlay.SigPrefix +
"ITkPixelSDO_Map")
206 kwargs.setdefault(
"HardScatterSplittingMode", 0)
211 """Return a configured PileUpXingFolder tool"""
214 kwargs.setdefault(
"CacheRefreshFrequency", 1.0)
215 kwargs.setdefault(
"ItemList", [
"SiHitCollection#ITkPixelHits"])
220 """Return ComponentAccumulator with Output for ITk Pixel. Not standalone."""
222 if flags.Output.doWriteRDO:
223 ItemList = [
"PixelRDO_Container#*"]
224 if flags.Digitization.EnableTruth:
225 ItemList += [
"InDetSimDataCollection#*"]
227 if flags.ITk.savePixelSiHits:
228 ItemList += [
"SiHitCollection#ITkPixelHits"]
234 """Return ComponentAccumulator for ITk Pixel digitization"""
236 if "PileUpTools" not in kwargs:
238 kwargs[
"PileUpTools"] = PileUpTools
244 """Return ComponentAccumulator with ITk Pixel Overlay digitization"""
246 if flags.Common.ProductionStep != ProductionStep.FastChain:
247 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
250 if "DigitizationTool" not in kwargs:
252 kwargs[
"DigitizationTool"] = tool
254 if flags.Concurrency.NumThreads > 0:
255 kwargs.setdefault(
"Cardinality", flags.Concurrency.NumThreads)
258 kwargs.setdefault(
"ExtraInputs", flags.Overlay.ExtraInputs)
259 acc.addEventAlgo(CompFactory.PixelDigitization(name=
"ITkPixelOverlayDigitization", **kwargs))
265 """Return ComponentAccumulator for ITk Pixel digitization and Output"""
273 """Return ComponentAccumulator for Hard-Scatter-only ITk Pixel digitization and Output"""
276 kwargs[
"PileUpTools"] = tool
283 """Return ComponentAccumulator with Pile-up-only ITk Pixel digitization and Output"""
286 kwargs[
"PileUpTools"] = tool