File indexing completed on 2024-04-06 12:24:47
0001 #include "RecoEgamma/EgammaElectronAlgos/interface/ElectronClassification.h"
0002 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
0003 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0004
0005
0006
0007
0008
0009
0010
0011 using namespace reco;
0012
0013 GsfElectron::Classification egamma::classifyElectron(GsfElectron const& electron) {
0014 if (!electron.isEB() && !electron.isEE()) {
0015 edm::LogWarning("") << "ElectronClassification::init(): Undefined electron, eta = " << electron.eta() << "!!!!";
0016 return GsfElectron::UNKNOWN;
0017 }
0018
0019 if (electron.isEBEEGap() || electron.isEBEtaGap() || electron.isEERingGap()) {
0020 return GsfElectron::GAP;
0021 }
0022
0023 float fbrem = electron.trackFbrem();
0024 int nbrem = electron.numberOfBrems();
0025
0026 if (electron.superClusterFbrem() - fbrem >= 0.15) {
0027 return GsfElectron::BADTRACK;
0028 }
0029
0030 if (nbrem == 0 && fbrem < 0.5) {
0031 return GsfElectron::GOLDEN;
0032 }
0033 if (nbrem == 0 && fbrem >= 0.5) {
0034 return GsfElectron::BIGBREM;
0035 }
0036 return GsfElectron::SHOWERING;
0037 }