20 unsigned int mask =
TestWP(workingPoint, ele, conversions, beamspot, vtxs, iso_ch, iso_em, iso_nh, rho, EAtarget);
23 if ((mask &
PassAll) == PassAll)
38 return PassWP(workingPoint, *ele, conversions, beamspot, vtxs, iso_ch, iso_em, iso_nh, rho, EAtarget);
43 bool isEB = ele.
isEB() ?
true :
false;
55 triggerWorkingPoint, isEB, pt, dEtaIn, dPhiIn, sigmaIEtaIEta, hoe, trackIso, ecalIso, hcalIso);
66 float fbrem = ele.
fbrem();
87 bool isEB = ele.
isEB() ?
true :
false;
101 if (!vtxs->empty()) {
103 d0vtx = ele.
gsfTrack()->dxy(vtx->position());
104 dzvtx = ele.
gsfTrack()->dz(vtx->position());
143 const double &iso_ch,
144 const double &iso_em,
145 const double &iso_nh,
148 return TestWP(workingPoint, *ele, conversions, beamspot, vtxs, iso_ch, iso_em, iso_nh, rho, EAtarget);
159 const float sigmaIEtaIEta,
167 const bool vtxFitConversion,
168 const unsigned int mHits,
190 if ((mask &
PassAll) == PassAll)
200 const float sigmaIEtaIEta,
202 const float trackIso,
204 const float hcalIso) {
206 unsigned int idx = isEB ? 0 : 1;
209 float cut_dEtaIn[2] = {0.007, 0.009};
210 float cut_dPhiIn[2] = {0.15, 0.10};
211 float cut_sigmaIEtaIEta[2] = {0.01, 0.03};
212 float cut_hoe[2] = {0.12, 0.10};
213 float cut_trackIso[2] = {0.20, 0.20};
214 float cut_ecalIso[2] = {0.20, 0.20};
215 float cut_hcalIso[2] = {0.20, 0.20};
216 if (fabs(dEtaIn) > cut_dEtaIn[idx])
218 if (fabs(dPhiIn) > cut_dPhiIn[idx])
220 if (sigmaIEtaIEta > cut_sigmaIEtaIEta[idx])
222 if (hoe > cut_hoe[idx])
224 if (trackIso / pt > cut_trackIso[idx])
226 if (ecalIso / pt > cut_ecalIso[idx])
228 if (hcalIso / pt > cut_hcalIso[idx])
231 float cut_dEtaIn[2] = {0.004, 0.005};
232 float cut_dPhiIn[2] = {0.03, 0.02};
233 float cut_sigmaIEtaIEta[2] = {0.01, 0.03};
234 float cut_hoe[2] = {0.025, 0.025};
235 float cut_trackIso[2] = {0.10, 0.10};
236 float cut_ecalIso[2] = {0.10, 0.05};
237 float cut_hcalIso[2] = {0.05, 0.05};
238 if (fabs(dEtaIn) > cut_dEtaIn[idx])
240 if (fabs(dPhiIn) > cut_dPhiIn[idx])
242 if (sigmaIEtaIEta > cut_sigmaIEtaIEta[idx])
244 if (hoe > cut_hoe[idx])
246 if (trackIso / pt > cut_trackIso[idx])
248 if (ecalIso / pt > cut_ecalIso[idx])
250 if (hcalIso / pt > cut_hcalIso[idx])
253 std::cout <<
"[EgammaCutBasedEleId::PassTriggerCuts] Undefined working point" << std::endl;
262 else if (fabs(eta) < 1.0 && eopin > 0.95)
273 const float sigmaIEtaIEta,
281 const bool vtxFitConversion,
282 const unsigned int mHits,
285 unsigned int mask = 0;
286 float cut_dEtaIn[2] = {999.9, 999.9};
287 float cut_dPhiIn[2] = {999.9, 999.9};
288 float cut_sigmaIEtaIEta[2] = {999.9, 999.9};
289 float cut_hoe[2] = {999.9, 999.9};
290 float cut_ooemoop[2] = {999.9, 999.9};
291 float cut_d0vtx[2] = {999.9, 999.9};
292 float cut_dzvtx[2] = {999.9, 999.9};
293 float cut_iso[2] = {999.9, 999.9};
294 bool cut_vtxFit[2] = {
false,
false};
295 unsigned int cut_mHits[2] = {999, 999};
298 cut_dEtaIn[0] = 0.007;
299 cut_dEtaIn[1] = 0.010;
300 cut_dPhiIn[0] = 0.800;
301 cut_dPhiIn[1] = 0.700;
302 cut_sigmaIEtaIEta[0] = 0.010;
303 cut_sigmaIEtaIEta[1] = 0.030;
306 cut_ooemoop[0] = 999.9;
307 cut_ooemoop[1] = 999.9;
308 cut_d0vtx[0] = 0.040;
309 cut_d0vtx[1] = 0.040;
310 cut_dzvtx[0] = 0.200;
311 cut_dzvtx[1] = 0.200;
312 cut_vtxFit[0] =
false;
313 cut_vtxFit[1] =
false;
319 cut_dEtaIn[0] = 0.007;
320 cut_dEtaIn[1] = 0.009;
321 cut_dPhiIn[0] = 0.150;
322 cut_dPhiIn[1] = 0.100;
323 cut_sigmaIEtaIEta[0] = 0.010;
324 cut_sigmaIEtaIEta[1] = 0.030;
327 cut_ooemoop[0] = 0.050;
328 cut_ooemoop[1] = 0.050;
329 cut_d0vtx[0] = 0.020;
330 cut_d0vtx[1] = 0.020;
331 cut_dzvtx[0] = 0.200;
332 cut_dzvtx[1] = 0.200;
333 cut_vtxFit[0] =
true;
334 cut_vtxFit[1] =
true;
345 cut_dEtaIn[0] = 0.004;
346 cut_dEtaIn[1] = 0.007;
347 cut_dPhiIn[0] = 0.060;
348 cut_dPhiIn[1] = 0.030;
349 cut_sigmaIEtaIEta[0] = 0.010;
350 cut_sigmaIEtaIEta[1] = 0.030;
353 cut_ooemoop[0] = 0.050;
354 cut_ooemoop[1] = 0.050;
355 cut_d0vtx[0] = 0.020;
356 cut_d0vtx[1] = 0.020;
357 cut_dzvtx[0] = 0.100;
358 cut_dzvtx[1] = 0.100;
359 cut_vtxFit[0] =
true;
360 cut_vtxFit[1] =
true;
371 cut_dEtaIn[0] = 0.004;
372 cut_dEtaIn[1] = 0.005;
373 cut_dPhiIn[0] = 0.030;
374 cut_dPhiIn[1] = 0.020;
375 cut_sigmaIEtaIEta[0] = 0.010;
376 cut_sigmaIEtaIEta[1] = 0.030;
379 cut_ooemoop[0] = 0.050;
380 cut_ooemoop[1] = 0.050;
381 cut_d0vtx[0] = 0.020;
382 cut_d0vtx[1] = 0.020;
383 cut_dzvtx[0] = 0.100;
384 cut_dzvtx[1] = 0.100;
385 cut_vtxFit[0] =
true;
386 cut_vtxFit[1] =
true;
397 std::cout <<
"[EgammaCutBasedEleId::TestWP] Undefined working point" << std::endl;
401 unsigned int idx = isEB ? 0 : 1;
409 double rhoPrime =
std::max(rho, 0.0);
410 double iso_n =
std::max(iso_nh + iso_em - rhoPrime * AEff, 0.0);
413 double iso = (iso_n + iso_ch) / pt;
416 if (fabs(dEtaIn) < cut_dEtaIn[
idx])
418 if (fabs(dPhiIn) < cut_dPhiIn[
idx])
420 if (sigmaIEtaIEta < cut_sigmaIEtaIEta[idx])
422 if (hoe < cut_hoe[idx])
424 if (fabs(ooemoop) < cut_ooemoop[
idx])
426 if (fabs(d0vtx) < cut_d0vtx[
idx])
428 if (fabs(dzvtx) < cut_dzvtx[
idx])
430 if (!cut_vtxFit[idx] || !vtxFitConversion)
432 if (mHits <= cut_mHits[idx])
434 if (iso < cut_iso[idx])
442 printf(
"detain(%i), ",
bool(mask &
DETAIN));
443 printf(
"dphiin(%i), ",
bool(mask &
DPHIIN));
445 printf(
"hoe(%i), ",
bool(mask &
HOE));
446 printf(
"ooemoop(%i), ",
bool(mask &
OOEMOOP));
447 printf(
"d0vtx(%i), ",
bool(mask &
D0VTX));
448 printf(
"dzvtx(%i), ",
bool(mask &
DZVTX));
449 printf(
"iso(%i), ",
bool(mask &
ISO));
450 printf(
"vtxfit(%i), ",
bool(mask &
VTXFIT));
451 printf(
"mhits(%i)\n",
bool(mask &
MHITS));
GsfTrackRef gsfTrack() const override
reference to a GsfTrack
float eSuperClusterOverP() const
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)
void PrintDebug(unsigned int mask)
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)
static Double_t GetElectronEffectiveArea(ElectronEffectiveAreaType type, Double_t SCEta, ElectronEffectiveAreaTarget EffectiveAreaTarget=kEleEAData2011)
double pt() const final
transverse momentum
ElectronEffectiveAreaTarget
float deltaEtaSuperClusterTrackAtVtx() const
float sigmaIetaIeta() const
float hadronicOverEm() const
bool PassTriggerCuts(const TriggerWorkingPoint triggerWorkingPoint, const reco::GsfElectronRef &ele)
float deltaPhiSuperClusterTrackAtVtx() const
bool PassEoverPCuts(const reco::GsfElectronRef &ele)
float dr03TkSumPt() const
static const unsigned int PassAll
float dr03EcalRecHitSumEt() const
SuperClusterRef superCluster() const override
reference to a SuperCluster
float dr03HcalTowerSumEt() const
const Point & position() const
position