CMS 3D CMS Logo

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

#include <ElectronIdentifier.h>

Public Member Functions

float dEtaInSeed (const reco::GsfElectronPtr &ele)
 
 ElectronIdentifier (const edm::ParameterSet &c)
 
float isolation (const reco::GsfElectronPtr &ele)
 
bool passID (const reco::GsfElectronPtr &ele, edm::Handle< reco::BeamSpot > beamspot, edm::Handle< reco::ConversionCollection > conversions)
 
void setID (std::string ID)
 
void setRho (double rho)
 

Private Attributes

EffectiveAreas _effectiveAreas
 
std::array< std::array
< std::array< double, 2 >, 4 >, 8 > 
cuts_
 
int ID_
 
double rho_
 

Detailed Description

Definition at line 40 of file ElectronIdentifier.h.

Constructor & Destructor Documentation

ElectronIdentifier::ElectronIdentifier ( const edm::ParameterSet c)

Definition at line 24 of file ElectronIdentifier.cc.

References BARREL, CONVERSION, cuts_, DETAINSEED, DPHIIN, ENDCAP, HOVERE, ID_, ISO, LOOSE, MEDIUM, MISSINGHITS, ONEOVERE, rho_, SIGMAIETA, TIGHT, and VETO.

25  : _effectiveAreas((c.getParameter<edm::FileInPath>("effAreasConfigFile")).fullPath())
26 
27 {
28  rho_ = -1;
29  ID_ = -1;
34 
39 
44 
49 
54 
59 
64 
69 
74 
79 
84 
89 
94 
99 
104 
109 }
EffectiveAreas _effectiveAreas
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::array< std::array< std::array< double, 2 >, 4 >, 8 > cuts_

Member Function Documentation

float ElectronIdentifier::dEtaInSeed ( const reco::GsfElectronPtr ele)

Definition at line 132 of file ElectronIdentifier.cc.

References edm::Ptr< T >::isNonnull(), and SiStripPI::max.

Referenced by passID().

132  {
133  return ele->superCluster().isNonnull() && ele->superCluster()->seed().isNonnull()
134  ? ele->deltaEtaSuperClusterTrackAtVtx() - ele->superCluster()->eta() + ele->superCluster()->seed()->eta()
136 }
bool isNonnull() const
Checks for non-null.
Definition: Ptr.h:146
float ElectronIdentifier::isolation ( const reco::GsfElectronPtr ele)

Definition at line 137 of file ElectronIdentifier.cc.

References _effectiveAreas, EffectiveAreas::getEffectiveArea(), SiStripPI::max, rho_, reco::GsfElectron::PflowIsolationVariables::sumChargedHadronPt, reco::GsfElectron::PflowIsolationVariables::sumNeutralHadronEt, and reco::GsfElectron::PflowIsolationVariables::sumPhotonEt.

Referenced by passID().

137  {
138  if (rho_ < 0) {
139  throw;
140  }
141  const reco::GsfElectron::PflowIsolationVariables& pfIso = ele->pfIsolationVariables();
142  const float chad = pfIso.sumChargedHadronPt;
143  const float nhad = pfIso.sumNeutralHadronEt;
144  const float pho = pfIso.sumPhotonEt;
145  const float eA = _effectiveAreas.getEffectiveArea(fabs(ele->superCluster()->eta()));
146  const float iso = chad + std::max(0.0, nhad + pho - rho_ * eA);
147 
148  // Apply the cut and return the result
149  // Scale by pT if the relative isolation is requested but avoid division by 0
150  return iso;
151 }
const float getEffectiveArea(float eta) const
EffectiveAreas _effectiveAreas
float sumPhotonEt
sum pt of PF photons // old float photonIso ;
Definition: GsfElectron.h:665
float sumNeutralHadronEt
sum pt of neutral hadrons // old float neutralHadronIso ;
Definition: GsfElectron.h:664
float sumChargedHadronPt
sum-pt of charged Hadron // old float chargedHadronIso ;
Definition: GsfElectron.h:663
bool ElectronIdentifier::passID ( const reco::GsfElectronPtr ele,
edm::Handle< reco::BeamSpot beamspot,
edm::Handle< reco::ConversionCollection conversions 
)

