CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Typedefs | Enumerations | Functions | Variables
EgammaCutBasedEleId Namespace Reference

Typedefs

typedef std::vector
< edm::Handle< edm::ValueMap
< reco::IsoDeposit > > > 
IsoDepositMaps
 
typedef std::vector
< edm::Handle< edm::ValueMap
< double > > > 
IsoDepositVals
 

Enumerations

enum  CutType {
  DETAIN = (1<<0), DPHIIN = (1<<1), SIGMAIETAIETA = (1<<2), HOE = (1<<3),
  OOEMOOP = (1<<4), D0VTX = (1<<5), DZVTX = (1<<6), ISO = (1<<7),
  VTXFIT = (1<<8), MHITS = (1<<9)
}
 
enum  TriggerWorkingPoint { TRIGGERTIGHT, TRIGGERWP70 }
 
enum  WorkingPoint { VETO, LOOSE, MEDIUM, TIGHT }
 

Functions

bool PassEoverPCuts (const reco::GsfElectronRef &ele)
 
bool PassEoverPCuts (const reco::GsfElectron &ele)
 
bool PassEoverPCuts (const float eta, const float eopin, const float fbrem)
 
bool PassTriggerCuts (const TriggerWorkingPoint triggerWorkingPoint, const reco::GsfElectronRef &ele)
 
bool PassTriggerCuts (const TriggerWorkingPoint triggerWorkingPoint, const reco::GsfElectron &ele)
 
bool PassTriggerCuts (const TriggerWorkingPoint triggerWorkingPoint, const bool isEB, const float pt, const float dEtaIn, const float dPhiIn, const float sigmaIEtaIEta, const float hoe, const float trackIso, const float ecalIso, const float hcalIso)
 
bool PassWP (const WorkingPoint workingPoint, const reco::GsfElectronRef &ele, const edm::Handle< reco::ConversionCollection > &conversions, const reco::BeamSpot &beamspot, const edm::Handle< reco::VertexCollection > &vtxs, const double &iso_ch, const double &iso_em, const double &iso_nh, const double &rho, ElectronEffectiveArea::ElectronEffectiveAreaTarget EAtarget)
 
bool PassWP (const WorkingPoint workingPoint, const reco::GsfElectron &ele, const edm::Handle< reco::ConversionCollection > &conversions, const reco::BeamSpot &beamspot, const edm::Handle< reco::VertexCollection > &vtxs, const double &iso_ch, const double &iso_em, const double &iso_nh, const double &rho, ElectronEffectiveArea::ElectronEffectiveAreaTarget EAtarget)
 
bool PassWP (WorkingPoint workingPoint, const bool isEB, const float pt, const float eta, const float dEtaIn, const float dPhiIn, const float sigmaIEtaIEta, const float hoe, const float ooemoop, const float d0vtx, const float dzvtx, const float iso_ch, const float iso_em, const float iso_nh, const bool vtxFitConversion, const unsigned int mHits, const double rho, ElectronEffectiveArea::ElectronEffectiveAreaTarget EAtarget)
 
void PrintDebug (unsigned int mask)
 
unsigned int TestWP (const WorkingPoint workingPoint, const reco::GsfElectronRef &ele, const edm::Handle< reco::ConversionCollection > &conversions, const reco::BeamSpot &beamspot, const edm::Handle< reco::VertexCollection > &vtxs, const double &iso_ch, const double &iso_em, const double &iso_nh, const double &rho, ElectronEffectiveArea::ElectronEffectiveAreaTarget EAtarget)
 
unsigned int TestWP (const WorkingPoint workingPoint, const reco::GsfElectron &ele, const edm::Handle< reco::ConversionCollection > &conversions, const reco::BeamSpot &beamspot, const edm::Handle< reco::VertexCollection > &vtxs, const double &iso_ch, const double &iso_em, const double &iso_nh, const double &rho, ElectronEffectiveArea::ElectronEffectiveAreaTarget EAtarget)
 
