ATLAS Offline Software
Loading...
Searching...
No Matches
LArDigitizationConfig.py
Go to the documentation of this file.
1"""Define functions for LAr Digitization with ComponentAccumulator
2
3Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
4"""
5# utilities
6from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7from AthenaConfiguration.ComponentFactory import CompFactory
8from AthenaConfiguration.Enums import BeamType, LHCPeriod, ProductionStep
9from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
10# for PileUpTool
11from LArGeoAlgsNV.LArGMConfig import LArGMCfg
12from LArRecUtils.LArADC2MeVCondAlgConfig import LArADC2MeVCondAlgCfg
13from LArRecUtils.LArXTalkWeightCondAlgConfig import LArXTalkWeightCondAlgCfg
14from LArRecUtils.LArRecUtilsConfig import LArAutoCorrNoiseCondAlgCfg
15from LArBadChannelTool.LArBadChannelConfig import LArBadFebCfg,LArBadChannelCfg
16from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBCfg
17from DigitizationConfig.PileUpToolsConfig import PileUpToolsCfg
18from DigitizationConfig.PileUpMergeSvcConfig import PileUpMergeSvcCfg, PileUpXingFolderCfg
19# for Digitization
20from LArROD.LArRawChannelBuilderAlgConfig import LArRawChannelBuilderAlgCfg
21from LArROD.LArDigitThinnerConfig import LArDigitThinnerCfg
22from LArROD.LArNNChannelBuilder import LArNNRawChannelBuilderCfg
23from DigitizationConfig.TruthDigitizationOutputConfig import TruthDigitizationOutputCfg
24# for Trigger Tower
25from CaloConditions.CaloConditionsConfig import CaloTriggerTowerCfg
26from SGComps.AddressRemappingConfig import InputOverwriteCfg
27
28# Enum of CaloGains
29from ROOT.CaloGain import CaloGain
30
31
32
33def useLArFloat(flags):
34 """Return bool for simplified transient LArHit with float E,time"""
35 # temporary, remapping to LArHitFloat does not seeem to work
36 # with this scheme... => larger memory usage
37 if flags.Digitization.DoXingByXingPileUp or flags.Common.isOverlay:
38 return False
39 # check for fast chain, running digitisation from hits in memory
40 if flags.Sim.DoFullChain:
41 return False
42 return False
43
44
45def LArRangeEMCfg(flags, name="LArRangeEM", **kwargs):
46 """Return a PileUpXingFoldertool for ElectroMagnetic calorimeter"""
47 # bunch crossing range in ns
48 kwargs.setdefault("FirstXing", -751)
49 kwargs.setdefault("LastXing", 101)
50 if useLArFloat(flags):
51 kwargs.setdefault("ItemList", ["LArHitFloatContainer#LArHitEMB",
52 "LArHitFloatContainer#LArHitEMEC"])
53 else:
54 kwargs.setdefault("ItemList", ["LArHitContainer#LArHitEMB",
55 "LArHitContainer#LArHitEMEC"])
56 return PileUpXingFolderCfg(flags, name, **kwargs)
57
58
59def LArRangeHECCfg(flags, name="LArRangeHEC", **kwargs):
60 """Return a PileUpXingFoldertool for Hadronic End-Cap"""
61 # bunch crossing range in ns
62 kwargs.setdefault("FirstXing", -676)
63 kwargs.setdefault("LastXing", 101)
64 if useLArFloat(flags):
65 kwargs.setdefault("ItemList", ["LArHitFloatContainer#LArHitHEC"])
66 else:
67 kwargs.setdefault("ItemList", ["LArHitContainer#LArHitHEC"])
68 return PileUpXingFolderCfg(flags, name, **kwargs)
69
70
71def LArRangeFCALCfg(flags, name="LArRangeFCAL", **kwargs):
72 """Return a PileUpXingFoldertool for Forward Calorimeters"""
73 # bunch crossing range in ns
74 kwargs.setdefault("FirstXing", -551)
75 kwargs.setdefault("LastXing", 101)
76 if useLArFloat(flags):
77 kwargs.setdefault("ItemList", ["LArHitFloatContainer#LArHitFCAL"])
78 else:
79 kwargs.setdefault("ItemList", ["LArHitContainer#LArHitFCAL"])
80 return PileUpXingFolderCfg(flags, name, **kwargs)
81
82
83def LArPileUpToolCfg(flags, name="LArPileUpTool", **kwargs):
84 """Return ComponentAccumulator with configured LArPileUpTool"""
85 acc = LArGMCfg(flags)
86
87 # add new conditions for LArXTalkWeight
88 acc.merge(LArXTalkWeightCondAlgCfg(flags))
89
90 # defaults
91 if flags.Common.isOverlay:
92 # Some noise needs to be added during MC Overlay
93 # No noise should be added during Data Overlay
94 kwargs.setdefault("NoiseOnOff", not flags.Overlay.DataOverlay)
95 kwargs.setdefault("NoiseOnOff", flags.Digitization.DoCaloNoise) # For other jobs go with the noise flag setting.
96 kwargs.setdefault("DoDigiTruthReconstruction", flags.Digitization.EnableCaloHSTruthRecoInputs)
97 kwargs.setdefault("RandomSeedOffset", flags.Digitization.RandomSeedOffset)
98 if flags.Digitization.PileUp:
99 intervals = []
100 if flags.Digitization.DoXingByXingPileUp:
101 kwargs.setdefault("FirstXing", -751)
102 kwargs.setdefault("LastXing", 101)
103 else:
104 intervals += [acc.popToolsAndMerge(LArRangeEMCfg(flags))]
105 intervals += [acc.popToolsAndMerge(LArRangeHECCfg(flags))]
106 intervals += [acc.popToolsAndMerge(LArRangeFCALCfg(flags))]
107 kwargs.setdefault("PileUpMergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)))
108 else:
109 kwargs.setdefault("PileUpMergeSvc", '')
110 kwargs.setdefault("RndmEvtOverlay", flags.Common.isOverlay)
111 # if doing MC+MC overlay
112 if flags.Common.isOverlay and flags.Input.isMC:
113 kwargs.setdefault("isMcOverlay", True)
114
115 # cosmics digitization
116 if flags.Beam.Type is BeamType.Cosmics:
117 kwargs.setdefault("UseTriggerTime", True)
118 acc.addEventAlgo(CompFactory.CosTriggerTimeAlg())
119 if flags.Digitization.PileUp or flags.Common.isOverlay:
120 kwargs.setdefault("PileUp", True)
121 kwargs.setdefault("useLArFloat", useLArFloat(flags))
122 if useLArFloat(flags):
123 acc.merge(InputOverwriteCfg("LArHitContainer","LArHitEMB","LArHitFloatContainer","LArHitEMB"))
124 acc.merge(InputOverwriteCfg("LArHitContainer","LArHitEMEC","LArHitFloatContainer","LArHitEMEC"))
125 acc.merge(InputOverwriteCfg("LArHitContainer","LArHitHEC","LArHitFloatContainer","LArHitHEC"))
126 acc.merge(InputOverwriteCfg("LArHitContainer","LArHitFCAL","LArHitFloatContainer","LArHitFCAL"))
127 if flags.Common.isOverlay:
128 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
129 acc.merge(SGInputLoaderCfg(flags, [
130 "LArHitFloatContainer#LArHitEMB",
131 "LArHitFloatContainer#LArHitEMEC",
132 "LArHitFloatContainer#LArHitFCAL",
133 "LArHitFloatContainer#LArHitHEC",
134 ]))
135 else:
136 if flags.Common.isOverlay and not flags.Sim.DoFullChain:
137 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
138 acc.merge(SGInputLoaderCfg(flags, [
139 "LArHitContainer#LArHitEMB",
140 "LArHitContainer#LArHitEMEC",
141 "LArHitContainer#LArHitFCAL",
142 "LArHitContainer#LArHitHEC",
143 ]))
144
145 if flags.Common.isOverlay:
146 kwargs.setdefault("OnlyUseContainerName", False)
147 if flags.Input.isMC:
148 kwargs.setdefault("InputDigitContainer", f"{flags.Overlay.BkgPrefix}LArDigitContainer_MC")
149 else:
150 kwargs.setdefault("InputDigitContainer", f"{flags.Overlay.BkgPrefix}LArDigitContainer_data")
151
152 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
153 acc.merge(SGInputLoaderCfg(flags, [f'LArDigitContainer#{kwargs["InputDigitContainer"]}']))
154 else:
155 kwargs.setdefault("OnlyUseContainerName", flags.Digitization.PileUp)
156 LArPileUpTool = CompFactory.LArPileUpTool
157 acc.setPrivateTools(LArPileUpTool(name, **kwargs))
158 return acc
159
160def LArHitEMapToDigitAlgCfg(flags, name="LArHitEMapToDigitAlg", **kwargs):
161 """Return ComponentAccumulator with configured LArHitEMapToDigitAlg"""
162 acc = LArGMCfg(flags)
163
164 #The LArHitEMapToDigit needs: Noise, fSampl, Pedestal,Shape ADC2MeV
165 # AutoCorrNoise, the list of bad FEBs and the cabling
166 acc.merge(LArADC2MeVCondAlgCfg(flags))
167 acc.merge(LArBadFebCfg(flags))
168 acc.merge(LArBadChannelCfg(flags))
169 if flags.Overlay.DataOverlay:
170 kwargs.setdefault("ShapeKey", "LArShape")
171 #kwargs.setdefault("AutoCorrNoiseKey", "LArAutoCorr")
172 if not flags.Digitization.DoCaloNoise:
173 requiredConditons=["fSampl", "Pedestal", "Shape"]
174 else:
175 requiredConditons=["Noise", "fSampl", "Pedestal", "Shape"]
176 acc.merge(LArElecCalibDBCfg(flags,requiredConditons))
177
178 if not flags.Common.isOverlay:
179 acc.merge(LArAutoCorrNoiseCondAlgCfg(flags))
180 #kwargs.setdefault('AutoCorrNoiseKey','LArAutoCorr')
181
182 if "ProblemsToMask" not in kwargs:
183 kwargs["ProblemsToMask"] = ["deadReadout", "deadPhys"]
184 # defaults
185 if flags.Common.isOverlay:
186 # Some noise needs to be added during MC Overlay
187 # No noise should be added during Data Overlay
188 kwargs.setdefault("NoiseOnOff", not flags.Overlay.DataOverlay)
189 else :
190 kwargs.setdefault("NoiseOnOff", flags.Digitization.DoCaloNoise)
191 kwargs.setdefault("DoDigiTruthReconstruction", flags.Digitization.EnableCaloHSTruthRecoInputs)
192 kwargs.setdefault("RandomSeedOffset", flags.Digitization.RandomSeedOffset)
193 if (not flags.Digitization.HighGainFCal) and (not flags.Common.isOverlay):
194 kwargs.setdefault("HighGainThreshFCAL", 0)
195 kwargs.setdefault("GainRangeFCAL",[int(CaloGain.LARMEDIUMGAIN),int(CaloGain.LARLOWGAIN)])
196 if (not flags.Digitization.HighGainEMECIW) and (not flags.Common.isOverlay):
197 kwargs.setdefault("HighGainThreshEMECIW", 0)
198 kwargs.setdefault("GainRangeEMECIW",[int(CaloGain.LARMEDIUMGAIN),int(CaloGain.LARLOWGAIN)])
199 kwargs.setdefault("RndmEvtOverlay", flags.Common.isOverlay)
200 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
201 kwargs.setdefault("DigitContainer", flags.Overlay.BkgPrefix + "LArDigitContainer_MC")
202 else:
203 kwargs.setdefault("DigitContainer", "LArDigitContainer_MC") # FIXME - should not be hard-coded
204 # if doing MC+MC overlay
205 if flags.Common.isOverlay and flags.Input.isMC:
206 kwargs.setdefault("isMcOverlay", True)
207 kwargs.setdefault("Nsamples", flags.LAr.ROD.nSamples)
208 kwargs.setdefault("firstSample", #Need to set a negative value to include preceeding samples
209 -flags.LAr.ROD.nPreceedingSamples if flags.LAr.ROD.nPreceedingSamples!=0 else flags.LAr.ROD.FirstSample)
210 LArHitEMapToDigitAlg = CompFactory.LArHitEMapToDigitAlg
211 acc.addEventAlgo(LArHitEMapToDigitAlg(name, **kwargs))
212 return acc
213
214def LArOutputCfg(flags):
215 """Return ComponentAccumulator with Output for LAr. Not standalone."""
216 acc = ComponentAccumulator()
217 if flags.Output.doWriteRDO:
218 ItemList = []
219 if flags.Digitization.AddCaloDigi:
220 ItemList.append("LArDigitContainer#*")
221 elif flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
222 ItemList.append("LArDigitContainer#" + flags.Overlay.BkgPrefix + "LArDigitContainer_MC")
223 elif flags.Digitization.AddCaloDigiThinned:
224 ItemList.append("LArDigitContainer#LArDigitContainer_MC_Thinned")
225 if flags.Common.ProductionStep != ProductionStep.PileUpPresampling:
226 ItemList.append("LArRawChannelContainer#LArRawChannels")
227 if flags.Overlay.DataOverlay:
228 ItemList.append("LArFebHeaderContainer#LArFebHeader")
229 if flags.Digitization.EnableTruth:
230 ItemList.append("CaloCalibrationHitContainer#*")
231 acc.merge(TruthDigitizationOutputCfg(flags))
232 acc.merge(OutputStreamCfg(flags, "RDO", ItemList))
233 return acc
234
235
236def LArDigitizationBasicCfg(flags, **kwargs):
237 """Return ComponentAccumulator with LAr digitization configuration"""
238 acc = ComponentAccumulator()
239 if "PileUpTools" not in kwargs:
240 PileUpTools = acc.popToolsAndMerge(LArPileUpToolCfg(flags))
241 kwargs["PileUpTools"] = PileUpTools
242 acc.merge(PileUpToolsCfg(flags, **kwargs))
243
244 acc.merge(LArHitEMapToDigitAlgCfg(flags))
245 if flags.LAr.ROD.NNRawChannelBuilding:
246 acc.merge(LArNNRawChannelBuilderCfg(flags))
247 else:
248 acc.merge(LArRawChannelBuilderAlgCfg(flags))
249
250 if flags.Digitization.AddCaloDigiThinned:
251 acc.merge(LArDigitThinnerCfg(flags))
252 return acc
253
254
255def LArDigitizationCfg(flags, **kwargs):
256 """Return ComponentAccumulator with LAr digitization and Output"""
257 acc = LArDigitizationBasicCfg(flags, **kwargs)
258 acc.merge(LArOutputCfg(flags))
259 return acc
260
261
262def LArOverlayDigitizationBasicCfg(flags, name="digitmaker1", **kwargs):
263 """Return ComponentAccumulator with LAr Overlay digitization configuration"""
264 acc = ComponentAccumulator()
265
266 if "LArPileUpTool" not in kwargs:
267 kwargs["LArPileUpTool"] = acc.popToolsAndMerge(LArPileUpToolCfg(flags))
268
269 if flags.Concurrency.NumThreads > 0:
270 kwargs.setdefault('Cardinality', flags.Concurrency.NumThreads)
271
272 LArHitEMapMaker = CompFactory.LArHitEMapMaker
273 acc.addEventAlgo(LArHitEMapMaker(name, **kwargs))
274 acc.merge(LArHitEMapToDigitAlgCfg(flags))
275
276 acc.merge(LArRawChannelBuilderAlgCfg(flags))
277 if flags.Digitization.AddCaloDigiThinned:
278 acc.merge(LArDigitThinnerCfg(flags))
279 return acc
280
281
282def LArOverlayCfg(flags, **kwargs):
283 """Return ComponentAccumulator with LAr overlay and Output"""
284 acc = LArOverlayDigitizationBasicCfg(flags, **kwargs)
285 acc.merge(LArOutputCfg(flags))
286 return acc
287
288
289def LArAutoCorrNoiseCondSCAlgCfg(flags, **kwargs):
290 acc = ComponentAccumulator()
291
292 requiredConditions=["AutoCorrSC"]
293 from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBMCSCCfg
294 acc.merge(LArElecCalibDBMCSCCfg(flags,requiredConditions))
295 kwargs.setdefault("LArAutoCorrObjKey", "LArAutoCorrSC") # Provided by LArFlatConditionsAlg<LArAutoCorrSC>
296
297 from LArCabling.LArCablingConfig import LArOnOffIdMappingSCCfg
298 acc.merge(LArOnOffIdMappingSCCfg(flags))
299 kwargs.setdefault("LArOnOffIdMappingObjKey", 'LArOnOffIdMapSC')
300 kwargs.setdefault("nSampl", flags.LAr.ROD.nSamples + 2) # See ATLASSIM-5483
301 kwargs.setdefault("isSuperCell", True)
302 kwargs.setdefault("LArAutoCorrNoiseObjKey", "LArAutoCorrNoiseSC") # output
303 acc.addCondAlgo(CompFactory.LArAutoCorrNoiseCondAlg(name="LArAutoCorrNoiseSCCondAlg", **kwargs))
304 return acc
305
306
307def LArSCL1MakerCfg(flags, **kwargs):
308 """Return ComponentAccumulator for LArSCL1Maker"""
309 acc = ComponentAccumulator()
310 if flags.Common.isOverlay:
311 acc.merge(LArOverlayDigitizationBasicCfg(flags))
312 else:
313 acc.merge(LArDigitizationBasicCfg(flags))
314
315 kwargs.setdefault("LArHitEMapKey", "StoreGateSvc+LArHitEMap") # Provided by LArPileUpTool
316
317 from LArRecUtils.LArADC2MeVSCCondAlgConfig import LArADC2MeVSCCondAlgCfg
318 acc.merge(LArADC2MeVSCCondAlgCfg(flags))
319 kwargs.setdefault("LArADC2MeVKey", "ConditionStore+LArADC2MeVSC") # Provided by LArADC2MeVSCCondAlg
320
321 from LArCabling.LArCablingConfig import LArOnOffIdMappingSCCfg
322 acc.merge(LArOnOffIdMappingSCCfg(flags))
323 # '<prefix>/LAR/IdentifierOfl/OnOffIdMap_SC</prefix> <tag>LARIdentifierOflOnOffIdMap_SC-000</tag>' Do we need to add this override in the IOVDbSvc or just add the conditions properly in the Run3 conditions global tag???
324 kwargs.setdefault("ScCablingKey", "ConditionStore+LArOnOffIdMapSC") # Provided by LArOnOffMappingAlgSC
325
326 requiredConditions=["fSamplSC","ShapeSC","PedestalSC","NoiseSC"]
327 from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBMCSCCfg
328 acc.merge(LArElecCalibDBMCSCCfg(flags,requiredConditions))
329 kwargs.setdefault("FracSKey", "ConditionStore+LArfSamplSC") # Provided by LArFlatConditionsAlg<LArfSamplSC>
330 kwargs.setdefault("ShapeKey", "ConditionStore+LArShapeSC") # Provided by LArFlatConditionsAlg<LArShapeSC>
331 kwargs.setdefault("PedestalKey", "ConditionStore+LArPedestalSC") # Provided by LArFlatConditionsAlg<LArPedestalSC>
332 kwargs.setdefault("LArNoiseKey", "ConditionStore+LArNoiseSC") # Provided by LArFlatConditionsAlg<LArNoiseSC>
333
334 acc.merge(LArAutoCorrNoiseCondSCAlgCfg(flags))
335 kwargs.setdefault("LArAutoCorrKey", "ConditionStore+LArAutoCorrNoiseSC") # Provided by LArAutoCorrNoiseCondAlg/LArAutoCorrNoiseSCCondAlg
336 kwargs.setdefault("NSamples", flags.LAr.ROD.nSamples + 2) # For consistency with LArAutoCorrNoiseSC - see ATLASSIM-5483
337 from RngComps.RngCompsConfig import AthRNGSvcCfg
338 kwargs.setdefault("RndmSvc",
339 acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
340 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
341 kwargs.setdefault("SCL1ContainerName", f"{flags.Overlay.BkgPrefix}LArDigitSCL2") # Output - why L2??
342 if flags.Common.isOverlay:
343 kwargs.setdefault("BkgDigitKey", f"{flags.Overlay.BkgPrefix}LArDigitSCL2")
344
345 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
346 acc.merge(SGInputLoaderCfg(flags, [f'LArDigitContainer#{kwargs["BkgDigitKey"]}']))
347 kwargs.setdefault("SCL1ContainerName","LArDigitSCL2") # Output - why L2??
348 acc.addEventAlgo(CompFactory.LArSCL1Maker(**kwargs))
349 return acc
350
351
352def LArTriggerDigitizationBasicCfg(flags, **kwargs):
353 """Return ComponentAccumulator for LAr Trigger Tower"""
354 acc = LArDigitizationBasicCfg(flags)
355 acc.merge(CaloTriggerTowerCfg(flags))
356
357 kwargs.setdefault("NoiseOnOff", flags.Digitization.DoCaloNoise)
358 kwargs.setdefault("RandomSeedOffset", flags.Digitization.RandomSeedOffset)
359 kwargs.setdefault("PileUp", flags.Digitization.PileUp)
360 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
361 kwargs.setdefault("EmTTL1ContainerName", flags.Overlay.BkgPrefix + "LArTTL1EM")
362 kwargs.setdefault("HadTTL1ContainerName", flags.Overlay.BkgPrefix + "LArTTL1HAD")
363 acc.addEventAlgo(CompFactory.LArTTL1Maker(**kwargs))
364 if flags.GeoModel.Run >= LHCPeriod.Run3:
365 acc.merge(LArSCL1MakerCfg(flags))
366 if flags.Common.ProductionStep is not ProductionStep.PileUpPresampling:
367 from LArROD.LArSuperCellBuilderConfig import LArSuperCellBuilderAlgCfg, LArSuperCellBCIDAlgCfg
368 acc.merge(LArSuperCellBuilderAlgCfg(flags))
369 acc.merge(LArSuperCellBCIDAlgCfg(flags))
370 return acc
371
372
373def LArTriggerDigitizationCfg(flags, **kwargs):
374 """Return ComponentAccumulator for LAr Trigger Tower and Output"""
375 acc = LArTriggerDigitizationBasicCfg(flags)
376 acc.merge(LArOutputCfg(flags))
377 acc.merge(OutputStreamCfg(flags, "RDO", ["LArTTL1Container#*"]))
378 if flags.GeoModel.Run >= LHCPeriod.Run3:
379 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
380 acc.merge(OutputStreamCfg(flags, "RDO", ["LArDigitContainer#" + flags.Overlay.BkgPrefix + "LArDigitSCL2"]))
381 else:
382 acc.merge(OutputStreamCfg(flags, "RDO", ["CaloCellContainer#SCell"]))
383 return acc
384
385
386def LArOverlayTriggerDigitizationBasicCfg(flags, **kwargs):
387 """Return ComponentAccumulator with LAr Overlay Trigger Tower"""
388 acc = LArOverlayDigitizationBasicCfg(flags)
389 acc.merge(CaloTriggerTowerCfg(flags))
390
391 kwargs.setdefault("NoiseOnOff", flags.Digitization.DoCaloNoise)
392 kwargs.setdefault("RandomSeedOffset", flags.Digitization.RandomSeedOffset)
393 kwargs.setdefault("PileUp", True)
394 kwargs.setdefault("EmTTL1ContainerName", flags.Overlay.SigPrefix + "LArTTL1EM")
395 kwargs.setdefault("HadTTL1ContainerName", flags.Overlay.SigPrefix + "LArTTL1HAD")
396
397 if flags.Concurrency.NumThreads > 0:
398 kwargs.setdefault('Cardinality', flags.Concurrency.NumThreads)
399
400 acc.addEventAlgo(CompFactory.LArTTL1Maker(**kwargs))
401 return acc
402
403
404def LArSuperCellOverlayCfg(flags, **kwargs):
405 acc = LArSCL1MakerCfg(flags)
406 from LArROD.LArSuperCellBuilderConfig import LArSuperCellBuilderAlgCfg, LArSuperCellBCIDAlgCfg
407 acc.merge(LArSuperCellBuilderAlgCfg(flags))
408 acc.merge(LArSuperCellBCIDAlgCfg(flags))
409 acc.merge(OutputStreamCfg(flags, "RDO", ["CaloCellContainer#SCell"]))
410 return acc
LArRangeEMCfg(flags, name="LArRangeEM", **kwargs)