28 fMethodname(
"BDTG method"),
29 fisInitialized(kFALSE),
31 fUseBinnedVersion(kTRUE),
51 std::vector<std::string> tempWeightFileVector;
52 tempWeightFileVector.push_back(weightsfile);
53 initialize(methodName,type,kFALSE,tempWeightFileVector);
60 Bool_t useBinnedVersion,
61 std::vector<std::string> weightsfiles
78 UInt_t ExpectedNBins = 0;
81 }
else if (type ==
kTrig) {
99 std::cout <<
"Error: Expected Number of bins = " <<
fNMVABins <<
" does not equal to weightsfiles.size() = " 100 << weightsfiles.size() << std::endl;
103 assert(
fNMVABins == weightsfiles.size());
110 TMVA::Reader *tmpTMVAReader =
new TMVA::Reader(
"!Color:!Silent:Error" );
111 tmpTMVAReader->SetVerbose(kTRUE);
131 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
145 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
149 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
172 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
188 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
211 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
225 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
246 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
269 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
276 if(
i == 2 ||
i == 5) {
284 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
306 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
329 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
336 if(
i == 2 ||
i == 5) {
344 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
367 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
372 if ((
fMethodname ==
"BDT") && (weightsfiles[
i].rfind(
".xml.gz") == weightsfiles[
i].length()-strlen(
".xml.gz"))) {
373 gzFile
file = gzopen(weightsfiles[
i].c_str(),
"rb");
374 if (file ==
nullptr) {
std::cout <<
"Error opening gzip file associated to " << weightsfiles[
i] << std::endl;
throw cms::Exception(
"Configuration",
"Error reading zipped XML file"); }
375 std::vector<char>
data;
376 data.reserve(1024*1024*10);
377 unsigned int bufflen = 32*1024;
378 char *buff =
reinterpret_cast<char *
>(malloc(bufflen));
379 if (buff ==
nullptr) {
std::cout <<
"Error creating buffer for " << weightsfiles[
i] << std::endl; gzclose(file);
throw cms::Exception(
"Configuration",
"Error reading zipped XML file"); }
381 while ((read = gzread(file, buff, bufflen)) != 0) {
382 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"); }
383 data.insert(data.end(), buff, buff+read);
385 if (gzclose(file) != Z_OK) {
std::cout <<
"Error closing gzip file associated to " << weightsfiles[
i] << std::endl; }
387 data.push_back(
'\0');
388 fTMVAMethod.push_back(dynamic_cast<TMVA::MethodBase*>(tmpTMVAReader->BookMVA(TMVA::Types::kBDT, &data[0])));
396 <<
" , type == " << type <<
" , " 397 <<
"Load weights file : " << weightsfiles[
i]
401 std::cout <<
"Electron ID MVA Completed\n";
410 unsigned int bin = 0;
413 if (pt < 10 && fabs(eta) < 1.479) bin = 0;
414 if (pt < 10 && fabs(eta) >= 1.479) bin = 1;
415 if (pt >= 10 && fabs(eta) < 1.479) bin = 2;
416 if (pt >= 10 && fabs(eta) >= 1.479) bin = 3;
421 if (pt < 10 && fabs(eta) < 0.8) bin = 0;
422 if (pt < 10 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 1;
423 if (pt < 10 && fabs(eta) >= 1.479) bin = 2;
424 if (pt >= 10 && fabs(eta) < 0.8) bin = 3;
425 if (pt >= 10 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 4;
426 if (pt >= 10 && fabs(eta) >= 1.479) bin = 5;
436 if (pt < 20 && fabs(eta) < 0.8) bin = 0;
437 if (pt < 20 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 1;
438 if (pt < 20 && fabs(eta) >= 1.479) bin = 2;
439 if (pt >= 20 && fabs(eta) < 0.8) bin = 3;
440 if (pt >= 20 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 4;
441 if (pt >= 20 && fabs(eta) >= 1.479) bin = 5;
464 Double_t OneMinusE1x5E5x5,
471 Double_t PreShowerOverRaw,
480 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
485 std::cout <<
"Error: This method should be called for kTrig MVA only" <<std::endl;
520 Double_t
mva = -9999;
552 std::cout <<
" ### MVA " << mva << std::endl;
579 Double_t PreShowerOverRaw,
585 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
590 std::cout <<
"Error: This method should be called for kTrigNoIP MVA only" <<std::endl;
623 Double_t
mva = -9999;
654 std::cout <<
" ### MVA " << mva << std::endl;
675 Double_t OneMinusE1x5E5x5,
682 Double_t PreShowerOverRaw,
689 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
694 std::cout <<
"Error: This method should be called for kNonTrig MVA only" <<std::endl;
727 Double_t
mva = -9999;
759 std::cout <<
" ### MVA " << mva << std::endl;
780 Double_t OneMinusE1x5E5x5,
786 Double_t PreShowerOverRaw,
789 Double_t ChargedIso_DR0p0To0p1,
790 Double_t ChargedIso_DR0p1To0p2,
791 Double_t ChargedIso_DR0p2To0p3,
792 Double_t ChargedIso_DR0p3To0p4,
793 Double_t ChargedIso_DR0p4To0p5,
794 Double_t GammaIso_DR0p0To0p1,
795 Double_t GammaIso_DR0p1To0p2,
796 Double_t GammaIso_DR0p2To0p3,
797 Double_t GammaIso_DR0p3To0p4,
798 Double_t GammaIso_DR0p4To0p5,
799 Double_t NeutralHadronIso_DR0p0To0p1,
800 Double_t NeutralHadronIso_DR0p1To0p2,
801 Double_t NeutralHadronIso_DR0p2To0p3,
802 Double_t NeutralHadronIso_DR0p3To0p4,
803 Double_t NeutralHadronIso_DR0p4To0p5,
810 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
818 fMVAVar_deta = ( fabs(deta) > 0.06 ) ? 0.06 : fabs(deta);
858 Double_t
mva = -9999;
888 <<
" ChargedIso_DR0p0To0p1 " << ChargedIso_DR0p0To0p1
889 <<
" ChargedIso_DR0p1To0p2 " << ChargedIso_DR0p1To0p2
890 <<
" ChargedIso_DR0p2To0p3 " << ChargedIso_DR0p2To0p3
891 <<
" ChargedIso_DR0p3To0p4 " << ChargedIso_DR0p3To0p4
892 <<
" ChargedIso_DR0p4To0p5 " << ChargedIso_DR0p4To0p5
893 <<
" GammaIso_DR0p0To0p1 " << GammaIso_DR0p0To0p1
894 <<
" GammaIso_DR0p1To0p2 " << GammaIso_DR0p1To0p2
895 <<
" GammaIso_DR0p2To0p3 " << GammaIso_DR0p2To0p3
896 <<
" GammaIso_DR0p3To0p4 " << GammaIso_DR0p3To0p4
897 <<
" GammaIso_DR0p4To0p5 " << GammaIso_DR0p4To0p5
898 <<
" NeutralHadronIso_DR0p0To0p1 " << NeutralHadronIso_DR0p0To0p1
899 <<
" NeutralHadronIso_DR0p1To0p2 " << NeutralHadronIso_DR0p1To0p2
900 <<
" NeutralHadronIso_DR0p2To0p3 " << NeutralHadronIso_DR0p2To0p3
901 <<
" NeutralHadronIso_DR0p3To0p4 " << NeutralHadronIso_DR0p3To0p4
902 <<
" NeutralHadronIso_DR0p4To0p5 " << NeutralHadronIso_DR0p4To0p5
906 std::cout <<
" ### MVA " << mva << std::endl;
921 Double_t ChargedIso_DR0p0To0p1,
922 Double_t ChargedIso_DR0p1To0p2,
923 Double_t ChargedIso_DR0p2To0p3,
924 Double_t ChargedIso_DR0p3To0p4,
925 Double_t ChargedIso_DR0p4To0p5,
926 Double_t GammaIso_DR0p0To0p1,
927 Double_t GammaIso_DR0p1To0p2,
928 Double_t GammaIso_DR0p2To0p3,
929 Double_t GammaIso_DR0p3To0p4,
930 Double_t GammaIso_DR0p4To0p5,
931 Double_t NeutralHadronIso_DR0p0To0p1,
932 Double_t NeutralHadronIso_DR0p1To0p2,
933 Double_t NeutralHadronIso_DR0p2To0p3,
934 Double_t NeutralHadronIso_DR0p3To0p4,
935 Double_t NeutralHadronIso_DR0p4To0p5,
939 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
965 std::cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 971 std::cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 977 std::cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 984 std::cout <<
" ### MVA " << mva <<std::endl;
1002 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1007 std::cout <<
"Error: This method should be called for kTrig or kNonTrig MVA only" <<std::endl;
1011 bool validKF=
false;
1019 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1032 std::vector<float> vCov = myEcalCluster.localCovariances(*(ele.
superCluster()->seed())) ;
1070 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1075 double ip3d = gsfsign*ip3dpv.second.value();
1076 double ip3derr = ip3dpv.second.error();
1086 Double_t
mva = -9999;
1119 std::cout <<
" ### MVA " << mva <<std::endl;
1137 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1142 std::cout <<
"Error: This method should be called for kTrigNoIP MVA only" <<std::endl;
1146 bool validKF=
false;
1154 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1166 std::vector<float> vCov = myEcalCluster.localCovariances(*(ele.
superCluster()->seed())) ;
1196 Double_t
mva = -9999;
1231 std::cout <<
" ### MVA " << mva <<std::endl;
1247 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1251 bool validKF=
false;
1259 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1275 : ( (ele.
e5x5() ) !=0. ? 1.-(ele.
e1x5() /ele.
e5x5() ) : -1. ) ;
1307 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1310 double ip3d = gsfsign*ele.
dB();
1311 double ip3derr = ele.
edB();
1323 Double_t
mva = -9999;
1358 std::cout <<
" ### MVA " << mva <<std::endl;
1371 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1376 std::cout <<
"Error: This method should be called for kTrigNoIP mva only" <<std::endl;
1381 bool validKF=
false;
1389 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1428 Double_t
mva = -9999;
1463 std::cout <<
" ### MVA " << mva <<std::endl;
1489 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1500 Double_t tmpChargedIso_DR0p0To0p1 = 0;
1501 Double_t tmpChargedIso_DR0p1To0p2 = 0;
1502 Double_t tmpChargedIso_DR0p2To0p3 = 0;
1503 Double_t tmpChargedIso_DR0p3To0p4 = 0;
1504 Double_t tmpChargedIso_DR0p4To0p5 = 0;
1505 Double_t tmpGammaIso_DR0p0To0p1 = 0;
1506 Double_t tmpGammaIso_DR0p1To0p2 = 0;
1507 Double_t tmpGammaIso_DR0p2To0p3 = 0;
1508 Double_t tmpGammaIso_DR0p3To0p4 = 0;
1509 Double_t tmpGammaIso_DR0p4To0p5 = 0;
1510 Double_t tmpNeutralHadronIso_DR0p0To0p1 = 0;
1511 Double_t tmpNeutralHadronIso_DR0p1To0p2 = 0;
1512 Double_t tmpNeutralHadronIso_DR0p2To0p3 = 0;
1513 Double_t tmpNeutralHadronIso_DR0p3To0p4 = 0;
1514 Double_t tmpNeutralHadronIso_DR0p4To0p5 = 0;
1516 double electronTrackZ = 0;
1523 for (reco::PFCandidateCollection::const_iterator iP = PFCandidates.begin();
1524 iP != PFCandidates.end(); ++iP) {
1539 Bool_t IsLeptonFootprint = kFALSE;
1543 for (reco::GsfElectronCollection::const_iterator iE = IdentifiedElectrons.begin();
1544 iE != IdentifiedElectrons.end(); ++iE) {
1546 if(iP->gsfTrackRef().isNonnull() && iE->gsfTrack().isNonnull() &&
1547 refToPtr(iP->gsfTrackRef()) ==
refToPtr(iE->gsfTrack())) IsLeptonFootprint = kTRUE;
1548 if(iP->trackRef().isNonnull() && iE->closestCtfTrackRef().isNonnull() &&
1549 refToPtr(iP->trackRef()) ==
refToPtr(iE->closestCtfTrackRef())) IsLeptonFootprint = kTRUE;
1552 double tmpDR =
sqrt(
pow(iP->eta() - iE->eta(),2) +
pow(acos(
cos(iP->phi() - iE->phi())),2));
1553 if(iP->trackRef().isNonnull() && fabs(iE->superCluster()->eta()) >= 1.479
1554 && tmpDR < 0.015) IsLeptonFootprint = kTRUE;
1556 && tmpDR < 0.08) IsLeptonFootprint = kTRUE;
1558 for (reco::MuonCollection::const_iterator iM = IdentifiedMuons.begin();
1559 iM != IdentifiedMuons.end(); ++iM) {
1561 if(iP->trackRef().isNonnull() && iM->innerTrack().isNonnull() &&
1562 refToPtr(iP->trackRef()) ==
refToPtr(iM->innerTrack())) IsLeptonFootprint = kTRUE;
1565 double tmpDR =
sqrt(
pow(iP->eta() - iM->eta(),2) +
pow(acos(
cos(iP->phi() - iM->phi())),2));
1566 if(iP->trackRef().isNonnull() && tmpDR < 0.01) IsLeptonFootprint = kTRUE;
1569 if (!IsLeptonFootprint) {
1570 Bool_t passVeto = kTRUE;
1572 if(iP->trackRef().isNonnull()) {
1573 if (!(fabs(iP->trackRef()->dz(vertex.
position()) - electronTrackZ) < 0.2)) passVeto = kFALSE;
1580 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.015) passVeto = kFALSE;
1583 if (dr < 0.1) tmpChargedIso_DR0p0To0p1 += iP->pt();
1584 if (dr >= 0.1 && dr < 0.2) tmpChargedIso_DR0p1To0p2 += iP->pt();
1585 if (dr >= 0.2 && dr < 0.3) tmpChargedIso_DR0p2To0p3 += iP->pt();
1586 if (dr >= 0.3 && dr < 0.4) tmpChargedIso_DR0p3To0p4 += iP->pt();
1587 if (dr >= 0.4 && dr < 0.5) tmpChargedIso_DR0p4To0p5 += iP->pt();
1594 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.08) passVeto = kFALSE;
1597 if (dr < 0.1) tmpGammaIso_DR0p0To0p1 += iP->pt();
1598 if (dr >= 0.1 && dr < 0.2) tmpGammaIso_DR0p1To0p2 += iP->pt();
1599 if (dr >= 0.2 && dr < 0.3) tmpGammaIso_DR0p2To0p3 += iP->pt();
1600 if (dr >= 0.3 && dr < 0.4) tmpGammaIso_DR0p3To0p4 += iP->pt();
1601 if (dr >= 0.4 && dr < 0.5) tmpGammaIso_DR0p4To0p5 += iP->pt();
1606 if (dr < 0.1) tmpNeutralHadronIso_DR0p0To0p1 += iP->pt();
1607 if (dr >= 0.1 && dr < 0.2) tmpNeutralHadronIso_DR0p1To0p2 += iP->pt();
1608 if (dr >= 0.2 && dr < 0.3) tmpNeutralHadronIso_DR0p2To0p3 += iP->pt();
1609 if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += iP->pt();
1610 if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += iP->pt();
1638 Double_t
mva = -9999;
1651 std::cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 1657 std::cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 1663 std::cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 1670 std::cout <<
" ### MVA " << mva <<std::endl;
1690 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1694 bool validKF=
false;
1703 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1717 std::vector<float> vCov = myEcalCluster.localCovariances(*(ele.
superCluster()->seed())) ;
1756 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1761 double ip3d = gsfsign*ip3dpv.second.value();
1762 double ip3derr = ip3dpv.second.error();
1772 Double_t tmpChargedIso_DR0p0To0p1 = 0;
1773 Double_t tmpChargedIso_DR0p1To0p2 = 0;
1774 Double_t tmpChargedIso_DR0p2To0p3 = 0;
1775 Double_t tmpChargedIso_DR0p3To0p4 = 0;
1776 Double_t tmpChargedIso_DR0p4To0p5 = 0;
1777 Double_t tmpGammaIso_DR0p0To0p1 = 0;
1778 Double_t tmpGammaIso_DR0p1To0p2 = 0;
1779 Double_t tmpGammaIso_DR0p2To0p3 = 0;
1780 Double_t tmpGammaIso_DR0p3To0p4 = 0;
1781 Double_t tmpGammaIso_DR0p4To0p5 = 0;
1782 Double_t tmpNeutralHadronIso_DR0p0To0p1 = 0;
1783 Double_t tmpNeutralHadronIso_DR0p1To0p2 = 0;
1784 Double_t tmpNeutralHadronIso_DR0p2To0p3 = 0;
1785 Double_t tmpNeutralHadronIso_DR0p3To0p4 = 0;
1786 Double_t tmpNeutralHadronIso_DR0p4To0p5 = 0;
1788 for (reco::PFCandidateCollection::const_iterator iP = PFCandidates.begin();
1789 iP != PFCandidates.end(); ++iP) {
1793 Bool_t passVeto = kTRUE;
1795 if(iP->trackRef().isNonnull()) {
1805 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.015) passVeto = kFALSE;
1808 if (dr < 0.1) tmpChargedIso_DR0p0To0p1 += iP->pt();
1809 if (dr >= 0.1 && dr < 0.2) tmpChargedIso_DR0p1To0p2 += iP->pt();
1810 if (dr >= 0.2 && dr < 0.3) tmpChargedIso_DR0p2To0p3 += iP->pt();
1811 if (dr >= 0.3 && dr < 0.4) tmpChargedIso_DR0p3To0p4 += iP->pt();
1812 if (dr >= 0.4 && dr < 0.5) tmpChargedIso_DR0p4To0p5 += iP->pt();
1819 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.08) passVeto = kFALSE;
1822 if (dr < 0.1) tmpGammaIso_DR0p0To0p1 += iP->pt();
1823 if (dr >= 0.1 && dr < 0.2) tmpGammaIso_DR0p1To0p2 += iP->pt();
1824 if (dr >= 0.2 && dr < 0.3) tmpGammaIso_DR0p2To0p3 += iP->pt();
1825 if (dr >= 0.3 && dr < 0.4) tmpGammaIso_DR0p3To0p4 += iP->pt();
1826 if (dr >= 0.4 && dr < 0.5) tmpGammaIso_DR0p4To0p5 += iP->pt();
1831 if (dr < 0.1) tmpNeutralHadronIso_DR0p0To0p1 += iP->pt();
1832 if (dr >= 0.1 && dr < 0.2) tmpNeutralHadronIso_DR0p1To0p2 += iP->pt();
1833 if (dr >= 0.2 && dr < 0.3) tmpNeutralHadronIso_DR0p2To0p3 += iP->pt();
1834 if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += iP->pt();
1835 if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += iP->pt();
1877 Double_t
mva = -9999;
1894 <<
" dphi " << fMVAVar_dphi
1910 std::cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 1916 std::cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 1922 std::cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): " 1929 std::cout <<
"Rho : " << Rho <<std::endl;
1930 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
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
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