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(), mathSSE::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:355
bool isEBEEGap() const
Definition: GsfElectron.h:353
0: Unidentified isolated particle
Definition: ParticleCode.h:19
bool isEERingGap() const
Definition: GsfElectron.h:359
virtual double eta() const
momentum pseudorapidity
bool isEE() const
Definition: GsfElectron.h:351
bool isEB() const
Definition: GsfElectron.h:350
return((rh^lh)&mask)
float trackFbrem() const
Definition: GsfElectron.h:691
int numberOfBrems() const
Definition: GsfElectron.h:697
void setClassification(Classification myclass)
Definition: GsfElectron.h:704
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(), mathSSE::return(), reco::GsfElectron::setClassification(), reco::GsfElectron::superClusterFbrem(), and reco::GsfElectron::trackFbrem().

Referenced by GsfElectronAlgo::createElectron().

47  {
48  if ((!electron.isEB())&&(!electron.isEE()))
49  { return ; }
50 
51  if ( electron.isEBEEGap() || electron.isEBEtaGap() || electron.isEERingGap() )
52  { return ; }
53 
54  if ((electron.superClusterFbrem()-electron.trackFbrem())>=0.15)
55  { electron.setClassification(GsfElectron::BADTRACK) ; }
56  }
bool isEBEtaGap() const
Definition: GsfElectron.h:355
bool isEBEEGap() const
Definition: GsfElectron.h:353
bool isEERingGap() const
Definition: GsfElectron.h:359
float superClusterFbrem() const
Definition: GsfElectron.h:692
bool isEE() const
Definition: GsfElectron.h:351
bool isEB() const
Definition: GsfElectron.h:350
return((rh^lh)&mask)
float trackFbrem() const
Definition: GsfElectron.h:691
void setClassification(Classification myclass)
Definition: GsfElectron.h:704