28 fMethodname(
"BDTG method"),
29 fisInitialized(kFALSE),
31 fUseBinnedVersion(kTRUE),
47 std::string weightsfile,
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
80 }
else if (type ==
kTrig) {
98 std::cout <<
"Error: Expected Number of bins = " <<
fNMVABins <<
" does not equal to weightsfiles.size() = "
99 << weightsfiles.size() << std::endl;
102 assert(
fNMVABins == weightsfiles.size());
109 TMVA::Reader *tmpTMVAReader =
new TMVA::Reader(
"!Color:!Silent:Error" );
110 tmpTMVAReader->SetVerbose(kTRUE);
130 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
144 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
148 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
171 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
187 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
210 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
224 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
245 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
268 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
275 if(
i == 2 ||
i == 5) {
283 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
305 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
328 tmpTMVAReader->AddVariable(
"R9", &
fMVAVar_R9);
335 if(
i == 2 ||
i == 5) {
343 tmpTMVAReader->AddVariable(
"d0", &
fMVAVar_d0);
366 tmpTMVAReader->AddSpectator(
"pt", &
fMVAVar_pt);
374 <<
" , type == " << type <<
" , "
375 <<
"Load weights file : " << weightsfiles[
i]
379 std::cout <<
"Electron ID MVA Completed\n";
388 unsigned int bin = 0;
391 if (pt < 10 && fabs(eta) < 1.479) bin = 0;
392 if (pt < 10 && fabs(eta) >= 1.479) bin = 1;
393 if (pt >= 10 && fabs(eta) < 1.479) bin = 2;
394 if (pt >= 10 && fabs(eta) >= 1.479) bin = 3;
399 if (pt < 10 && fabs(eta) < 0.8) bin = 0;
400 if (pt < 10 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 1;
401 if (pt < 10 && fabs(eta) >= 1.479) bin = 2;
402 if (pt >= 10 && fabs(eta) < 0.8) bin = 3;
403 if (pt >= 10 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 4;
404 if (pt >= 10 && fabs(eta) >= 1.479) bin = 5;
414 if (pt < 20 && fabs(eta) < 0.8) bin = 0;
415 if (pt < 20 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 1;
416 if (pt < 20 && fabs(eta) >= 1.479) bin = 2;
417 if (pt >= 20 && fabs(eta) < 0.8) bin = 3;
418 if (pt >= 20 && fabs(eta) >= 0.8 && fabs(eta) < 1.479 ) bin = 4;
419 if (pt >= 20 && fabs(eta) >= 1.479) bin = 5;
442 Double_t OneMinusE1x5E5x5,
449 Double_t PreShowerOverRaw,
458 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
463 std::cout <<
"Error: This method should be called for kTrig MVA only" << endl;
498 Double_t mva = -9999;
529 cout <<
" ### MVA " << mva << endl;
556 Double_t PreShowerOverRaw,
562 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
567 std::cout <<
"Error: This method should be called for kTrigNoIP MVA only" << endl;
600 Double_t mva = -9999;
630 cout <<
" ### MVA " << mva << endl;
651 Double_t OneMinusE1x5E5x5,
658 Double_t PreShowerOverRaw,
665 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
670 std::cout <<
"Error: This method should be called for kNonTrig MVA only" << endl;
703 Double_t mva = -9999;
734 cout <<
" ### MVA " << mva << endl;
755 Double_t OneMinusE1x5E5x5,
761 Double_t PreShowerOverRaw,
764 Double_t ChargedIso_DR0p0To0p1,
765 Double_t ChargedIso_DR0p1To0p2,
766 Double_t ChargedIso_DR0p2To0p3,
767 Double_t ChargedIso_DR0p3To0p4,
768 Double_t ChargedIso_DR0p4To0p5,
769 Double_t GammaIso_DR0p0To0p1,
770 Double_t GammaIso_DR0p1To0p2,
771 Double_t GammaIso_DR0p2To0p3,
772 Double_t GammaIso_DR0p3To0p4,
773 Double_t GammaIso_DR0p4To0p5,
774 Double_t NeutralHadronIso_DR0p0To0p1,
775 Double_t NeutralHadronIso_DR0p1To0p2,
776 Double_t NeutralHadronIso_DR0p2To0p3,
777 Double_t NeutralHadronIso_DR0p3To0p4,
778 Double_t NeutralHadronIso_DR0p4To0p5,
785 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
793 fMVAVar_deta = ( fabs(deta) > 0.06 ) ? 0.06 : fabs(deta);
833 Double_t mva = -9999;
862 <<
" ChargedIso_DR0p0To0p1 " << ChargedIso_DR0p0To0p1
863 <<
" ChargedIso_DR0p1To0p2 " << ChargedIso_DR0p1To0p2
864 <<
" ChargedIso_DR0p2To0p3 " << ChargedIso_DR0p2To0p3
865 <<
" ChargedIso_DR0p3To0p4 " << ChargedIso_DR0p3To0p4
866 <<
" ChargedIso_DR0p4To0p5 " << ChargedIso_DR0p4To0p5
867 <<
" GammaIso_DR0p0To0p1 " << GammaIso_DR0p0To0p1
868 <<
" GammaIso_DR0p1To0p2 " << GammaIso_DR0p1To0p2
869 <<
" GammaIso_DR0p2To0p3 " << GammaIso_DR0p2To0p3
870 <<
" GammaIso_DR0p3To0p4 " << GammaIso_DR0p3To0p4
871 <<
" GammaIso_DR0p4To0p5 " << GammaIso_DR0p4To0p5
872 <<
" NeutralHadronIso_DR0p0To0p1 " << NeutralHadronIso_DR0p0To0p1
873 <<
" NeutralHadronIso_DR0p1To0p2 " << NeutralHadronIso_DR0p1To0p2
874 <<
" NeutralHadronIso_DR0p2To0p3 " << NeutralHadronIso_DR0p2To0p3
875 <<
" NeutralHadronIso_DR0p3To0p4 " << NeutralHadronIso_DR0p3To0p4
876 <<
" NeutralHadronIso_DR0p4To0p5 " << NeutralHadronIso_DR0p4To0p5
880 cout <<
" ### MVA " << mva << endl;
895 Double_t ChargedIso_DR0p0To0p1,
896 Double_t ChargedIso_DR0p1To0p2,
897 Double_t ChargedIso_DR0p2To0p3,
898 Double_t ChargedIso_DR0p3To0p4,
899 Double_t ChargedIso_DR0p4To0p5,
900 Double_t GammaIso_DR0p0To0p1,
901 Double_t GammaIso_DR0p1To0p2,
902 Double_t GammaIso_DR0p2To0p3,
903 Double_t GammaIso_DR0p3To0p4,
904 Double_t GammaIso_DR0p4To0p5,
905 Double_t NeutralHadronIso_DR0p0To0p1,
906 Double_t NeutralHadronIso_DR0p1To0p2,
907 Double_t NeutralHadronIso_DR0p2To0p3,
908 Double_t NeutralHadronIso_DR0p3To0p4,
909 Double_t NeutralHadronIso_DR0p4To0p5,
913 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
938 cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
944 cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
950 cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
957 cout <<
" ### MVA " << mva << endl;
975 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
980 std::cout <<
"Error: This method should be called for kTrig or kNonTrig MVA only" << endl;
992 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1043 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1048 double ip3d = gsfsign*ip3dpv.second.value();
1049 double ip3derr = ip3dpv.second.error();
1059 Double_t mva = -9999;
1091 cout <<
" ### MVA " << mva << endl;
1109 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1114 std::cout <<
"Error: This method should be called for kTrigNoIP MVA only" << endl;
1118 bool validKF=
false;
1126 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1168 Double_t mva = -9999;
1202 cout <<
" ### MVA " << mva << endl;
1217 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1221 bool validKF=
false;
1229 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1277 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1279 std::cout <<
"Warning : if usePV = false when pat-electrons were produced, dB() was calculated with respect to beamspot while original mva uses primary vertex" << std::endl;
1280 double ip3d = gsfsign*ele.
dB();
1281 double ip3derr = ele.
edB();
1293 Double_t mva = -9999;
1327 cout <<
" ### MVA " << mva << endl;
1340 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1345 std::cout <<
"Error: This method should be called for kTrigNoIP mva only" << endl;
1350 bool validKF=
false;
1358 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1397 Double_t mva = -9999;
1431 cout <<
" ### MVA " << mva << endl;
1457 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1468 Double_t tmpChargedIso_DR0p0To0p1 = 0;
1469 Double_t tmpChargedIso_DR0p1To0p2 = 0;
1470 Double_t tmpChargedIso_DR0p2To0p3 = 0;
1471 Double_t tmpChargedIso_DR0p3To0p4 = 0;
1472 Double_t tmpChargedIso_DR0p4To0p5 = 0;
1473 Double_t tmpGammaIso_DR0p0To0p1 = 0;
1474 Double_t tmpGammaIso_DR0p1To0p2 = 0;
1475 Double_t tmpGammaIso_DR0p2To0p3 = 0;
1476 Double_t tmpGammaIso_DR0p3To0p4 = 0;
1477 Double_t tmpGammaIso_DR0p4To0p5 = 0;
1478 Double_t tmpNeutralHadronIso_DR0p0To0p1 = 0;
1479 Double_t tmpNeutralHadronIso_DR0p1To0p2 = 0;
1480 Double_t tmpNeutralHadronIso_DR0p2To0p3 = 0;
1481 Double_t tmpNeutralHadronIso_DR0p3To0p4 = 0;
1482 Double_t tmpNeutralHadronIso_DR0p4To0p5 = 0;
1484 double electronTrackZ = 0;
1491 for (reco::PFCandidateCollection::const_iterator iP = PFCandidates.begin();
1492 iP != PFCandidates.end(); ++iP) {
1507 Bool_t IsLeptonFootprint = kFALSE;
1511 for (reco::GsfElectronCollection::const_iterator iE = IdentifiedElectrons.begin();
1512 iE != IdentifiedElectrons.end(); ++iE) {
1514 if(iP->gsfTrackRef().isNonnull() && iE->gsfTrack().isNonnull() &&
1515 refToPtr(iP->gsfTrackRef()) ==
refToPtr(iE->gsfTrack())) IsLeptonFootprint = kTRUE;
1516 if(iP->trackRef().isNonnull() && iE->closestCtfTrackRef().isNonnull() &&
1517 refToPtr(iP->trackRef()) ==
refToPtr(iE->closestCtfTrackRef())) IsLeptonFootprint = kTRUE;
1520 double tmpDR =
sqrt(
pow(iP->eta() - iE->eta(),2) +
pow(acos(
cos(iP->phi() - iE->phi())),2));
1521 if(iP->trackRef().isNonnull() && fabs(iE->superCluster()->eta()) >= 1.479
1522 && tmpDR < 0.015) IsLeptonFootprint = kTRUE;
1524 && tmpDR < 0.08) IsLeptonFootprint = kTRUE;
1526 for (reco::MuonCollection::const_iterator iM = IdentifiedMuons.begin();
1527 iM != IdentifiedMuons.end(); ++iM) {
1529 if(iP->trackRef().isNonnull() && iM->innerTrack().isNonnull() &&
1530 refToPtr(iP->trackRef()) ==
refToPtr(iM->innerTrack())) IsLeptonFootprint = kTRUE;
1533 double tmpDR =
sqrt(
pow(iP->eta() - iM->eta(),2) +
pow(acos(
cos(iP->phi() - iM->phi())),2));
1534 if(iP->trackRef().isNonnull() && tmpDR < 0.01) IsLeptonFootprint = kTRUE;
1537 if (!IsLeptonFootprint) {
1538 Bool_t passVeto = kTRUE;
1540 if(iP->trackRef().isNonnull()) {
1541 if (!(fabs(iP->trackRef()->dz(vertex.
position()) - electronTrackZ) < 0.2)) passVeto = kFALSE;
1548 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.015) passVeto = kFALSE;
1551 if (dr < 0.1) tmpChargedIso_DR0p0To0p1 += iP->pt();
1552 if (dr >= 0.1 && dr < 0.2) tmpChargedIso_DR0p1To0p2 += iP->pt();
1553 if (dr >= 0.2 && dr < 0.3) tmpChargedIso_DR0p2To0p3 += iP->pt();
1554 if (dr >= 0.3 && dr < 0.4) tmpChargedIso_DR0p3To0p4 += iP->pt();
1555 if (dr >= 0.4 && dr < 0.5) tmpChargedIso_DR0p4To0p5 += iP->pt();
1562 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.08) passVeto = kFALSE;
1565 if (dr < 0.1) tmpGammaIso_DR0p0To0p1 += iP->pt();
1566 if (dr >= 0.1 && dr < 0.2) tmpGammaIso_DR0p1To0p2 += iP->pt();
1567 if (dr >= 0.2 && dr < 0.3) tmpGammaIso_DR0p2To0p3 += iP->pt();
1568 if (dr >= 0.3 && dr < 0.4) tmpGammaIso_DR0p3To0p4 += iP->pt();
1569 if (dr >= 0.4 && dr < 0.5) tmpGammaIso_DR0p4To0p5 += iP->pt();
1574 if (dr < 0.1) tmpNeutralHadronIso_DR0p0To0p1 += iP->pt();
1575 if (dr >= 0.1 && dr < 0.2) tmpNeutralHadronIso_DR0p1To0p2 += iP->pt();
1576 if (dr >= 0.2 && dr < 0.3) tmpNeutralHadronIso_DR0p2To0p3 += iP->pt();
1577 if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += iP->pt();
1578 if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += iP->pt();
1606 Double_t mva = -9999;
1618 cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1624 cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1630 cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1637 cout <<
" ### MVA " << mva << endl;
1657 std::cout <<
"Error: EGammaMvaEleEstimator not properly initialized.\n";
1661 bool validKF=
false;
1670 fMVAVar_kfhits = (validKF) ? myTrackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
1723 const double gsfsign = ( (-ele.
gsfTrack()->dxy(vertex.
position())) >=0 ) ? 1. : -1.;
1728 double ip3d = gsfsign*ip3dpv.second.value();
1729 double ip3derr = ip3dpv.second.error();
1739 Double_t tmpChargedIso_DR0p0To0p1 = 0;
1740 Double_t tmpChargedIso_DR0p1To0p2 = 0;
1741 Double_t tmpChargedIso_DR0p2To0p3 = 0;
1742 Double_t tmpChargedIso_DR0p3To0p4 = 0;
1743 Double_t tmpChargedIso_DR0p4To0p5 = 0;
1744 Double_t tmpGammaIso_DR0p0To0p1 = 0;
1745 Double_t tmpGammaIso_DR0p1To0p2 = 0;
1746 Double_t tmpGammaIso_DR0p2To0p3 = 0;
1747 Double_t tmpGammaIso_DR0p3To0p4 = 0;
1748 Double_t tmpGammaIso_DR0p4To0p5 = 0;
1749 Double_t tmpNeutralHadronIso_DR0p0To0p1 = 0;
1750 Double_t tmpNeutralHadronIso_DR0p1To0p2 = 0;
1751 Double_t tmpNeutralHadronIso_DR0p2To0p3 = 0;
1752 Double_t tmpNeutralHadronIso_DR0p3To0p4 = 0;
1753 Double_t tmpNeutralHadronIso_DR0p4To0p5 = 0;
1755 for (reco::PFCandidateCollection::const_iterator iP = PFCandidates.begin();
1756 iP != PFCandidates.end(); ++iP) {
1760 Bool_t passVeto = kTRUE;
1762 if(iP->trackRef().isNonnull()) {
1772 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.015) passVeto = kFALSE;
1775 if (dr < 0.1) tmpChargedIso_DR0p0To0p1 += iP->pt();
1776 if (dr >= 0.1 && dr < 0.2) tmpChargedIso_DR0p1To0p2 += iP->pt();
1777 if (dr >= 0.2 && dr < 0.3) tmpChargedIso_DR0p2To0p3 += iP->pt();
1778 if (dr >= 0.3 && dr < 0.4) tmpChargedIso_DR0p3To0p4 += iP->pt();
1779 if (dr >= 0.4 && dr < 0.5) tmpChargedIso_DR0p4To0p5 += iP->pt();
1786 if (fabs(
fMVAVar_eta) > 1.479 && dr < 0.08) passVeto = kFALSE;
1789 if (dr < 0.1) tmpGammaIso_DR0p0To0p1 += iP->pt();
1790 if (dr >= 0.1 && dr < 0.2) tmpGammaIso_DR0p1To0p2 += iP->pt();
1791 if (dr >= 0.2 && dr < 0.3) tmpGammaIso_DR0p2To0p3 += iP->pt();
1792 if (dr >= 0.3 && dr < 0.4) tmpGammaIso_DR0p3To0p4 += iP->pt();
1793 if (dr >= 0.4 && dr < 0.5) tmpGammaIso_DR0p4To0p5 += iP->pt();
1798 if (dr < 0.1) tmpNeutralHadronIso_DR0p0To0p1 += iP->pt();
1799 if (dr >= 0.1 && dr < 0.2) tmpNeutralHadronIso_DR0p1To0p2 += iP->pt();
1800 if (dr >= 0.2 && dr < 0.3) tmpNeutralHadronIso_DR0p2To0p3 += iP->pt();
1801 if (dr >= 0.3 && dr < 0.4) tmpNeutralHadronIso_DR0p3To0p4 += iP->pt();
1802 if (dr >= 0.4 && dr < 0.5) tmpNeutralHadronIso_DR0p4To0p5 += iP->pt();
1840 cout <<
"Warning: Type " <<
fMVAType <<
" is not supported.\n";
1844 Double_t mva = -9999;
1860 <<
" dphi " << fMVAVar_dphi
1876 cout <<
"ChargedIso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1882 cout <<
"PF Gamma Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1888 cout <<
"PF Neutral Hadron Iso ( 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 ): "
1895 cout <<
"Rho : " << Rho << endl;
1896 cout <<
" ### MVA " << mva << endl;
double edB(IpType type=None) const
Uncertainty on the corresponding impact parameter.
virtual double p() const
magnitude of momentum vector
Float_t fMVAVar_ChargedIso_DR0p1To0p2
Float_t fMVAVar_GammaIso_DR0p3To0p4
Ptr< typename C::value_type > refToPtr(Ref< C, typename C::value_type, refhelper::FindUsingAdvance< C, typename C::value_type > > const &ref)
float eSuperClusterOverP() const
reco::TrackRef closestCtfTrackRef() const
override the reco::GsfElectron::closestCtfTrackRef method, to access the internal storage of the trac...
Float_t fMVAVar_GammaIso_DR0p4To0p5
reco::SuperClusterRef superCluster() const
override the reco::GsfElectron::superCluster method, to access the internal storage of the superclust...
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
reco::GsfTrackRef gsfTrack() const
override the reco::GsfElectron::gsfTrack method, to access the internal storage of the supercluster ...
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
virtual double eta() const
momentum pseudorapidity
std::vector< Muon > MuonCollection
collection of Muon objects
Float_t fMVAVar_OneMinusE1x5E5x5
TrackRef closestCtfTrackRef() const
Float_t fMVAVar_eleEoPout
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)
bool isNonnull() const
Checks for non-null.
float deltaEtaSuperClusterTrackAtVtx() const
float sigmaIetaIeta() const
float hadronicOverEm() const
const T & max(const T &a, const T &b)
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
virtual double pt() const
transverse momentum
Float_t fMVAVar_kfhitsall
double sigmaIphiIphi() const
sigmaIPhiPhi
Analysis-level electron class.
Float_t fMVAVar_NeutralHadronIso_DR0p3To0p4
Float_t fMVAVar_GammaIso_DR0p2To0p3
float deltaEtaSeedClusterTrackAtCalo() const
Float_t fMVAVar_ChargedIso_DR0p0To0p1
Float_t fMVAVar_ChargedIso_DR0p2To0p3
virtual double phi() const
momentum azimuthal angle
double dB(IpType type=None) const
Impact parameter wrt primary vertex or beamspot.
Power< A, B >::type pow(const A &a, const B &b)
Float_t fMVAVar_GammaIso_DR0p1To0p2
virtual GsfTrackRef gsfTrack() const
reference to a GsfTrack
Float_t fMVAVar_NeutralHadronIso_DR0p4To0p5