Definition at line 153 of file ElectronIdentifier.cc.

References funct::abs(), BARREL, cuts_, DETAINSEED, dEtaInSeed(), DPHIIN, ConversionTools::hasMatchedConversion(), HOVERE, ID_, ISO, isolation(), reco::HitPattern::MISSING_INNER_HITS, MISSINGHITS, ONEOVERE, HLT_FULL_cff::region, and SIGMAIETA.

Referenced by ZCounting::analyzeElectrons().

155  {
156  if (ID_ == -1)
157  throw;
158  unsigned int region = fabs(ele->superCluster()->eta()) < 1.479 ? EleIDEtaBins::BARREL : EleIDEtaBins::BARREL;
159 
160  if (ele->full5x5_sigmaIetaIeta() > cuts_[EleIDCutNames::SIGMAIETA][ID_][region])
161  return false;
163  return false;
164  if (std::abs(ele->deltaPhiSuperClusterTrackAtVtx()) > cuts_[EleIDCutNames::DPHIIN][ID_][region])
165  return false;
166  if (ele->hadronicOverEm() > cuts_[EleIDCutNames::HOVERE][ID_][region])
167  return false;
168  if (isolation(ele) / ele->pt() > cuts_[EleIDCutNames::ISO][ID_][region])
169  return false;
170  if (std::abs(1.0 - ele->eSuperClusterOverP()) / ele->ecalEnergy() > cuts_[EleIDCutNames::ONEOVERE][ID_][region])
171  return false;
172  if ((ele->gsfTrack()->hitPattern().numberOfAllHits(reco::HitPattern::MISSING_INNER_HITS)) >
174  return false;
175  if (ConversionTools::hasMatchedConversion(*ele, *conversions, beamspot->position()))
176  return false;
177 
178  return true;
179 }
float dEtaInSeed(const reco::GsfElectronPtr &ele)
static bool hasMatchedConversion(const reco::GsfElectron &ele, const reco::ConversionCollection &convCol, const math::XYZPoint &beamspot, bool allowCkfMatch=true, float lxyMin=2.0, float probMin=1e-6, unsigned int nHitsBeforeVtxMax=0)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
float isolation(const reco::GsfElectronPtr &ele)
std::array< std::array< std::array< double, 2 >, 4 >, 8 > cuts_
void ElectronIdentifier::setID ( std::string  ID)

Definition at line 120 of file ElectronIdentifier.cc.

References ID_, LOOSE, MEDIUM, TIGHT, and VETO.

Referenced by ZCounting::ZCounting().

120  {
121  if (ID == "TIGHT")
123  else if (ID == "MEDIUM")
125  else if (ID == "LOOSE")
127  else if (ID == "VETO")
129  else
130  throw;
131 }
uint32_t ID
Definition: Definitions.h:24
void ElectronIdentifier::setRho ( double  rho)

Definition at line 111 of file ElectronIdentifier.cc.

References Exception, rho, and rho_.

Referenced by ZCounting::analyzeElectrons().

111  {
112  if (rho >= 0) {
113  rho_ = rho;
114  } else {
115  throw cms::Exception("ValueError") << "Encountered invalid value for energy density rho.\n"
116  << "Value: " << rho << "\n"
117  << "Rho should be a real, positive number.\n";
118  }
119 }

Member Data Documentation

EffectiveAreas ElectronIdentifier::_effectiveAreas
private

Definition at line 57 of file ElectronIdentifier.h.

Referenced by isolation().

std::array<std::array<std::array<double, 2>, 4>, 8> ElectronIdentifier::cuts_
private

Definition at line 55 of file ElectronIdentifier.h.

Referenced by ElectronIdentifier(), and passID().

int ElectronIdentifier::ID_
private

Definition at line 54 of file ElectronIdentifier.h.

Referenced by ElectronIdentifier(), passID(), and setID().

double ElectronIdentifier::rho_
private

Definition at line 53 of file ElectronIdentifier.h.

Referenced by ElectronIdentifier(), isolation(), and setRho().