34 """Return an AthConfigFlags object with required flags"""
35 flags = AthConfigFlags()
38 def _checkDigiSteeringConf(prevFlags):
39 digiSteeringConf =
"StandardPileUpToolsAlg"
40 if prevFlags.Input.Files:
41 digiSteeringConf = GetFileMD(prevFlags.Input.Files).
get(
"digiSteeringConf",
"StandardPileUpToolsAlg")
42 return digiSteeringConf
44 flags.addFlag(
"Digitization.DigiSteeringConf", _checkDigiSteeringConf)
46 flags.addFlag(
"Digitization.DoInnerDetectorNoise",
lambda prevFlags:
not prevFlags.Common.isOverlay)
48 flags.addFlag(
"Digitization.DoITkPixelDetectorNoise",
lambda prevFlags: prevFlags.Digitization.DoInnerDetectorNoise)
50 flags.addFlag(
"Digitization.DoITkStripDetectorNoise",
lambda prevFlags: prevFlags.Digitization.DoInnerDetectorNoise)
52 flags.addFlag(
"Digitization.DoXingByXingPileUp",
False)
54 flags.addFlag(
"Digitization.DoCaloNoise",
lambda prevFlags:
not prevFlags.Common.isOverlay)
56 flags.addFlag(
"Digitization.EnableCaloHSTruthRecoInputs",
False)
58 flags.addFlag(
"Digitization.HighGainFCal",
False)
60 flags.addFlag(
"Digitization.HighGainEMECIW",
True)
62 flags.addFlag(
"Digitization.PileUp",
63 lambda prevFlags: GetFileMD(prevFlags.Input.Files).
get(
"pileUp",
"False") !=
"False")
65 flags.addFlag(
"Digitization.UseUpdatedTGCConditions",
False)
67 flags.addFlag(
"Digitization.EnableTruth",
True)
69 flags.addFlag(
"Digitization.AddCaloDigi",
False)
71 flags.addFlag(
"Digitization.AddCaloDigiThinned",
False)
73 flags.addFlag(
"Digitization.RandomSeedOffset", 0)
75 flags.addFlag(
"Digitization.ExtraInputs", [(
"xAOD::EventInfo",
"EventInfo")])
77 flags.addFlag(
"Digitization.InputBeamSigmaZ", -1)
80 flags.addFlag(
"Digitization.PixelPlanarRadiationDamageSimulationType",
81 PixelRadiationDamageSimulationType.NoRadiationDamage, type=PixelRadiationDamageSimulationType)
83 flags.addFlag(
"Digitization.Pixel3DRadiationDamageSimulationType",
84 PixelRadiationDamageSimulationType.NoRadiationDamage, type=PixelRadiationDamageSimulationType)
88 flags.addFlag(
"Digitization.DigitizeITk3Das3D",
False)
92 flags.addFlag(
"Digitization.PU.BunchStructureConfig",
"")
94 flags.addFlag(
"Digitization.PU.ProfileConfig",
"")
96 flags.addFlag(
"Digitization.PU.CustomProfile",
"")
98 flags.addFlag(
"Digitization.PU.ForceSequentialEventNumbers",
99 lambda prevFlags: prevFlags.Common.ProductionStep == ProductionStep.PileUpPresampling)
101 flags.addFlag(
"Digitization.PU.BeamHaloInputCols", [])
103 flags.addFlag(
"Digitization.PU.BeamIntensityPattern",
106 flags.addFlag(
"Digitization.PU.BeamGasInputCols", [])
109 flags.addFlag(
"Digitization.PU.BunchSpacing",
110 lambda prevFlags: prevFlags.Beam.BunchSpacing)
112 flags.addFlag(
"Digitization.PU.InitialBunchCrossing", -32)
113 flags.addFlag(
"Digitization.PU.FinalBunchCrossing", 6)
115 flags.addFlag(
"Digitization.PU.CavernIgnoresBeamInt",
False)
117 flags.addFlag(
"Digitization.PU.CavernInputCols", [])
119 flags.addFlag(
"Digitization.PU.FixedT0BunchCrossing", 0)
122 flags.addFlag(
"Digitization.PU.HighPtMinBiasInputCols", [])
124 flags.addFlag(
"Digitization.PU.HighPtMinBiasInputColOffset", 0)
127 flags.addFlag(
"Digitization.PU.LowPtMinBiasInputCols", [])
129 flags.addFlag(
"Digitization.PU.NumberOfLowPtMinBias", 0.0)
131 flags.addFlag(
"Digitization.PU.NumberOfHighPtMinBias", 0.0)
133 flags.addFlag(
"Digitization.PU.NumberOfBeamGas", 0.0)
135 flags.addFlag(
"Digitization.PU.NumberOfBeamHalo", 0.0)
137 flags.addFlag(
"Digitization.PU.NumberOfCollisions", 0.0)
139 flags.addFlag(
"Digitization.PU.NumberOfCavern", 0.0)
141 flags.addFlag(
"Digitization.PU.SignalPatternForSteppingCache", [])
143 flags.addFlag(
"Digitization.DoFastDigi", [])
145 flags.addFlag(
"Digitization.ReadParametersFromDB",
lambda prevFlags : prevFlags.Common.ProductionStep
in [ProductionStep.Digitization, ProductionStep.PileUpPresampling, ProductionStep.Overlay, ProductionStep.FastChain])
147 flags.addFlag(
"Digitization.TRT.HeavyIonHT",
False)
152 """Fill digitization configuration flags from run arguments."""
154 if hasattr(runArgs,
"DataRunNumber"):
155 flags.Input.ConditionsRunNumber = runArgs.DataRunNumber
158 if hasattr(runArgs,
"jobNumber"):
159 flags.Input.JobNumber = runArgs.jobNumber
161 if hasattr(runArgs,
"PileUpPresampling"):
162 flags.Common.ProductionStep = ProductionStep.PileUpPresampling
163 elif flags.Common.ProductionStep == ProductionStep.Default:
164 flags.Common.ProductionStep = ProductionStep.Digitization
166 if hasattr(runArgs,
"doAllNoise"):
167 flags.Digitization.DoInnerDetectorNoise = runArgs.doAllNoise
168 flags.Digitization.DoCaloNoise = runArgs.doAllNoise
170 if hasattr(runArgs,
"AddCaloDigi"):
171 flags.Digitization.AddCaloDigi = runArgs.AddCaloDigi
173 if hasattr(runArgs,
"digiSeedOffset1")
or hasattr(runArgs,
"digiSeedOffset2"):
174 flags.Digitization.RandomSeedOffset = 0
175 if hasattr(runArgs,
"digiSeedOffset1"):
176 flags.Digitization.RandomSeedOffset += int(runArgs.digiSeedOffset1)
177 if hasattr(runArgs,
"digiSeedOffset2"):
178 flags.Digitization.RandomSeedOffset += int(runArgs.digiSeedOffset2)
180 flags.Digitization.RandomSeedOffset = 3
182 if hasattr(runArgs,
"digiSteeringConf"):
183 flags.Digitization.DigiSteeringConf = runArgs.digiSteeringConf +
"PileUpToolsAlg"
191 """Fill pile-up digitization configuration flags from run arguments."""
192 if hasattr(runArgs,
"numberOfLowPtMinBias"):
193 flags.Digitization.PU.NumberOfLowPtMinBias = runArgs.numberOfLowPtMinBias
195 if hasattr(runArgs,
"numberOfHighPtMinBias"):
196 flags.Digitization.PU.NumberOfHighPtMinBias = runArgs.numberOfHighPtMinBias
198 if hasattr(runArgs,
"numberOfBeamHalo"):
199 flags.Digitization.PU.NumberOfBeamHalo = runArgs.numberOfBeamHalo
201 if hasattr(runArgs,
"numberOfBeamGas"):
202 flags.Digitization.PU.NumberOfBeamGas = runArgs.numberOfBeamGas
204 if hasattr(runArgs,
"numberOfCavernBkg"):
205 flags.Digitization.PU.NumberOfCavern = runArgs.numberOfCavernBkg
207 if hasattr(runArgs,
"bunchSpacing"):
208 flags.Digitization.PU.BunchSpacing = runArgs.bunchSpacing
210 if hasattr(runArgs,
"pileupInitialBunch"):
211 flags.Digitization.PU.InitialBunchCrossing = runArgs.pileupInitialBunch
213 if hasattr(runArgs,
"pileupFinalBunch"):
214 flags.Digitization.PU.FinalBunchCrossing = runArgs.pileupFinalBunch
217 if flags.Digitization.PU.InitialBunchCrossing > flags.Digitization.PU.FinalBunchCrossing:
218 raise ValueError(
"Initial bunch crossing should not be larger than the final one")
220 if hasattr(runArgs,
"inputLowPtMinbiasHitsFile"):
221 from RunDependentSimComps.PileUpUtils
import generateBackgroundInputCollections
222 flags.Digitization.PU.LowPtMinBiasInputCols = \
223 generateBackgroundInputCollections(flags, runArgs.inputLowPtMinbiasHitsFile,
224 flags.Digitization.PU.NumberOfLowPtMinBias,
True)
226 if hasattr(runArgs,
"inputHighPtMinbiasHitsFile"):
227 from RunDependentSimComps.PileUpUtils
import getInputCollectionOffset, generateBackgroundInputCollections
228 if flags.Digitization.PU.HighPtMinBiasInputColOffset < 0:
230 flags.Digitization.PU.HighPtMinBiasInputColOffset = getInputCollectionOffset(flags, runArgs.inputHighPtMinbiasHitsFile)
232 flags.Digitization.PU.HighPtMinBiasInputCols = \
233 generateBackgroundInputCollections(flags, runArgs.inputHighPtMinbiasHitsFile,
234 flags.Digitization.PU.NumberOfHighPtMinBias,
True)
236 if hasattr(runArgs,
"inputCavernHitsFile"):
237 from RunDependentSimComps.PileUpUtils
import generateBackgroundInputCollections
238 flags.Digitization.PU.CavernInputCols = \
239 generateBackgroundInputCollections(flags, runArgs.inputCavernHitsFile,
240 flags.Digitization.PU.NumberOfCavern,
True)
242 if hasattr(runArgs,
"inputBeamHaloHitsFile"):
243 from RunDependentSimComps.PileUpUtils
import generateBackgroundInputCollections
244 flags.Digitization.PU.BeamHaloInputCols = \
245 generateBackgroundInputCollections(flags, runArgs.inputBeamHaloHitsFile,
246 flags.Digitization.PU.NumberOfBeamHalo,
True)
248 if hasattr(runArgs,
"inputBeamGasHitsFile"):
249 from RunDependentSimComps.PileUpUtils
import generateBackgroundInputCollections
250 flags.Digitization.PU.BeamGasInputCols = \
251 generateBackgroundInputCollections(flags, runArgs.inputBeamGasHitsFile,
252 flags.Digitization.PU.NumberOfBeamGas,
True)
259 """Setup common digitization flags."""
261 if (hasattr(runArgs,
"inputLowPtMinbiasHitsFile")
262 or hasattr(runArgs,
"inputHighPtMinbiasHitsFile")
263 or hasattr(runArgs,
"inputCavernHitsFile")
264 or hasattr(runArgs,
"inputBeamHaloHitsFile")
265 or hasattr(runArgs,
"inputBeamGasHitsFile")):
266 flags.Digitization.PileUp =
True
268 if flags.Digitization.PileUp:
269 flags.Input.OverrideRunNumber =
True
271 if flags.Concurrency.NumThreads > 0:
272 flags.Digitization.DoXingByXingPileUp =
False
274 flags.Digitization.DoXingByXingPileUp =
True
276 flags.Input.OverrideRunNumber = flags.Input.ConditionsRunNumber > 0