unsigned int TestWP (WorkingPoint workingPoint, const bool isEB, const float pt, const float eta, const float dEtaIn, const float dPhiIn, const float sigmaIEtaIEta, const float hoe, const float ooemoop, const float d0vtx, const float dzvtx, const float iso_ch, const float iso_em, const float iso_nh, const bool vtxFitConversion, const unsigned int mHits, const double rho, ElectronEffectiveArea::ElectronEffectiveAreaTarget EAtarget)
 

Variables

static const unsigned int PassAll = DETAIN | DPHIIN | SIGMAIETAIETA | HOE | OOEMOOP | D0VTX | DZVTX | ISO | VTXFIT | MHITS
 

Typedef Documentation

Definition at line 27 of file EGammaCutBasedEleId.h.

Definition at line 28 of file EGammaCutBasedEleId.h.

Enumeration Type Documentation

Enumerator
DETAIN 
DPHIIN 
SIGMAIETAIETA 
HOE 
OOEMOOP 
D0VTX 
DZVTX 
ISO 
VTXFIT 
MHITS 

Definition at line 50 of file EGammaCutBasedEleId.h.

Enumerator
TRIGGERTIGHT 
TRIGGERWP70 

Definition at line 41 of file EGammaCutBasedEleId.h.

Enumerator
VETO 
LOOSE 
MEDIUM 
TIGHT 

Definition at line 34 of file EGammaCutBasedEleId.h.

Function Documentation

bool EgammaCutBasedEleId::PassEoverPCuts ( const reco::GsfElectronRef ele)

Definition at line 80 of file EGammaCutBasedEleId.cc.

Referenced by EGammaCutBasedEleIdAnalyzer::analyze(), and PassEoverPCuts().

80  {
81  return PassEoverPCuts(*ele);
82 }
bool PassEoverPCuts(const reco::GsfElectronRef &ele)
bool EgammaCutBasedEleId::PassEoverPCuts ( const reco::GsfElectron ele)

Definition at line 67 of file EGammaCutBasedEleId.cc.

References reco::GsfElectron::eSuperClusterOverP(), eta(), reco::GsfElectron::fbrem(), PassEoverPCuts(), and reco::GsfElectron::superCluster().

68 {
69 
70  // get the variables
71  float eta = ele.superCluster()->eta();
72  float eopin = ele.eSuperClusterOverP();
73  float fbrem = ele.fbrem();
74 
75  // test the eop/fbrem cuts
76  return EgammaCutBasedEleId::PassEoverPCuts(eta, eopin, fbrem);
77 
78 }
float eSuperClusterOverP() const
Definition: GsfElectron.h:229
float fbrem() const
Definition: GsfElectron.h:639
T eta() const
virtual SuperClusterRef superCluster() const
reference to a SuperCluster
Definition: GsfElectron.h:168
bool PassEoverPCuts(const reco::GsfElectronRef &ele)
bool EgammaCutBasedEleId::PassEoverPCuts ( const float  eta,
const float  eopin,
const float  fbrem 
)

Definition at line 213 of file EGammaCutBasedEleId.cc.

214 {
215  if (fbrem > 0.15) return true;
216  else if (fabs(eta) < 1.0 && eopin > 0.95) return true;
217  return false;
218 }
T eta() const
bool EgammaCutBasedEleId::PassTriggerCuts ( const TriggerWorkingPoint  triggerWorkingPoint,
const reco::GsfElectronRef ele 
)

Definition at line 62 of file EGammaCutBasedEleId.cc.

Referenced by EGammaCutBasedEleIdAnalyzer::analyze(), and PassTriggerCuts().

63 {
64  return EgammaCutBasedEleId::PassTriggerCuts(triggerWorkingPoint, *ele);
65 }
bool PassTriggerCuts(const TriggerWorkingPoint triggerWorkingPoint, const reco::GsfElectronRef &ele)
bool EgammaCutBasedEleId::PassTriggerCuts ( const TriggerWorkingPoint  triggerWorkingPoint,
const reco::GsfElectron ele 
)

Definition at line 43 of file EGammaCutBasedEleId.cc.

