158def EGammaCookieCutClusterToolCfg(flags, name = 'EGCookieCutTool', **kwargs):
159 acc = ComponentAccumulator()
160
161 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
162 acc.merge(LArGMCfg(flags))
163 from TileGeoModel.TileGMConfig import TileGMCfg
164 acc.merge(TileGMCfg(flags))
165
166 clusterKey = kwargs.setdefault("ClusterContainerName", "ForwardElectronCookieCutClusters")
167 kwargs.setdefault("ClusterContainerLinksName", clusterKey + "_links")
168
169 if kwargs["ClusterContainerLinksName"] != (clusterKey + "_links"):
170 raise AttributeError("ClusterContainerLinksName ({}) is not syncrhonised with ClusterContainerName ({})".format(kwargs["ClusterContainerLinksName"], clusterKey))
171 kwargs.setdefault('StoreCookedMoments', False)
172 kwargs.setdefault('StoreInputMoments', False)
173 kwargs.setdefault("SGKey_electrons", flags.Egamma.Keys.Output.ForwardElectrons)
174 momentNames = [
175 "CENTER_X", "CENTER_Y", "CENTER_Z",
176 "SECOND_LAMBDA", "LATERAL", "LONGITUDINAL", "ENG_FRAC_MAX",
177 "SECOND_R", "CENTER_LAMBDA", "SECOND_ENG_DENS", "SIGNIFICANCE" ]
178 import ROOT
179 moments = [
180 ROOT.xAOD.CaloCluster.CENTER_X, ROOT.xAOD.CaloCluster.CENTER_Y, ROOT.xAOD.CaloCluster.CENTER_Z,
181 ROOT.xAOD.CaloCluster.SECOND_LAMBDA, ROOT.xAOD.CaloCluster.LATERAL, ROOT.xAOD.CaloCluster.LONGITUDINAL, ROOT.xAOD.CaloCluster.ENG_FRAC_MAX,
182 ROOT.xAOD.CaloCluster.SECOND_R, ROOT.xAOD.CaloCluster.CENTER_LAMBDA, ROOT.xAOD.CaloCluster.SECOND_ENG_DENS, ROOT.xAOD.CaloCluster.SIGNIFICANCE ]
183 kwargs.setdefault("MomentNames", momentNames)
184 kwargs.setdefault("Moments", moments)
185 cookedMoments = [ "cookiecut" + moment for moment in momentNames] if kwargs['StoreCookedMoments'] else []
186 originalMoments = [ "original" + moment for moment in momentNames] if kwargs['StoreInputMoments'] else []
187 electronDecorations = [i for sublist in zip(cookedMoments, originalMoments) for i in sublist]
188 electronDecorations += ["cookiecutClusterLink"]
189 kwargs.setdefault("SGKey_electrons_decorations", electronDecorations)
190
191 from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg
192 acc.merge(CaloNoiseCondAlgCfg(flags,"totalNoise"))
193 from CaloRec.CaloTopoClusterConfig import getTopoMoments
194 momentsMaker = acc.popToolsAndMerge(getTopoMoments(flags))
195 kwargs.setdefault("ClusterMomentMaker",[momentsMaker])
196
197 acc.setPrivateTools(
198 CompFactory.DerivationFramework.EGammaCookieCutClusterTool(
199 name, **kwargs))
200 return acc
201