89def LArPileUpToolCfg(flags, name="LArPileUpTool", **kwargs):
90 """Return ComponentAccumulator with configured LArPileUpTool"""
91 acc = LArGMCfg(flags)
92
93
94 acc.merge(LArXTalkWeightCondAlgCfg(flags))
95
96
97 if flags.Common.isOverlay:
98
99
100 kwargs.setdefault("NoiseOnOff", not flags.Overlay.DataOverlay)
101 kwargs.setdefault("NoiseOnOff", flags.Digitization.DoCaloNoise)
102 kwargs.setdefault("DoDigiTruthReconstruction", flags.Digitization.EnableCaloHSTruthRecoInputs)
103 kwargs.setdefault("RandomSeedOffset", flags.Digitization.RandomSeedOffset)
104 if flags.Digitization.PileUp:
105 intervals = []
106 if flags.Digitization.DoXingByXingPileUp:
107 kwargs.setdefault("FirstXing", -751)
108 kwargs.setdefault("LastXing", 101)
109 else:
110 intervals += [acc.popToolsAndMerge(LArRangeEMCfg(flags))]
111 intervals += [acc.popToolsAndMerge(LArRangeHECCfg(flags))]
112 intervals += [acc.popToolsAndMerge(LArRangeFCALCfg(flags))]
113 kwargs.setdefault("PileUpMergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)))
114 else:
115 kwargs.setdefault("PileUpMergeSvc", '')
116 kwargs.setdefault("RndmEvtOverlay", flags.Common.isOverlay)
117
118 if flags.Common.isOverlay and flags.Input.isMC:
119 kwargs.setdefault("isMcOverlay", True)
120
121
122 if flags.Beam.Type is BeamType.Cosmics:
123 kwargs.setdefault("UseTriggerTime", True)
124 acc.addEventAlgo(CompFactory.CosTriggerTimeAlg())
125 if flags.Digitization.PileUp or flags.Common.isOverlay:
126 kwargs.setdefault("PileUp", True)
127 kwargs.setdefault("useLArFloat", useLArFloat(flags))
128 if useLArFloat(flags):
129 acc.merge(InputOverwriteCfg("LArHitContainer","LArHitEMB","LArHitFloatContainer","LArHitEMB"))
130 acc.merge(InputOverwriteCfg("LArHitContainer","LArHitEMEC","LArHitFloatContainer","LArHitEMEC"))
131 acc.merge(InputOverwriteCfg("LArHitContainer","LArHitHEC","LArHitFloatContainer","LArHitHEC"))
132 acc.merge(InputOverwriteCfg("LArHitContainer","LArHitFCAL","LArHitFloatContainer","LArHitFCAL"))
133 if flags.Common.isOverlay:
134 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
135 acc.merge(SGInputLoaderCfg(flags, [
136 "LArHitFloatContainer#LArHitEMB",
137 "LArHitFloatContainer#LArHitEMEC",
138 "LArHitFloatContainer#LArHitFCAL",
139 "LArHitFloatContainer#LArHitHEC",
140 ]))
141 else:
142 if flags.Common.isOverlay and not flags.Sim.DoFullChain:
143 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
144 acc.merge(SGInputLoaderCfg(flags, [
145 "LArHitContainer#LArHitEMB",
146 "LArHitContainer#LArHitEMEC",
147 "LArHitContainer#LArHitFCAL",
148 "LArHitContainer#LArHitHEC",
149 ]))
150
151 if flags.Common.isOverlay:
152 kwargs.setdefault("OnlyUseContainerName", False)
153 if flags.Overlay.IgnoreBkgInputs:
154 kwargs.setdefault("InputDigitContainer", "")
155 elif flags.Input.isMC:
156 kwargs.setdefault("InputDigitContainer", f"{flags.Overlay.BkgPrefix}LArDigitContainer_MC")
157 else:
158 kwargs.setdefault("InputDigitContainer", f"{flags.Overlay.BkgPrefix}LArDigitContainer_data")
159
160 if kwargs["InputDigitContainer"]:
161 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
162 acc.merge(SGInputLoaderCfg(flags, [f'LArDigitContainer#{kwargs["InputDigitContainer"]}']))
163 else:
164 kwargs.setdefault("OnlyUseContainerName", flags.Digitization.PileUp)
165 LArPileUpTool = CompFactory.LArPileUpTool
167 return acc
168