92def BkgElectronClassificationCfg(flags, name, **kwargs):
93 """Configure the background electron classification tool"""
94 acc = ComponentAccumulator()
95 from MCTruthClassifier.MCTruthClassifierConfig import DFCommonMCTruthClassifierCfg
96 kwargs.setdefault("MCTruthClassifierTool", acc.popToolsAndMerge(
97 DFCommonMCTruthClassifierCfg(flags)))
98 acc.setPrivateTools(CompFactory.DerivationFramework.BkgElectronClassification(name, **kwargs))
102# Standard + LRT electron collection merger
111def PhotonVertexSelectionWrapperCfg(
112 flags, name="PhotonVertexSelectionWrapper", **kwargs):
113 acc = ComponentAccumulator()
114 prefix = kwargs.pop("DecorationPrefix", "")
115 if prefix: prefix += "_"
116 kwargs.setdefault("pt", prefix + "pt")
117 kwargs.setdefault("eta", prefix + "eta")
118 kwargs.setdefault("phi", prefix + "phi")
119 kwargs.setdefault("sumPt", prefix + "sumPt")
120 kwargs.setdefault("sumPt2", prefix + "sumPt2")
122 if "PhotonPointingTool" not in kwargs:
123 from PhotonVertexSelection.PhotonVertexSelectionConfig import (
124 PhotonPointingToolCfg)
125 kwargs.setdefault("PhotonPointingTool", acc.popToolsAndMerge(
126 PhotonPointingToolCfg(flags)))
129 CompFactory.DerivationFramework.PhotonVertexSelectionWrapper(
134def PhotonVertexSelectionWrapperKernelCfg(
135 flags, name="PhotonVertexSelectionWrapperKernel", **kwargs):
136 acc = ComponentAccumulator()
138 augmentationTools = [
139 acc.addPublicTool(acc.popToolsAndMerge(PhotonVertexSelectionWrapperCfg(flags)))
141 kwargs.setdefault("AugmentationTools", augmentationTools)
144 CompFactory.DerivationFramework.DerivationKernel(name, **kwargs))
148def EGammaCookieCutClusterToolCfg(flags, name = 'EGCookieCutTool', **kwargs):
149 acc = ComponentAccumulator()
150 # needed for reading cells, do not rely on other config to do that
151 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
152 acc.merge(LArGMCfg(flags))
153 from TileGeoModel.TileGMConfig import TileGMCfg
154 acc.merge(TileGMCfg(flags))
156 clusterKey = kwargs.setdefault("ClusterContainerName", "ForwardElectronCookieCutClusters")
157 kwargs.setdefault("ClusterContainerLinksName", clusterKey + "_links")
158 #These two properties need to be in sync
159 if kwargs["ClusterContainerLinksName"] != (clusterKey + "_links"):
160 raise AttributeError("ClusterContainerLinksName ({}) is not syncrhonised with ClusterContainerName ({})".format(kwargs["ClusterContainerLinksName"], clusterKey))
161 kwargs.setdefault('StoreCookedMoments', False)
162 kwargs.setdefault('StoreInputMoments', False)
163 kwargs.setdefault("SGKey_electrons", flags.Egamma.Keys.Output.ForwardElectrons)
165 "CENTER_X", "CENTER_Y", "CENTER_Z",
166 "SECOND_LAMBDA", "LATERAL", "LONGITUDINAL", "ENG_FRAC_MAX",
167 "SECOND_R", "CENTER_LAMBDA", "SECOND_ENG_DENS", "SIGNIFICANCE" ]
170 ROOT.xAOD.CaloCluster.CENTER_X, ROOT.xAOD.CaloCluster.CENTER_Y, ROOT.xAOD.CaloCluster.CENTER_Z,
171 ROOT.xAOD.CaloCluster.SECOND_LAMBDA, ROOT.xAOD.CaloCluster.LATERAL, ROOT.xAOD.CaloCluster.LONGITUDINAL, ROOT.xAOD.CaloCluster.ENG_FRAC_MAX,
172 ROOT.xAOD.CaloCluster.SECOND_R, ROOT.xAOD.CaloCluster.CENTER_LAMBDA, ROOT.xAOD.CaloCluster.SECOND_ENG_DENS, ROOT.xAOD.CaloCluster.SIGNIFICANCE ]
173 kwargs.setdefault("MomentNames", momentNames)
174 kwargs.setdefault("Moments", moments)
175 cookedMoments = [ "cookiecut" + moment for moment in momentNames] if kwargs['StoreCookedMoments'] else []
176 originalMoments = [ "original" + moment for moment in momentNames] if kwargs['StoreInputMoments'] else []
177 electronDecorations = [i for sublist in zip(cookedMoments, originalMoments) for i in sublist]
178 electronDecorations += ["cookiecutClusterLink"]
179 kwargs.setdefault("SGKey_electrons_decorations", electronDecorations)
181 from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg
182 acc.merge(CaloNoiseCondAlgCfg(flags,"totalNoise"))
183 from CaloRec.CaloTopoClusterConfig import getTopoMoments
184 momentsMaker = acc.popToolsAndMerge(getTopoMoments(flags))
185 kwargs.setdefault("ClusterMomentMaker",[momentsMaker])
188 CompFactory.DerivationFramework.EGammaCookieCutClusterTool(
192def EGammaEnergyCalibrationWrapperCfg(
194 name="TransformerEnergyCalibration",
196 acc = ComponentAccumulator()
198 from egammaTransformerCalib.egammaTransformerCalibConfig import egammaTransformerSvcCfg
200 kwargs.setdefault("ElectronContainerName", "Electrons")
201 kwargs.setdefault("PhotonContainerName", "Photons")
202 kwargs.setdefault("decoratorTransformerEnergy", "TransformerEnergy")
203 kwargs.setdefault("decoratorTransformerEnergyPhoton", "TransformerEnergy")
204 kwargs.setdefault("TransformerCalibSvc", acc.getPrimaryAndMerge(egammaTransformerSvcCfg(flags)))
206 acc.setPrivateTools(CompFactory.DerivationFramework.EGammaEnergyCalibrationWrapper(name, **kwargs))