29 fMethodname(
"BDTG method"),
30 fisInitialized(kFALSE),
32 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
79 UInt_t ExpectedNBins = 0;
82 }
else if (type ==
kTrig) {
100 std::cout <<
"Error: Expected Number of bins = " <<
fNMVABins <<
" does not equal to weightsfiles.size() = " 101 << weightsfiles.size() << std::endl;
104 assert(
fNMVABins == weightsfiles.size());
111 TMVA::Reader *tmpTMVAReader =
new TMVA::Reader(
"!Color:!Silent:Error" );
112 tmpTMVAReader->SetVerbose(kTRUE);
132 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
146 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
150 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
173 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
189 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
212 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
226 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
247 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
270 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
277 if(
i == 2 ||
i == 5) {
285 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
307 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
330 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
337 if(
i == 2 ||
i == 5) {
345 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
368 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
373 if ((
fMethodname ==
"BDT") && (weightsfiles[
i].rfind(
".xml.gz") == weightsfiles[
i].length()-strlen(
".xml.gz"))) {
374 gzFile
file = gzopen(weightsfiles[
i].c_str(),
"rb");
375 if (file ==
nullptr) {
std::cout <<
"Error opening gzip file associated to " << weightsfiles[
i] << std::endl;
throw cms::Exception(
"Configuration",
"Error reading zipped XML file"); }
376 std::vector<char>
data;
377 data.reserve(1024*1024*10);
378 unsigned int bufflen = 32*1024;
379 char *buff =
reinterpret_cast<char *
>(malloc(bufflen));
380 if (buff ==
nullptr) {
std::cout <<
"Error creating buffer for " << weightsfiles[
i] << std::endl; gzclose(file);
throw cms::Exception(
"Configuration",
"Error reading zipped XML file"); }
382 while ((read = gzread(file, buff, bufflen)) != 0) {
383 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"); }
384 data.insert(data.end(), buff, buff+read);
386 if (gzclose(file) != Z_OK) {
std::cout <<
"Error closing gzip file associated to " << weightsfiles[
i] << std::endl; }
388 data.push_back(
'\0');
389 fTMVAMethod.push_back(dynamic_cast<TMVA::MethodBase*>(tmpTMVAReader->BookMVA(TMVA::Types::kBDT, &data[0])));
397 <<
" , type == " << type <<
" , " 398 <<
"Load weights file : " << weightsfiles[
i]
402 std::cout <<
"Electron ID MVA Completed\n";
411 unsigned int bin = 0;
414 if (pt < 10 && fabs(eta) < 1.479) bin = 0;
415 if (pt < 10 && fabs(eta) >= 1.479) bin = 1;
416 if (pt >= 10 && fabs(eta) < 1.479) bin = 2;
417 if (pt >= 10 && fabs(eta) >= 1.479) bin = 3;
422 if (pt < 10 && fabs(eta) < 0.8) bin = 0;
423 if (pt < 10 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 1;
424 if (pt < 10 && fabs(eta) >= 1.479) bin = 2;
425 if (pt >= 10 && fabs(eta) < 0.8) bin = 3;
426 if (pt >= 10 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 4;
427 if (pt >= 10 && fabs(eta) >= 1.479) bin = 5;
437 if (pt < 20 && fabs(eta) < 0.8) bin = 0;
438 if (pt < 20 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 1;
439 if (pt < 20 && fabs(eta) >= 1.479) bin = 2;
440 if (pt >= 20 && fabs(eta) < 0.8) bin = 3;
441 if (pt >= 20 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 4;
442 if (pt >= 20 && fabs(eta) >= 1.479) bin = 5;
465 Double_t OneMinusE1x5E5x5,
472 Double_t PreShowerOverRaw,
481 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
486 std::cout <<
"Error: This method should be called for kTrig MVA only" <<std::endl;
521 Double_t
mva = -9999;
553 std::cout <<
" ### MVA " << mva << std::endl;
580 Double_t PreShowerOverRaw,
586 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
591 std::cout <<
"Error: This method should be called for kTrigNoIP MVA only" <<std::endl;
624 Double_t
mva = -9999;
655 std::cout <<
" ### MVA " << mva << std::endl;
676 Double_t OneMinusE1x5E5x5,
683 Double_t PreShowerOverRaw,
690 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
695 std::cout <<
"Error: This method should be called for kNonTrig MVA only" <<std::endl;
728 Double_t
mva = -9999;
760 std::cout <<
" ### MVA " << mva << std::endl;
781 Double_t OneMinusE1x5E5x5,
787 Double_t PreShowerOverRaw,
790 Double_t ChargedIso_DR0p0To0p1,
791 Double_t ChargedIso_DR0p1To0p2,
792 Double_t ChargedIso_DR0p2To0p3,
793 Double_t ChargedIso_DR0p3To0p4,
794 Double_t ChargedIso_DR0p4To0p5,
795 Double_t GammaIso_DR0p0To0p1,
796 Double_t GammaIso_DR0p1To0p2,
797 Double_t GammaIso_DR0p2To0p3,
798 Double_t GammaIso_DR0p3To0p4,
799 Double_t GammaIso_DR0p4To0p5,
800 Double_t NeutralHadronIso_DR0p0To0p1,
801 Double_t NeutralHadronIso_DR0p1To0p2,
802 Double_t NeutralHadronIso_DR0p2To0p3,
803 Double_t NeutralHadronIso_DR0p3To0p4,
804 Double_t NeutralHadronIso_DR0p4To0p5,
811 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
819 fMVAVar_deta = ( fabs(deta) > 0.06 ) ? 0.06 : fabs(deta);
859 Double_t
mva = -9999;
889 <<
" ChargedIso_DR0p0To0p1 " << ChargedIso_DR0p0To0p1
890 <<
" ChargedIso_DR0p1To0p2 " << ChargedIso_DR0p1To0p2
891 <<
" ChargedIso_DR0p2To0p3 " << ChargedIso_DR0p2To0p3
892 <<
" ChargedIso_DR0p3To0p4 " << ChargedIso_DR0p3To0p4
893 <<
" ChargedIso_DR0p4To0p5 " << ChargedIso_DR0p4To0p5
894 <<
" GammaIso_DR0p0To0p1 " << GammaIso_DR0p0To0p1
895 <<
" GammaIso_DR0p1To0p2 " << GammaIso_DR0p1To0p2
896 <<
" GammaIso_DR0p2To0p3 " << GammaIso_DR0p2To0p3
897 <<
" GammaIso_DR0p3To0p4 " << GammaIso_DR0p3To0p4
898 <<
" GammaIso_DR0p4To0p5 " << GammaIso_DR0p4To0p5
899 <<
" NeutralHadronIso_DR0p0To0p1 " << NeutralHadronIso_DR0p0To0p1
900 <<
" NeutralHadronIso_DR0p1To0p2 " << NeutralHadronIso_DR0p1To0p2
901 <<
" NeutralHadronIso_DR0p2To0p3 " << NeutralHadronIso_DR0p2To0p3
902 <<
" NeutralHadronIso_DR0p3To0p4 " << NeutralHadronIso_DR0p3To0p4
903 <<
" NeutralHadronIso_DR0p4To0p5 " << NeutralHadronIso_DR0p4To0p5
907 std::cout <<
" ### MVA " << mva << std::endl;
922 Double_t ChargedIso_DR0p0To0p1,
923 Double_t ChargedIso_DR0p1To0p2,
924 Double_t ChargedIso_DR0p2To0p3,
925 Double_t ChargedIso_DR0p3To0p4,
926 Double_t ChargedIso_DR0p4To0p5,
927 Double_t GammaIso_DR0p0To0p1,
928 Double_t GammaIso_DR0p1To0p2,
929 Double_t GammaIso_DR0p2To0p3,
930 Double_t GammaIso_DR0p3To0p4,
931 Double_t GammaIso_DR0p4To0p5,
932 Double_t NeutralHadronIso_DR0p0To0p1,
933 Double_t NeutralHadronIso_DR0p1To0p2,
934 Double_t NeutralHadronIso_DR0p2To0p3,
935 Double_t NeutralHadronIso_DR0p3To0p4,
936 Double_t NeutralHadronIso_DR0p4To0p5,
940 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
966 std::cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 972 std::cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 978 std::cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 985 std::cout <<
" ### MVA " << mva <<std::endl;
1003 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1008 std::cout <<
"Error: This method should be called for kTrig or kNonTrig MVA only" <<std::endl;
1012 bool validKF=
false;
1020 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1033 std::vector<float> vCov = myEcalCluster.localCovariances(*(ele.
superCluster()->seed())) ;
1071 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1076 double ip3d = gsfsign*ip3dpv.second.value();
1077 double ip3derr = ip3dpv.second.error();
1087 Double_t
mva = -9999;
1120 std::cout <<
" ### MVA " << mva <<std::endl;
1138 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1143 std::cout <<
"Error: This method should be called for kTrigNoIP MVA only" <<std::endl;
1147 bool validKF=
false;
1155 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1167 std::vector<float> vCov = myEcalCluster.localCovariances(*(ele.
superCluster()->seed())) ;
1197 Double_t
mva = -9999;
1232 std::cout <<
" ### MVA " << mva <<std::endl;
1248 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1252 bool validKF=
false;
1260 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1276 : ( (ele.
e5x5() ) !=0. ? 1.-(ele.
e1x5() /ele.
e5x5() ) : -1. ) ;
1308 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1311 double ip3d = gsfsign*ele.
dB();
1312 double ip3derr = ele.
edB();
1324 Double_t
mva = -9999;
1359 std::cout <<
" ### MVA " << mva <<std::endl;
1372 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1377 std::cout <<
"Error: This method should be called for kTrigNoIP mva only" <<std::endl;
1382 bool validKF=
false;
1390 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1429 Double_t
mva = -9999;
1464 std::cout <<
" ### MVA " << mva <<std::endl;
1490 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1501 Double_t tmpChargedIso_DR0p0To0p1 = 0;
1502 Double_t tmpChargedIso_DR0p1To0p2 = 0;
1503 Double_t tmpChargedIso_DR0p2To0p3 = 0;
1504 Double_t tmpChargedIso_DR0p3To0p4 = 0;
1505 Double_t tmpChargedIso_DR0p4To0p5 = 0;
1506 Double_t tmpGammaIso_DR0p0To0p1 = 0;
1507 Double_t tmpGammaIso_DR0p1To0p2 = 0;
1508 Double_t tmpGammaIso_DR0p2To0p3 = 0;
1509 Double_t tmpGammaIso_DR0p3To0p4 = 0;
1510 Double_t tmpGammaIso_DR0p4To0p5 = 0;
1511 Double_t tmpNeutralHadronIso_DR0p0To0p1 = 0;
1512 Double_t tmpNeutralHadronIso_DR0p1To0p2 = 0;
1513 Double_t tmpNeutralHadronIso_DR0p2To0p3 = 0;
1514 Double_t tmpNeutralHadronIso_DR0p3To0p4 = 0;
1515 Double_t tmpNeutralHadronIso_DR0p4To0p5 = 0;
1517 double electronTrackZ = 0;
1524 for (reco::PFCandidateCollection::const_iterator iP = PFCandidates.begin();
1525 iP != PFCandidates.end(); ++iP) {
1540 Bool_t IsLeptonFootprint = kFALSE;
1544 for (reco::GsfElectronCollection::const_iterator iE = IdentifiedElectrons.begin();
1545 iE != IdentifiedElectrons.end(); ++iE) {
1547 if(iP->gsfTrackRef().isNonnull() && iE->gsfTrack().isNonnull() &&
1548 refToPtr(iP->gsfTrackRef()) ==
refToPtr(iE->gsfTrack())) IsLeptonFootprint = kTRUE;
1549 if(iP->trackRef().isNonnull() && iE->closestCtfTrackRef().isNonnull() &&
1550 refToPtr(iP->trackRef()) ==
refToPtr(iE->closestCtfTrackRef())) IsLeptonFootprint = kTRUE;
1553 double tmpDR =
sqrt(
pow(iP->eta() - iE->eta(),2) +
pow(acos(
cos(iP->phi() - iE->phi())),2));
1554 if(iP->trackRef().isNonnull() && fabs(iE->superCluster()->eta()) >= 1.479
1555 && tmpDR < 0.015) IsLeptonFootprint = kTRUE;
1557 && tmpDR < 0.08) IsLeptonFootprint = kTRUE;
1559 for (reco::MuonCollection::const_iterator iM = IdentifiedMuons.begin();
1560 iM != IdentifiedMuons.end(); ++iM) {
1562 if(iP->trackRef().isNonnull() && iM->innerTrack().isNonnull() &&
1563 refToPtr(iP->trackRef()) ==
refToPtr(iM->innerTrack())) IsLeptonFootprint = kTRUE;
1566 double tmpDR =
sqrt(
pow(iP->eta() - iM->eta(),2) +
pow(acos(
cos(iP->phi() - iM->phi())),2));
1567 if(iP->trackRef().isNonnull() && tmpDR < 0.01) IsLeptonFootprint = kTRUE;
1570 if (!IsLeptonFootprint) {
1571 Bool_t passVeto = kTRUE;
1573 if(iP->trackRef().isNonnull()) {
1574 if (!(fabs(iP->trackRef()->dz(vertex.
position()) - electronTrackZ) < 0.2)) passVeto = kFALSE;
1581 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.015) passVeto = kFALSE;
1584 if (dr < 0.1) tmpChargedIso_DR0p0To0p1 += iP->pt();
1585 if (dr >= 0.1 && dr < 0.2) tmpChargedIso_DR0p1To0p2 += iP->pt();
1586 if (dr >= 0.2 && dr < 0.3) tmpChargedIso_DR0p2To0p3 += iP->pt();
1587 if (dr >= 0.3 && dr < 0.4) tmpChargedIso_DR0p3To0p4 += iP->pt();
1588 if (dr >= 0.4 && dr < 0.5) tmpChargedIso_DR0p4To0p5 += iP->pt();
1595 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.08) passVeto = kFALSE;
1598 if (dr < 0.1) tmpGammaIso_DR0p0To0p1 += iP->pt();
1599 if (dr >= 0.1 && dr < 0.2) tmpGammaIso_DR0p1To0p2 += iP->pt();
1600 if (dr >= 0.2 && dr < 0.3) tmpGammaIso_DR0p2To0p3 += iP->pt();
1601 if (dr >= 0.3 && dr < 0.4) tmpGammaIso_DR0p3To0p4 += iP->pt();
1602 if (dr >= 0.4 && dr < 0.5) tmpGammaIso_DR0p4To0p5 += iP->pt();
1607 if (dr < 0.1) tmpNeutralHadronIso_DR0p0To0p1 += iP->pt();
1608 if (dr >= 0.1 && dr < 0.2) tmpNeutralHadronIso_DR0p1To0p2 += iP->pt();
1609 if (dr >= 0.2 && dr < 0.3) tmpNeutralHadronIso_DR0p2To0p3 += iP->pt();
1610 if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += iP->pt();
1611 if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += iP->pt();
1639 Double_t
mva = -9999;
1652 std::cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 1658 std::cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 1664 std::cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 1671 std::cout <<
" ### MVA " << mva <<std::endl;
1691 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1695 bool validKF=
false;
1704 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1718 std::vector<float> vCov = myEcalCluster.localCovariances(*(ele.
superCluster()->seed())) ;
1757 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1762 double ip3d = gsfsign*ip3dpv.second.value();
1763 double ip3derr = ip3dpv.second.error();
1773 Double_t tmpChargedIso_DR0p0To0p1 = 0;
1774 Double_t tmpChargedIso_DR0p1To0p2 = 0;
1775 Double_t tmpChargedIso_DR0p2To0p3 = 0;
1776 Double_t tmpChargedIso_DR0p3To0p4 = 0;
1777 Double_t tmpChargedIso_DR0p4To0p5 = 0;
1778 Double_t tmpGammaIso_DR0p0To0p1 = 0;
1779 Double_t tmpGammaIso_DR0p1To0p2 = 0;
1780 Double_t tmpGammaIso_DR0p2To0p3 = 0;
1781 Double_t tmpGammaIso_DR0p3To0p4 = 0;
1782 Double_t tmpGammaIso_DR0p4To0p5 = 0;
1783 Double_t tmpNeutralHadronIso_DR0p0To0p1 = 0;
1784 Double_t tmpNeutralHadronIso_DR0p1To0p2 = 0;
1785 Double_t tmpNeutralHadronIso_DR0p2To0p3 = 0;
1786 Double_t tmpNeutralHadronIso_DR0p3To0p4 = 0;
1787 Double_t tmpNeutralHadronIso_DR0p4To0p5 = 0;
1789 for (reco::PFCandidateCollection::const_iterator iP = PFCandidates.begin();
1790 iP != PFCandidates.end(); ++iP) {
1794 Bool_t passVeto = kTRUE;
1796 if(iP->trackRef().isNonnull()) {
1806 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.015) passVeto = kFALSE;
1809 if (dr < 0.1) tmpChargedIso_DR0p0To0p1 += iP->pt();
1810 if (dr >= 0.1 && dr < 0.2) tmpChargedIso_DR0p1To0p2 += iP->pt();
1811 if (dr >= 0.2 && dr < 0.3) tmpChargedIso_DR0p2To0p3 += iP->pt();
1812 if (dr >= 0.3 && dr < 0.4) tmpChargedIso_DR0p3To0p4 += iP->pt();
1813 if (dr >= 0.4 && dr < 0.5) tmpChargedIso_DR0p4To0p5 += iP->pt();
1820 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.08) passVeto = kFALSE;
1823 if (dr < 0.1) tmpGammaIso_DR0p0To0p1 += iP->pt();
1824 if (dr >= 0.1 && dr < 0.2) tmpGammaIso_DR0p1To0p2 += iP->pt();
1825 if (dr >= 0.2 && dr < 0.3) tmpGammaIso_DR0p2To0p3 += iP->pt();
1826 if (dr >= 0.3 && dr < 0.4) tmpGammaIso_DR0p3To0p4 += iP->pt();
1827 if (dr >= 0.4 && dr < 0.5) tmpGammaIso_DR0p4To0p5 += iP->pt();
1832 if (dr < 0.1) tmpNeutralHadronIso_DR0p0To0p1 += iP->pt();
1833 if (dr >= 0.1 && dr < 0.2) tmpNeutralHadronIso_DR0p1To0p2 += iP->pt();
1834 if (dr >= 0.2 && dr < 0.3) tmpNeutralHadronIso_DR0p2To0p3 += iP->pt();
1835 if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += iP->pt();
1836 if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += iP->pt();
1878 Double_t
mva = -9999;
1895 <<
" dphi " << fMVAVar_dphi
1911 std::cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 1917 std::cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 1923 std::cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 1930 std::cout <<
"Rho : " << Rho <<std::endl;
1931 std::cout <<
" ### MVA " << mva <<std::endl;
float sigmaIphiIphi() const
GsfTrackRef gsfTrack() const override
reference to a GsfTrack
Float_t fMVAVar_ChargedIso_DR0p1To0p2
Float_t fMVAVar_GammaIso_DR0p3To0p4
virtual TrackRef closestCtfTrackRef() const
bool isNonnull() const
Checks for non-null.
double eta() const final
momentum pseudorapidity
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
constexpr bool isNotFinite(T x)
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
double pt() const final
transverse momentum
Float_t fMVAVar_ChargedIso_DR0p4To0p5
Float_t fMVAVar_GammaIso_DR0p0To0p1
UInt_t GetMVABin(double eta, double pt) const
std::vector< TMVA::Reader * > fTMVAReader
ElectronEffectiveAreaTarget
constexpr bool isFinite(T x)
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
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)
float deltaEtaSuperClusterTrackAtVtx() const
float sigmaIetaIeta() const
float hadronicOverEm() const
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)
bin
set the eta bin as selection string.
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
double p() const final
magnitude of momentum vector
Float_t fMVAVar_NeutralHadronIso_DR0p2To0p3
Float_t fMVAVar_ChargedIso_DR0p3To0p4
Float_t fMVAVar_NeutralHadronIso_DR0p1To0p2
Float_t fMVAVar_kfhitsall
Analysis-level electron class.
reco::TrackRef closestCtfTrackRef() const override
override the reco::GsfElectron::closestCtfTrackRef method, to access the internal storage of the trac...
Float_t fMVAVar_NeutralHadronIso_DR0p3To0p4
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]
SuperClusterRef superCluster() const override
reference to a SuperCluster
reco::GsfTrackRef gsfTrack() const override
override the reco::GsfElectron::gsfTrack method, to access the internal storage of the supercluster ...
Float_t fMVAVar_ChargedIso_DR0p0To0p1
std::vector< TMVA::MethodBase * > fTMVAMethod
Float_t fMVAVar_ChargedIso_DR0p2To0p3
double phi() const final
momentum azimuthal angle
double edB(IPTYPE type) const
Uncertainty on the corresponding impact parameter.
reco::SuperClusterRef superCluster() const override
override the reco::GsfElectron::superCluster method, to access the internal storage of the superclust...
Power< A, B >::type pow(const A &a, const B &b)
Float_t fMVAVar_GammaIso_DR0p1To0p2
Float_t fMVAVar_NeutralHadronIso_DR0p4To0p5