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.20 by khahn, Mon May 14 18:01:02 2012 UTC vs.
Revision 1.21 by khahn, Sun May 20 19:08:58 2012 UTC

# Line 227 | Line 227 | SelectionStatus electronIsoSelection(Con
227    if( ele->IsEB() && ele->Pt() < 20 && reliso > PFISO_ELE_LOOSE_EB_LOWPT ) {
228      failiso = true;
229    }
230  if(ctrl.debug) cout << "before iso check ..." << endl;
230    if( !(ele->IsEB()) && ele->Pt() > 20 && reliso > PFISO_ELE_LOOSE_EE_HIGHPT ) {
232    if(ctrl.debug) cout << "\tit fails ..." << endl;
231      failiso = true;
232    }
233    if( !(ele->IsEB()) && ele->Pt() < 20 && reliso > PFISO_ELE_LOOSE_EE_LOWPT ) {
# Line 252 | Line 250 | bool noIso(ControlFlags &, vector<Simple
250          return true;
251   }
252  
253 +
254   //--------------------------------------------------------------------------------------------------
255   SelectionStatus muonIsoMVASelection(ControlFlags &ctrl,
256                                      const mithep::Muon * mu,
# Line 339 | Line 338 | SelectionStatus muonIsoMVASelection(Cont
338    //Loop over PF Candidates
339    //
340    for(int k=0; k<fPFCandidates->GetEntries(); ++k) {
341 +
342 +    if( !(PFnoPUflag[k]) ) continue; // my PF no PU hack
343 +
344      const mithep::PFCandidate *pf = (mithep::PFCandidate*)((*fPFCandidates)[k]);
345  
346      Double_t deta = (mu->Eta() - pf->Eta());
347      Double_t dphi = mithep::MathUtils::DeltaPhi(Double_t(mu->Phi()),Double_t(pf->Phi()));
348      Double_t dr = mithep::MathUtils::DeltaR(mu->Phi(),mu->Eta(), pf->Phi(), pf->Eta());
349 <    if (dr > 0.5) continue;
348 <    if (dr < 0.01) continue;
349 >    if (dr > 1.0) continue;
350  
351      if (pf->HasTrackerTrk() && (pf->TrackerTrk() == mu->TrackerTrk()) ) continue;
352  
# Line 379 | Line 380 | SelectionStatus muonIsoMVASelection(Cont
380            IsLeptonFootprint = kTRUE;
381        } // loop over electrons
382        
383 <      /*
383 >      /* KH - commented for sync
384        //
385        // Check for muons
386        //
# Line 413 | Line 414 | SelectionStatus muonIsoMVASelection(Cont
414   //                            << abs(pf->TrackerTrk()->DzCorrected(vtx)) << " "
415   //                            << dr << endl;
416   //       }
417 <
417 > //       if( pf->HasGsfTrk() ) {
418 > //      if (abs(pf->GsfTrk()->DzCorrected(vtx)) > 0.2) continue;
419 > //      if( ctrl.debug ) cout << "charged:: " << pf->PFType() << " " << pf->Pt() << " "
420 > //                            << abs(pf->GsfTrk()->DzCorrected(vtx)) << " "
421 > //                            << dr << endl;
422 > //       }
423  
424        // Footprint Veto
425        if (dr < 0.1) tmpChargedIso_DR0p0To0p1 += pf->Pt();
# Line 460 | Line 466 | SelectionStatus muonIsoMVASelection(Cont
466  
467  
468    double rho = 0;
469 < //   if (!(isnan(fPUEnergyDensity->At(0)->Rho()) || isinf(fPUEnergyDensity->At(0)->Rho())))
470 < //     rho = fPUEnergyDensity->At(0)->Rho();
471 <  if (!(isnan(fPUEnergyDensity->At(0)->RhoLowEta()) || isinf(fPUEnergyDensity->At(0)->RhoLowEta())))
472 <    rho = fPUEnergyDensity->At(0)->RhoLowEta();
469 >  if (!(isnan(fPUEnergyDensity->At(0)->Rho()) || isinf(fPUEnergyDensity->At(0)->Rho())))
470 >    rho = fPUEnergyDensity->At(0)->Rho();
471 > //   if (!(isnan(fPUEnergyDensity->At(0)->RhoLowEta()) || isinf(fPUEnergyDensity->At(0)->RhoLowEta())))
472 > //     rho = fPUEnergyDensity->At(0)->RhoLowEta();
473    
474    // WARNING!!!!  
475    // hardcode for sync ...
# Line 547 | Line 553 | SelectionStatus muonIsoMVASelection(Cont
553  
554    pass = false;
555    if( mu->IsGlobalMuon() && mu->IsTrackerMuon()
556 <      && fabs(mu->Eta()) <= 1.5 && mu->Pt() <= 10 && mvaval >= MUON_ISOMVA_LOOSE_FORPFID_CUT_BIN0)   pass = true;
556 >      && fabs(mu->Eta()) <= 1.5 && mu->Pt() <= 10 && mvaval >= MUON_ISOMVA_LOOSE_FORPFID_CUT_OPT_BIN0)   pass = true;
557    else if( mu->IsGlobalMuon() && mu->IsTrackerMuon()
558 <           && fabs(mu->Eta()) <= 1.5 && mu->Pt() > 10 && mvaval >= MUON_ISOMVA_LOOSE_FORPFID_CUT_BIN1)  pass = true;
558 >           && fabs(mu->Eta()) <= 1.5 && mu->Pt() > 10 && mvaval >= MUON_ISOMVA_LOOSE_FORPFID_CUT_OPT_BIN1)  pass = true;
559    else if( mu->IsGlobalMuon() && mu->IsTrackerMuon()
560 <           && fabs(mu->Eta()) > 1.5 && mu->Pt() <= 10 && mvaval >= MUON_ISOMVA_LOOSE_FORPFID_CUT_BIN2)  pass = true;
560 >           && fabs(mu->Eta()) > 1.5 && mu->Pt() <= 10 && mvaval >= MUON_ISOMVA_LOOSE_FORPFID_CUT_OPT_BIN2)  pass = true;
561    else if( mu->IsGlobalMuon() && mu->IsTrackerMuon()
562 <           && fabs(mu->Eta()) > 1.5 && mu->Pt() > 10 && mvaval >= MUON_ISOMVA_LOOSE_FORPFID_CUT_BIN3)  pass = true;
563 <  else if( !(mu->IsGlobalMuon()) && mu->IsTrackerMuon() && mvaval >= MUON_ISOMVA_LOOSE_FORPFID_CUT_BIN4)  pass = true;
564 <  else if( mu->IsGlobalMuon() && !(mu->IsTrackerMuon()) && mvaval >= MUON_ISOMVA_LOOSE_FORPFID_CUT_BIN5)  pass = true;
562 >           && fabs(mu->Eta()) > 1.5 && mu->Pt() > 10 && mvaval >= MUON_ISOMVA_LOOSE_FORPFID_CUT_OPT_BIN3)  pass = true;
563 >  else if( !(mu->IsGlobalMuon()) && mu->IsTrackerMuon() && mvaval >= MUON_ISOMVA_LOOSE_FORPFID_CUT_OPT_BIN4)  pass = true;
564 >  else if( mu->IsGlobalMuon() && !(mu->IsTrackerMuon()) && mvaval >= MUON_ISOMVA_LOOSE_FORPFID_CUT_OPT_BIN5)  pass = true;
565    if( pass ) status.orStatus(SelectionStatus::LOOSEISO);
566  
567 +  /*
568    pass = false;
569    if( mu->IsGlobalMuon() && mu->IsTrackerMuon()
570        && fabs(mu->Eta()) <= 1.5 && mu->Pt() <= 10 && mvaval >= MUON_ISOMVA_TIGHT_FORPFID_CUT_BIN0)   pass = true;
# Line 570 | Line 577 | SelectionStatus muonIsoMVASelection(Cont
577    else if( !(mu->IsGlobalMuon()) && mu->IsTrackerMuon() && mvaval >= MUON_ISOMVA_TIGHT_FORPFID_CUT_BIN4)  pass = true;
578    else if( mu->IsGlobalMuon() && !(mu->IsTrackerMuon()) && mvaval >= MUON_ISOMVA_TIGHT_FORPFID_CUT_BIN5)  pass = true;
579    if( pass ) status.orStatus(SelectionStatus::TIGHTISO);
580 +  */
581  
582    //  pass &= (fChargedIso_DR0p0To0p1 + fChargedIso_DR0p1To0p2 + fChargedIso_DR0p2To0p3 < 0.7);
583  
584 <  if(ctrl.debug) cout << "returning status : " << hex << status.getStatus() << dec << endl;
584 >  status.isoMVA = mvaval;
585 >
586 >  if(ctrl.debug)  {
587 >    cout << "returning status : " << hex << status.getStatus() << dec << endl;
588 >    cout << "MVAVAL : " << status.isoMVA << endl;
589 >  }
590    return status;
591  
592   }
# Line 939 | Line 952 | void initMuonIsoMVA() {
952   }
953  
954  
955 +
956 +
957   //--------------------------------------------------------------------------------------------------
958   double  muonPFIso04(ControlFlags &ctrl,
959                      const mithep::Muon * mu,
# Line 950 | Line 965 | double  muonPFIso04(ControlFlags &ctrl,
965                      vector<const mithep::Electron*> electronsToVeto)
966   //--------------------------------------------------------------------------------------------------
967   {
968 +
969 +  extern double gChargedIso;  
970 +  extern double  gGammaIso;      
971 +  extern double  gNeutralIso;
972    
973    if( ctrl.debug ) {
974      cout << "muonIsoMVASelection :: muons to veto " << endl;
# Line 981 | Line 1000 | double  muonPFIso04(ControlFlags &ctrl,
1000    //Loop over PF Candidates
1001    //
1002    for(int k=0; k<fPFCandidates->GetEntries(); ++k) {
1003 +
1004 +    if( !(PFnoPUflag[k]) ) continue; // my PF no PU hack
1005      const mithep::PFCandidate *pf = (mithep::PFCandidate*)((*fPFCandidates)[k]);
1006  
1007      Double_t deta = (mu->Eta() - pf->Eta());
# Line 1020 | Line 1041 | double  muonPFIso04(ControlFlags &ctrl,
1041            IsLeptonFootprint = kTRUE;
1042        } // loop over electrons
1043  
1044 <      // KH, comment to sync
1024 <      /*
1044 >      /* KH - comment for sync      
1045        //
1046        // Check for muons
1047        //
# Line 1044 | Line 1064 | double  muonPFIso04(ControlFlags &ctrl,
1064      //
1065      // Charged Iso
1066      //
1067 <    if (pf->Charge() != 0 ) {
1067 >    if (pf->Charge() != 0 && (pf->HasTrackerTrk()||pf->HasGsfTrk()) ) {
1068  
1069        //if( dr < 0.01 ) continue; // only for muon iso mva?
1070        if (abs(pf->PFType()) == PFCandidate::eElectron || abs(pf->PFType()) == PFCandidate::eMuon) continue;
1071  
1072 <      if( pf->HasTrackerTrk() ) {
1073 <        if (abs(pf->TrackerTrk()->DzCorrected(vtx)) > 0.2) continue;
1074 <        if( ctrl.debug ) cout << "charged:: " << pf->PFType() << " " << pf->Pt() << " "
1075 <                              << abs(pf->TrackerTrk()->DzCorrected(vtx)) << " "
1076 <                              << dr << endl;
1077 <      }
1078 <      if( pf->HasGsfTrk() ) {
1079 <        if (abs(pf->GsfTrk()->DzCorrected(vtx)) > 0.2) continue;
1080 <        if( ctrl.debug ) cout << "charged:: " << pf->PFType() << " " << pf->Pt() << " "
1081 <                              << abs(pf->GsfTrk()->DzCorrected(vtx)) << " "
1082 <                              << dr << endl;
1083 <      }
1072 >
1073 > //       if( pf->HasTrackerTrk() ) {
1074 > //      if (abs(pf->TrackerTrk()->DzCorrected(vtx)) > 0.2) continue;
1075 > //      if( ctrl.debug ) cout << "charged:: " << pf->PFType() << " " << pf->Pt() << " "
1076 > //                            << abs(pf->TrackerTrk()->DzCorrected(vtx)) << " "
1077 > //                            << dr << endl;
1078 > //       }
1079 > //       if( pf->HasGsfTrk() ) {
1080 > //      if (abs(pf->GsfTrk()->DzCorrected(vtx)) > 0.2) continue;
1081 > //      if( ctrl.debug ) cout << "charged:: " << pf->PFType() << " " << pf->Pt() << " "
1082 > //                            << abs(pf->GsfTrk()->DzCorrected(vtx)) << " "
1083 > //                            << dr << endl;
1084 > //       }
1085  
1086  
1087        fChargedIso += pf->Pt();
# Line 1087 | Line 1108 | double  muonPFIso04(ControlFlags &ctrl,
1108      }
1109      
1110    }
1111 <  
1112 <  double rho = 0;
1113 <  //   if (!(isnan(fPUEnergyDensity->At(0)->Rho()) || isinf(fPUEnergyDensity->At(0)->Rho())))
1114 <  //     rho = fPUEnergyDensity->At(0)->Rho();
1094 <  if (!(isnan(fPUEnergyDensity->At(0)->RhoLowEta()) || isinf(fPUEnergyDensity->At(0)->RhoLowEta())))
1095 <    rho = fPUEnergyDensity->At(0)->RhoLowEta();
1111 >
1112 >  double rho=0;
1113 >  if (!(isnan(fPUEnergyDensity->At(0)->Rho()) || isinf(fPUEnergyDensity->At(0)->Rho())))
1114 >    rho = fPUEnergyDensity->At(0)->Rho();
1115  
1116    // WARNING!!!!  
1117    // hardcode for sync ...
# Line 1100 | Line 1119 | double  muonPFIso04(ControlFlags &ctrl,
1119    // WARNING!!!!  
1120  
1121  
1122 +
1123    double pfIso = fChargedIso + fmax(0.0,(fGammaIso + fNeutralHadronIso
1124                                          -rho*muT.MuonEffectiveArea(muT.kMuGammaAndNeutralHadronIso04,
1125                                                                     mu->Eta(),EffectiveAreaVersion)));
1106
1126    gChargedIso = fChargedIso;
1127 <  gGammaIso = fGammaIso;
1128 <  gNeutralIso = fNeutralHadronIso;  
1127 >  gGammaIso   = fGammaIso;
1128 >  gNeutralIso = fNeutralHadronIso;
1129 >  
1130    return pfIso;
1131   }
1132  
1133  
1134 +
1135 +
1136   //--------------------------------------------------------------------------------------------------
1137   // hacked version
1138   double  muonPFIso04(ControlFlags &ctrl,
# Line 1360 | Line 1382 | SelectionStatus muonReferenceIsoSelectio
1382  
1383  
1384  
1385 +
1386   //--------------------------------------------------------------------------------------------------
1387   SelectionStatus electronIsoMVASelection(ControlFlags &ctrl,
1388                                          const mithep::Electron * ele,
# Line 1402 | Line 1425 | SelectionStatus electronIsoMVASelection(
1425    Double_t tmpChargedIso_DR0p2To0p3  = 0;
1426    Double_t tmpChargedIso_DR0p3To0p4  = 0;
1427    Double_t tmpChargedIso_DR0p4To0p5  = 0;
1405  Double_t tmpChargedIso_DR0p5To0p7  = 0;
1428  
1429    Double_t tmpGammaIso_DR0p0To0p1  = 0;
1430    Double_t tmpGammaIso_DR0p1To0p2  = 0;
1431    Double_t tmpGammaIso_DR0p2To0p3  = 0;
1432    Double_t tmpGammaIso_DR0p3To0p4  = 0;
1433    Double_t tmpGammaIso_DR0p4To0p5  = 0;
1434 <  Double_t tmpGammaIso_DR0p5To0p7  = 0;
1434 >
1435  
1436    Double_t tmpNeutralHadronIso_DR0p0To0p1  = 0;
1437    Double_t tmpNeutralHadronIso_DR0p1To0p2  = 0;
1438    Double_t tmpNeutralHadronIso_DR0p2To0p3  = 0;
1439    Double_t tmpNeutralHadronIso_DR0p3To0p4  = 0;
1440    Double_t tmpNeutralHadronIso_DR0p4To0p5  = 0;
1419  Double_t tmpNeutralHadronIso_DR0p5To0p7  = 0;
1441  
1442          
1443  
# Line 1453 | Line 1474 | SelectionStatus electronIsoMVASelection(
1474      Double_t deta = (ele->Eta() - pf->Eta());
1475      Double_t dphi = mithep::MathUtils::DeltaPhi(Double_t(ele->Phi()),Double_t(pf->Phi()));
1476      Double_t dr = mithep::MathUtils::DeltaR(ele->Phi(),ele->Eta(), pf->Phi(), pf->Eta());
1477 <    if (dr > 0.5) continue;
1477 >    if (dr > 1.0) continue;
1478 >
1479      if(ctrl.debug) {
1480        cout << "pf :: type: " << pf->PFType() << "\tpt: " << pf->Pt();
1481        if( pf->HasTrackerTrk() ) cout << "\tdZ: " << pf->TrackerTrk()->DzCorrected(vtx);
# Line 1471 | Line 1493 | SelectionStatus electronIsoMVASelection(
1493      Bool_t IsLeptonFootprint = kFALSE;
1494      if (dr < 1.0) {
1495  
1496 +
1497        //
1498        // Check for electrons
1499        //
1500 +
1501        for (Int_t q=0; q < electronsToVeto.size(); ++q) {
1502          const mithep::Electron *tmpele = electronsToVeto[q];
1503 +        double tmpdr = mithep::MathUtils::DeltaR(tmpele->Phi(),tmpele->Eta(), pf->Phi(), pf->Eta());
1504 +
1505          // 4l electron
1506          if( pf->HasTrackerTrk()  ) {
1507            if( pf->TrackerTrk() == tmpele->TrackerTrk() ) {
# Line 1490 | Line 1516 | SelectionStatus electronIsoMVASelection(
1516            }
1517          }
1518          // PF charged
1519 <        if (pf->Charge() != 0 && fabs(tmpele->SCluster()->Eta()) >= 1.479
1494 <            && mithep::MathUtils::DeltaR(tmpele->Phi(),tmpele->Eta(), pf->Phi(), pf->Eta()) < 0.015) {
1519 >        if (pf->Charge() != 0 && fabs(tmpele->SCluster()->Eta()) >= 1.479 && tmpdr < 0.015) {
1520            if( ctrl.debug) cout << "\tcharged trk, dR matches 4L ele ..." << endl;
1521            IsLeptonFootprint = kTRUE;
1522          }
1523          // PF gamma
1524          if (abs(pf->PFType()) == PFCandidate::eGamma && fabs(tmpele->SCluster()->Eta()) >= 1.479
1525 <            && mithep::MathUtils::DeltaR(tmpele->Phi(),tmpele->Eta(), pf->Phi(), pf->Eta()) < 0.08) {
1525 >            && tmpdr < 0.08) {
1526            if( ctrl.debug) cout << "\tPF gamma, matches 4L ele ..." << endl;
1527            IsLeptonFootprint = kTRUE;
1528          }
1529        } // loop over electrons
1530  
1531 +
1532        /* KH - comment for sync            
1533        //
1534        // Check for muons
# Line 1553 | Line 1579 | SelectionStatus electronIsoMVASelection(
1579        if (dr >= 0.2 && dr < 0.3) tmpChargedIso_DR0p2To0p3 += pf->Pt();
1580        if (dr >= 0.3 && dr < 0.4) tmpChargedIso_DR0p3To0p4 += pf->Pt();
1581        if (dr >= 0.4 && dr < 0.5) tmpChargedIso_DR0p4To0p5 += pf->Pt();
1556      if (dr >= 0.5 && dr < 0.7) tmpChargedIso_DR0p5To0p7 += pf->Pt();
1582  
1583      }
1584  
# Line 1562 | Line 1587 | SelectionStatus electronIsoMVASelection(
1587      //
1588      else if (abs(pf->PFType()) == PFCandidate::eGamma) {
1589  
1590 <      if (fabs(ele->SCluster()->Eta()) > 1.479) {
1566 <        if (mithep::MathUtils::DeltaR(ele->Phi(),ele->Eta(), pf->Phi(), pf->Eta()) < 0.08) continue;
1567 <      }
1590 >      if (fabs(ele->SCluster()->Eta()) > 1.479 && dr < 0.08) continue;
1591  
1592        if( ctrl.debug) cout << "gamma:: " << pf->Pt() << " "
1593                             << dr << endl;
# Line 1574 | Line 1597 | SelectionStatus electronIsoMVASelection(
1597        if (dr >= 0.2 && dr < 0.3) tmpGammaIso_DR0p2To0p3 += pf->Pt();
1598        if (dr >= 0.3 && dr < 0.4) tmpGammaIso_DR0p3To0p4 += pf->Pt();
1599        if (dr >= 0.4 && dr < 0.5) tmpGammaIso_DR0p4To0p5 += pf->Pt();
1577      if (dr >= 0.5 && dr < 0.7) tmpGammaIso_DR0p5To0p7 += pf->Pt();
1578
1600      }
1601  
1602      //
# Line 1589 | Line 1610 | SelectionStatus electronIsoMVASelection(
1610        if (dr >= 0.2 && dr < 0.3) tmpNeutralHadronIso_DR0p2To0p3 += pf->Pt();
1611        if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += pf->Pt();
1612        if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += pf->Pt();
1592      if (dr >= 0.5 && dr < 0.7) tmpNeutralHadronIso_DR0p5To0p7 += pf->Pt();
1613      }
1614  
1615      }
# Line 1602 | Line 1622 | SelectionStatus electronIsoMVASelection(
1622    fChargedIso_DR0p3To0p4   = fmin((tmpChargedIso_DR0p3To0p4)/ele->Pt(), 2.5);
1623    fChargedIso_DR0p4To0p5   = fmin((tmpChargedIso_DR0p4To0p5)/ele->Pt(), 2.5);
1624  
1625 <  double rho = 0;
1626 < //   if (!(isnan(fPUEnergyDensity->At(0)->Rho()) || isinf(fPUEnergyDensity->At(0)->Rho())))
1627 < //     rho = fPUEnergyDensity->At(0)->Rho();
1628 <  if (!(isnan(fPUEnergyDensity->At(0)->RhoLowEta()) || isinf(fPUEnergyDensity->At(0)->RhoLowEta())))
1629 <    rho = fPUEnergyDensity->At(0)->RhoLowEta();
1625 >  if(ctrl.debug) {
1626 >    cout << "fChargedIso_DR0p0To0p1 : " << fChargedIso_DR0p0To0p1  << endl;
1627 >    cout << "fChargedIso_DR0p1To0p2 : " << fChargedIso_DR0p1To0p2  << endl;
1628 >    cout << "fChargedIso_DR0p2To0p3 : " << fChargedIso_DR0p2To0p3  << endl;
1629 >    cout << "fChargedIso_DR0p3To0p4 : " << fChargedIso_DR0p3To0p4  << endl;
1630 >    cout << "fChargedIso_DR0p4To0p5 : " << fChargedIso_DR0p4To0p5  << endl;
1631 >  }
1632 >
1633  
1634 +  double rho = 0;
1635 +  if (!(isnan(fPUEnergyDensity->At(0)->Rho()) || isinf(fPUEnergyDensity->At(0)->Rho())))
1636 +    rho = fPUEnergyDensity->At(0)->Rho();
1637 +  //   if (!(isnan(fPUEnergyDensity->At(0)->RhoLowEta()) || isinf(fPUEnergyDensity->At(0)->RhoLowEta())))
1638 +  //     rho = fPUEnergyDensity->At(0)->RhoLowEta();
1639 +  
1640    // WARNING!!!!  
1641    // hardcode for sync ...
1642 <  //  EffectiveAreaVersion = eleT.kEleEAData2011;
1614 <  EffectiveAreaVersion = eleT.kEleEAFall11MC;
1642 >  EffectiveAreaVersion = eleT.kEleEAData2011;
1643    // WARNING!!!!  
1644  
1645    if( ctrl.debug) {
# Line 1668 | Line 1696 | SelectionStatus electronIsoMVASelection(
1696                               ,0.0);
1697  
1698  
1699 +  if( ctrl.debug) {
1700 +    cout << "fGammaIso_DR0p0To0p1: " << fGammaIso_DR0p0To0p1 << endl;
1701 +    cout << "fGammaIso_DR0p1To0p2: " << fGammaIso_DR0p1To0p2 << endl;
1702 +    cout << "fGammaIso_DR0p2To0p3: " << fGammaIso_DR0p2To0p3 << endl;
1703 +    cout << "fGammaIso_DR0p3To0p4: " << fGammaIso_DR0p3To0p4 << endl;
1704 +    cout << "fGammaIso_DR0p4To0p5: " << fGammaIso_DR0p4To0p5 << endl;
1705 +  }
1706 +
1707    fNeutralHadronIso_DR0p0To0p1 = fmax(fmin((tmpNeutralHadronIso_DR0p0To0p1
1708                                            -rho*eleT.ElectronEffectiveArea(eleT.kEleNeutralHadronIsoDR0p0To0p1,
1709                                                                   ele->SCluster()->Eta(),EffectiveAreaVersion))/ele->Pt()
# Line 1694 | Line 1730 | SelectionStatus electronIsoMVASelection(
1730                                           , 2.5)
1731                                       , 0.0);
1732  
1733 +  if( ctrl.debug) {
1734 +    cout << "fNeutralHadronIso_DR0p0To0p1: " << fNeutralHadronIso_DR0p0To0p1 << endl;
1735 +    cout << "fNeutralHadronIso_DR0p1To0p2: " << fNeutralHadronIso_DR0p1To0p2 << endl;
1736 +    cout << "fNeutralHadronIso_DR0p2To0p3: " << fNeutralHadronIso_DR0p2To0p3 << endl;
1737 +    cout << "fNeutralHadronIso_DR0p3To0p4: " << fNeutralHadronIso_DR0p3To0p4 << endl;
1738 +    cout << "fNeutralHadronIso_DR0p4To0p5: " << fNeutralHadronIso_DR0p4To0p5 << endl;
1739 +  }
1740 +
1741    double mvaval = eleIsoMVA->MVAValue_IsoRings( ele->Pt(),
1742                                                  ele->SCluster()->Eta(),
1743                                                  fChargedIso_DR0p0To0p1,
# Line 1714 | Line 1758 | SelectionStatus electronIsoMVASelection(
1758                                                  ctrl.debug);
1759  
1760    SelectionStatus status;
1761 +  status.isoMVA = mvaval;
1762    bool pass = false;
1763  
1764    Int_t subdet = 0;
1765    if (fabs(ele->SCluster()->Eta()) < 0.8) subdet = 0;
1766    else if (fabs(ele->SCluster()->Eta()) < 1.479) subdet = 1;
1767    else subdet = 2;
1768 +
1769    Int_t ptBin = 0;
1770 <  if (ele->Pt() > 10.0) ptBin = 1;
1770 >  if (ele->Pt() >= 10.0) ptBin = 1;
1771    
1772    Int_t MVABin = -1;
1773    if (subdet == 0 && ptBin == 0) MVABin = 0;
# Line 1732 | Line 1778 | SelectionStatus electronIsoMVASelection(
1778    if (subdet == 2 && ptBin == 1) MVABin = 5;
1779  
1780    pass = false;
1781 <  if( MVABin == 0 && mvaval > ELECTRON_LOOSE_ISOMVA_CUT_BIN0 ) pass = true;
1782 <  if( MVABin == 1 && mvaval > ELECTRON_LOOSE_ISOMVA_CUT_BIN1 ) pass = true;
1783 <  if( MVABin == 2 && mvaval > ELECTRON_LOOSE_ISOMVA_CUT_BIN2 ) pass = true;
1784 <  if( MVABin == 3 && mvaval > ELECTRON_LOOSE_ISOMVA_CUT_BIN3 ) pass = true;
1785 <  if( MVABin == 4 && mvaval > ELECTRON_LOOSE_ISOMVA_CUT_BIN4 ) pass = true;
1786 <  if( MVABin == 5 && mvaval > ELECTRON_LOOSE_ISOMVA_CUT_BIN5 ) pass = true;
1781 >  if( MVABin == 0 && mvaval > ELECTRON_LOOSE_ISOMVA_CUT_OPT_BIN0 ) pass = true;
1782 >  if( MVABin == 1 && mvaval > ELECTRON_LOOSE_ISOMVA_CUT_OPT_BIN1 ) pass = true;
1783 >  if( MVABin == 2 && mvaval > ELECTRON_LOOSE_ISOMVA_CUT_OPT_BIN2 ) pass = true;
1784 >  if( MVABin == 3 && mvaval > ELECTRON_LOOSE_ISOMVA_CUT_OPT_BIN3 ) pass = true;
1785 >  if( MVABin == 4 && mvaval > ELECTRON_LOOSE_ISOMVA_CUT_OPT_BIN4 ) pass = true;
1786 >  if( MVABin == 5 && mvaval > ELECTRON_LOOSE_ISOMVA_CUT_OPT_BIN5 ) pass = true;
1787 >  //  pass &= (fChargedIso_DR0p0To0p1 + fChargedIso_DR0p1To0p2 + fChargedIso_DR0p2To0p3 < 0.7);
1788    if( pass ) status.orStatus(SelectionStatus::LOOSEISO);
1789  
1790   //   pass = false;
# Line 1755 | Line 1802 | SelectionStatus electronIsoMVASelection(
1802   }
1803  
1804  
1758
1805   //--------------------------------------------------------------------------------------------------
1806   SelectionStatus electronIsoMVASelection(ControlFlags &ctrl,
1807                                          const mithep::Electron * ele,
# Line 2196 | Line 2242 | void initElectronIsoMVA() {
2242  
2243  
2244  
2245 +
2246   //--------------------------------------------------------------------------------------------------
2247 + // hacked version
2248   float electronPFIso04(ControlFlags &ctrl,
2249 <                                const mithep::Electron * ele,
2250 <                                const mithep::Vertex & vtx,
2251 <                                const mithep::Array<mithep::PFCandidate> * fPFCandidates,
2252 <                                const mithep::Array<mithep::PileupEnergyDensity> * fPUEnergyDensity,
2253 <                                mithep::ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaVersion,
2254 <                                vector<const mithep::Muon*> muonsToVeto,
2255 <                                vector<const mithep::Electron*> electronsToVeto)
2249 >                      const mithep::Electron * ele,
2250 >                      const mithep::Vertex & vtx,
2251 >                      const mithep::Array<mithep::PFCandidate> * fPFCandidates,
2252 >                      const mithep::Array<mithep::PileupEnergyDensity> * fPUEnergyDensity,
2253 >                      mithep::ElectronTools::EElectronEffectiveAreaTarget EffectiveAreaVersion,
2254 >                      vector<const mithep::Muon*> muonsToVeto,
2255 >                      vector<const mithep::Electron*> electronsToVeto)
2256   //--------------------------------------------------------------------------------------------------
2257   {
2258  
# Line 2217 | Line 2265 | float electronPFIso04(ControlFlags &ctrl
2265             << "\tphi: " << vmu->Phi()
2266             << endl;
2267      }
2268 <    cout << "electronIsoMVASelection :: electrson to veto " << endl;
2268 >    cout << "electronIsoMVASelection :: electrons to veto " << endl;
2269      for( int i=0; i<electronsToVeto.size(); i++ ) {
2270        const mithep::Electron * vel = electronsToVeto[i];
2271        cout << "\tpt: " << vel->Pt()
# Line 2241 | Line 2289 | float electronPFIso04(ControlFlags &ctrl
2289    //Loop over PF Candidates
2290    //
2291    for(int k=0; k<fPFCandidates->GetEntries(); ++k) {
2292 +
2293 +
2294      const mithep::PFCandidate *pf = (mithep::PFCandidate*)((*fPFCandidates)[k]);
2295      Double_t deta = (ele->Eta() - pf->Eta());
2296      Double_t dphi = mithep::MathUtils::DeltaPhi(Double_t(ele->Phi()),Double_t(pf->Phi()));
2297      Double_t dr = mithep::MathUtils::DeltaR(ele->Phi(),ele->Eta(), pf->Phi(), pf->Eta());
2298 <    if (dr >= 0.4) continue;
2298 >
2299 >    if (dr > 0.4) continue;
2300 >    if( !(PFnoPUflag[k]) ) continue; // my PF no PU hack
2301 >
2302      if(ctrl.debug) {
2303 <      cout << "pf :: type: " << pf->PFType() << "\tpt: " << pf->Pt();
2304 <      if( pf->HasTrackerTrk() ) cout << "\tdZ: " << pf->TrackerTrk()->DzCorrected(vtx);
2303 >      cout << "pf :: type: " << pf->PFType() << "\tpt: " << pf->Pt() << "\tdR: " << dr;
2304 >      if( pf->HasTrackerTrk() ) cout << "\tdZ: " << pf->TrackerTrk()->DzCorrected(vtx)
2305 >                                     << "\ttrk: " << pf->HasTrackerTrk()
2306 >                                     << "\tgsf: " << pf->HasGsfTrk();
2307 >      
2308        cout << endl;
2309      }
2310  
2311  
2312 <    if ( (pf->HasTrackerTrk() && (pf->TrackerTrk() == ele->TrackerTrk())) ||
2313 <         (pf->HasGsfTrk() && (pf->GsfTrk() == ele->GsfTrk()))) continue;
2314 <    
2312 >    //
2313 >    // sync : I don't think theyre doing this ...
2314 >    //
2315 >    //     if ( (pf->HasTrackerTrk() && (pf->TrackerTrk() == ele->TrackerTrk())) ||
2316 >    //   (pf->HasGsfTrk() && (pf->GsfTrk() == ele->GsfTrk()))) {
2317 >    //       if( ctrl.debug ) cout << "\tskipping, matches to the electron ..."  << endl;
2318 >    //       continue;
2319 >    //     }
2320 >
2321  
2322      //
2323      // Lepton Footprint Removal
# Line 2268 | Line 2330 | float electronPFIso04(ControlFlags &ctrl
2330        //
2331        for (Int_t q=0; q < electronsToVeto.size(); ++q) {
2332          const mithep::Electron *tmpele = electronsToVeto[q];
2333 +        /*
2334          // 4l electron
2335          if( pf->HasTrackerTrk()  ) {
2336            if( pf->TrackerTrk() == tmpele->TrackerTrk() ) {
# Line 2281 | Line 2344 | float electronPFIso04(ControlFlags &ctrl
2344              IsLeptonFootprint = kTRUE;
2345            }
2346          }
2347 +        */
2348          // PF charged
2349          if (pf->Charge() != 0 && fabs(tmpele->SCluster()->Eta()) > 1.479
2350              && mithep::MathUtils::DeltaR(tmpele->Phi(),tmpele->Eta(), pf->Phi(), pf->Eta()) < 0.015) {
# Line 2295 | Line 2359 | float electronPFIso04(ControlFlags &ctrl
2359          }
2360        } // loop over electrons
2361  
2362 <
2362 >      /* KH - comment for sync            
2363        //
2364        // Check for muons
2365        //
# Line 2314 | Line 2378 | float electronPFIso04(ControlFlags &ctrl
2378            IsLeptonFootprint = kTRUE;
2379          }
2380        } // loop over muons
2381 <
2381 >      */
2382  
2383      if (IsLeptonFootprint)
2384        continue;
# Line 2322 | Line 2386 | float electronPFIso04(ControlFlags &ctrl
2386      //
2387      // Charged Iso
2388      //
2389 <    if (pf->Charge() != 0 ) {
2389 >    if (pf->Charge() != 0 && (pf->HasTrackerTrk()||pf->HasGsfTrk()) ) {
2390  
2391 <      if( pf->HasTrackerTrk() )
2392 <        if (abs(pf->TrackerTrk()->DzCorrected(vtx)) > 0.2) continue;
2393 <      if( pf->HasGsfTrk() )
2394 <        if (abs(pf->GsfTrk()->DzCorrected(vtx)) > 0.2) continue;
2391 > //       if( pf->HasTrackerTrk() )
2392 > //      if (abs(pf->TrackerTrk()->DzCorrected(vtx)) > 0.2) continue;
2393 > //       if( pf->HasGsfTrk() )
2394 > //      if (abs(pf->GsfTrk()->DzCorrected(vtx)) > 0.2) continue;
2395  
2396        // Veto any PFmuon, or PFEle
2397 <      if (abs(pf->PFType()) == PFCandidate::eElectron || abs(pf->PFType()) == PFCandidate::eMuon) continue;
2397 >      if (abs(pf->PFType()) == PFCandidate::eElectron || abs(pf->PFType()) == PFCandidate::eMuon) {
2398 >         cout << "\t skipping, pf is and ele or mu .." <<endl;
2399 >        continue;
2400 >      }
2401  
2402        // Footprint Veto
2403        if (fabs(ele->SCluster()->Eta()) > 1.479 && dr < 0.015) continue;
# Line 2353 | Line 2420 | float electronPFIso04(ControlFlags &ctrl
2420        if( ctrl.debug) cout << "gamma:: " << pf->Pt() << " "
2421                             << dr << endl;
2422        // KH, add to sync
2423 <      //      if( pf->Pt() > 0.5 )
2423 >      //      if( pf->Pt() > 0.5 )
2424          fGammaIso += pf->Pt();
2425      }
2426  
# Line 2364 | Line 2431 | float electronPFIso04(ControlFlags &ctrl
2431        if( ctrl.debug) cout << "neutral:: " << pf->Pt() << " "
2432                             << dr << endl;
2433        // KH, add to sync
2434 <      //      if( pf->Pt() > 0.5 )
2434 >      //      if( pf->Pt() > 0.5 )
2435          fNeutralHadronIso += pf->Pt();
2436      }
2437  
# Line 2372 | Line 2439 | float electronPFIso04(ControlFlags &ctrl
2439  
2440    }
2441  
2442 <  double rho = 0;
2443 < //   if (!(isnan(fPUEnergyDensity->At(0)->Rho()) || isinf(fPUEnergyDensity->At(0)->Rho())))
2444 < //     rho = fPUEnergyDensity->At(0)->Rho();
2445 <  if (!(isnan(fPUEnergyDensity->At(0)->RhoLowEta()) || isinf(fPUEnergyDensity->At(0)->RhoLowEta())))
2379 <    rho = fPUEnergyDensity->At(0)->RhoLowEta();
2442 >
2443 >  double rho=0;
2444 >  if (!(isnan(fPUEnergyDensity->At(0)->Rho()) || isinf(fPUEnergyDensity->At(0)->Rho())))
2445 >    rho = fPUEnergyDensity->At(0)->Rho();
2446  
2447    // WARNING!!!!  
2448    // hardcode for sync ...
# Line 2388 | Line 2454 | float electronPFIso04(ControlFlags &ctrl
2454                                          -rho*eleT.ElectronEffectiveArea(eleT.kEleGammaAndNeutralHadronIso04,
2455                                                                     ele->Eta(),EffectiveAreaVersion)));
2456  
2457 +
2458    gChargedIso = fChargedIso;
2459    gGammaIso = fGammaIso;
2460    gNeutralIso = fNeutralHadronIso;  
2394
2461    return pfIso;
2462   }
2463  
2464 +
2465 +
2466   //--------------------------------------------------------------------------------------------------
2467   // hacked version
2468   float electronPFIso04(ControlFlags &ctrl,

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines