ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitHzz4l/LeptonSelection/src/IsolationSelection.cc
(Generate patch)

Comparing UserCode/MitHzz4l/LeptonSelection/src/IsolationSelection.cc (file contents):
Revision 1.6 by khahn, Thu Apr 26 07:15:08 2012 UTC vs.
Revision 1.7 by khahn, Mon Apr 30 21:42:16 2012 UTC

# Line 257 | Line 257 | SelectionStatus muonIsoMVASelection(Cont
257   //--------------------------------------------------------------------------------------------------
258   {
259  
260 +  if( ctrl.debug ) {
261 +    cout << "muonIsoMVASelection :: muons to veto " << endl;
262 +    for( int i=0; i<muonsToVeto.size(); i++ ) {
263 +      const mithep::Muon * vmu = muonsToVeto[i];
264 +      cout << "\tpt: " << vmu->Pt()
265 +           << "\teta: " << vmu->Eta()
266 +           << "\tphi: " << vmu->Phi()
267 +           << endl;
268 +    }
269 +    cout << "muonIsoMVASelection :: electrson to veto " << endl;
270 +    for( int i=0; i<electronsToVeto.size(); i++ ) {
271 +      const mithep::Electron * vel = electronsToVeto[i];
272 +      cout << "\tpt: " << vel->Pt()
273 +           << "\teta: " << vel->Eta()
274 +           << "\tphi: " << vel->Phi()
275 +           << endl;
276 +    }
277 +  }
278    bool failiso=false;
279  
280    //
281    // tmp iso rings
282    //
283 <  Double_t tmpChargedIso_DR0p0To0p05  = 0;
284 <  Double_t tmpChargedIso_DR0p05To0p1  = 0;
285 <  Double_t tmpChargedIso_DR0p1To0p15  = 0;
268 <  Double_t tmpChargedIso_DR0p15To0p2  = 0;
269 <  Double_t tmpChargedIso_DR0p2To0p25  = 0;
270 <  Double_t tmpChargedIso_DR0p25To0p3  = 0;
283 >  Double_t tmpChargedIso_DR0p0To0p1  = 0;
284 >  Double_t tmpChargedIso_DR0p1To0p2  = 0;
285 >  Double_t tmpChargedIso_DR0p2To0p3  = 0;
286    Double_t tmpChargedIso_DR0p3To0p4  = 0;
287    Double_t tmpChargedIso_DR0p4To0p5  = 0;
288 +  Double_t tmpChargedIso_DR0p5To0p7  = 0;
289  
290 <  Double_t tmpGammaIso_DR0p0To0p05  = 0;
291 <  Double_t tmpGammaIso_DR0p05To0p1  = 0;
292 <  Double_t tmpGammaIso_DR0p1To0p15  = 0;
277 <  Double_t tmpGammaIso_DR0p15To0p2  = 0;
278 <  Double_t tmpGammaIso_DR0p2To0p25  = 0;
279 <  Double_t tmpGammaIso_DR0p25To0p3  = 0;
290 >  Double_t tmpGammaIso_DR0p0To0p1  = 0;
291 >  Double_t tmpGammaIso_DR0p1To0p2  = 0;
292 >  Double_t tmpGammaIso_DR0p2To0p3  = 0;
293    Double_t tmpGammaIso_DR0p3To0p4  = 0;
294    Double_t tmpGammaIso_DR0p4To0p5  = 0;
295 +  Double_t tmpGammaIso_DR0p5To0p7  = 0;
296  
297 <  Double_t tmpNeutralHadronIso_DR0p0To0p05  = 0;
298 <  Double_t tmpNeutralHadronIso_DR0p05To0p1  = 0;
299 <  Double_t tmpNeutralHadronIso_DR0p1To0p15  = 0;
286 <  Double_t tmpNeutralHadronIso_DR0p15To0p2  = 0;
287 <  Double_t tmpNeutralHadronIso_DR0p2To0p25  = 0;
288 <  Double_t tmpNeutralHadronIso_DR0p25To0p3  = 0;
297 >  Double_t tmpNeutralHadronIso_DR0p0To0p1  = 0;
298 >  Double_t tmpNeutralHadronIso_DR0p1To0p2  = 0;
299 >  Double_t tmpNeutralHadronIso_DR0p2To0p3  = 0;
300    Double_t tmpNeutralHadronIso_DR0p3To0p4  = 0;
301    Double_t tmpNeutralHadronIso_DR0p4To0p5  = 0;
302 +  Double_t tmpNeutralHadronIso_DR0p5To0p7  = 0;
303 +
304          
292  Double_t tmp2ChargedIso_DR0p5To1p0  = 0;
305  
306    //
307    // final rings for the MVA
# Line 299 | Line 311 | SelectionStatus muonIsoMVASelection(Cont
311    Double_t fChargedIso_DR0p2To0p3;
312    Double_t fChargedIso_DR0p3To0p4;
313    Double_t fChargedIso_DR0p4To0p5;
314 +  Double_t fChargedIso_DR0p5To0p7;
315  
316    Double_t fGammaIso_DR0p0To0p1;
317    Double_t fGammaIso_DR0p1To0p2;
318    Double_t fGammaIso_DR0p2To0p3;
319    Double_t fGammaIso_DR0p3To0p4;
320    Double_t fGammaIso_DR0p4To0p5;
321 +  Double_t fGammaIso_DR0p5To0p7;
322  
323    Double_t fNeutralHadronIso_DR0p0To0p1;
324    Double_t fNeutralHadronIso_DR0p1To0p2;
325    Double_t fNeutralHadronIso_DR0p2To0p3;
326    Double_t fNeutralHadronIso_DR0p3To0p4;
327    Double_t fNeutralHadronIso_DR0p4To0p5;
328 +  Double_t fNeutralHadronIso_DR0p5To0p7;
329  
330  
331    //
# Line 324 | Line 339 | SelectionStatus muonIsoMVASelection(Cont
339      Double_t dr = mithep::MathUtils::DeltaR(mu->Phi(),mu->Eta(), pf->Phi(), pf->Eta());
340      if (dr > 1.0) continue;
341  
342 <    if (pf->PFType() == PFCandidate::eMuon && pf->TrackerTrk() == mu->TrackerTrk() ) continue;
342 >    if (pf->HasTrackerTrk() && (pf->TrackerTrk() == mu->TrackerTrk()) ) continue;
343  
344      //
345      // Lepton Footprint Removal
# Line 337 | Line 352 | SelectionStatus muonIsoMVASelection(Cont
352        //
353        for (Int_t q=0; q < electronsToVeto.size(); ++q) {
354          const mithep::Electron *tmpele = electronsToVeto[q];
355 <        // PF electron
356 <        if( pf->PFType() == PFCandidate::eElectron && pf->TrackerTrk() == tmpele->TrackerTrk() )
357 <          IsLeptonFootprint = kTRUE;
355 >        // 4l electron
356 >        if( pf->HasTrackerTrk() ) {
357 >          if( pf->TrackerTrk() == tmpele->TrackerTrk() )
358 >            IsLeptonFootprint = kTRUE;
359 >        }
360 >        if( pf->HasGsfTrk() ) {
361 >          if( pf->GsfTrk() == tmpele->GsfTrk() )
362 >            IsLeptonFootprint = kTRUE;
363 >        }
364          // PF charged
365          if (pf->Charge() != 0 && fabs(tmpele->SCluster()->Eta()) > 1.479
366              && mithep::MathUtils::DeltaR(tmpele->Phi(),tmpele->Eta(), pf->Phi(), pf->Eta()) < 0.015)
367            IsLeptonFootprint = kTRUE;
368          // PF gamma
369 <        if (pf->PFType() == PFCandidate::eGamma && fabs(tmpele->SCluster()->Eta()) > 1.479
369 >        if (abs(pf->PFType()) == PFCandidate::eGamma && fabs(tmpele->SCluster()->Eta()) > 1.479
370              && mithep::MathUtils::DeltaR(tmpele->Phi(),tmpele->Eta(), pf->Phi(), pf->Eta()) < 0.08)
371            IsLeptonFootprint = kTRUE;
372        } // loop over electrons
# Line 355 | Line 376 | SelectionStatus muonIsoMVASelection(Cont
376        //
377        for (Int_t q=0; q < muonsToVeto.size(); ++q) {
378          const mithep::Muon *tmpmu = muonsToVeto[q];
379 <        // PF muons
380 <        if (pf->PFType() == PFCandidate::eMuon && pf->TrackerTrk() == tmpmu->TrackerTrk() )
381 <          IsLeptonFootprint = kTRUE;
379 >        // 4l muon
380 >        if( pf->HasTrackerTrk() ) {
381 >          if( pf->TrackerTrk() == tmpmu->TrackerTrk() )
382 >            IsLeptonFootprint = kTRUE;
383 >        }
384          // PF charged
385          if (pf->Charge() != 0 && mithep::MathUtils::DeltaR(tmpmu->Phi(),tmpmu->Eta(), pf->Phi(), pf->Eta()) < 0.01)
386            IsLeptonFootprint = kTRUE;
# Line 370 | Line 393 | SelectionStatus muonIsoMVASelection(Cont
393      //
394      // Charged Iso Rings
395      //
396 <    if (pf->Charge() != 0 && pf->HasTrackerTrk() ) {
396 >    if (pf->Charge() != 0 && (pf->HasTrackerTrk()||pf->HasGsfTrk()) ) {
397  
398 <      if (abs(pf->TrackerTrk()->DzCorrected(vtx)) > 0.2) continue;
399 <                
377 <      // Veto any PFmuon, or PFEle
378 <      if (pf->PFType() == PFCandidate::eElectron || pf->PFType() == PFCandidate::eMuon) continue;
398 >      if( dr < 0.01 ) continue; // only for muon iso mva?
399 >      if (abs(pf->PFType()) == PFCandidate::eElectron || abs(pf->PFType()) == PFCandidate::eMuon) continue;
400  
401 <      // Footprint Veto
402 <      if (dr < 0.01) continue;
401 >      if( pf->HasTrackerTrk() ) {
402 >        if (abs(pf->TrackerTrk()->DzCorrected(vtx)) > 0.2) continue;
403 >        if( ctrl.debug ) cout << "charged:: " << pf->PFType() << " " << pf->Pt() << " "
404 >                              << abs(pf->TrackerTrk()->DzCorrected(vtx)) << " "
405 >                              << dr << endl;
406 >      }
407 >      if( pf->HasGsfTrk() ) {
408 >        if (abs(pf->GsfTrk()->DzCorrected(vtx)) > 0.2) continue;
409 >        if( ctrl.debug ) cout << "charged:: " << pf->PFType() << " " << pf->Pt() << " "
410 >                              << abs(pf->GsfTrk()->DzCorrected(vtx)) << " "
411 >                              << dr << endl;
412 >      }
413  
414 <      if (dr < 0.05)               tmpChargedIso_DR0p0To0p05 += pf->Pt();
415 <      if (dr >= 0.05 && dr < 0.10) tmpChargedIso_DR0p05To0p1 += pf->Pt();
416 <      if (dr >= 0.10 && dr < 0.15) tmpChargedIso_DR0p1To0p15 += pf->Pt();
417 <      if (dr >= 0.15 && dr < 0.20) tmpChargedIso_DR0p15To0p2 += pf->Pt();
418 <      if (dr >= 0.20 && dr < 0.25) tmpChargedIso_DR0p2To0p25 += pf->Pt();
419 <      if (dr >= 0.25 && dr < 0.3)  tmpChargedIso_DR0p25To0p3 += pf->Pt();
420 <      if (dr >= 0.3 && dr < 0.4)   tmpChargedIso_DR0p3To0p4  += pf->Pt();
390 <      if (dr >= 0.4 && dr < 0.5)   tmpChargedIso_DR0p4To0p5  += pf->Pt();
414 >      // Footprint Veto
415 >      if (dr < 0.1) tmpChargedIso_DR0p0To0p1 += pf->Pt();
416 >      if (dr >= 0.1 && dr < 0.2) tmpChargedIso_DR0p1To0p2 += pf->Pt();
417 >      if (dr >= 0.2 && dr < 0.3) tmpChargedIso_DR0p2To0p3 += pf->Pt();
418 >      if (dr >= 0.3 && dr < 0.4) tmpChargedIso_DR0p3To0p4 += pf->Pt();
419 >      if (dr >= 0.4 && dr < 0.5) tmpChargedIso_DR0p4To0p5 += pf->Pt();
420 >      if (dr >= 0.5 && dr < 0.7) tmpChargedIso_DR0p5To0p7 += pf->Pt();
421      }
422  
423      //
424      // Gamma Iso Rings
425      //
426 <    else if (pf->PFType() == PFCandidate::eGamma) {
427 <
428 <      if (dr < 0.05)               tmpGammaIso_DR0p0To0p05 += pf->Pt();
429 <      if (dr >= 0.05 && dr < 0.10) tmpGammaIso_DR0p05To0p1 += pf->Pt();
430 <      if (dr >= 0.10 && dr < 0.15) tmpGammaIso_DR0p1To0p15 += pf->Pt();
431 <      if (dr >= 0.15 && dr < 0.20) tmpGammaIso_DR0p15To0p2 += pf->Pt();
432 <      if (dr >= 0.20 && dr < 0.25) tmpGammaIso_DR0p2To0p25 += pf->Pt();
403 <      if (dr >= 0.25 && dr < 0.3)  tmpGammaIso_DR0p25To0p3 += pf->Pt();
404 <      if (dr >= 0.3 && dr < 0.4)   tmpGammaIso_DR0p3To0p4  += pf->Pt();
405 <      if (dr >= 0.4 && dr < 0.5)   tmpGammaIso_DR0p4To0p5  += pf->Pt();
426 >    else if (abs(pf->PFType()) == PFCandidate::eGamma) {
427 >      if (dr < 0.1) tmpGammaIso_DR0p0To0p1 += pf->Pt();
428 >      if (dr >= 0.1 && dr < 0.2) tmpGammaIso_DR0p1To0p2 += pf->Pt();
429 >      if (dr >= 0.2 && dr < 0.3) tmpGammaIso_DR0p2To0p3 += pf->Pt();
430 >      if (dr >= 0.3 && dr < 0.4) tmpGammaIso_DR0p3To0p4 += pf->Pt();
431 >      if (dr >= 0.4 && dr < 0.5) tmpGammaIso_DR0p4To0p5 += pf->Pt();
432 >      if (dr >= 0.5 && dr < 0.7) tmpGammaIso_DR0p5To0p7 += pf->Pt();
433      }
434  
435      //
436      // Other Neutral Iso Rings
437      //
438      else {
439 <      if (dr < 0.05)               tmpNeutralHadronIso_DR0p0To0p05 += pf->Pt();
440 <      if (dr >= 0.05 && dr < 0.10) tmpNeutralHadronIso_DR0p05To0p1 += pf->Pt();
441 <      if (dr >= 0.10 && dr < 0.15) tmpNeutralHadronIso_DR0p1To0p15 += pf->Pt();
442 <      if (dr >= 0.15 && dr < 0.20) tmpNeutralHadronIso_DR0p15To0p2 += pf->Pt();
443 <      if (dr >= 0.20 && dr < 0.25) tmpNeutralHadronIso_DR0p2To0p25 += pf->Pt();
444 <      if (dr >= 0.25 && dr < 0.3)  tmpNeutralHadronIso_DR0p25To0p3 += pf->Pt();
418 <      if (dr >= 0.3 && dr < 0.4)   tmpNeutralHadronIso_DR0p3To0p4  += pf->Pt();
419 <      if (dr >= 0.4 && dr < 0.5)   tmpNeutralHadronIso_DR0p4To0p5  += pf->Pt();
439 >      if (dr < 0.1) tmpNeutralHadronIso_DR0p0To0p1 += pf->Pt();
440 >      if (dr >= 0.1 && dr < 0.2) tmpNeutralHadronIso_DR0p1To0p2 += pf->Pt();
441 >      if (dr >= 0.2 && dr < 0.3) tmpNeutralHadronIso_DR0p2To0p3 += pf->Pt();
442 >      if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += pf->Pt();
443 >      if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += pf->Pt();
444 >      if (dr >= 0.5 && dr < 0.7) tmpNeutralHadronIso_DR0p5To0p7 += pf->Pt();
445      }
446  
447      }
448  
449    }
450  
451 <  fChargedIso_DR0p0To0p1   = min((tmpChargedIso_DR0p0To0p05 + tmpChargedIso_DR0p05To0p1 )/mu->Pt(), 2.5);
452 <  fChargedIso_DR0p1To0p2   = min((tmpChargedIso_DR0p1To0p15 + tmpChargedIso_DR0p15To0p2)/mu->Pt(), 2.5);
453 <  fChargedIso_DR0p2To0p3   = min((tmpChargedIso_DR0p2To0p25 + tmpChargedIso_DR0p25To0p3)/mu->Pt(), 2.5);
451 >  fChargedIso_DR0p0To0p1   = min((tmpChargedIso_DR0p0To0p1)/mu->Pt(), 2.5);
452 >  fChargedIso_DR0p1To0p2   = min((tmpChargedIso_DR0p1To0p2)/mu->Pt(), 2.5);
453 >  fChargedIso_DR0p2To0p3   = min((tmpChargedIso_DR0p2To0p3)/mu->Pt(), 2.5);
454    fChargedIso_DR0p3To0p4   = min((tmpChargedIso_DR0p3To0p4)/mu->Pt(), 2.5);
455    fChargedIso_DR0p4To0p5   = min((tmpChargedIso_DR0p4To0p5)/mu->Pt(), 2.5);
456  
457 +
458    double rho = 0;
459    if (!(isnan(fPUEnergyDensity->At(0)->Rho()) || isinf(fPUEnergyDensity->At(0)->Rho())))
460      rho = fPUEnergyDensity->At(0)->Rho();
461    
462  
463 <  fGammaIso_DR0p0To0p1 = max(min((tmpGammaIso_DR0p0To0p05 + tmpGammaIso_DR0p05To0p1
463 >  fGammaIso_DR0p0To0p1 = max(min((tmpGammaIso_DR0p0To0p1
464                                    -rho*muT.MuonEffectiveArea(muT.kMuGammaIsoDR0p0To0p1,mu->Eta(),EffectiveAreaVersion))/mu->Pt()
465                                   ,2.5)
466                               ,0.0);
467 <  fGammaIso_DR0p1To0p2 = max(min((tmpGammaIso_DR0p1To0p15 + tmpGammaIso_DR0p15To0p2
467 >  fGammaIso_DR0p1To0p2 = max(min((tmpGammaIso_DR0p1To0p2
468                                    -rho*muT.MuonEffectiveArea(muT.kMuGammaIsoDR0p1To0p2,mu->Eta(),EffectiveAreaVersion))/mu->Pt()
469                                   ,2.5)
470                               ,0.0);
471 <  fGammaIso_DR0p2To0p3 = max(min((tmpGammaIso_DR0p2To0p25 + tmpGammaIso_DR0p25To0p3
471 >  fGammaIso_DR0p2To0p3 = max(min((tmpGammaIso_DR0p2To0p3
472                                    -rho*muT.MuonEffectiveArea(muT.kMuGammaIsoDR0p2To0p3,mu->Eta(),EffectiveAreaVersion))/mu->Pt()
473                                   ,2.5)
474                               ,0.0);
# Line 456 | Line 482 | SelectionStatus muonIsoMVASelection(Cont
482                               ,0.0);
483  
484  
485 <  fNeutralHadronIso_DR0p0To0p1 = max(min((tmpNeutralHadronIso_DR0p0To0p05 + tmpNeutralHadronIso_DR0p05To0p1
485 >
486 >  fNeutralHadronIso_DR0p0To0p1 = max(min((tmpNeutralHadronIso_DR0p0To0p1
487                                            -rho*muT.MuonEffectiveArea(muT.kMuNeutralHadronIsoDR0p0To0p1,
488                                                                   mu->Eta(),EffectiveAreaVersion))/mu->Pt()
489                                           , 2.5)
490                                       , 0.0);
491 <  fNeutralHadronIso_DR0p1To0p2 = max(min((tmpNeutralHadronIso_DR0p1To0p15 + tmpNeutralHadronIso_DR0p15To0p2
491 >  fNeutralHadronIso_DR0p1To0p2 = max(min((tmpNeutralHadronIso_DR0p1To0p2
492                                              -rho*muT.MuonEffectiveArea(muT.kMuNeutralHadronIsoDR0p1To0p2,
493                                                                     mu->Eta(),EffectiveAreaVersion))/mu->Pt()
494                                             , 2.5)
495                                         , 0.0);
496 <  fNeutralHadronIso_DR0p2To0p3 = max(min((tmpNeutralHadronIso_DR0p2To0p25 + tmpNeutralHadronIso_DR0p25To0p3
496 >  fNeutralHadronIso_DR0p2To0p3 = max(min((tmpNeutralHadronIso_DR0p2To0p3
497                                            -rho*muT.MuonEffectiveArea(muT.kMuNeutralHadronIsoDR0p2To0p3,
498                                                                   mu->Eta(),EffectiveAreaVersion))/mu->Pt()
499                                           , 2.5)
# Line 482 | Line 509 | SelectionStatus muonIsoMVASelection(Cont
509                                           , 2.5)
510                                       , 0.0);
511  
512 +
513    double mvaval = muIsoMVA->MVAValue_IsoRings( mu->Pt(),
514                                               mu->Eta(),
515                                               fChargedIso_DR0p0To0p1,
# Line 505 | Line 533 | SelectionStatus muonIsoMVASelection(Cont
533    bool pass = false;
534  
535    if( mu->IsGlobalMuon() && mu->IsTrackerMuon()
536 <      && fabs(mu->Eta()) < 1.5 && mu->Pt() < 10 && mvaval >= MUON_ISOMVA_CUT_BIN0)  pass = true;
536 >      && fabs(mu->Eta()) <= 1.5 && mu->Pt() <= 10 && mvaval >= MUON_ISOMVA_CUT_BIN0)   pass = true;
537    else if( mu->IsGlobalMuon() && mu->IsTrackerMuon()
538 <           && fabs(mu->Eta()) < 1.5 && mu->Pt() > 10 && mvaval >= MUON_ISOMVA_CUT_BIN1)  pass = true;
538 >           && fabs(mu->Eta()) <= 1.5 && mu->Pt() > 10 && mvaval >= MUON_ISOMVA_CUT_BIN1)  pass = true;
539    else if( mu->IsGlobalMuon() && mu->IsTrackerMuon()
540 <           && fabs(mu->Eta()) > 1.5 && mu->Pt() < 10 && mvaval >= MUON_ISOMVA_CUT_BIN2)  pass = true;
540 >           && fabs(mu->Eta()) > 1.5 && mu->Pt() <= 10 && mvaval >= MUON_ISOMVA_CUT_BIN2)  pass = true;
541    else if( mu->IsGlobalMuon() && mu->IsTrackerMuon()
542             && fabs(mu->Eta()) > 1.5 && mu->Pt() > 10 && mvaval >= MUON_ISOMVA_CUT_BIN3)  pass = true;
543    else if( !(mu->IsGlobalMuon()) && mu->IsTrackerMuon()
544 <           && (mu->Quality().QualityMask().Mask() & mithep::MuonQuality::AllArbitrated) && mvaval >= MUON_ISOMVA_CUT_BIN4)
544 >            && mvaval >= MUON_ISOMVA_CUT_BIN4)
545      pass = true;
546  
547  
548 +  pass &= (fChargedIso_DR0p0To0p1 + fChargedIso_DR0p1To0p2 + fChargedIso_DR0p2To0p3 < 0.7);
549 +
550    if( pass ) {
551      status.orStatus(SelectionStatus::LOOSEISO);
552      status.orStatus(SelectionStatus::TIGHTISO);
# Line 556 | Line 586 | SelectionStatus electronIsoMVASelection(
586   //--------------------------------------------------------------------------------------------------
587   {
588  
589 +  if( ctrl.debug ) {
590 +    cout << "electronIsoMVASelection :: muons to veto " << endl;
591 +    for( int i=0; i<muonsToVeto.size(); i++ ) {
592 +      const mithep::Muon * vmu = muonsToVeto[i];
593 +      cout << "\tpt: " << vmu->Pt()
594 +           << "\teta: " << vmu->Eta()
595 +           << "\tphi: " << vmu->Phi()
596 +           << endl;
597 +    }
598 +    cout << "electronIsoMVASelection :: electrson to veto " << endl;
599 +    for( int i=0; i<electronsToVeto.size(); i++ ) {
600 +      const mithep::Electron * vel = electronsToVeto[i];
601 +      cout << "\tpt: " << vel->Pt()
602 +           << "\teta: " << vel->Eta()
603 +           << "\tphi: " << vel->Phi()
604 +           << "\ttrk: " << vel->TrackerTrk()
605 +           << endl;
606 +    }
607 +  }
608 +
609    bool failiso=false;
610  
611    //
612    // tmp iso rings
613    //
614 <  Double_t tmpChargedIso_DR0p0To0p05  = 0;
615 <  Double_t tmpChargedIso_DR0p05To0p1  = 0;
616 <  Double_t tmpChargedIso_DR0p1To0p15  = 0;
567 <  Double_t tmpChargedIso_DR0p15To0p2  = 0;
568 <  Double_t tmpChargedIso_DR0p2To0p25  = 0;
569 <  Double_t tmpChargedIso_DR0p25To0p3  = 0;
614 >  Double_t tmpChargedIso_DR0p0To0p1  = 0;
615 >  Double_t tmpChargedIso_DR0p1To0p2  = 0;
616 >  Double_t tmpChargedIso_DR0p2To0p3  = 0;
617    Double_t tmpChargedIso_DR0p3To0p4  = 0;
618    Double_t tmpChargedIso_DR0p4To0p5  = 0;
619 +  Double_t tmpChargedIso_DR0p5To0p7  = 0;
620  
621 <  Double_t tmpGammaIso_DR0p0To0p05  = 0;
622 <  Double_t tmpGammaIso_DR0p05To0p1  = 0;
623 <  Double_t tmpGammaIso_DR0p1To0p15  = 0;
576 <  Double_t tmpGammaIso_DR0p15To0p2  = 0;
577 <  Double_t tmpGammaIso_DR0p2To0p25  = 0;
578 <  Double_t tmpGammaIso_DR0p25To0p3  = 0;
621 >  Double_t tmpGammaIso_DR0p0To0p1  = 0;
622 >  Double_t tmpGammaIso_DR0p1To0p2  = 0;
623 >  Double_t tmpGammaIso_DR0p2To0p3  = 0;
624    Double_t tmpGammaIso_DR0p3To0p4  = 0;
625    Double_t tmpGammaIso_DR0p4To0p5  = 0;
626 +  Double_t tmpGammaIso_DR0p5To0p7  = 0;
627  
628 <  Double_t tmpNeutralHadronIso_DR0p0To0p05  = 0;
629 <  Double_t tmpNeutralHadronIso_DR0p05To0p1  = 0;
630 <  Double_t tmpNeutralHadronIso_DR0p1To0p15  = 0;
585 <  Double_t tmpNeutralHadronIso_DR0p15To0p2  = 0;
586 <  Double_t tmpNeutralHadronIso_DR0p2To0p25  = 0;
587 <  Double_t tmpNeutralHadronIso_DR0p25To0p3  = 0;
628 >  Double_t tmpNeutralHadronIso_DR0p0To0p1  = 0;
629 >  Double_t tmpNeutralHadronIso_DR0p1To0p2  = 0;
630 >  Double_t tmpNeutralHadronIso_DR0p2To0p3  = 0;
631    Double_t tmpNeutralHadronIso_DR0p3To0p4  = 0;
632    Double_t tmpNeutralHadronIso_DR0p4To0p5  = 0;
633 +  Double_t tmpNeutralHadronIso_DR0p5To0p7  = 0;
634 +
635          
591  Double_t tmp2ChargedIso_DR0p5To1p0  = 0;
636  
637    //
638    // final rings for the MVA
# Line 617 | Line 661 | SelectionStatus electronIsoMVASelection(
661    //
662    for(int k=0; k<fPFCandidates->GetEntries(); ++k) {
663      const mithep::PFCandidate *pf = (mithep::PFCandidate*)((*fPFCandidates)[k]);
620
664      Double_t deta = (ele->Eta() - pf->Eta());
665      Double_t dphi = mithep::MathUtils::DeltaPhi(Double_t(ele->Phi()),Double_t(pf->Phi()));
666      Double_t dr = mithep::MathUtils::DeltaR(ele->Phi(),ele->Eta(), pf->Phi(), pf->Eta());
667 <    if (dr > 1.0) continue;
667 >    if (dr >= 0.5) continue;
668 >    if(ctrl.debug) {
669 >      cout << "pf :: type: " << pf->PFType() << "\tpt: " << pf->Pt();
670 >      if( pf->HasTrackerTrk() ) cout << "\tdZ: " << pf->TrackerTrk()->DzCorrected(vtx);
671 >      cout << endl;
672 >    }
673 >
674  
675 <    if (pf->PFType() == PFCandidate::eElectron && pf->TrackerTrk() == ele->TrackerTrk() ) continue;
675 >    if ( (pf->HasTrackerTrk() && (pf->TrackerTrk() == ele->TrackerTrk())) ||
676 >         (pf->HasGsfTrk() && (pf->GsfTrk() == ele->GsfTrk()))) continue;
677 >    
678  
679      //
680      // Lepton Footprint Removal
# Line 636 | Line 687 | SelectionStatus electronIsoMVASelection(
687        //
688        for (Int_t q=0; q < electronsToVeto.size(); ++q) {
689          const mithep::Electron *tmpele = electronsToVeto[q];
690 <        // PF electron
691 <        if( pf->PFType() == PFCandidate::eElectron && pf->TrackerTrk() == tmpele->TrackerTrk() )
692 <          IsLeptonFootprint = kTRUE;
690 >        // 4l electron
691 >        if( pf->HasTrackerTrk()  ) {
692 >          if( pf->TrackerTrk() == tmpele->TrackerTrk() ) {
693 >            if( ctrl.debug) cout << "\tcharged tktrk, matches 4L ele ..." << endl;
694 >            IsLeptonFootprint = kTRUE;
695 >          }
696 >        }
697 >        if( pf->HasGsfTrk()  ) {
698 >          if( pf->GsfTrk() == tmpele->GsfTrk() ) {
699 >            if( ctrl.debug) cout << "\tcharged gsftrk, matches 4L ele ..." << endl;
700 >            IsLeptonFootprint = kTRUE;
701 >          }
702 >        }
703          // PF charged
704          if (pf->Charge() != 0 && fabs(tmpele->SCluster()->Eta()) > 1.479
705 <            && mithep::MathUtils::DeltaR(tmpele->Phi(),tmpele->Eta(), pf->Phi(), pf->Eta()) < 0.015)
705 >            && mithep::MathUtils::DeltaR(tmpele->Phi(),tmpele->Eta(), pf->Phi(), pf->Eta()) < 0.015) {
706 >          if( ctrl.debug) cout << "\tcharged trk, dR matches 4L ele ..." << endl;
707            IsLeptonFootprint = kTRUE;
708 +        }
709          // PF gamma
710 <        if (pf->PFType() == PFCandidate::eGamma && fabs(tmpele->SCluster()->Eta()) > 1.479
711 <            && mithep::MathUtils::DeltaR(tmpele->Phi(),tmpele->Eta(), pf->Phi(), pf->Eta()) < 0.08)
710 >        if (abs(pf->PFType()) == PFCandidate::eGamma && fabs(tmpele->SCluster()->Eta()) > 1.479
711 >            && mithep::MathUtils::DeltaR(tmpele->Phi(),tmpele->Eta(), pf->Phi(), pf->Eta()) < 0.08) {
712 >          if( ctrl.debug) cout << "\tPF gamma, matches 4L ele ..." << endl;
713            IsLeptonFootprint = kTRUE;
714 +        }
715        } // loop over electrons
716        
717        //
# Line 654 | Line 719 | SelectionStatus electronIsoMVASelection(
719        //
720        for (Int_t q=0; q < muonsToVeto.size(); ++q) {
721          const mithep::Muon *tmpmu = muonsToVeto[q];
722 <        // PF muons
723 <        if (pf->PFType() == PFCandidate::eMuon && pf->TrackerTrk() == tmpmu->TrackerTrk() )
724 <          IsLeptonFootprint = kTRUE;
722 >        // 4l muon
723 >        if( pf->HasTrackerTrk() ) {
724 >          if (pf->TrackerTrk() == tmpmu->TrackerTrk() ){
725 >            if( ctrl.debug) cout << "\tmatches 4L mu ..." << endl;
726 >            IsLeptonFootprint = kTRUE;
727 >          }
728 >        }
729          // PF charged
730 <        if (pf->Charge() != 0 && mithep::MathUtils::DeltaR(tmpmu->Phi(),tmpmu->Eta(), pf->Phi(), pf->Eta()) < 0.01)
730 >        if (pf->Charge() != 0 && mithep::MathUtils::DeltaR(tmpmu->Phi(),tmpmu->Eta(), pf->Phi(), pf->Eta()) < 0.01) {
731 >          if( ctrl.debug) cout << "\tcharged trk, dR matches 4L mu ..." << endl;
732            IsLeptonFootprint = kTRUE;
733 +        }
734        } // loop over muons
735  
736  
# Line 669 | Line 740 | SelectionStatus electronIsoMVASelection(
740      //
741      // Charged Iso Rings
742      //
743 <    if (pf->Charge() != 0 && pf->HasTrackerTrk() ) {
743 >    if (pf->Charge() != 0 && (pf->HasTrackerTrk()||pf->HasGsfTrk()) ) {
744 >
745 >      if( pf->HasTrackerTrk() )
746 >        if (abs(pf->TrackerTrk()->DzCorrected(vtx)) > 0.2) continue;
747 >      if( pf->HasGsfTrk() )
748 >        if (abs(pf->GsfTrk()->DzCorrected(vtx)) > 0.2) continue;
749  
674      if (abs(pf->TrackerTrk()->DzCorrected(vtx)) > 0.2) continue;
675                
750        // Veto any PFmuon, or PFEle
751 <      if (pf->PFType() == PFCandidate::eElectron || pf->PFType() == PFCandidate::eMuon) continue;
751 >      if (abs(pf->PFType()) == PFCandidate::eElectron || abs(pf->PFType()) == PFCandidate::eMuon) continue;
752  
753        // Footprint Veto
754 <      if (dr < 0.01) continue;
754 >      if (fabs(ele->SCluster()->Eta()) > 1.479 && dr < 0.015) continue;
755 >
756 >      if( ctrl.debug) cout << "charged:: pt: " << pf->Pt()
757 >                           << "\ttype: " << pf->PFType()
758 >                           << "\ttrk: " << pf->TrackerTrk() << endl;
759 >
760 >      if (dr < 0.1) tmpChargedIso_DR0p0To0p1 += pf->Pt();
761 >      if (dr >= 0.1 && dr < 0.2) tmpChargedIso_DR0p1To0p2 += pf->Pt();
762 >      if (dr >= 0.2 && dr < 0.3) tmpChargedIso_DR0p2To0p3 += pf->Pt();
763 >      if (dr >= 0.3 && dr < 0.4) tmpChargedIso_DR0p3To0p4 += pf->Pt();
764 >      if (dr >= 0.4 && dr < 0.5) tmpChargedIso_DR0p4To0p5 += pf->Pt();
765 >      if (dr >= 0.5 && dr < 0.7) tmpChargedIso_DR0p5To0p7 += pf->Pt();
766  
682      if (dr < 0.05)               tmpChargedIso_DR0p0To0p05 += pf->Pt();
683      if (dr >= 0.05 && dr < 0.10) tmpChargedIso_DR0p05To0p1 += pf->Pt();
684      if (dr >= 0.10 && dr < 0.15) tmpChargedIso_DR0p1To0p15 += pf->Pt();
685      if (dr >= 0.15 && dr < 0.20) tmpChargedIso_DR0p15To0p2 += pf->Pt();
686      if (dr >= 0.20 && dr < 0.25) tmpChargedIso_DR0p2To0p25 += pf->Pt();
687      if (dr >= 0.25 && dr < 0.3)  tmpChargedIso_DR0p25To0p3 += pf->Pt();
688      if (dr >= 0.3 && dr < 0.4)   tmpChargedIso_DR0p3To0p4  += pf->Pt();
689      if (dr >= 0.4 && dr < 0.5)   tmpChargedIso_DR0p4To0p5  += pf->Pt();
767      }
768  
769      //
770      // Gamma Iso Rings
771      //
772 <    else if (pf->PFType() == PFCandidate::eGamma) {
772 >    else if (abs(pf->PFType()) == PFCandidate::eGamma) {
773 >
774 >      if (fabs(ele->SCluster()->Eta()) > 1.479) {
775 >        if (mithep::MathUtils::DeltaR(ele->Phi(),ele->Eta(), pf->Phi(), pf->Eta()) < 0.08) continue;
776 >      }
777 >
778 >      if( ctrl.debug) cout << "gamma:: " << pf->Pt() << " "
779 >                           << dr << endl;
780 >
781 >      if (dr < 0.1) tmpGammaIso_DR0p0To0p1 += pf->Pt();
782 >      if (dr >= 0.1 && dr < 0.2) tmpGammaIso_DR0p1To0p2 += pf->Pt();
783 >      if (dr >= 0.2 && dr < 0.3) tmpGammaIso_DR0p2To0p3 += pf->Pt();
784 >      if (dr >= 0.3 && dr < 0.4) tmpGammaIso_DR0p3To0p4 += pf->Pt();
785 >      if (dr >= 0.4 && dr < 0.5) tmpGammaIso_DR0p4To0p5 += pf->Pt();
786 >      if (dr >= 0.5 && dr < 0.7) tmpGammaIso_DR0p5To0p7 += pf->Pt();
787  
697      if (dr < 0.05)               tmpGammaIso_DR0p0To0p05 += pf->Pt();
698      if (dr >= 0.05 && dr < 0.10) tmpGammaIso_DR0p05To0p1 += pf->Pt();
699      if (dr >= 0.10 && dr < 0.15) tmpGammaIso_DR0p1To0p15 += pf->Pt();
700      if (dr >= 0.15 && dr < 0.20) tmpGammaIso_DR0p15To0p2 += pf->Pt();
701      if (dr >= 0.20 && dr < 0.25) tmpGammaIso_DR0p2To0p25 += pf->Pt();
702      if (dr >= 0.25 && dr < 0.3)  tmpGammaIso_DR0p25To0p3 += pf->Pt();
703      if (dr >= 0.3 && dr < 0.4)   tmpGammaIso_DR0p3To0p4  += pf->Pt();
704      if (dr >= 0.4 && dr < 0.5)   tmpGammaIso_DR0p4To0p5  += pf->Pt();
788      }
789  
790      //
791      // Other Neutral Iso Rings
792      //
793      else {
794 <      if (dr < 0.05)               tmpNeutralHadronIso_DR0p0To0p05 += pf->Pt();
795 <      if (dr >= 0.05 && dr < 0.10) tmpNeutralHadronIso_DR0p05To0p1 += pf->Pt();
796 <      if (dr >= 0.10 && dr < 0.15) tmpNeutralHadronIso_DR0p1To0p15 += pf->Pt();
797 <      if (dr >= 0.15 && dr < 0.20) tmpNeutralHadronIso_DR0p15To0p2 += pf->Pt();
798 <      if (dr >= 0.20 && dr < 0.25) tmpNeutralHadronIso_DR0p2To0p25 += pf->Pt();
799 <      if (dr >= 0.25 && dr < 0.3)  tmpNeutralHadronIso_DR0p25To0p3 += pf->Pt();
800 <      if (dr >= 0.3 && dr < 0.4)   tmpNeutralHadronIso_DR0p3To0p4  += pf->Pt();
801 <      if (dr >= 0.4 && dr < 0.5)   tmpNeutralHadronIso_DR0p4To0p5  += pf->Pt();
794 >      if( ctrl.debug) cout << "neutral:: " << pf->Pt() << " "
795 >                           << dr << endl;
796 >      if (dr < 0.1) tmpNeutralHadronIso_DR0p0To0p1 += pf->Pt();
797 >      if (dr >= 0.1 && dr < 0.2) tmpNeutralHadronIso_DR0p1To0p2 += pf->Pt();
798 >      if (dr >= 0.2 && dr < 0.3) tmpNeutralHadronIso_DR0p2To0p3 += pf->Pt();
799 >      if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += pf->Pt();
800 >      if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += pf->Pt();
801 >      if (dr >= 0.5 && dr < 0.7) tmpNeutralHadronIso_DR0p5To0p7 += pf->Pt();
802      }
803  
804      }
805  
806    }
807  
808 <  fChargedIso_DR0p0To0p1   = min((tmpChargedIso_DR0p0To0p05 + tmpChargedIso_DR0p05To0p1 )/ele->Pt(), 2.5);
809 <  fChargedIso_DR0p1To0p2   = min((tmpChargedIso_DR0p1To0p15 + tmpChargedIso_DR0p15To0p2)/ele->Pt(), 2.5);
810 <  fChargedIso_DR0p2To0p3   = min((tmpChargedIso_DR0p2To0p25 + tmpChargedIso_DR0p25To0p3)/ele->Pt(), 2.5);
808 >  fChargedIso_DR0p0To0p1   = min((tmpChargedIso_DR0p0To0p1)/ele->Pt(), 2.5);
809 >  fChargedIso_DR0p1To0p2   = min((tmpChargedIso_DR0p1To0p2)/ele->Pt(), 2.5);
810 >  fChargedIso_DR0p2To0p3   = min((tmpChargedIso_DR0p2To0p3)/ele->Pt(), 2.5);
811    fChargedIso_DR0p3To0p4   = min((tmpChargedIso_DR0p3To0p4)/ele->Pt(), 2.5);
812    fChargedIso_DR0p4To0p5   = min((tmpChargedIso_DR0p4To0p5)/ele->Pt(), 2.5);
813  
814    double rho = 0;
815    if (!(isnan(fPUEnergyDensity->At(0)->Rho()) || isinf(fPUEnergyDensity->At(0)->Rho())))
816      rho = fPUEnergyDensity->At(0)->Rho();
817 <  
818 <
819 <  fGammaIso_DR0p0To0p1 = max(min((tmpGammaIso_DR0p0To0p05 + tmpGammaIso_DR0p05To0p1
817 >
818 >  if( ctrl.debug) {
819 >    cout << "RHO: " << rho << endl;
820 >    cout << "eta: " << ele->SCluster()->Eta() << endl;
821 >    cout << "target: " << EffectiveAreaVersion << endl;
822 >    cout << "effA 0-1: " << eleT.ElectronEffectiveArea(eleT.kEleNeutralHadronIsoDR0p0To0p1,
823 >                                                       ele->SCluster()->Eta(),
824 >                                                       EffectiveAreaVersion)
825 >         << endl;
826 >    cout << "effA 1-2: " << eleT.ElectronEffectiveArea(eleT.kEleNeutralHadronIsoDR0p1To0p2,
827 >                                                       ele->SCluster()->Eta(),
828 >                                                       EffectiveAreaVersion)
829 >         << endl;
830 >    cout << "effA 2-3: " << eleT.ElectronEffectiveArea(eleT.kEleNeutralHadronIsoDR0p2To0p3,
831 >                                                       ele->SCluster()->Eta(),
832 >                                                       EffectiveAreaVersion)
833 >         << endl;
834 >    cout << "effA 3-4: " << eleT.ElectronEffectiveArea(eleT.kEleNeutralHadronIsoDR0p3To0p4,
835 >                                                       ele->SCluster()->Eta(),
836 >                                                       EffectiveAreaVersion)
837 >         << endl;
838 >  }
839 >
840 >  fGammaIso_DR0p0To0p1 = max(min((tmpGammaIso_DR0p0To0p1
841                                    -rho*eleT.ElectronEffectiveArea(eleT.kEleGammaIsoDR0p0To0p1,
842 <                                                              ele->Eta(),
842 >                                                              ele->SCluster()->Eta(),
843                                                                EffectiveAreaVersion))/ele->Pt()
844                                   ,2.5)
845                               ,0.0);
846 <  fGammaIso_DR0p1To0p2 = max(min((tmpGammaIso_DR0p1To0p15 + tmpGammaIso_DR0p15To0p2
846 >  fGammaIso_DR0p1To0p2 = max(min((tmpGammaIso_DR0p1To0p2
847                                    -rho*eleT.ElectronEffectiveArea(eleT.kEleGammaIsoDR0p1To0p2,
848 <                                                              ele->Eta(),
848 >                                                              ele->SCluster()->Eta(),
849                                                                EffectiveAreaVersion))/ele->Pt()
850                                   ,2.5)
851                               ,0.0);
852 <  fGammaIso_DR0p2To0p3 = max(min((tmpGammaIso_DR0p2To0p25 + tmpGammaIso_DR0p25To0p3
852 >  fGammaIso_DR0p2To0p3 = max(min((tmpGammaIso_DR0p2To0p3
853                                    -rho*eleT.ElectronEffectiveArea(eleT.kEleGammaIsoDR0p2To0p3,
854 <                                                              ele->Eta()
854 >                                                              ele->SCluster()->Eta()
855                                                                ,EffectiveAreaVersion))/ele->Pt()
856                                   ,2.5)
857                               ,0.0);
858    fGammaIso_DR0p3To0p4 = max(min((tmpGammaIso_DR0p3To0p4
859                                    -rho*eleT.ElectronEffectiveArea(eleT.kEleGammaIsoDR0p3To0p4,
860 <                                                              ele->Eta(),
860 >                                                              ele->SCluster()->Eta(),
861                                                                EffectiveAreaVersion))/ele->Pt()
862                                   ,2.5)
863                               ,0.0);
864    fGammaIso_DR0p4To0p5 = max(min((tmpGammaIso_DR0p4To0p5
865                                    -rho*eleT.ElectronEffectiveArea(eleT.kEleGammaIsoDR0p4To0p5,
866 <                                                              ele->Eta(),
866 >                                                              ele->SCluster()->Eta(),
867                                                                EffectiveAreaVersion))/ele->Pt()
868                                   ,2.5)
869                               ,0.0);
870  
871  
872 <  fNeutralHadronIso_DR0p0To0p1 = max(min((tmpNeutralHadronIso_DR0p0To0p05 + tmpNeutralHadronIso_DR0p05To0p1
872 >  fNeutralHadronIso_DR0p0To0p1 = max(min((tmpNeutralHadronIso_DR0p0To0p1
873                                            -rho*eleT.ElectronEffectiveArea(eleT.kEleNeutralHadronIsoDR0p0To0p1,
874 <                                                                 ele->Eta(),EffectiveAreaVersion))/ele->Pt()
874 >                                                                 ele->SCluster()->Eta(),EffectiveAreaVersion))/ele->Pt()
875                                           , 2.5)
876                                       , 0.0);
877 <  fNeutralHadronIso_DR0p1To0p2 = max(min((tmpNeutralHadronIso_DR0p1To0p15 + tmpNeutralHadronIso_DR0p15To0p2
877 >  fNeutralHadronIso_DR0p1To0p2 = max(min((tmpNeutralHadronIso_DR0p1To0p2
878                                              -rho*eleT.ElectronEffectiveArea(eleT.kEleNeutralHadronIsoDR0p1To0p2,
879 <                                                                   ele->Eta(),EffectiveAreaVersion))/ele->Pt()
879 >                                                                   ele->SCluster()->Eta(),EffectiveAreaVersion))/ele->Pt()
880                                             , 2.5)
881                                         , 0.0);
882 <  fNeutralHadronIso_DR0p2To0p3 = max(min((tmpNeutralHadronIso_DR0p2To0p25 + tmpNeutralHadronIso_DR0p25To0p3
882 >  fNeutralHadronIso_DR0p2To0p3 = max(min((tmpNeutralHadronIso_DR0p2To0p3
883                                            -rho*eleT.ElectronEffectiveArea(eleT.kEleNeutralHadronIsoDR0p2To0p3,
884 <                                                                 ele->Eta(),EffectiveAreaVersion))/ele->Pt()
884 >                                                                 ele->SCluster()->Eta(),EffectiveAreaVersion))/ele->Pt()
885                                           , 2.5)
886                                       , 0.0);
887    fNeutralHadronIso_DR0p3To0p4 = max(min((tmpNeutralHadronIso_DR0p3To0p4
888                                            -rho*eleT.ElectronEffectiveArea(eleT.kEleNeutralHadronIsoDR0p3To0p4,
889 <                                                                 ele->Eta(), EffectiveAreaVersion))/ele->Pt()
889 >                                                                 ele->SCluster()->Eta(), EffectiveAreaVersion))/ele->Pt()
890                                           , 2.5)
891                                       , 0.0);
892    fNeutralHadronIso_DR0p4To0p5 = max(min((tmpNeutralHadronIso_DR0p4To0p5
893                                            -rho*eleT.ElectronEffectiveArea(eleT.kEleNeutralHadronIsoDR0p4To0p5,
894 <                                                                 ele->Eta(), EffectiveAreaVersion))/ele->Pt()
894 >                                                                 ele->SCluster()->Eta(), EffectiveAreaVersion))/ele->Pt()
895                                           , 2.5)
896                                       , 0.0);
897  
898    double mvaval = eleIsoMVA->MVAValue_IsoRings( ele->Pt(),
899 <                                             ele->Eta(),
900 <                                             fChargedIso_DR0p0To0p1,
901 <                                             fChargedIso_DR0p1To0p2,
902 <                                             fChargedIso_DR0p2To0p3,
903 <                                             fChargedIso_DR0p3To0p4,
904 <                                             fChargedIso_DR0p4To0p5,
905 <                                             fGammaIso_DR0p0To0p1,
906 <                                             fGammaIso_DR0p1To0p2,
907 <                                             fGammaIso_DR0p2To0p3,
908 <                                             fGammaIso_DR0p3To0p4,
909 <                                             fGammaIso_DR0p4To0p5,
910 <                                             fNeutralHadronIso_DR0p0To0p1,
911 <                                             fNeutralHadronIso_DR0p1To0p2,
912 <                                             fNeutralHadronIso_DR0p2To0p3,
913 <                                             fNeutralHadronIso_DR0p3To0p4,
914 <                                             fNeutralHadronIso_DR0p4To0p5,
915 <                                             ctrl.debug);
899 >                                                ele->SCluster()->Eta(),
900 >                                                fChargedIso_DR0p0To0p1,
901 >                                                fChargedIso_DR0p1To0p2,
902 >                                                fChargedIso_DR0p2To0p3,
903 >                                                fChargedIso_DR0p3To0p4,
904 >                                                fChargedIso_DR0p4To0p5,
905 >                                                fGammaIso_DR0p0To0p1,
906 >                                                fGammaIso_DR0p1To0p2,
907 >                                                fGammaIso_DR0p2To0p3,
908 >                                                fGammaIso_DR0p3To0p4,
909 >                                                fGammaIso_DR0p4To0p5,
910 >                                                fNeutralHadronIso_DR0p0To0p1,
911 >                                                fNeutralHadronIso_DR0p1To0p2,
912 >                                                fNeutralHadronIso_DR0p2To0p3,
913 >                                                fNeutralHadronIso_DR0p3To0p4,
914 >                                                fNeutralHadronIso_DR0p4To0p5,
915 >                                                ctrl.debug);
916  
917    SelectionStatus status;
918    bool pass = false;
# Line 835 | Line 939 | SelectionStatus electronIsoMVASelection(
939    if( MVABin == 4 && mvaval > ELECTRON_ISOMVA_CUT_BIN4 ) pass = true;
940    if( MVABin == 5 && mvaval > ELECTRON_ISOMVA_CUT_BIN5 ) pass = true;
941  
942 +  // pre-selection iso ...
943 +  pass &= (fChargedIso_DR0p0To0p1 + fChargedIso_DR0p1To0p2 + fChargedIso_DR0p2To0p3 < 0.7);
944 +
945    if( pass ) {
946      status.orStatus(SelectionStatus::LOOSEISO);
947      status.orStatus(SelectionStatus::TIGHTISO);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines