CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions
ElectronClassification Class Reference

#include <ElectronClassification.h>

Public Member Functions

void classify (reco::GsfElectron &)
 
 ElectronClassification ()
 
void refineWithPflow (reco::GsfElectron &)
 

Detailed Description

Definition at line 14 of file ElectronClassification.h.

Constructor & Destructor Documentation

ElectronClassification::ElectronClassification ( )
inline

Definition at line 18 of file ElectronClassification.h.

18 {}

Member Function Documentation

void ElectronClassification::classify ( reco::GsfElectron electron)

Definition at line 16 of file ElectronClassification.cc.

References reco::GsfElectron::BIGBREM, reco::LeafCandidate::eta(), reco::GsfElectron::GAP, reco::GsfElectron::GOLDEN, reco::GsfElectron::isEB(), reco::GsfElectron::isEBEEGap(), reco::GsfElectron::isEBEtaGap(), reco::GsfElectron::isEE(), reco::GsfElectron::isEERingGap(), reco::GsfElectron::numberOfBrems(), hitfit::return, reco::GsfElectron::setClassification(), reco::GsfElectron::SHOWERING, reco::GsfElectron::trackFbrem(), and reco::GsfElectron::UNKNOWN.

Referenced by GsfElectronAlgo::createElectron().

17  {
18  if ((!electron.isEB())&&(!electron.isEE()))
19  {
20  edm::LogWarning("")
21  << "ElectronClassification::init(): Undefined electron, eta = "
22  << electron.eta() << "!!!!" ;
24  return ;
25  }
26 
27  if ( electron.isEBEEGap() || electron.isEBEtaGap() || electron.isEERingGap() )
28  {
29  electron.setClassification(GsfElectron::GAP) ;
30  return ;
31  }
32 
33  //float pin = electron.trackMomentumAtVtx().R() ;
34  float fbrem = electron.trackFbrem() ;
35  int nbrem = electron.numberOfBrems() ;
36 
37  if (nbrem == 0 && fbrem < 0.5) // part (pin - scEnergy)/pin < 0.1 removed - M.D.
38  { electron.setClassification(GsfElectron::GOLDEN) ; }
39  else if (nbrem == 0 && fbrem >= 0.5) // part (pin - scEnergy)/pin < 0.1 removed - M.D.
40  { electron.setClassification(GsfElectron::BIGBREM) ; }
41  else
42  { electron.setClassification(GsfElectron::SHOWERING) ; }
43 
44  }
bool isEBEtaGap() const
Definition: GsfElectron.h:335
bool isEBEEGap() const
Definition: GsfElectron.h:333
0: Unidentified isolated particle
Definition: ParticleCode.h:19
bool isEERingGap() const
Definition: GsfElectron.h:339
virtual double eta() const
momentum pseudorapidity
bool isEE() const
Definition: GsfElectron.h:331
bool isEB() const
Definition: GsfElectron.h:330
float trackFbrem() const
Definition: GsfElectron.h:631
int numberOfBrems() const
Definition: GsfElectron.h:638
void setClassification(Classification myclass)
Definition: GsfElectron.h:646
void ElectronClassification::refineWithPflow ( reco::GsfElectron electron)

Definition at line 46 of file ElectronClassification.cc.

References reco::GsfElectron::BADTRACK, reco::GsfElectron::isEB(), reco::GsfElectron::isEBEEGap(), reco::GsfElectron::isEBEtaGap(), reco::GsfElectron::isEE(), reco::GsfElectron::isEERingGap(), reco::GsfElectron::pfSuperClusterFbrem(), hitfit::return, reco::GsfElectron::setClassification(), and reco::GsfElectron::trackFbrem().

Referenced by GsfElectronAlgo::addPflowInfo().

47  {
48  if ((!electron.isEB())&&(!electron.isEE()))
49  { return ; }
50 
51  if ( electron.isEBEEGap() || electron.isEBEtaGap() || electron.isEERingGap() )
52  { return ; }
53 
54  if ((electron.pfSuperClusterFbrem()-electron.trackFbrem())>=0.15)
55  { electron.setClassification(GsfElectron::BADTRACK) ; }
56  }
bool isEBEtaGap() const
Definition: GsfElectron.h:335
bool isEBEEGap() const
Definition: GsfElectron.h:333
bool isEERingGap() const
Definition: GsfElectron.h:339
bool isEE() const
Definition: GsfElectron.h:331
bool isEB() const
Definition: GsfElectron.h:330
float trackFbrem() const
Definition: GsfElectron.h:631
void setClassification(Classification myclass)
Definition: GsfElectron.h:646
float pfSuperClusterFbrem() const
Definition: GsfElectron.h:633