References reco::GsfElectron::deltaEtaSuperClusterTrackAtVtx(), reco::GsfElectron::deltaPhiSuperClusterTrackAtVtx(), reco::GsfElectron::dr03EcalRecHitSumEt(), reco::GsfElectron::dr03HcalTowerSumEt(), reco::GsfElectron::dr03TkSumPt(), reco::GsfElectron::hadronicOverEm(), reco::GsfElectron::isEB(), PassTriggerCuts(), reco::LeafCandidate::pt(), and reco::GsfElectron::sigmaIetaIeta().

44 {
45 
46  // get the variables
47  bool isEB = ele.isEB() ? true : false;
48  float pt = ele.pt();
49  float dEtaIn = ele.deltaEtaSuperClusterTrackAtVtx();
50  float dPhiIn = ele.deltaPhiSuperClusterTrackAtVtx();
51  float sigmaIEtaIEta = ele.sigmaIetaIeta();
52  float hoe = ele.hadronicOverEm();
53  float trackIso = ele.dr03TkSumPt();
54  float ecalIso = ele.dr03EcalRecHitSumEt();
55  float hcalIso = ele.dr03HcalTowerSumEt();
56 
57  // test the trigger cuts
58  return EgammaCutBasedEleId::PassTriggerCuts(triggerWorkingPoint, isEB, pt, dEtaIn, dPhiIn, sigmaIEtaIEta, hoe, trackIso, ecalIso, hcalIso);
59 
60 }
bool isEB() const
Definition: GsfElectron.h:330
float deltaEtaSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:233
float sigmaIetaIeta() const
Definition: GsfElectron.h:382
float hadronicOverEm() const
Definition: GsfElectron.h:403
bool PassTriggerCuts(const TriggerWorkingPoint triggerWorkingPoint, const reco::GsfElectronRef &ele)
float deltaPhiSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:236
float dr03TkSumPt() const
Definition: GsfElectron.h:436
virtual double pt() const
transverse momentum
float dr03EcalRecHitSumEt() const
Definition: GsfElectron.h:437
float dr03HcalTowerSumEt() const
Definition: GsfElectron.h:440
bool EgammaCutBasedEleId::PassTriggerCuts ( const TriggerWorkingPoint  triggerWorkingPoint,
const bool  isEB,
const float  pt,
const float  dEtaIn,
const float  dPhiIn,
const float  sigmaIEtaIEta,
const float  hoe,
const float  trackIso,
const float  ecalIso,
const float  hcalIso 
)

Definition at line 164 of file EGammaCutBasedEleId.cc.

References gather_cfg::cout, TRIGGERTIGHT, and TRIGGERWP70.

168 {
169 
170 
171  // choose cut if barrel or endcap
172  unsigned int idx = isEB ? 0 : 1;
173 
174  if (triggerWorkingPoint == EgammaCutBasedEleId::TRIGGERTIGHT) {
175  float cut_dEtaIn[2] = {0.007, 0.009};
176  float cut_dPhiIn[2] = {0.15, 0.10};
177  float cut_sigmaIEtaIEta[2] = {0.01, 0.03};
178  float cut_hoe[2] = {0.12, 0.10};
179  float cut_trackIso[2] = {0.20, 0.20};
180  float cut_ecalIso[2] = {0.20, 0.20};
181  float cut_hcalIso[2] = {0.20, 0.20};
182  if (fabs(dEtaIn) > cut_dEtaIn[idx]) return false;
183  if (fabs(dPhiIn) > cut_dPhiIn[idx]) return false;
184  if (sigmaIEtaIEta > cut_sigmaIEtaIEta[idx]) return false;
185  if (hoe > cut_hoe[idx]) return false;
186  if (trackIso / pt > cut_trackIso[idx]) return false;
187  if (ecalIso / pt > cut_ecalIso[idx]) return false;
188  if (hcalIso / pt > cut_hcalIso[idx]) return false;
189  }
190  else if (triggerWorkingPoint == EgammaCutBasedEleId::TRIGGERWP70) {
191  float cut_dEtaIn[2] = {0.004, 0.005};
192  float cut_dPhiIn[2] = {0.03, 0.02};
193  float cut_sigmaIEtaIEta[2] = {0.01, 0.03};
194  float cut_hoe[2] = {0.025, 0.025};
195  float cut_trackIso[2] = {0.10, 0.10};
196  float cut_ecalIso[2] = {0.10, 0.05};
197  float cut_hcalIso[2] = {0.05, 0.05};
198  if (fabs(dEtaIn) > cut_dEtaIn[idx]) return false;
199  if (fabs(dPhiIn) > cut_dPhiIn[idx]) return false;
200  if (sigmaIEtaIEta > cut_sigmaIEtaIEta[idx]) return false;
201  if (hoe > cut_hoe[idx]) return false;
202  if (trackIso / pt > cut_trackIso[idx]) return false;
203  if (ecalIso / pt > cut_ecalIso[idx]) return false;
204  if (hcalIso / pt > cut_hcalIso[idx]) return false;
205  }
206  else {
207  std::cout << "[EgammaCutBasedEleId::PassTriggerCuts] Undefined working point" << std::endl;
208  }
209 
210  return true;
211 }
tuple cout
Definition: gather_cfg.py:121
bool EgammaCutBasedEleId::PassWP ( const WorkingPoint  workingPoint,
const reco::GsfElectronRef ele,
const edm::Handle< reco::ConversionCollection > &  conversions,
const reco::BeamSpot beamspot,
const edm::Handle< reco::VertexCollection > &  vtxs,
const double &  iso_ch,
const double &  iso_em,
const double &  iso_nh,
const double &  rho,
ElectronEffectiveArea::ElectronEffectiveAreaTarget  EAtarget 
)

