30 fMethodname(
"BDTG method"),
31 fisInitialized(kFALSE),
33 fUseBinnedVersion(kTRUE),
54 std::vector<std::string> tempWeightFileVector;
55 tempWeightFileVector.push_back(weightsfile);
56 initialize(methodName,type,kFALSE,tempWeightFileVector);
63 Bool_t useBinnedVersion,
64 std::vector<std::string> weightsfiles
82 UInt_t ExpectedNBins = 0;
85 }
else if (type ==
kTrig) {
103 std::cout <<
"Error: Expected Number of bins = " <<
fNMVABins <<
" does not equal to weightsfiles.size() = "
104 << weightsfiles.size() << std::endl;
114 TMVA::Reader *tmpTMVAReader =
new TMVA::Reader(
"!Color:!Silent:Error" );
115 tmpTMVAReader->SetVerbose(kTRUE);
135 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
149 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
153 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
176 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
192 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
215 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
229 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
250 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
273 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
280 if(
i == 2 ||
i == 5) {
288 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
310 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
333 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
340 if(
i == 2 ||
i == 5) {
348 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
371 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
376 if ((
fMethodname ==
"BDT") && (weightsfiles[
i].rfind(
".xml.gz") == weightsfiles[
i].length()-strlen(
".xml.gz"))) {
377 gzFile
file = gzopen(weightsfiles[
i].c_str(),
"rb");
378 if (file ==
nullptr) {
std::cout <<
"Error opening gzip file associated to " << weightsfiles[
i] << std::endl;
throw cms::Exception(
"Configuration",
"Error reading zipped XML file"); }
379 std::vector<char>
data;
380 data.reserve(1024*1024*10);
381 unsigned int bufflen = 32*1024;
382 char *buff =
reinterpret_cast<char *
>(malloc(bufflen));
383 if (buff ==
nullptr) {
std::cout <<
"Error creating buffer for " << weightsfiles[
i] << std::endl; gzclose(file);
throw cms::Exception(
"Configuration",
"Error reading zipped XML file"); }
385 while ((read = gzread(file, buff, bufflen)) != 0) {
386 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"); }
387 data.insert(data.end(), buff, buff+
read);
389 if (gzclose(file) != Z_OK) {
std::cout <<
"Error closing gzip file associated to " << weightsfiles[
i] << std::endl; }
391 data.push_back(
'\0');
392 fTMVAMethod.push_back(dynamic_cast<TMVA::MethodBase*>(tmpTMVAReader->BookMVA(TMVA::Types::kBDT, &data[0])));
400 <<
" , type == " << type <<
" , "
401 <<
"Load weights file : " << weightsfiles[
i]
405 std::cout <<
"Electron ID MVA Completed\n";
414 unsigned int bin = 0;
417 if (pt < 10 && fabs(eta) < 1.479) bin = 0;
418 if (pt < 10 && fabs(eta) >= 1.479) bin = 1;
419 if (pt >= 10 && fabs(eta) < 1.479) bin = 2;
420 if (pt >= 10 && fabs(eta) >= 1.479) bin = 3;
425 if (pt < 10 && fabs(eta) < 0.8) bin = 0;
426 if (pt < 10 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 1;
427 if (pt < 10 && fabs(eta) >= 1.479) bin = 2;
428 if (pt >= 10 && fabs(eta) < 0.8) bin = 3;
429 if (pt >= 10 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 4;
430 if (pt >= 10 && fabs(eta) >= 1.479) bin = 5;
440 if (pt < 20 && fabs(eta) < 0.8) bin = 0;
441 if (pt < 20 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 1;
442 if (pt < 20 && fabs(eta) >= 1.479) bin = 2;
443 if (pt >= 20 && fabs(eta) < 0.8) bin = 3;
444 if (pt >= 20 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 4;
445 if (pt >= 20 && fabs(eta) >= 1.479) bin = 5;
468 Double_t OneMinusE1x5E5x5,
475 Double_t PreShowerOverRaw,
484 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
489 std::cout <<
"Error: This method should be called for kTrig MVA only" << endl;
524 Double_t
mva = -9999;
556 cout <<
" ### MVA " << mva << endl;
583 Double_t PreShowerOverRaw,
589 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
594 std::cout <<
"Error: This method should be called for kTrigNoIP MVA only" << endl;
627 Double_t
mva = -9999;
658 cout <<
" ### MVA " << mva << endl;
679 Double_t OneMinusE1x5E5x5,
686 Double_t PreShowerOverRaw,
693 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
698 std::cout <<
"Error: This method should be called for kNonTrig MVA only" << endl;
731 Double_t
mva = -9999;
763 cout <<
" ### MVA " << mva << endl;
784 Double_t OneMinusE1x5E5x5,
790 Double_t PreShowerOverRaw,
793 Double_t ChargedIso_DR0p0To0p1,
794 Double_t ChargedIso_DR0p1To0p2,
795 Double_t ChargedIso_DR0p2To0p3,
796 Double_t ChargedIso_DR0p3To0p4,
797 Double_t ChargedIso_DR0p4To0p5,
798 Double_t GammaIso_DR0p0To0p1,
799 Double_t GammaIso_DR0p1To0p2,
800 Double_t GammaIso_DR0p2To0p3,
801 Double_t GammaIso_DR0p3To0p4,
802 Double_t GammaIso_DR0p4To0p5,
803 Double_t NeutralHadronIso_DR0p0To0p1,
804 Double_t NeutralHadronIso_DR0p1To0p2,
805 Double_t NeutralHadronIso_DR0p2To0p3,
806 Double_t NeutralHadronIso_DR0p3To0p4,
807 Double_t NeutralHadronIso_DR0p4To0p5,
814 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
822 fMVAVar_deta = ( fabs(deta) > 0.06 ) ? 0.06 : fabs(deta);
862 Double_t
mva = -9999;
892 <<
" ChargedIso_DR0p0To0p1 " << ChargedIso_DR0p0To0p1
893 <<
" ChargedIso_DR0p1To0p2 " << ChargedIso_DR0p1To0p2
894 <<
" ChargedIso_DR0p2To0p3 " << ChargedIso_DR0p2To0p3
895 <<
" ChargedIso_DR0p3To0p4 " << ChargedIso_DR0p3To0p4
896 <<
" ChargedIso_DR0p4To0p5 " << ChargedIso_DR0p4To0p5
897 <<
" GammaIso_DR0p0To0p1 " << GammaIso_DR0p0To0p1
898 <<
" GammaIso_DR0p1To0p2 " << GammaIso_DR0p1To0p2
899 <<
" GammaIso_DR0p2To0p3 " << GammaIso_DR0p2To0p3
900 <<
" GammaIso_DR0p3To0p4 " << GammaIso_DR0p3To0p4
901 <<
" GammaIso_DR0p4To0p5 " << GammaIso_DR0p4To0p5
902 <<
" NeutralHadronIso_DR0p0To0p1 " << NeutralHadronIso_DR0p0To0p1
903 <<
" NeutralHadronIso_DR0p1To0p2 " << NeutralHadronIso_DR0p1To0p2
904 <<
" NeutralHadronIso_DR0p2To0p3 " << NeutralHadronIso_DR0p2To0p3
905 <<
" NeutralHadronIso_DR0p3To0p4 " << NeutralHadronIso_DR0p3To0p4
906 <<
" NeutralHadronIso_DR0p4To0p5 " << NeutralHadronIso_DR0p4To0p5
910 cout <<
" ### MVA " << mva << endl;
925 Double_t ChargedIso_DR0p0To0p1,
926 Double_t ChargedIso_DR0p1To0p2,
927 Double_t ChargedIso_DR0p2To0p3,
928 Double_t ChargedIso_DR0p3To0p4,
929 Double_t ChargedIso_DR0p4To0p5,
930 Double_t GammaIso_DR0p0To0p1,
931 Double_t GammaIso_DR0p1To0p2,
932 Double_t GammaIso_DR0p2To0p3,
933 Double_t GammaIso_DR0p3To0p4,
934 Double_t GammaIso_DR0p4To0p5,
935 Double_t NeutralHadronIso_DR0p0To0p1,
936 Double_t NeutralHadronIso_DR0p1To0p2,
937 Double_t NeutralHadronIso_DR0p2To0p3,
938 Double_t NeutralHadronIso_DR0p3To0p4,
939 Double_t NeutralHadronIso_DR0p4To0p5,
943 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
969 cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
975 cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
981 cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
988 cout <<
" ### MVA " << mva << endl;
1006 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1011 std::cout <<
"Error: This method should be called for kTrig or kNonTrig MVA only" << endl;
1015 bool validKF=
false;
1023 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1036 std::vector<float> vCov = myEcalCluster.localCovariances(*(ele.
superCluster()->seed())) ;
1074 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1079 double ip3d = gsfsign*ip3dpv.second.value();
1080 double ip3derr = ip3dpv.second.error();
1090 Double_t
mva = -9999;
1123 cout <<
" ### MVA " << mva << endl;
1141 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1146 std::cout <<
"Error: This method should be called for kTrigNoIP MVA only" << endl;
1150 bool validKF=
false;
1158 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1170 std::vector<float> vCov = myEcalCluster.localCovariances(*(ele.
superCluster()->seed())) ;
1200 Double_t
mva = -9999;
1235 cout <<
" ### MVA " << mva << endl;
1251 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1255 bool validKF=
false;
1263 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1279 : ( (ele.
e5x5() ) !=0. ? 1.-(ele.
e1x5() /ele.
e5x5() ) : -1. ) ;
1311 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1314 double ip3d = gsfsign*ele.
dB();
1315 double ip3derr = ele.
edB();
1327 Double_t
mva = -9999;
1362 cout <<
" ### MVA " << mva << endl;
1375 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1380 std::cout <<
"Error: This method should be called for kTrigNoIP mva only" << endl;
1385 bool validKF=
false;
1393 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1432 Double_t
mva = -9999;
1467 cout <<
" ### MVA " << mva << endl;
1493 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1504 Double_t tmpChargedIso_DR0p0To0p1 = 0;
1505 Double_t tmpChargedIso_DR0p1To0p2 = 0;
1506 Double_t tmpChargedIso_DR0p2To0p3 = 0;
1507 Double_t tmpChargedIso_DR0p3To0p4 = 0;
1508 Double_t tmpChargedIso_DR0p4To0p5 = 0;
1509 Double_t tmpGammaIso_DR0p0To0p1 = 0;
1510 Double_t tmpGammaIso_DR0p1To0p2 = 0;
1511 Double_t tmpGammaIso_DR0p2To0p3 = 0;
1512 Double_t tmpGammaIso_DR0p3To0p4 = 0;
1513 Double_t tmpGammaIso_DR0p4To0p5 = 0;
1514 Double_t tmpNeutralHadronIso_DR0p0To0p1 = 0;
1515 Double_t tmpNeutralHadronIso_DR0p1To0p2 = 0;
1516 Double_t tmpNeutralHadronIso_DR0p2To0p3 = 0;
1517 Double_t tmpNeutralHadronIso_DR0p3To0p4 = 0;
1518 Double_t tmpNeutralHadronIso_DR0p4To0p5 = 0;
1520 double electronTrackZ = 0;
1527 for (reco::PFCandidateCollection::const_iterator iP = PFCandidates.begin();
1528 iP != PFCandidates.end(); ++iP) {
1543 Bool_t IsLeptonFootprint = kFALSE;
1547 for (reco::GsfElectronCollection::const_iterator iE = IdentifiedElectrons.begin();
1548 iE != IdentifiedElectrons.end(); ++iE) {
1550 if(iP->gsfTrackRef().isNonnull() && iE->gsfTrack().isNonnull() &&
1551 refToPtr(iP->gsfTrackRef()) ==
refToPtr(iE->gsfTrack())) IsLeptonFootprint = kTRUE;
1552 if(iP->trackRef().isNonnull() && iE->closestCtfTrackRef().isNonnull() &&
1553 refToPtr(iP->trackRef()) ==
refToPtr(iE->closestCtfTrackRef())) IsLeptonFootprint = kTRUE;
1556 double tmpDR =
sqrt(
pow(iP->eta() - iE->eta(),2) +
pow(acos(
cos(iP->phi() - iE->phi())),2));
1557 if(iP->trackRef().isNonnull() && fabs(iE->superCluster()->eta()) >= 1.479
1558 && tmpDR < 0.015) IsLeptonFootprint = kTRUE;
1560 && tmpDR < 0.08) IsLeptonFootprint = kTRUE;
1562 for (reco::MuonCollection::const_iterator iM = IdentifiedMuons.begin();
1563 iM != IdentifiedMuons.end(); ++iM) {
1565 if(iP->trackRef().isNonnull() && iM->innerTrack().isNonnull() &&
1566 refToPtr(iP->trackRef()) ==
refToPtr(iM->innerTrack())) IsLeptonFootprint = kTRUE;
1569 double tmpDR =
sqrt(
pow(iP->eta() - iM->eta(),2) +
pow(acos(
cos(iP->phi() - iM->phi())),2));
1570 if(iP->trackRef().isNonnull() && tmpDR < 0.01) IsLeptonFootprint = kTRUE;
1573 if (!IsLeptonFootprint) {
1574 Bool_t passVeto = kTRUE;
1576 if(iP->trackRef().isNonnull()) {
1577 if (!(fabs(iP->trackRef()->dz(vertex.
position()) - electronTrackZ) < 0.2)) passVeto = kFALSE;
1584 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.015) passVeto = kFALSE;
1587 if (dr < 0.1) tmpChargedIso_DR0p0To0p1 += iP->pt();
1588 if (dr >= 0.1 && dr < 0.2) tmpChargedIso_DR0p1To0p2 += iP->pt();
1589 if (dr >= 0.2 && dr < 0.3) tmpChargedIso_DR0p2To0p3 += iP->pt();
1590 if (dr >= 0.3 && dr < 0.4) tmpChargedIso_DR0p3To0p4 += iP->pt();
1591 if (dr >= 0.4 && dr < 0.5) tmpChargedIso_DR0p4To0p5 += iP->pt();
1598 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.08) passVeto = kFALSE;
1601 if (dr < 0.1) tmpGammaIso_DR0p0To0p1 += iP->pt();
1602 if (dr >= 0.1 && dr < 0.2) tmpGammaIso_DR0p1To0p2 += iP->pt();
1603 if (dr >= 0.2 && dr < 0.3) tmpGammaIso_DR0p2To0p3 += iP->pt();
1604 if (dr >= 0.3 && dr < 0.4) tmpGammaIso_DR0p3To0p4 += iP->pt();
1605 if (dr >= 0.4 && dr < 0.5) tmpGammaIso_DR0p4To0p5 += iP->pt();
1610 if (dr < 0.1) tmpNeutralHadronIso_DR0p0To0p1 += iP->pt();
1611 if (dr >= 0.1 && dr < 0.2) tmpNeutralHadronIso_DR0p1To0p2 += iP->pt();
1612 if (dr >= 0.2 && dr < 0.3) tmpNeutralHadronIso_DR0p2To0p3 += iP->pt();
1613 if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += iP->pt();
1614 if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += iP->pt();
1642 Double_t
mva = -9999;
1655 cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1661 cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1667 cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1674 cout <<
" ### MVA " << mva << endl;
1694 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1698 bool validKF=
false;
1707 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1721 std::vector<float> vCov = myEcalCluster.localCovariances(*(ele.
superCluster()->seed())) ;
1760 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1765 double ip3d = gsfsign*ip3dpv.second.value();
1766 double ip3derr = ip3dpv.second.error();
1776 Double_t tmpChargedIso_DR0p0To0p1 = 0;
1777 Double_t tmpChargedIso_DR0p1To0p2 = 0;
1778 Double_t tmpChargedIso_DR0p2To0p3 = 0;
1779 Double_t tmpChargedIso_DR0p3To0p4 = 0;
1780 Double_t tmpChargedIso_DR0p4To0p5 = 0;
1781 Double_t tmpGammaIso_DR0p0To0p1 = 0;
1782 Double_t tmpGammaIso_DR0p1To0p2 = 0;
1783 Double_t tmpGammaIso_DR0p2To0p3 = 0;
1784 Double_t tmpGammaIso_DR0p3To0p4 = 0;
1785 Double_t tmpGammaIso_DR0p4To0p5 = 0;
1786 Double_t tmpNeutralHadronIso_DR0p0To0p1 = 0;
1787 Double_t tmpNeutralHadronIso_DR0p1To0p2 = 0;
1788 Double_t tmpNeutralHadronIso_DR0p2To0p3 = 0;
1789 Double_t tmpNeutralHadronIso_DR0p3To0p4 = 0;
1790 Double_t tmpNeutralHadronIso_DR0p4To0p5 = 0;
1792 for (reco::PFCandidateCollection::const_iterator iP = PFCandidates.begin();
1793 iP != PFCandidates.end(); ++iP) {
1797 Bool_t passVeto = kTRUE;
1799 if(iP->trackRef().isNonnull()) {
1809 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.015) passVeto = kFALSE;
1812 if (dr < 0.1) tmpChargedIso_DR0p0To0p1 += iP->pt();
1813 if (dr >= 0.1 && dr < 0.2) tmpChargedIso_DR0p1To0p2 += iP->pt();
1814 if (dr >= 0.2 && dr < 0.3) tmpChargedIso_DR0p2To0p3 += iP->pt();
1815 if (dr >= 0.3 && dr < 0.4) tmpChargedIso_DR0p3To0p4 += iP->pt();
1816 if (dr >= 0.4 && dr < 0.5) tmpChargedIso_DR0p4To0p5 += iP->pt();
1823 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.08) passVeto = kFALSE;
1826 if (dr < 0.1) tmpGammaIso_DR0p0To0p1 += iP->pt();
1827 if (dr >= 0.1 && dr < 0.2) tmpGammaIso_DR0p1To0p2 += iP->pt();
1828 if (dr >= 0.2 && dr < 0.3) tmpGammaIso_DR0p2To0p3 += iP->pt();
1829 if (dr >= 0.3 && dr < 0.4) tmpGammaIso_DR0p3To0p4 += iP->pt();
1830 if (dr >= 0.4 && dr < 0.5) tmpGammaIso_DR0p4To0p5 += iP->pt();
1835 if (dr < 0.1) tmpNeutralHadronIso_DR0p0To0p1 += iP->pt();
1836 if (dr >= 0.1 && dr < 0.2) tmpNeutralHadronIso_DR0p1To0p2 += iP->pt();
1837 if (dr >= 0.2 && dr < 0.3) tmpNeutralHadronIso_DR0p2To0p3 += iP->pt();
1838 if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += iP->pt();
1839 if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += iP->pt();
1877 cout <<
"Warning: Type " <<
fMVAType <<
" is not supported.\n";
1881 Double_t
mva = -9999;
1898 <<
" dphi " << fMVAVar_dphi
1914 cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1920 cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1926 cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1933 cout <<
"Rho : " << Rho << endl;
1934 cout <<
" ### MVA " << mva << 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
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