28 fMethodname(
"BDTG method"),
29 fisInitialized(kFALSE),
31 fUseBinnedVersion(kTRUE),
52 std::vector<std::string> tempWeightFileVector;
53 tempWeightFileVector.push_back(weightsfile);
54 initialize(methodName,type,kFALSE,tempWeightFileVector);
61 Bool_t useBinnedVersion,
62 std::vector<std::string> weightsfiles
80 UInt_t ExpectedNBins = 0;
83 }
else if (type ==
kTrig) {
101 std::cout <<
"Error: Expected Number of bins = " <<
fNMVABins <<
" does not equal to weightsfiles.size() = "
102 << weightsfiles.size() << std::endl;
112 TMVA::Reader *tmpTMVAReader =
new TMVA::Reader(
"!Color:!Silent:Error" );
113 tmpTMVAReader->SetVerbose(kTRUE);
133 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
147 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
151 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
174 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
190 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
213 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
227 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
248 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
271 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
278 if(
i == 2 ||
i == 5) {
286 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
308 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
331 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
338 if(
i == 2 ||
i == 5) {
346 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
369 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
374 if ((
fMethodname ==
"BDT") && (weightsfiles[
i].rfind(
".xml.gz") == weightsfiles[
i].length()-strlen(
".xml.gz"))) {
375 gzFile
file = gzopen(weightsfiles[
i].c_str(),
"rb");
376 if (file ==
nullptr) {
std::cout <<
"Error opening gzip file associated to " << weightsfiles[
i] << std::endl;
throw cms::Exception(
"Configuration",
"Error reading zipped XML file"); }
377 std::vector<char>
data;
378 data.reserve(1024*1024*10);
379 unsigned int bufflen = 32*1024;
380 char *buff =
reinterpret_cast<char *
>(malloc(bufflen));
381 if (buff ==
nullptr) {
std::cout <<
"Error creating buffer for " << weightsfiles[
i] << std::endl; gzclose(file);
throw cms::Exception(
"Configuration",
"Error reading zipped XML file"); }
383 while ((read = gzread(file, buff, bufflen)) != 0) {
384 if (read == -1) {
std::cout <<
"Error reading gzip file associated to " << weightsfiles[
i] <<
": " << gzerror(file,&read) << std::endl; gzclose(file); free(buff);
throw cms::Exception(
"Configuration",
"Error reading zipped XML file"); }
385 data.insert(data.end(), buff, buff+
read);
387 if (gzclose(file) != Z_OK) {
std::cout <<
"Error closing gzip file associated to " << weightsfiles[
i] << std::endl; }
389 data.push_back(
'\0');
390 fTMVAMethod.push_back(dynamic_cast<TMVA::MethodBase*>(tmpTMVAReader->BookMVA(TMVA::Types::kBDT, &data[0])));
398 <<
" , type == " << type <<
" , "
399 <<
"Load weights file : " << weightsfiles[
i]
403 std::cout <<
"Electron ID MVA Completed\n";
412 unsigned int bin = 0;
415 if (pt < 10 && fabs(eta) < 1.479) bin = 0;
416 if (pt < 10 && fabs(eta) >= 1.479) bin = 1;
417 if (pt >= 10 && fabs(eta) < 1.479) bin = 2;
418 if (pt >= 10 && fabs(eta) >= 1.479) bin = 3;
423 if (pt < 10 && fabs(eta) < 0.8) bin = 0;
424 if (pt < 10 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 1;
425 if (pt < 10 && fabs(eta) >= 1.479) bin = 2;
426 if (pt >= 10 && fabs(eta) < 0.8) bin = 3;
427 if (pt >= 10 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 4;
428 if (pt >= 10 && fabs(eta) >= 1.479) bin = 5;
438 if (pt < 20 && fabs(eta) < 0.8) bin = 0;
439 if (pt < 20 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 1;
440 if (pt < 20 && fabs(eta) >= 1.479) bin = 2;
441 if (pt >= 20 && fabs(eta) < 0.8) bin = 3;
442 if (pt >= 20 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 4;
443 if (pt >= 20 && fabs(eta) >= 1.479) bin = 5;
466 Double_t OneMinusE1x5E5x5,
473 Double_t PreShowerOverRaw,
482 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
487 std::cout <<
"Error: This method should be called for kTrig MVA only" <<std::endl;
522 Double_t
mva = -9999;
554 std::cout <<
" ### MVA " << mva << std::endl;
581 Double_t PreShowerOverRaw,
587 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
592 std::cout <<
"Error: This method should be called for kTrigNoIP MVA only" <<std::endl;
625 Double_t
mva = -9999;
656 std::cout <<
" ### MVA " << mva << std::endl;
677 Double_t OneMinusE1x5E5x5,
684 Double_t PreShowerOverRaw,
691 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
696 std::cout <<
"Error: This method should be called for kNonTrig MVA only" <<std::endl;
729 Double_t
mva = -9999;
761 std::cout <<
" ### MVA " << mva << std::endl;
782 Double_t OneMinusE1x5E5x5,
788 Double_t PreShowerOverRaw,
791 Double_t ChargedIso_DR0p0To0p1,
792 Double_t ChargedIso_DR0p1To0p2,
793 Double_t ChargedIso_DR0p2To0p3,
794 Double_t ChargedIso_DR0p3To0p4,
795 Double_t ChargedIso_DR0p4To0p5,
796 Double_t GammaIso_DR0p0To0p1,
797 Double_t GammaIso_DR0p1To0p2,
798 Double_t GammaIso_DR0p2To0p3,
799 Double_t GammaIso_DR0p3To0p4,
800 Double_t GammaIso_DR0p4To0p5,
801 Double_t NeutralHadronIso_DR0p0To0p1,
802 Double_t NeutralHadronIso_DR0p1To0p2,
803 Double_t NeutralHadronIso_DR0p2To0p3,
804 Double_t NeutralHadronIso_DR0p3To0p4,
805 Double_t NeutralHadronIso_DR0p4To0p5,
812 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
820 fMVAVar_deta = ( fabs(deta) > 0.06 ) ? 0.06 : fabs(deta);
860 Double_t
mva = -9999;
890 <<
" ChargedIso_DR0p0To0p1 " << ChargedIso_DR0p0To0p1
891 <<
" ChargedIso_DR0p1To0p2 " << ChargedIso_DR0p1To0p2
892 <<
" ChargedIso_DR0p2To0p3 " << ChargedIso_DR0p2To0p3
893 <<
" ChargedIso_DR0p3To0p4 " << ChargedIso_DR0p3To0p4
894 <<
" ChargedIso_DR0p4To0p5 " << ChargedIso_DR0p4To0p5
895 <<
" GammaIso_DR0p0To0p1 " << GammaIso_DR0p0To0p1
896 <<
" GammaIso_DR0p1To0p2 " << GammaIso_DR0p1To0p2
897 <<
" GammaIso_DR0p2To0p3 " << GammaIso_DR0p2To0p3
898 <<
" GammaIso_DR0p3To0p4 " << GammaIso_DR0p3To0p4
899 <<
" GammaIso_DR0p4To0p5 " << GammaIso_DR0p4To0p5
900 <<
" NeutralHadronIso_DR0p0To0p1 " << NeutralHadronIso_DR0p0To0p1
901 <<
" NeutralHadronIso_DR0p1To0p2 " << NeutralHadronIso_DR0p1To0p2
902 <<
" NeutralHadronIso_DR0p2To0p3 " << NeutralHadronIso_DR0p2To0p3
903 <<
" NeutralHadronIso_DR0p3To0p4 " << NeutralHadronIso_DR0p3To0p4
904 <<
" NeutralHadronIso_DR0p4To0p5 " << NeutralHadronIso_DR0p4To0p5
908 std::cout <<
" ### MVA " << mva << std::endl;
923 Double_t ChargedIso_DR0p0To0p1,
924 Double_t ChargedIso_DR0p1To0p2,
925 Double_t ChargedIso_DR0p2To0p3,
926 Double_t ChargedIso_DR0p3To0p4,
927 Double_t ChargedIso_DR0p4To0p5,
928 Double_t GammaIso_DR0p0To0p1,
929 Double_t GammaIso_DR0p1To0p2,
930 Double_t GammaIso_DR0p2To0p3,
931 Double_t GammaIso_DR0p3To0p4,
932 Double_t GammaIso_DR0p4To0p5,
933 Double_t NeutralHadronIso_DR0p0To0p1,
934 Double_t NeutralHadronIso_DR0p1To0p2,
935 Double_t NeutralHadronIso_DR0p2To0p3,
936 Double_t NeutralHadronIso_DR0p3To0p4,
937 Double_t NeutralHadronIso_DR0p4To0p5,
941 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
967 std::cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
973 std::cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
979 std::cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
986 std::cout <<
" ### MVA " << mva <<std::endl;
1004 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1009 std::cout <<
"Error: This method should be called for kTrig or kNonTrig MVA only" <<std::endl;
1013 bool validKF=
false;
1021 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1034 std::vector<float> vCov = myEcalCluster.localCovariances(*(ele.
superCluster()->seed())) ;
1072 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1077 double ip3d = gsfsign*ip3dpv.second.value();
1078 double ip3derr = ip3dpv.second.error();
1088 Double_t
mva = -9999;
1121 std::cout <<
" ### MVA " << mva <<std::endl;
1139 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1144 std::cout <<
"Error: This method should be called for kTrigNoIP MVA only" <<std::endl;
1148 bool validKF=
false;
1156 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1168 std::vector<float> vCov = myEcalCluster.localCovariances(*(ele.
superCluster()->seed())) ;
1198 Double_t
mva = -9999;
1233 std::cout <<
" ### MVA " << mva <<std::endl;
1249 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1253 bool validKF=
false;
1261 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1277 : ( (ele.
e5x5() ) !=0. ? 1.-(ele.
e1x5() /ele.
e5x5() ) : -1. ) ;
1309 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1312 double ip3d = gsfsign*ele.
dB();
1313 double ip3derr = ele.
edB();
1325 Double_t
mva = -9999;
1360 std::cout <<
" ### MVA " << mva <<std::endl;
1373 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1378 std::cout <<
"Error: This method should be called for kTrigNoIP mva only" <<std::endl;
1383 bool validKF=
false;
1391 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1430 Double_t
mva = -9999;
1465 std::cout <<
" ### MVA " << mva <<std::endl;
1491 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1502 Double_t tmpChargedIso_DR0p0To0p1 = 0;
1503 Double_t tmpChargedIso_DR0p1To0p2 = 0;
1504 Double_t tmpChargedIso_DR0p2To0p3 = 0;
1505 Double_t tmpChargedIso_DR0p3To0p4 = 0;
1506 Double_t tmpChargedIso_DR0p4To0p5 = 0;
1507 Double_t tmpGammaIso_DR0p0To0p1 = 0;
1508 Double_t tmpGammaIso_DR0p1To0p2 = 0;
1509 Double_t tmpGammaIso_DR0p2To0p3 = 0;
1510 Double_t tmpGammaIso_DR0p3To0p4 = 0;
1511 Double_t tmpGammaIso_DR0p4To0p5 = 0;
1512 Double_t tmpNeutralHadronIso_DR0p0To0p1 = 0;
1513 Double_t tmpNeutralHadronIso_DR0p1To0p2 = 0;
1514 Double_t tmpNeutralHadronIso_DR0p2To0p3 = 0;
1515 Double_t tmpNeutralHadronIso_DR0p3To0p4 = 0;
1516 Double_t tmpNeutralHadronIso_DR0p4To0p5 = 0;
1518 double electronTrackZ = 0;
1525 for (reco::PFCandidateCollection::const_iterator iP = PFCandidates.begin();
1526 iP != PFCandidates.end(); ++iP) {
1541 Bool_t IsLeptonFootprint = kFALSE;
1545 for (reco::GsfElectronCollection::const_iterator iE = IdentifiedElectrons.begin();
1546 iE != IdentifiedElectrons.end(); ++iE) {
1548 if(iP->gsfTrackRef().isNonnull() && iE->gsfTrack().isNonnull() &&
1549 refToPtr(iP->gsfTrackRef()) ==
refToPtr(iE->gsfTrack())) IsLeptonFootprint = kTRUE;
1550 if(iP->trackRef().isNonnull() && iE->closestCtfTrackRef().isNonnull() &&
1551 refToPtr(iP->trackRef()) ==
refToPtr(iE->closestCtfTrackRef())) IsLeptonFootprint = kTRUE;
1554 double tmpDR =
sqrt(
pow(iP->eta() - iE->eta(),2) +
pow(acos(
cos(iP->phi() - iE->phi())),2));
1555 if(iP->trackRef().isNonnull() && fabs(iE->superCluster()->eta()) >= 1.479
1556 && tmpDR < 0.015) IsLeptonFootprint = kTRUE;
1558 && tmpDR < 0.08) IsLeptonFootprint = kTRUE;
1560 for (reco::MuonCollection::const_iterator iM = IdentifiedMuons.begin();
1561 iM != IdentifiedMuons.end(); ++iM) {
1563 if(iP->trackRef().isNonnull() && iM->innerTrack().isNonnull() &&
1564 refToPtr(iP->trackRef()) ==
refToPtr(iM->innerTrack())) IsLeptonFootprint = kTRUE;
1567 double tmpDR =
sqrt(
pow(iP->eta() - iM->eta(),2) +
pow(acos(
cos(iP->phi() - iM->phi())),2));
1568 if(iP->trackRef().isNonnull() && tmpDR < 0.01) IsLeptonFootprint = kTRUE;
1571 if (!IsLeptonFootprint) {
1572 Bool_t passVeto = kTRUE;
1574 if(iP->trackRef().isNonnull()) {
1575 if (!(fabs(iP->trackRef()->dz(vertex.
position()) - electronTrackZ) < 0.2)) passVeto = kFALSE;
1582 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.015) passVeto = kFALSE;
1585 if (dr < 0.1) tmpChargedIso_DR0p0To0p1 += iP->pt();
1586 if (dr >= 0.1 && dr < 0.2) tmpChargedIso_DR0p1To0p2 += iP->pt();
1587 if (dr >= 0.2 && dr < 0.3) tmpChargedIso_DR0p2To0p3 += iP->pt();
1588 if (dr >= 0.3 && dr < 0.4) tmpChargedIso_DR0p3To0p4 += iP->pt();
1589 if (dr >= 0.4 && dr < 0.5) tmpChargedIso_DR0p4To0p5 += iP->pt();
1596 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.08) passVeto = kFALSE;
1599 if (dr < 0.1) tmpGammaIso_DR0p0To0p1 += iP->pt();
1600 if (dr >= 0.1 && dr < 0.2) tmpGammaIso_DR0p1To0p2 += iP->pt();
1601 if (dr >= 0.2 && dr < 0.3) tmpGammaIso_DR0p2To0p3 += iP->pt();
1602 if (dr >= 0.3 && dr < 0.4) tmpGammaIso_DR0p3To0p4 += iP->pt();
1603 if (dr >= 0.4 && dr < 0.5) tmpGammaIso_DR0p4To0p5 += iP->pt();
1608 if (dr < 0.1) tmpNeutralHadronIso_DR0p0To0p1 += iP->pt();
1609 if (dr >= 0.1 && dr < 0.2) tmpNeutralHadronIso_DR0p1To0p2 += iP->pt();
1610 if (dr >= 0.2 && dr < 0.3) tmpNeutralHadronIso_DR0p2To0p3 += iP->pt();
1611 if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += iP->pt();
1612 if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += iP->pt();
1640 Double_t
mva = -9999;
1653 std::cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1659 std::cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1665 std::cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1672 std::cout <<
" ### MVA " << mva <<std::endl;
1692 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1696 bool validKF=
false;
1705 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1719 std::vector<float> vCov = myEcalCluster.localCovariances(*(ele.
superCluster()->seed())) ;
1758 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1763 double ip3d = gsfsign*ip3dpv.second.value();
1764 double ip3derr = ip3dpv.second.error();
1774 Double_t tmpChargedIso_DR0p0To0p1 = 0;
1775 Double_t tmpChargedIso_DR0p1To0p2 = 0;
1776 Double_t tmpChargedIso_DR0p2To0p3 = 0;
1777 Double_t tmpChargedIso_DR0p3To0p4 = 0;
1778 Double_t tmpChargedIso_DR0p4To0p5 = 0;
1779 Double_t tmpGammaIso_DR0p0To0p1 = 0;
1780 Double_t tmpGammaIso_DR0p1To0p2 = 0;
1781 Double_t tmpGammaIso_DR0p2To0p3 = 0;
1782 Double_t tmpGammaIso_DR0p3To0p4 = 0;
1783 Double_t tmpGammaIso_DR0p4To0p5 = 0;
1784 Double_t tmpNeutralHadronIso_DR0p0To0p1 = 0;
1785 Double_t tmpNeutralHadronIso_DR0p1To0p2 = 0;
1786 Double_t tmpNeutralHadronIso_DR0p2To0p3 = 0;
1787 Double_t tmpNeutralHadronIso_DR0p3To0p4 = 0;
1788 Double_t tmpNeutralHadronIso_DR0p4To0p5 = 0;
1790 for (reco::PFCandidateCollection::const_iterator iP = PFCandidates.begin();
1791 iP != PFCandidates.end(); ++iP) {
1795 Bool_t passVeto = kTRUE;
1797 if(iP->trackRef().isNonnull()) {
1807 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.015) passVeto = kFALSE;
1810 if (dr < 0.1) tmpChargedIso_DR0p0To0p1 += iP->pt();
1811 if (dr >= 0.1 && dr < 0.2) tmpChargedIso_DR0p1To0p2 += iP->pt();
1812 if (dr >= 0.2 && dr < 0.3) tmpChargedIso_DR0p2To0p3 += iP->pt();
1813 if (dr >= 0.3 && dr < 0.4) tmpChargedIso_DR0p3To0p4 += iP->pt();
1814 if (dr >= 0.4 && dr < 0.5) tmpChargedIso_DR0p4To0p5 += iP->pt();
1821 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.08) passVeto = kFALSE;
1824 if (dr < 0.1) tmpGammaIso_DR0p0To0p1 += iP->pt();
1825 if (dr >= 0.1 && dr < 0.2) tmpGammaIso_DR0p1To0p2 += iP->pt();
1826 if (dr >= 0.2 && dr < 0.3) tmpGammaIso_DR0p2To0p3 += iP->pt();
1827 if (dr >= 0.3 && dr < 0.4) tmpGammaIso_DR0p3To0p4 += iP->pt();
1828 if (dr >= 0.4 && dr < 0.5) tmpGammaIso_DR0p4To0p5 += iP->pt();
1833 if (dr < 0.1) tmpNeutralHadronIso_DR0p0To0p1 += iP->pt();
1834 if (dr >= 0.1 && dr < 0.2) tmpNeutralHadronIso_DR0p1To0p2 += iP->pt();
1835 if (dr >= 0.2 && dr < 0.3) tmpNeutralHadronIso_DR0p2To0p3 += iP->pt();
1836 if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += iP->pt();
1837 if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += iP->pt();
1879 Double_t
mva = -9999;
1896 <<
" dphi " << fMVAVar_dphi
1912 std::cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1918 std::cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1924 std::cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1931 std::cout <<
"Rho : " << Rho <<std::endl;
1932 std::cout <<
" ### MVA " << mva <<std::endl;
float sigmaIphiIphi() const
Float_t fMVAVar_ChargedIso_DR0p1To0p2
Float_t fMVAVar_GammaIso_DR0p3To0p4
bool isNonnull() const
Checks for non-null.
Ptr< typename C::value_type > refToPtr(Ref< C, typename C::value_type, refhelper::FindUsingAdvance< C, typename C::value_type > > const &ref)
float eSuperClusterOverP() const
float full5x5_e5x5() const
float full5x5_e1x5() const
Float_t fMVAVar_GammaIso_DR0p4To0p5
math::XYZVectorF trackMomentumAtVtx() const
Double_t isoMvaValue(const reco::GsfElectron &ele, const reco::Vertex &vertex, const reco::PFCandidateCollection &PFCandidates, double Rho, ElectronEffectiveArea::ElectronEffectiveAreaTarget EATarget, const reco::GsfElectronCollection &IdentifiedElectrons, const reco::MuonCollection &IdentifiedMuons, bool printDebug=kFALSE)
static Double_t GetElectronEffectiveArea(ElectronEffectiveAreaType type, Double_t SCEta, ElectronEffectiveAreaTarget EffectiveAreaTarget=kEleEAData2011)
reco::TransientTrack build(const reco::Track *p) const
float full5x5_sigmaIphiIphi() const
virtual double phi() const final
momentum azimuthal angle
Float_t fMVAVar_ChargedIso_DR0p4To0p5
Float_t fMVAVar_GammaIso_DR0p0To0p1
UInt_t GetMVABin(double eta, double pt) const
std::vector< TMVA::Reader * > fTMVAReader
ElectronEffectiveAreaTarget
const Point & position() const
position
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
std::vector< Muon > MuonCollection
collection of Muon objects
Float_t fMVAVar_OneMinusE1x5E5x5
TrackRef closestCtfTrackRef() const
Float_t fMVAVar_eleEoPout
float full5x5_sigmaIetaIeta() const
Double_t IDIsoCombinedMvaValue(const reco::GsfElectron &ele, const reco::Vertex &vertex, const TransientTrackBuilder &transientTrackBuilder, EcalClusterLazyTools myEcalCluster, const reco::PFCandidateCollection &PFCandidates, double Rho, ElectronEffectiveArea::ElectronEffectiveAreaTarget EATarget, bool printDebug=kFALSE)
reco::SuperClusterRef superCluster() const
override the reco::GsfElectron::superCluster method, to access the internal storage of the superclust...
float deltaEtaSuperClusterTrackAtVtx() const
float sigmaIetaIeta() const
float hadronicOverEm() const
reco::GsfTrackRef gsfTrack() const
override the reco::GsfElectron::gsfTrack method, to access the internal storage of the supercluster ...
reco::TrackRef closestCtfTrackRef() const
override the reco::GsfElectron::closestCtfTrackRef method, to access the internal storage of the trac...
virtual SuperClusterRef superCluster() const
reference to a SuperCluster
float deltaPhiSuperClusterTrackAtVtx() const
Cos< T >::type cos(const T &t)
void initialize(std::string methodName, std::string weightsfile, EGammaMvaEleEstimator::MVAType type)
float eEleClusterOverPout() const
Float_t fMVAVar_NeutralHadronIso_DR0p0To0p1
Float_t fMVAVar_PreShowerOverRaw
Double_t mvaValue(const reco::GsfElectron &ele, const reco::Vertex &vertex, const TransientTrackBuilder &transientTrackBuilder, EcalClusterLazyTools myEcalCluster, bool printDebug=kFALSE)
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
Float_t fMVAVar_NeutralHadronIso_DR0p2To0p3
Float_t fMVAVar_ChargedIso_DR0p3To0p4
Float_t fMVAVar_NeutralHadronIso_DR0p1To0p2
Float_t fMVAVar_kfhitsall
Analysis-level electron class.
Float_t fMVAVar_NeutralHadronIso_DR0p3To0p4
virtual double p() const final
magnitude of momentum vector
Float_t fMVAVar_GammaIso_DR0p2To0p3
double dB(IPTYPE type) const
Impact parameter wrt primary vertex or beamspot.
float deltaEtaSeedClusterTrackAtCalo() const
char data[epos_bytes_allocation]
virtual double eta() const final
momentum pseudorapidity
Float_t fMVAVar_ChargedIso_DR0p0To0p1
std::vector< TMVA::MethodBase * > fTMVAMethod
Float_t fMVAVar_ChargedIso_DR0p2To0p3
double edB(IPTYPE type) const
Uncertainty on the corresponding impact parameter.
Power< A, B >::type pow(const A &a, const B &b)
Float_t fMVAVar_GammaIso_DR0p1To0p2
virtual GsfTrackRef gsfTrack() const
reference to a GsfTrack
virtual double pt() const final
transverse momentum
Float_t fMVAVar_NeutralHadronIso_DR0p4To0p5