Definition at line 29 of file EGammaCutBasedEleId.cc.

Referenced by EGammaCutBasedEleIdAnalyzer::analyze().

39 {
40  return PassWP(workingPoint,*ele,conversions,beamspot,vtxs,iso_ch,iso_em,iso_nh,rho, EAtarget);
41 }
bool PassWP(const WorkingPoint workingPoint, const reco::GsfElectronRef &ele, const edm::Handle< reco::ConversionCollection > &conversions, const reco::BeamSpot &beamspot, const edm::Handle< reco::VertexCollection > &vtxs, const double &iso_ch, const double &iso_em, const double &iso_nh, const double &rho, ElectronEffectiveArea::ElectronEffectiveAreaTarget EAtarget)
Definition: DDAxes.h:10
bool EgammaCutBasedEleId::PassWP ( const WorkingPoint  workingPoint,
const reco::GsfElectron ele,
const edm::Handle< reco::ConversionCollection > &  conversions,
const reco::BeamSpot beamspot,
const edm::Handle< reco::VertexCollection > &  vtxs,
const double &  iso_ch,
const double &  iso_em,
const double &  iso_nh,
const double &  rho,
ElectronEffectiveArea::ElectronEffectiveAreaTarget  EAtarget 
)

Definition at line 9 of file EGammaCutBasedEleId.cc.

References PassAll, and TestWP().

19 {
20 
21  // get the mask
22  unsigned int mask = TestWP(workingPoint, ele, conversions, beamspot, vtxs, iso_ch, iso_em, iso_nh, rho, EAtarget);
23 
24  // check if the desired WP passed
25  if ((mask & PassAll) == PassAll) return true;
26  return false;
27 }
unsigned int TestWP(const WorkingPoint workingPoint, const reco::GsfElectronRef &ele, const edm::Handle< reco::ConversionCollection > &conversions, const reco::BeamSpot &beamspot, const edm::Handle< reco::VertexCollection > &vtxs, const double &iso_ch, const double &iso_em, const double &iso_nh, const double &rho, ElectronEffectiveArea::ElectronEffectiveAreaTarget EAtarget)
Definition: DDAxes.h:10
static const unsigned int PassAll
bool EgammaCutBasedEleId::PassWP ( WorkingPoint  workingPoint,
const bool  isEB,
const float  pt,
const float  eta,
const float  dEtaIn,
const float  dPhiIn,
const float  sigmaIEtaIEta,
const float  hoe,
const float  ooemoop,
const float  d0vtx,
const float  dzvtx,
const float  iso_ch,
const float  iso_em,
const float  iso_nh,
const bool  vtxFitConversion,
const unsigned int  mHits,
const double  rho,
ElectronEffectiveArea::ElectronEffectiveAreaTarget  EAtarget 
)

