CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_9_patch3/src/RecoEgamma/EgammaElectronAlgos/src/ElectronClassification.cc

Go to the documentation of this file.
00001 #include "RecoEgamma/EgammaElectronAlgos/interface/ElectronClassification.h"
00002 
00003 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
00004 
00005 
00006 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00007 
00008 //===================================================================
00009 // Author: Federico Ferri - INFN Milano, Bicocca university
00010 // 12/2005
00011 // See GsfElectron::Classification
00012 //===================================================================
00013 
00014 using namespace reco;
00015 
00016 void ElectronClassification::classify( GsfElectron & electron )
00017  {
00018   if ((!electron.isEB())&&(!electron.isEE()))
00019    {
00020     edm::LogWarning("")
00021       << "ElectronClassification::init(): Undefined electron, eta = "
00022       << electron.eta() << "!!!!" ;
00023     electron.setClassification(GsfElectron::UNKNOWN) ;
00024     return ;
00025    }
00026 
00027   if ( electron.isEBEEGap() || electron.isEBEtaGap() || electron.isEERingGap() )
00028    {
00029     electron.setClassification(GsfElectron::GAP) ;
00030     return ;
00031    }
00032 
00033   //float pin  = electron.trackMomentumAtVtx().R() ;
00034   float fbrem = electron.trackFbrem() ;
00035   int nbrem = electron.numberOfBrems() ;
00036 
00037   if (nbrem == 0 && fbrem < 0.5) // part (pin - scEnergy)/pin < 0.1 removed - M.D.
00038    { electron.setClassification(GsfElectron::GOLDEN) ; }
00039   else if (nbrem == 0 && fbrem >= 0.5) // part (pin - scEnergy)/pin < 0.1 removed - M.D.
00040    { electron.setClassification(GsfElectron::BIGBREM) ; }
00041   else
00042    { electron.setClassification(GsfElectron::SHOWERING) ; }
00043 
00044  }
00045 
00046 void ElectronClassification::refineWithPflow( GsfElectron & electron )
00047  {
00048   if ((!electron.isEB())&&(!electron.isEE()))
00049    { return ; }
00050 
00051   if ( electron.isEBEEGap() || electron.isEBEtaGap() || electron.isEERingGap() )
00052    { return ; }
00053 
00054   if ((electron.pfSuperClusterFbrem()-electron.trackFbrem())>=0.15)
00055    { electron.setClassification(GsfElectron::BADTRACK) ; }
00056  }
00057