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