Definition at line 152 of file EGammaCutBasedEleId.cc.

References PassAll, and TestWP().

156 {
157  unsigned int mask = EgammaCutBasedEleId::TestWP(workingPoint, isEB, pt, eta, dEtaIn, dPhiIn,
158  sigmaIEtaIEta, hoe, ooemoop, d0vtx, dzvtx, iso_ch, iso_em, iso_nh, vtxFitConversion, mHits, rho, EAtarget);
159 
160  if ((mask & PassAll) == PassAll) return true;
161  return false;
162 }
unsigned int TestWP(const WorkingPoint workingPoint, const reco::GsfElectronRef &ele, const edm::Handle< reco::ConversionCollection > &conversions, const reco::BeamSpot &beamspot, const edm::Handle< reco::VertexCollection > &vtxs, const double &iso_ch, const double &iso_em, const double &iso_nh, const double &rho, ElectronEffectiveArea::ElectronEffectiveAreaTarget EAtarget)
Definition: DDAxes.h:10
T eta() const
static const unsigned int PassAll
void EgammaCutBasedEleId::PrintDebug ( unsigned int  mask)

Definition at line 335 of file EGammaCutBasedEleId.cc.

References D0VTX, DETAIN, DPHIIN, DZVTX, HOE, ISO, MHITS, OOEMOOP, SIGMAIETAIETA, and VTXFIT.

336 {
337  printf("detain(%i), ", bool(mask & DETAIN));
338  printf("dphiin(%i), ", bool(mask & DPHIIN));
339  printf("sieie(%i), ", bool(mask & SIGMAIETAIETA));
340  printf("hoe(%i), ", bool(mask & HOE));
341  printf("ooemoop(%i), ", bool(mask & OOEMOOP));
342  printf("d0vtx(%i), ", bool(mask & D0VTX));
343  printf("dzvtx(%i), ", bool(mask & DZVTX));
344  printf("iso(%i), ", bool(mask & ISO));
345  printf("vtxfit(%i), ", bool(mask & VTXFIT));
346  printf("mhits(%i)\n", bool(mask & MHITS));
347 }
unsigned int EgammaCutBasedEleId::TestWP ( const WorkingPoint  workingPoint,
const reco::GsfElectronRef ele,
const edm::Handle< reco::ConversionCollection > &  conversions,
const reco::BeamSpot beamspot,
const edm::Handle< reco::VertexCollection > &  vtxs,
const double &  iso_ch,
const double &  iso_em,
const double &  iso_nh,
const double &  rho,
ElectronEffectiveArea::ElectronEffectiveAreaTarget  EAtarget 
)

Definition at line 136 of file EGammaCutBasedEleId.cc.

Referenced by PassWP(), and TestWP().

145  {
146  return TestWP(workingPoint,*ele,conversions,beamspot,vtxs,iso_ch,iso_em,iso_nh,rho, EAtarget);
147 }
unsigned int TestWP(const WorkingPoint workingPoint, const reco::GsfElectronRef &ele, const edm::Handle< reco::ConversionCollection > &conversions, const reco::BeamSpot &beamspot, const edm::Handle< reco::VertexCollection > &vtxs, const double &iso_ch, const double &iso_em, const double &iso_nh, const double &rho, ElectronEffectiveArea::ElectronEffectiveAreaTarget EAtarget)
Definition: DDAxes.h:10
unsigned int EgammaCutBasedEleId::TestWP ( const WorkingPoint  workingPoint,
const reco::GsfElectron ele,
const edm::Handle< reco::ConversionCollection > &  conversions,
const reco::BeamSpot beamspot,
const edm::Handle< reco::VertexCollection > &  vtxs,
const double &  iso_ch,
const double &  iso_em,
const double &  iso_nh,
const double &  rho,
ElectronEffectiveArea::ElectronEffectiveAreaTarget  EAtarget 
)

Definition at line 85 of file EGammaCutBasedEleId.cc.

