83def LArPileUpToolCfg(flags, name="LArPileUpTool", **kwargs):
84 """Return ComponentAccumulator with configured LArPileUpTool"""
85 acc = LArGMCfg(flags)
86
87
88 acc.merge(LArXTalkWeightCondAlgCfg(flags))
89
90
91 if flags.Common.isOverlay:
92
93
94 kwargs.setdefault("NoiseOnOff", not flags.Overlay.DataOverlay)
95 kwargs.setdefault("NoiseOnOff", flags.Digitization.DoCaloNoise)
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
112 if flags.Common.isOverlay and flags.Input.isMC:
113 kwargs.setdefault("isMcOverlay", True)
114
115
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.Overlay.ByteStream:
148 from LArByteStream.LArRawDataReadingConfig import LArRawDataReadingCfg
149 acc.merge(LArRawDataReadingCfg(flags))
150
151 kwargs.setdefault("InputDigitContainer", f"{flags.Overlay.BkgPrefix}FREE")
152 else:
153 if flags.Input.isMC:
154 kwargs.setdefault("InputDigitContainer", f"{flags.Overlay.BkgPrefix}LArDigitContainer_MC")
155 else:
156 kwargs.setdefault("InputDigitContainer", f"{flags.Overlay.BkgPrefix}LArDigitContainer_data")
157
158 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
159 acc.merge(SGInputLoaderCfg(flags, [f'LArDigitContainer#{kwargs["InputDigitContainer"]}']))
160 else:
161 kwargs.setdefault("OnlyUseContainerName", flags.Digitization.PileUp)
162 LArPileUpTool = CompFactory.LArPileUpTool
164 return acc
165