124def egammaAODFixesCfg(flags, correctCluster = True):
125
126 msg=logging.getLogger("egammaAODFixes")
127
128 doFix, name = runAODFix(flags, correctCluster)
129 msg.info('Decision for egamma AOD fix = %s',doFix)
130 if not doFix:
131 return None
132 else:
133 if name!='':
134 msg.info('Will apply fixes = %s',name)
135 else:
136 msg.info('Range is ok but there are no fix to apply')
137 return None
138
139
140
141
142 getfunc().__name__ = name
143
144 result=ComponentAccumulator()
145
146
147 hasElectrons = "Electrons" in flags.Input.Collections
148 hasPhotons = "Photons" in flags.Input.Collections
149 if not hasElectrons and not hasPhotons:
150 return None
151
152
153
154
155
156 from SGComps.AddressRemappingConfig import InputRenameCfg
157 if hasElectrons:
158 result.merge(InputRenameCfg("xAOD::ElectronContainer", "Electrons", "old_Electrons"))
159 result.merge(InputRenameCfg("xAOD::ElectronAuxContainer", "ElectronsAux.", "old_ElectronsAux."))
160 if hasPhotons:
161 result.merge(InputRenameCfg("xAOD::PhotonContainer", "Photons", "old_Photons"))
162 result.merge(InputRenameCfg("xAOD::PhotonAuxContainer", "PhotonsAux.", "old_PhotonsAux."))
163
164 kwargs = dict()
165 kwargs['CorrectCluster'] = correctCluster
166 kwargs['FixAmbiguityLinks'] = (name.find('egammaAmbiguityLinksFix') >= 0)
167 if correctCluster:
168
169
170 from LArBadChannelTool.LArBadChannelConfig import LArBadChannelCfg
171 result.merge(LArBadChannelCfg(flags))
172
173
174 from CaloBadChannelTool.CaloBadChanToolConfig import CaloBadChanToolCfg
175 result.popToolsAndMerge( CaloBadChanToolCfg(flags) )
176 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
177 result.merge(LArGMCfg(flags))
178
179 result.merge(InputRenameCfg("xAOD::CaloClusterContainer", "egammaClusters", "old_egammaClusters"))
180 result.merge(InputRenameCfg("xAOD::CaloClusterAuxContainer", "egammaClustersAux.", "old_egammaClustersAux."))
181 result.merge(InputRenameCfg("CaloClusterCellLinkContainer", "egammaClusters_links", "old_egammaClusters_links"))
182 kwargs['CaloDetDescrManager'] = 'CaloDetDescrManager'
183 from egammaTools.egammaSwToolConfig import egammaSwToolCfg
184 kwargs['ClusterCorrectionTool'] = result.popToolsAndMerge(egammaSwToolCfg(flags))
185 from egammaMVACalib.egammaMVACalibConfig import egammaMVASvcCfg
186 kwargs['MVACalibSvc'] = result.getPrimaryAndMerge(egammaMVASvcCfg(flags))
187 kwargs['EGammaClustersOutputName'] = flags.Egamma.Keys.Output.CaloClusters
188 kwargs['EGammaClustersInputName'] = f'old_{flags.Egamma.Keys.Output.CaloClusters}'
189
190 kwargs['IsoLeakCorrectionTool'] = CompFactory.CP.IsolationCorrectionTool(
191 LogLogFitForLeakage = True)
192
193
194 result.addEventAlgo(CompFactory.egammaAODFixes(**kwargs))
195
196 return result
197
198
199