References reco::GsfElectron::deltaEtaSuperClusterTrackAtVtx(), reco::GsfElectron::deltaPhiSuperClusterTrackAtVtx(), reco::GsfElectron::ecalEnergy(), reco::GsfElectron::eSuperClusterOverP(), eta(), reco::GsfElectron::gsfTrack(), reco::GsfElectron::hadronicOverEm(), ConversionTools::hasMatchedConversion(), reco::GsfElectron::isEB(), reco::BeamSpot::position(), reco::LeafCandidate::pt(), reco::GsfElectron::sigmaIetaIeta(), reco::GsfElectron::superCluster(), and TestWP().

95 {
96 
97  // get the ID variables from the electron object
98 
99  // kinematic variables
100  bool isEB = ele.isEB() ? true : false;
101  float pt = ele.pt();
102  float eta = ele.superCluster()->eta();
103 
104  // id variables
105  float dEtaIn = ele.deltaEtaSuperClusterTrackAtVtx();
106  float dPhiIn = ele.deltaPhiSuperClusterTrackAtVtx();
107  float sigmaIEtaIEta = ele.sigmaIetaIeta();
108  float hoe = ele.hadronicOverEm();
109  float ooemoop = (1.0/ele.ecalEnergy() - ele.eSuperClusterOverP()/ele.ecalEnergy());
110 
111  // impact parameter variables
112  float d0vtx = 0.0;
113  float dzvtx = 0.0;
114  if (vtxs->size() > 0) {
115  reco::VertexRef vtx(vtxs, 0);
116  d0vtx = ele.gsfTrack()->dxy(vtx->position());
117  dzvtx = ele.gsfTrack()->dz(vtx->position());
118  } else {
119  d0vtx = ele.gsfTrack()->dxy();
120  dzvtx = ele.gsfTrack()->dz();
121  }
122 
123  // conversion rejection variables
124  bool vtxFitConversion = ConversionTools::hasMatchedConversion(ele, conversions, beamspot.position());
125  float mHits = ele.gsfTrack()->trackerExpectedHitsInner().numberOfHits();
126 
127  // get the mask value
128  unsigned int mask = EgammaCutBasedEleId::TestWP(workingPoint, isEB, pt, eta, dEtaIn, dPhiIn,
129  sigmaIEtaIEta, hoe, ooemoop, d0vtx, dzvtx, iso_ch, iso_em, iso_nh, vtxFitConversion, mHits, rho, EAtarget);
130 
131  // return the mask value
132  return mask;
133 
134 }
float eSuperClusterOverP() const
Definition: GsfElectron.h:229
unsigned int TestWP(const WorkingPoint workingPoint, const reco::GsfElectronRef &ele, const edm::Handle< reco::ConversionCollection > &conversions, const reco::BeamSpot &beamspot, const edm::Handle< reco::VertexCollection > &vtxs, const double &iso_ch, const double &iso_em, const double &iso_nh, const double &rho, ElectronEffectiveArea::ElectronEffectiveAreaTarget EAtarget)
Definition: DDAxes.h:10
T eta() const
bool isEB() const
Definition: GsfElectron.h:330
float deltaEtaSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:233
float sigmaIetaIeta() const
Definition: GsfElectron.h:382
float hadronicOverEm() const
Definition: GsfElectron.h:403
virtual SuperClusterRef superCluster() const
reference to a SuperCluster
Definition: GsfElectron.h:168
float deltaPhiSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:236
static bool hasMatchedConversion(const reco::GsfElectron &ele, const edm::Handle< reco::ConversionCollection > &convCol, const math::XYZPoint &beamspot, bool allowCkfMatch=true, float lxyMin=2.0, float probMin=1e-6, unsigned int nHitsBeforeVtxMax=0)
virtual double pt() const
transverse momentum
float ecalEnergy() const
Definition: GsfElectron.h:724
const Point & position() const
position
Definition: BeamSpot.h:63
virtual GsfTrackRef gsfTrack() const
reference to a GsfTrack
Definition: GsfElectron.h:169
unsigned int EgammaCutBasedEleId::TestWP ( WorkingPoint  workingPoint,
const bool  isEB,
const float  pt,
const float  eta,
const float  dEtaIn,
const float  dPhiIn,
const float  sigmaIEtaIEta,
const float  hoe,
const float  ooemoop,
const float  d0vtx,
const float  dzvtx,
const float  iso_ch,
const float  iso_em,
const float  iso_nh,
const bool  vtxFitConversion,
const unsigned int  mHits,
const double  rho,
ElectronEffectiveArea::ElectronEffectiveAreaTarget  EAtarget 
)

