1 """Define methods to construct configured PLR Digitization tools and algorithms
3 Copyright (C) 2002-2022 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
13 from PixelConditionsAlgorithms.PLR_ConditionsConfig
import (
14 PLR_ConfigCondAlgCfg, PLR_ChargeCalibCondAlgCfg,
17 from PixelConditionsTools.PLR_ConditionsSummaryConfig
import PLR_ConditionsSummaryCfg
18 from PLRGeoModelXml.PLR_GeoModelConfig
import PLR_ReadoutGeometryCfg
19 from PixelReadoutGeometry.PixelReadoutGeometryConfig
import PLR_ReadoutManagerCfg
20 from SiLorentzAngleTool.PLR_LorentzAngleConfig
import PLR_LorentzAngleToolCfg
21 from SiPropertiesTool.PLR_SiPropertiesConfig
import PLR_SiPropertiesToolCfg
22 from SimulationConfig.SimEnums
import PixelRadiationDamageSimulationType
32 if flags.Beam.BunchSpacing > 50:
39 """Return a configured EnergyDepositionTool"""
41 kwargs.setdefault(
"DeltaRayCut", 117.)
42 kwargs.setdefault(
"nCols", 5)
43 kwargs.setdefault(
"LoopLimit", 100000)
44 kwargs.setdefault(
"doBichsel",
True)
45 kwargs.setdefault(
"doBichselBetaGammaCut", 0.7)
46 kwargs.setdefault(
"doDeltaRay",
False)
47 kwargs.setdefault(
"doPU",
True)
48 kwargs.setdefault(
"PixelDistortionData",
"PLR_DistortionData")
49 acc.setPrivateTools(CompFactory.EnergyDepositionTool(name, **kwargs))
54 """Return a RD53SimTool configured for PLR"""
58 kwargs.setdefault(
"BarrelEC", 4)
59 kwargs.setdefault(
"DoNoise", flags.Digitization.DoInnerDetectorNoise)
60 kwargs.setdefault(
"PixelReadoutManager", acc.getPrimary())
61 kwargs.setdefault(
"PixelChargeCalibCondData",
"PLR_ChargeCalibCondData")
63 kwargs.setdefault(
"DoTimeWalk",
False)
64 acc.setPrivateTools(CompFactory.RD53SimTool(name, **kwargs))
69 """Return ComponentAccumulator with configured SensorSimPlanarTool for PLR"""
73 kwargs.setdefault(
"PixelModuleData",
"PLR_ModuleData")
74 kwargs.setdefault(
"RadiationDamageSimulationType", flags.Digitization.PixelPlanarRadiationDamageSimulationType.value)
75 kwargs.setdefault(
"DigitizeITk3Das3D",
False)
76 if flags.Digitization.PixelPlanarRadiationDamageSimulationType
is not PixelRadiationDamageSimulationType.NoRadiationDamage:
79 acc.setPrivateTools(CompFactory.SensorSimPlanarTool(name, **kwargs))
84 """Return ComponentAccumulator with configured SensorSim3DTool for PLR"""
87 kwargs.setdefault(
"PixelModuleData",
"PLR_ModuleData")
88 kwargs.setdefault(
"RadiationDamageSimulationType", flags.Digitization.Pixel3DRadiationDamageSimulationType.value)
89 kwargs.setdefault(
"DigitizeITk3Das3D",
False)
90 if flags.Digitization.Pixel3DRadiationDamageSimulationType
is not PixelRadiationDamageSimulationType.NoRadiationDamage:
93 acc.setPrivateTools(CompFactory.SensorSim3DTool(name, **kwargs))
98 """Return ComponentAccumulator with configured PixelDigitizationTool for PLR"""
106 kwargs.setdefault(
"PixelIDName",
"PLR_ID")
107 kwargs.setdefault(
"ChargeTools", chargeTools)
109 kwargs.setdefault(
"FrontEndSimTools", feSimTools)
110 kwargs.setdefault(
"InputObjectName",
"PLR_Hits")
111 kwargs.setdefault(
"PixelDetEleCollKey",
"PLR_DetectorElementCollection")
112 if flags.Digitization.DoXingByXingPileUp:
115 from RngComps.RngCompsConfig
import AthRNGSvcCfg
116 kwargs.setdefault(
"RndmSvc", acc.getPrimaryAndMerge(
AthRNGSvcCfg(flags)))
118 acc.setPrivateTools(CompFactory.PixelDigitizationTool(name, **kwargs, ))
123 """Return ComponentAccumulator with configured PLR_DigitizationBasicTool"""
125 if flags.Digitization.PileUp:
127 if not flags.Digitization.DoXingByXingPileUp:
128 intervals += [acc.popToolsAndMerge(
PLR_RangeCfg(flags))]
129 kwargs.setdefault(
"PileUpMergeSvc", acc.getPrimaryAndMerge(
PileUpMergeSvcCfg(flags, Intervals=intervals)))
131 kwargs.setdefault(
"PileUpMergeSvc",
"")
132 kwargs.setdefault(
"OnlyUseContainerName", flags.Digitization.PileUp)
133 kwargs.setdefault(
"HardScatterSplittingMode", 0)
134 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
135 kwargs.setdefault(
"RDOCollName", flags.Overlay.BkgPrefix +
"PLR_RDOs")
136 kwargs.setdefault(
"SDOCollName", flags.Overlay.BkgPrefix +
"PLR_SDO_Map")
138 kwargs.setdefault(
"RDOCollName",
"PLR_RDOs")
139 kwargs.setdefault(
"SDOCollName",
"PLR_SDO_Map")
141 acc.setPrivateTools(tool)
146 """Return ComponentAccumulator with PixelDigitizationTool configured for Hard Scatter"""
150 kwargs.setdefault(
"HardScatterSplittingMode", 1)
152 acc.setPrivateTools(tool)
157 """Return ComponentAccumulator with PixelDigitizationTool configured for PileUp"""
161 kwargs.setdefault(
"HardScatterSplittingMode", 2)
162 kwargs.setdefault(
"RDOCollName",
"PLR_PU_RDOs")
163 kwargs.setdefault(
"SDOCollName",
"PLR_PU_SDO_Map")
165 acc.setPrivateTools(tool)
170 """Return ComponentAccumulator with PixelDigitizationTool configured for PileUpPLR_Hits"""
174 kwargs.setdefault(
"HardScatterSplittingMode", 0)
175 kwargs.setdefault(
"InputObjectName",
"PileupPLR_Hits")
176 kwargs.setdefault(
"RDOCollName",
"PLR_PU_RDOs")
177 kwargs.setdefault(
"SDOCollName",
"PLR_PU_SDO_Map")
179 acc.setPrivateTools(tool)
184 """Return ComponentAccumulator with PixelDigitizationTool configured for overlay"""
185 kwargs.setdefault(
"OnlyUseContainerName",
False)
186 kwargs.setdefault(
"RDOCollName", flags.Overlay.SigPrefix +
"PLR_RDOs")
187 kwargs.setdefault(
"SDOCollName", flags.Overlay.SigPrefix +
"PLR_SDO_Map")
188 kwargs.setdefault(
"HardScatterSplittingMode", 0)
193 """Return a configured PileUpXingFolder tool"""
196 kwargs.setdefault(
"CacheRefreshFrequency", 1.0)
197 kwargs.setdefault(
"ItemList", [
"SiHitCollection#PLR_Hits"])
202 """Return ComponentAccumulator with Output for PLR. Not standalone."""
204 if flags.Output.doWriteRDO:
205 ItemList = [
"PixelRDO_Container#*"]
206 if flags.Digitization.EnableTruth:
207 ItemList += [
"InDetSimDataCollection#*"]
214 """Return ComponentAccumulator for PLR digitization"""
216 if "PileUpTools" not in kwargs:
218 kwargs[
"PileUpTools"] = PileUpTools
224 """Return ComponentAccumulator with PLR Overlay digitization"""
226 if flags.Common.ProductionStep != ProductionStep.FastChain:
227 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
230 if "DigitizationTool" not in kwargs:
232 kwargs[
"DigitizationTool"] = tool
234 if flags.Concurrency.NumThreads > 0:
235 kwargs.setdefault(
"Cardinality", flags.Concurrency.NumThreads)
238 kwargs.setdefault(
"ExtraInputs", flags.Overlay.ExtraInputs)
239 acc.addEventAlgo(CompFactory.PixelDigitization(name=
"PLR_OverlayDigitization", **kwargs))
245 """Return ComponentAccumulator for PLR digitization and Output"""
253 """Return ComponentAccumulator for Hard-Scatter-only PLR digitization and Output"""
256 kwargs[
"PileUpTools"] = tool
263 """Return ComponentAccumulator with Pile-up-only PLR digitization and Output"""
266 kwargs[
"PileUpTools"] = tool