Definition at line 220 of file EGammaCutBasedEleId.cc.

References gather_cfg::cout, D0VTX, DETAIN, DPHIIN, DZVTX, ElectronEffectiveArea::GetElectronEffectiveArea(), HOE, ISO, ElectronEffectiveArea::kEleGammaAndNeutralHadronIso03, LOOSE, max(), MEDIUM, MHITS, OOEMOOP, SIGMAIETAIETA, TIGHT, funct::true, VETO, and VTXFIT.

224 {
225 
226  unsigned int mask = 0;
227  float cut_dEtaIn[2] = {999.9, 999.9};
228  float cut_dPhiIn[2] = {999.9, 999.9};
229  float cut_sigmaIEtaIEta[2] = {999.9, 999.9};
230  float cut_hoe[2] = {999.9, 999.9};
231  float cut_ooemoop[2] = {999.9, 999.9};
232  float cut_d0vtx[2] = {999.9, 999.9};
233  float cut_dzvtx[2] = {999.9, 999.9};
234  float cut_iso[2] = {999.9, 999.9};
235  bool cut_vtxFit[2] = {false, false};
236  unsigned int cut_mHits[2] = {999, 999};
237 
238  if (workingPoint == EgammaCutBasedEleId::VETO) {
239  cut_dEtaIn[0] = 0.007; cut_dEtaIn[1] = 0.010;
240  cut_dPhiIn[0] = 0.800; cut_dPhiIn[1] = 0.700;
241  cut_sigmaIEtaIEta[0] = 0.010; cut_sigmaIEtaIEta[1] = 0.030;
242  cut_hoe[0] = 0.150; cut_hoe[1] = 999.9;
243  cut_ooemoop[0] = 999.9; cut_ooemoop[1] = 999.9;
244  cut_d0vtx[0] = 0.040; cut_d0vtx[1] = 0.040;
245  cut_dzvtx[0] = 0.200; cut_dzvtx[1] = 0.200;
246  cut_vtxFit[0] = false; cut_vtxFit[1] = false;
247  cut_mHits[0] = 999 ; cut_mHits[1] = 999;
248  cut_iso[0] = 0.150; cut_iso[1] = 0.150;
249  }
250  else if (workingPoint == EgammaCutBasedEleId::LOOSE) {
251  cut_dEtaIn[0] = 0.007; cut_dEtaIn[1] = 0.009;
252  cut_dPhiIn[0] = 0.150; cut_dPhiIn[1] = 0.100;
253  cut_sigmaIEtaIEta[0] = 0.010; cut_sigmaIEtaIEta[1] = 0.030;
254  cut_hoe[0] = 0.120; cut_hoe[1] = 0.100;
255  cut_ooemoop[0] = 0.050; cut_ooemoop[1] = 0.050;
256  cut_d0vtx[0] = 0.020; cut_d0vtx[1] = 0.020;
257  cut_dzvtx[0] = 0.200; cut_dzvtx[1] = 0.200;
258  cut_vtxFit[0] = true ; cut_vtxFit[1] = true;
259  cut_mHits[0] = 1 ; cut_mHits[1] = 1;
260  if (pt >= 20.0) {
261  cut_iso[0] = 0.150; cut_iso[1] = 0.150;
262  }
263  else {
264  cut_iso[0] = 0.150; cut_iso[1] = 0.100;
265  }
266  }
267  else if (workingPoint == EgammaCutBasedEleId::MEDIUM) {
268  cut_dEtaIn[0] = 0.004; cut_dEtaIn[1] = 0.007;
269  cut_dPhiIn[0] = 0.060; cut_dPhiIn[1] = 0.030;
270  cut_sigmaIEtaIEta[0] = 0.010; cut_sigmaIEtaIEta[1] = 0.030;
271  cut_hoe[0] = 0.120; cut_hoe[1] = 0.100;
272  cut_ooemoop[0] = 0.050; cut_ooemoop[1] = 0.050;
273  cut_d0vtx[0] = 0.020; cut_d0vtx[1] = 0.020;
274  cut_dzvtx[0] = 0.100; cut_dzvtx[1] = 0.100;
275  cut_vtxFit[0] = true ; cut_vtxFit[1] = true;
276  cut_mHits[0] = 1 ; cut_mHits[1] = 1;
277  if (pt >= 20.0) {
278  cut_iso[0] = 0.150; cut_iso[1] = 0.150;
279  }
280  else {
281  cut_iso[0] = 0.150; cut_iso[1] = 0.100;
282  }
283  }
284  else if (workingPoint == EgammaCutBasedEleId::TIGHT) {
285  cut_dEtaIn[0] = 0.004; cut_dEtaIn[1] = 0.005;
286  cut_dPhiIn[0] = 0.030; cut_dPhiIn[1] = 0.020;
287  cut_sigmaIEtaIEta[0] = 0.010; cut_sigmaIEtaIEta[1] = 0.030;
288  cut_hoe[0] = 0.120; cut_hoe[1] = 0.100;
289  cut_ooemoop[0] = 0.050; cut_ooemoop[1] = 0.050;
290  cut_d0vtx[0] = 0.020; cut_d0vtx[1] = 0.020;
291  cut_dzvtx[0] = 0.100; cut_dzvtx[1] = 0.100;
292  cut_vtxFit[0] = true ; cut_vtxFit[1] = true;
293  cut_mHits[0] = 0 ; cut_mHits[1] = 0;
294  if (pt >= 20.0) {
295  cut_iso[0] = 0.100; cut_iso[1] = 0.100;
296  }
297  else {
298  cut_iso[0] = 0.100; cut_iso[1] = 0.070;
299  }
300  }
301  else {
302  std::cout << "[EgammaCutBasedEleId::TestWP] Undefined working point" << std::endl;
303  }
304 
305  // choose cut if barrel or endcap
306  unsigned int idx = isEB ? 0 : 1;
307 
308  // effective area for isolation
310 
311  // apply to neutrals
312  double rhoPrime = std::max(rho, 0.0);
313  double iso_n = std::max(iso_nh + iso_em - rhoPrime * AEff, 0.0);
314 
315  // compute final isolation
316  double iso = (iso_n + iso_ch) / pt;
317 
318  // test cuts
319  if (fabs(dEtaIn) < cut_dEtaIn[idx]) mask |= DETAIN;
320  if (fabs(dPhiIn) < cut_dPhiIn[idx]) mask |= DPHIIN;
321  if (sigmaIEtaIEta < cut_sigmaIEtaIEta[idx]) mask |= SIGMAIETAIETA;
322  if (hoe < cut_hoe[idx]) mask |= HOE;
323  if (fabs(ooemoop) < cut_ooemoop[idx]) mask |= OOEMOOP;
324  if (fabs(d0vtx) < cut_d0vtx[idx]) mask |= D0VTX;
325  if (fabs(dzvtx) < cut_dzvtx[idx]) mask |= DZVTX;
326  if (!cut_vtxFit[idx] || !vtxFitConversion) mask |= VTXFIT;
327  if (mHits <= cut_mHits[idx]) mask |= MHITS;
328  if (iso < cut_iso[idx]) mask |= ISO;
329 
330  // return the mask
331  return mask;
332 
333 }
Definition: DDAxes.h:10
static Double_t GetElectronEffectiveArea(ElectronEffectiveAreaType type, Double_t SCEta, ElectronEffectiveAreaTarget EffectiveAreaTarget=kEleEAData2011)
T eta() const
const T & max(const T &a, const T &b)
tuple cout
Definition: gather_cfg.py:121

Variable Documentation

const unsigned int EgammaCutBasedEleId::PassAll = DETAIN | DPHIIN | SIGMAIETAIETA | HOE | OOEMOOP | D0VTX | DZVTX | ISO | VTXFIT | MHITS
static

Definition at line 67 of file EGammaCutBasedEleId.h.

Referenced by PassWP().