From db622704e545c27793cca6cc901c8e5855b2ff1c Mon Sep 17 00:00:00 2001 From: anehrkor Date: Thu, 6 Apr 2017 11:18:10 +0200 Subject: [PATCH 1/6] - Bug fix: new tau decay mode (3-prong+1Pi0, 11) is considered when reading out BDT value for new decay modes - Addition of read out for new training options: these include the Gottfried-Jackson angle and remove the leading track chi2, which has no discrimination power --- .../PATTauDiscriminationByMVAIsolationRun2.cc | 46 +++++++++++++++++-- ...RecoTauDiscriminationByMVAIsolationRun2.cc | 46 +++++++++++++++++-- 2 files changed, 84 insertions(+), 8 deletions(-) diff --git a/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc b/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc index a8ee0677fb233..98ab6dc8b77bc 100644 --- a/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc +++ b/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc @@ -97,13 +97,16 @@ class PATTauDiscriminationByMVAIsolationRun2 : public PATTauDiscriminationProduc else if ( mvaOpt_string == "DBnewDMwLT" ) mvaOpt_ = kDBnewDMwLT; else if ( mvaOpt_string == "PWoldDMwLT" ) mvaOpt_ = kPWoldDMwLT; else if ( mvaOpt_string == "PWnewDMwLT" ) mvaOpt_ = kPWnewDMwLT; + else if ( mvaOpt_string == "DBoldDMwLTwGJ" ) mvaOpt_ = kDBoldDMwLTwGJ; + else if ( mvaOpt_string == "DBnewDMwLTwGJ" ) mvaOpt_ = kDBnewDMwLTwGJ; else throw cms::Exception("PATTauDiscriminationByMVAIsolationRun2") << " Invalid Configuration Parameter 'mvaOpt' = " << mvaOpt_string << " !!\n"; if ( mvaOpt_ == kOldDMwoLT || mvaOpt_ == kNewDMwoLT ) mvaInput_ = new float[6]; else if ( mvaOpt_ == kOldDMwLT || mvaOpt_ == kNewDMwLT ) mvaInput_ = new float[12]; else if ( mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kDBnewDMwLT || - mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kPWnewDMwLT) mvaInput_ = new float[23]; + mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kPWnewDMwLT || + mvaOpt_ == kDBoldDMwLTwGJ || mvaOpt_ == kDBnewDMwLTwGJ) mvaInput_ = new float[23]; else assert(0); chargedIsoPtSums_ = cfg.getParameter("srcChargedIsoPtSum"); @@ -142,7 +145,7 @@ class PATTauDiscriminationByMVAIsolationRun2 : public PATTauDiscriminationProduc bool loadMVAfromDB_; edm::FileInPath inputFileName_; const GBRForest* mvaReader_; - enum { kOldDMwoLT, kOldDMwLT, kNewDMwoLT, kNewDMwLT, kDBoldDMwLT, kDBnewDMwLT, kPWoldDMwLT, kPWnewDMwLT }; + enum { kOldDMwoLT, kOldDMwLT, kNewDMwoLT, kNewDMwLT, kDBoldDMwLT, kDBnewDMwLT, kPWoldDMwLT, kPWnewDMwLT, kDBoldDMwLTwGJ, kDBnewDMwLTwGJ }; int mvaOpt_; float* mvaInput_; @@ -185,8 +188,8 @@ double PATTauDiscriminationByMVAIsolationRun2::discriminate(const TauRef& tau) c int tauDecayMode = tau->decayMode(); - if ( ((mvaOpt_ == kOldDMwoLT || mvaOpt_ == kOldDMwLT || mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kPWoldDMwLT) && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 10)) || - ((mvaOpt_ == kNewDMwoLT || mvaOpt_ == kNewDMwLT || mvaOpt_ == kDBnewDMwLT || mvaOpt_ == kPWnewDMwLT) && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 5 || tauDecayMode == 6 || tauDecayMode == 10)) ) { + if ( ((mvaOpt_ == kOldDMwoLT || mvaOpt_ == kOldDMwLT || mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kDBoldDMwLTwGJ) && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 10)) || + ((mvaOpt_ == kNewDMwoLT || mvaOpt_ == kNewDMwLT || mvaOpt_ == kDBnewDMwLT || mvaOpt_ == kPWnewDMwLT || mvaOpt_ == kDBnewDMwLTwGJ) && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 5 || tauDecayMode == 6 || tauDecayMode == 10 || tauDecayMode == 11)) ) { float chargedIsoPtSum = tau->tauID(chargedIsoPtSums_); float neutralIsoPtSum = tau->tauID(neutralIsoPtSums_); @@ -209,6 +212,17 @@ double PATTauDiscriminationByMVAIsolationRun2::discriminate(const TauRef& tau) c // --- float leadingTrackChi2 = tau->leadingTrackNormChi2(); float eRatio = clusterVariables_.tau_Eratio(*tau); + + // Difference between measured and maximally allowed Gottfried-Jackson angle + float gjAngleDiff = -999; + if ( tauDecayMode == 10 ) { + double mTau = 1.77682; + double mAOne = tau->p4().M(); + double pAOneMag = tau->p(); + double thetaGJmax = TMath::ASin( (TMath::Power(mTau,2) - TMath::Power(mAOne,2) ) / ( 2 * mTau * pAOneMag ) ); + double thetaGJmeasured = TMath::ACos( ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * TMath::Sqrt(decayDistMag) ) ); + gjAngleDiff = thetaGJmeasured - thetaGJmax; + } if ( mvaOpt_ == kOldDMwoLT || mvaOpt_ == kNewDMwoLT ) { mvaInput_[0] = std::log(std::max((float)1., (float)tau->pt())); @@ -278,6 +292,30 @@ double PATTauDiscriminationByMVAIsolationRun2::discriminate(const TauRef& tau) c mvaInput_[20] = ( tau->hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[21] = std::sqrt(decayDistMag); mvaInput_[22] = std::min((float)10., tau->flightLengthSig()); + } else if ( mvaOpt_ == kDBoldDMwLTwGJ || mvaOpt_ == kDBnewDMwLTwGJ ) { + mvaInput_[0] = std::log(std::max((float)1., (float)tau->pt())); + mvaInput_[1] = std::fabs(tau->eta()); + mvaInput_[2] = std::log(std::max((float)1.e-2, chargedIsoPtSum)); + mvaInput_[3] = std::log(std::max((float)1.e-2, neutralIsoPtSum)); + mvaInput_[4] = std::log(std::max((float)1.e-2, puCorrPtSum)); + mvaInput_[5] = std::log(std::max((float)1.e-2, photonPtSumOutsideSignalCone)); + mvaInput_[6] = tauDecayMode; + mvaInput_[7] = std::min((float)30., nPhoton); + mvaInput_[8] = std::min((float)0.5, ptWeightedDetaStrip); + mvaInput_[9] = std::min((float)0.5, ptWeightedDphiStrip); + mvaInput_[10] = std::min((float)0.5, ptWeightedDrSignal); + mvaInput_[11] = std::min((float)0.5, ptWeightedDrIsolation); + mvaInput_[12] = std::min((float)1., eRatio); + mvaInput_[13] = TMath::Sign((float)+1., tau->dxy()); + mvaInput_[14] = std::sqrt(std::min((float)1., std::fabs(tau->dxy()))); + mvaInput_[15] = std::min((float)10., std::fabs(tau->dxy_Sig())); + mvaInput_[16] = TMath::Sign((float)+1., tau->ip3d()); + mvaInput_[17] = std::sqrt(std::min((float)1., std::fabs(tau->ip3d()))); + mvaInput_[18] = std::min((float)10., std::fabs(tau->ip3d_Sig())); + mvaInput_[19] = ( tau->hasSecondaryVertex() ) ? 1. : 0.; + mvaInput_[20] = std::sqrt(decayDistMag); + mvaInput_[21] = std::min((float)10., tau->flightLengthSig()); + mvaInput_[22] = std::max((float)-1., gjAngleDiff); } double mvaValue = mvaReader_->GetClassifier(mvaInput_); diff --git a/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc b/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc index aa9bcfe7f9325..fdbf64df18b06 100644 --- a/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc +++ b/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc @@ -89,13 +89,16 @@ class PFRecoTauDiscriminationByMVAIsolationRun2 : public PFTauDiscriminationProd else if ( mvaOpt_string == "DBnewDMwLT" ) mvaOpt_ = kDBnewDMwLT; else if ( mvaOpt_string == "PWoldDMwLT" ) mvaOpt_ = kPWoldDMwLT; else if ( mvaOpt_string == "PWnewDMwLT" ) mvaOpt_ = kPWnewDMwLT; + else if ( mvaOpt_string == "DBoldDMwLTwGJ" ) mvaOpt_ = kDBoldDMwLTwGJ; + else if ( mvaOpt_string == "DBnewDMwLTwGJ" ) mvaOpt_ = kDBnewDMwLTwGJ; else throw cms::Exception("PFRecoTauDiscriminationByMVAIsolationRun2") << " Invalid Configuration Parameter 'mvaOpt' = " << mvaOpt_string << " !!\n"; if ( mvaOpt_ == kOldDMwoLT || mvaOpt_ == kNewDMwoLT ) mvaInput_ = new float[6]; else if ( mvaOpt_ == kOldDMwLT || mvaOpt_ == kNewDMwLT ) mvaInput_ = new float[12]; else if ( mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kDBnewDMwLT || - mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kPWnewDMwLT) mvaInput_ = new float[23]; + mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kPWnewDMwLT || + mvaOpt_ == kDBoldDMwLTwGJ || mvaOpt_ == kDBnewDMwLTwGJ) mvaInput_ = new float[23]; else assert(0); TauTransverseImpactParameters_token = consumes(cfg.getParameter("srcTauTransverseImpactParameters")); @@ -136,7 +139,7 @@ class PFRecoTauDiscriminationByMVAIsolationRun2 : public PFTauDiscriminationProd bool loadMVAfromDB_; edm::FileInPath inputFileName_; const GBRForest* mvaReader_; - enum { kOldDMwoLT, kOldDMwLT, kNewDMwoLT, kNewDMwLT, kDBoldDMwLT, kDBnewDMwLT, kPWoldDMwLT, kPWnewDMwLT }; + enum { kOldDMwoLT, kOldDMwLT, kNewDMwoLT, kNewDMwLT, kDBoldDMwLT, kDBnewDMwLT, kPWoldDMwLT, kPWnewDMwLT, kDBoldDMwLTwGJ, kDBnewDMwLTwGJ }; int mvaOpt_; float* mvaInput_; @@ -197,8 +200,8 @@ double PFRecoTauDiscriminationByMVAIsolationRun2::discriminate(const PFTauRef& t int tauDecayMode = tau->decayMode(); - if ( ((mvaOpt_ == kOldDMwoLT || mvaOpt_ == kOldDMwLT || mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kPWoldDMwLT) && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 10)) || - ((mvaOpt_ == kNewDMwoLT || mvaOpt_ == kNewDMwLT || mvaOpt_ == kDBnewDMwLT || mvaOpt_ == kPWnewDMwLT) && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 5 || tauDecayMode == 6 || tauDecayMode == 10)) ) { + if ( ((mvaOpt_ == kOldDMwoLT || mvaOpt_ == kOldDMwLT || mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kDBoldDMwLTwGJ) && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 10)) || + ((mvaOpt_ == kNewDMwoLT || mvaOpt_ == kNewDMwLT || mvaOpt_ == kDBnewDMwLT || mvaOpt_ == kPWnewDMwLT || mvaOpt_ == kDBnewDMwLTwGJ) && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 5 || tauDecayMode == 6 || tauDecayMode == 10 || tauDecayMode == 11)) ) { float chargedIsoPtSum = (*chargedIsoPtSums_)[tau]; float neutralIsoPtSum = (*neutralIsoPtSums_)[tau]; @@ -221,6 +224,17 @@ double PFRecoTauDiscriminationByMVAIsolationRun2::discriminate(const PFTauRef& t float leadingTrackChi2 = clusterVariables_.tau_leadTrackChi2(*tau); float eRatio = clusterVariables_.tau_Eratio(*tau); + // Difference between measured and maximally allowed Gottfried-Jackson angle + float gjAngleDiff = -999; + if ( tauDecayMode == 10 ) { + double mTau = 1.77682; + double mAOne = tau->p4().M(); + double pAOneMag = tau->p(); + double thetaGJmax = TMath::ASin( (TMath::Power(mTau,2) - TMath::Power(mAOne,2) ) / ( 2 * mTau * pAOneMag ) ); + double thetaGJmeasured = TMath::ACos( ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * TMath::Sqrt(decayDistMag) ) ); + gjAngleDiff = thetaGJmeasured - thetaGJmax; + } + if ( mvaOpt_ == kOldDMwoLT || mvaOpt_ == kNewDMwoLT ) { mvaInput_[0] = std::log(std::max((float)1., (float)tau->pt())); mvaInput_[1] = std::fabs((float)tau->eta()); @@ -289,6 +303,30 @@ double PFRecoTauDiscriminationByMVAIsolationRun2::discriminate(const PFTauRef& t mvaInput_[20] = ( tauLifetimeInfo.hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[21] = std::sqrt(decayDistMag); mvaInput_[22] = std::min((float)10., (float)tauLifetimeInfo.flightLengthSig()); + } else if ( mvaOpt_ == kDBoldDMwLTwGJ || mvaOpt_ == kDBnewDMwLTwGJ ) { + mvaInput_[0] = std::log(std::max((float)1., (float)tau->pt())); + mvaInput_[1] = std::fabs((float)tau->eta()); + mvaInput_[2] = std::log(std::max((float)1.e-2, chargedIsoPtSum)); + mvaInput_[3] = std::log(std::max((float)1.e-2, neutralIsoPtSum)); + mvaInput_[4] = std::log(std::max((float)1.e-2, puCorrPtSum)); + mvaInput_[5] = std::log(std::max((float)1.e-2, photonPtSumOutsideSignalCone)); + mvaInput_[6] = tauDecayMode; + mvaInput_[7] = std::min((float)30., nPhoton); + mvaInput_[8] = std::min((float)0.5, ptWeightedDetaStrip); + mvaInput_[9] = std::min((float)0.5, ptWeightedDphiStrip); + mvaInput_[10] = std::min((float)0.5, ptWeightedDrSignal); + mvaInput_[11] = std::min((float)0.5, ptWeightedDrIsolation); + mvaInput_[12] = std::min((float)1., eRatio); + mvaInput_[13] = TMath::Sign((float)+1., (float)tauLifetimeInfo.dxy()); + mvaInput_[14] = std::sqrt(std::fabs(std::min((float)1., std::fabs((float)tauLifetimeInfo.dxy())))); + mvaInput_[15] = std::min((float)10., std::fabs((float)tauLifetimeInfo.dxy_Sig())); + mvaInput_[16] = TMath::Sign((float)+1., (float)tauLifetimeInfo.ip3d()); + mvaInput_[17] = std::sqrt(std::fabs(std::min((float)1., std::fabs((float)tauLifetimeInfo.ip3d())))); + mvaInput_[18] = std::min((float)10., std::fabs((float)tauLifetimeInfo.ip3d_Sig())); + mvaInput_[19] = ( tauLifetimeInfo.hasSecondaryVertex() ) ? 1. : 0.; + mvaInput_[20] = std::sqrt(decayDistMag); + mvaInput_[21] = std::min((float)10., (float)tauLifetimeInfo.flightLengthSig()); + mvaInput_[22] = std::max((float)-1., gjAngleDiff); } double mvaValue = mvaReader_->GetClassifier(mvaInput_); From bfcbe20d9143eac4ada530f7b28c7a5042cac925 Mon Sep 17 00:00:00 2001 From: anehrkor Date: Thu, 6 Apr 2017 11:29:19 +0200 Subject: [PATCH 2/6] Small fix: decayDistMag contains already square root --- .../RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc | 2 +- .../plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc b/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc index 98ab6dc8b77bc..cad77cf9decd9 100644 --- a/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc +++ b/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc @@ -220,7 +220,7 @@ double PATTauDiscriminationByMVAIsolationRun2::discriminate(const TauRef& tau) c double mAOne = tau->p4().M(); double pAOneMag = tau->p(); double thetaGJmax = TMath::ASin( (TMath::Power(mTau,2) - TMath::Power(mAOne,2) ) / ( 2 * mTau * pAOneMag ) ); - double thetaGJmeasured = TMath::ACos( ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * TMath::Sqrt(decayDistMag) ) ); + double thetaGJmeasured = TMath::ACos( ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * decayDistMag ) ); gjAngleDiff = thetaGJmeasured - thetaGJmax; } diff --git a/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc b/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc index fdbf64df18b06..f2866db04da88 100644 --- a/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc +++ b/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc @@ -231,7 +231,7 @@ double PFRecoTauDiscriminationByMVAIsolationRun2::discriminate(const PFTauRef& t double mAOne = tau->p4().M(); double pAOneMag = tau->p(); double thetaGJmax = TMath::ASin( (TMath::Power(mTau,2) - TMath::Power(mAOne,2) ) / ( 2 * mTau * pAOneMag ) ); - double thetaGJmeasured = TMath::ACos( ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * TMath::Sqrt(decayDistMag) ) ); + double thetaGJmeasured = TMath::ACos( ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * decayDistMag ) ); gjAngleDiff = thetaGJmeasured - thetaGJmax; } From c4c2d0ecb3b3c2ed3f640716b2f306057ac5b642 Mon Sep 17 00:00:00 2001 From: anehrkor Date: Tue, 25 Apr 2017 09:12:58 +0200 Subject: [PATCH 3/6] Implement Slava's requests: remove dependence on functions from TMath and switch to .f literal where possible --- .../PATTauDiscriminationByMVAIsolationRun2.cc | 149 +++++++++--------- ...RecoTauDiscriminationByMVAIsolationRun2.cc | 143 +++++++++-------- 2 files changed, 145 insertions(+), 147 deletions(-) diff --git a/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc b/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc index cad77cf9decd9..fb63bafd86df3 100644 --- a/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc +++ b/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc @@ -37,7 +37,6 @@ #include "CondFormats/DataRecord/interface/GBRWrapperRcd.h" #include "FWCore/Framework/interface/ESHandle.h" -#include #include #include @@ -219,103 +218,103 @@ double PATTauDiscriminationByMVAIsolationRun2::discriminate(const TauRef& tau) c double mTau = 1.77682; double mAOne = tau->p4().M(); double pAOneMag = tau->p(); - double thetaGJmax = TMath::ASin( (TMath::Power(mTau,2) - TMath::Power(mAOne,2) ) / ( 2 * mTau * pAOneMag ) ); - double thetaGJmeasured = TMath::ACos( ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * decayDistMag ) ); + double thetaGJmax = std::asin( (std::pow(mTau,2) - std::pow(mAOne,2) ) / ( 2 * mTau * pAOneMag ) ); + double thetaGJmeasured = std::acos( ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * decayDistMag ) ); gjAngleDiff = thetaGJmeasured - thetaGJmax; } if ( mvaOpt_ == kOldDMwoLT || mvaOpt_ == kNewDMwoLT ) { - mvaInput_[0] = std::log(std::max((float)1., (float)tau->pt())); + mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); mvaInput_[1] = std::fabs((float)tau->eta()); - mvaInput_[2] = std::log(std::max((float)1.e-2, chargedIsoPtSum)); - mvaInput_[3] = std::log(std::max((float)1.e-2, neutralIsoPtSum - (float)0.125*puCorrPtSum)); - mvaInput_[4] = std::log(std::max((float)1.e-2, puCorrPtSum)); + mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); + mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum - 0.125f*puCorrPtSum)); + mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); mvaInput_[5] = tauDecayMode; } else if ( mvaOpt_ == kOldDMwLT || mvaOpt_ == kNewDMwLT ) { - mvaInput_[0] = std::log(std::max((float)1., (float)tau->pt())); + mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); mvaInput_[1] = std::fabs((float)tau->eta()); - mvaInput_[2] = std::log(std::max((float)1.e-2, chargedIsoPtSum)); - mvaInput_[3] = std::log(std::max((float)1.e-2, neutralIsoPtSum - (float)0.125*puCorrPtSum)); - mvaInput_[4] = std::log(std::max((float)1.e-2, puCorrPtSum)); + mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); + mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum - 0.125f*puCorrPtSum)); + mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); mvaInput_[5] = tauDecayMode; - mvaInput_[6] = TMath::Sign((float)+1., tau->dxy()); - mvaInput_[7] = std::sqrt(std::min((float)1., std::fabs(tau->dxy()))); - mvaInput_[8] = std::min((float)10., std::fabs(tau->dxy_Sig())); + mvaInput_[6] = std::copysign(+1.f, tau->dxy()); + mvaInput_[7] = std::sqrt(std::min(1.f, std::fabs(tau->dxy()))); + mvaInput_[8] = std::min(10.f, std::fabs(tau->dxy_Sig())); mvaInput_[9] = ( tau->hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[10] = std::sqrt(decayDistMag); - mvaInput_[11] = std::min((float)10., tau->flightLengthSig()); + mvaInput_[11] = std::min(10.f, tau->flightLengthSig()); } else if ( mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kDBnewDMwLT ) { - mvaInput_[0] = std::log(std::max((float)1., (float)tau->pt())); - mvaInput_[1] = std::fabs(tau->eta()); - mvaInput_[2] = std::log(std::max((float)1.e-2, chargedIsoPtSum)); - mvaInput_[3] = std::log(std::max((float)1.e-2, neutralIsoPtSum)); - mvaInput_[4] = std::log(std::max((float)1.e-2, puCorrPtSum)); - mvaInput_[5] = std::log(std::max((float)1.e-2, photonPtSumOutsideSignalCone)); + mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); + mvaInput_[1] = std::fabs((float)tau->eta()); + mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); + mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum)); + mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); + mvaInput_[5] = std::log(std::max(1.e-2f, photonPtSumOutsideSignalCone)); mvaInput_[6] = tauDecayMode; - mvaInput_[7] = std::min((float)30., nPhoton); - mvaInput_[8] = std::min((float)0.5, ptWeightedDetaStrip); - mvaInput_[9] = std::min((float)0.5, ptWeightedDphiStrip); - mvaInput_[10] = std::min((float)0.5, ptWeightedDrSignal); - mvaInput_[11] = std::min((float)0.5, ptWeightedDrIsolation); - mvaInput_[12] = std::min((float)100., leadingTrackChi2); - mvaInput_[13] = std::min((float)1., eRatio); - mvaInput_[14] = TMath::Sign((float)+1., tau->dxy()); - mvaInput_[15] = std::sqrt(std::min((float)1., std::fabs(tau->dxy()))); - mvaInput_[16] = std::min((float)10., std::fabs(tau->dxy_Sig())); - mvaInput_[17] = TMath::Sign((float)+1., tau->ip3d()); - mvaInput_[18] = std::sqrt(std::min((float)1., std::fabs(tau->ip3d()))); - mvaInput_[19] = std::min((float)10., std::fabs(tau->ip3d_Sig())); + mvaInput_[7] = std::min(30.f, nPhoton); + mvaInput_[8] = std::min(0.5f, ptWeightedDetaStrip); + mvaInput_[9] = std::min(0.5f, ptWeightedDphiStrip); + mvaInput_[10] = std::min(0.5f, ptWeightedDrSignal); + mvaInput_[11] = std::min(0.5f, ptWeightedDrIsolation); + mvaInput_[12] = std::min(100.f, leadingTrackChi2); + mvaInput_[13] = std::min(1.f, eRatio); + mvaInput_[14] = std::copysign(+1.f, tau->dxy()); + mvaInput_[15] = std::sqrt(std::min(1.f, std::fabs(tau->dxy()))); + mvaInput_[16] = std::min(10.f, std::fabs(tau->dxy_Sig())); + mvaInput_[17] = std::copysign(+1.f, tau->ip3d()); + mvaInput_[18] = std::sqrt(std::min(1.f, std::fabs(tau->ip3d()))); + mvaInput_[19] = std::min(10.f, std::fabs(tau->ip3d_Sig())); mvaInput_[20] = ( tau->hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[21] = std::sqrt(decayDistMag); - mvaInput_[22] = std::min((float)10., tau->flightLengthSig()); + mvaInput_[22] = std::min(10.f, tau->flightLengthSig()); } else if ( mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kPWnewDMwLT ) { - mvaInput_[0] = std::log(std::max((float)1., (float)tau->pt())); - mvaInput_[1] = std::fabs(tau->eta()); - mvaInput_[2] = std::log(std::max((float)1.e-2, chargedIsoPtSum)); - mvaInput_[3] = std::log(std::max((float)1.e-2, neutralIsoPtSum)); - mvaInput_[4] = std::log(std::max((float)1.e-2, footprintCorrection)); - mvaInput_[5] = std::log(std::max((float)1.e-2, photonPtSumOutsideSignalCone)); + mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); + mvaInput_[1] = std::fabs((float)tau->eta()); + mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); + mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum)); + mvaInput_[4] = std::log(std::max(1.e-2f, footprintCorrection)); + mvaInput_[5] = std::log(std::max(1.e-2f, photonPtSumOutsideSignalCone)); mvaInput_[6] = tauDecayMode; - mvaInput_[7] = std::min((float)30., nPhoton); - mvaInput_[8] = std::min((float)0.5, ptWeightedDetaStrip); - mvaInput_[9] = std::min((float)0.5, ptWeightedDphiStrip); - mvaInput_[10] = std::min((float)0.5, ptWeightedDrSignal); - mvaInput_[11] = std::min((float)0.5, ptWeightedDrIsolation); - mvaInput_[12] = std::min((float)100., leadingTrackChi2); - mvaInput_[13] = std::min((float)1., eRatio); - mvaInput_[14] = TMath::Sign((float)+1., tau->dxy()); - mvaInput_[15] = std::sqrt(std::min((float)1., std::fabs(tau->dxy()))); - mvaInput_[16] = std::min((float)10., std::fabs(tau->dxy_Sig())); - mvaInput_[17] = TMath::Sign((float)+1., tau->ip3d()); - mvaInput_[18] = std::sqrt(std::min((float)1., std::fabs(tau->ip3d()))); - mvaInput_[19] = std::min((float)10., std::fabs(tau->ip3d_Sig())); + mvaInput_[7] = std::min(30.f, nPhoton); + mvaInput_[8] = std::min(0.5f, ptWeightedDetaStrip); + mvaInput_[9] = std::min(0.5f, ptWeightedDphiStrip); + mvaInput_[10] = std::min(0.5f, ptWeightedDrSignal); + mvaInput_[11] = std::min(0.5f, ptWeightedDrIsolation); + mvaInput_[12] = std::min(100.f, leadingTrackChi2); + mvaInput_[13] = std::min(1.f, eRatio); + mvaInput_[14] = std::copysign(+1.f, tau->dxy()); + mvaInput_[15] = std::sqrt(std::min(1.f, std::fabs(tau->dxy()))); + mvaInput_[16] = std::min(10.f, std::fabs(tau->dxy_Sig())); + mvaInput_[17] = std::copysign(+1.f, tau->ip3d()); + mvaInput_[18] = std::sqrt(std::min(1.f, std::fabs(tau->ip3d()))); + mvaInput_[19] = std::min(10.f, std::fabs(tau->ip3d_Sig())); mvaInput_[20] = ( tau->hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[21] = std::sqrt(decayDistMag); - mvaInput_[22] = std::min((float)10., tau->flightLengthSig()); + mvaInput_[22] = std::min(10.f, tau->flightLengthSig()); } else if ( mvaOpt_ == kDBoldDMwLTwGJ || mvaOpt_ == kDBnewDMwLTwGJ ) { - mvaInput_[0] = std::log(std::max((float)1., (float)tau->pt())); - mvaInput_[1] = std::fabs(tau->eta()); - mvaInput_[2] = std::log(std::max((float)1.e-2, chargedIsoPtSum)); - mvaInput_[3] = std::log(std::max((float)1.e-2, neutralIsoPtSum)); - mvaInput_[4] = std::log(std::max((float)1.e-2, puCorrPtSum)); - mvaInput_[5] = std::log(std::max((float)1.e-2, photonPtSumOutsideSignalCone)); + mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); + mvaInput_[1] = std::fabs((float)tau->eta()); + mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); + mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum)); + mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); + mvaInput_[5] = std::log(std::max(1.e-2f, photonPtSumOutsideSignalCone)); mvaInput_[6] = tauDecayMode; - mvaInput_[7] = std::min((float)30., nPhoton); - mvaInput_[8] = std::min((float)0.5, ptWeightedDetaStrip); - mvaInput_[9] = std::min((float)0.5, ptWeightedDphiStrip); - mvaInput_[10] = std::min((float)0.5, ptWeightedDrSignal); - mvaInput_[11] = std::min((float)0.5, ptWeightedDrIsolation); - mvaInput_[12] = std::min((float)1., eRatio); - mvaInput_[13] = TMath::Sign((float)+1., tau->dxy()); - mvaInput_[14] = std::sqrt(std::min((float)1., std::fabs(tau->dxy()))); - mvaInput_[15] = std::min((float)10., std::fabs(tau->dxy_Sig())); - mvaInput_[16] = TMath::Sign((float)+1., tau->ip3d()); - mvaInput_[17] = std::sqrt(std::min((float)1., std::fabs(tau->ip3d()))); - mvaInput_[18] = std::min((float)10., std::fabs(tau->ip3d_Sig())); + mvaInput_[7] = std::min(30.f, nPhoton); + mvaInput_[8] = std::min(0.5f, ptWeightedDetaStrip); + mvaInput_[9] = std::min(0.5f, ptWeightedDphiStrip); + mvaInput_[10] = std::min(0.5f, ptWeightedDrSignal); + mvaInput_[11] = std::min(0.5f, ptWeightedDrIsolation); + mvaInput_[12] = std::min(1.f, eRatio); + mvaInput_[13] = std::copysign(+1.f, tau->dxy()); + mvaInput_[14] = std::sqrt(std::min(1.f, std::fabs(tau->dxy()))); + mvaInput_[15] = std::min(10.f, std::fabs(tau->dxy_Sig())); + mvaInput_[16] = std::copysign(+1.f, tau->ip3d()); + mvaInput_[17] = std::sqrt(std::min(1.f, std::fabs(tau->ip3d()))); + mvaInput_[18] = std::min(10.f, std::fabs(tau->ip3d_Sig())); mvaInput_[19] = ( tau->hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[20] = std::sqrt(decayDistMag); - mvaInput_[21] = std::min((float)10., tau->flightLengthSig()); - mvaInput_[22] = std::max((float)-1., gjAngleDiff); + mvaInput_[21] = std::min(10.f, tau->flightLengthSig()); + mvaInput_[22] = std::max(-1.f, gjAngleDiff); } double mvaValue = mvaReader_->GetClassifier(mvaInput_); diff --git a/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc b/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc index f2866db04da88..d75ad4c46f69b 100644 --- a/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc +++ b/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc @@ -29,7 +29,6 @@ #include "CondFormats/DataRecord/interface/GBRWrapperRcd.h" #include "FWCore/Framework/interface/ESHandle.h" -#include #include #include @@ -230,103 +229,103 @@ double PFRecoTauDiscriminationByMVAIsolationRun2::discriminate(const PFTauRef& t double mTau = 1.77682; double mAOne = tau->p4().M(); double pAOneMag = tau->p(); - double thetaGJmax = TMath::ASin( (TMath::Power(mTau,2) - TMath::Power(mAOne,2) ) / ( 2 * mTau * pAOneMag ) ); - double thetaGJmeasured = TMath::ACos( ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * decayDistMag ) ); + double thetaGJmax = std::asin( (std::pow(mTau,2) - std::pow(mAOne,2) ) / ( 2 * mTau * pAOneMag ) ); + double thetaGJmeasured = std::acos( ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * decayDistMag ) ); gjAngleDiff = thetaGJmeasured - thetaGJmax; } if ( mvaOpt_ == kOldDMwoLT || mvaOpt_ == kNewDMwoLT ) { - mvaInput_[0] = std::log(std::max((float)1., (float)tau->pt())); + mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); mvaInput_[1] = std::fabs((float)tau->eta()); - mvaInput_[2] = std::log(std::max((float)1.e-2, chargedIsoPtSum)); - mvaInput_[3] = std::log(std::max((float)1.e-2, neutralIsoPtSum - (float)0.125*puCorrPtSum)); - mvaInput_[4] = std::log(std::max((float)1.e-2, puCorrPtSum)); + mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); + mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum - 0.125f*puCorrPtSum)); + mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); mvaInput_[5] = tauDecayMode; } else if ( mvaOpt_ == kOldDMwLT || mvaOpt_ == kNewDMwLT ) { - mvaInput_[0] = std::log(std::max((float)1., (float)tau->pt())); + mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); mvaInput_[1] = std::fabs((float)tau->eta()); - mvaInput_[2] = std::log(std::max((float)1.e-2, chargedIsoPtSum)); - mvaInput_[3] = std::log(std::max((float)1.e-2, neutralIsoPtSum - (float)0.125*puCorrPtSum)); - mvaInput_[4] = std::log(std::max((float)1.e-2, puCorrPtSum)); + mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); + mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum - 0.125f*puCorrPtSum)); + mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); mvaInput_[5] = tauDecayMode; - mvaInput_[6] = TMath::Sign((float)+1., (float)tauLifetimeInfo.dxy()); - mvaInput_[7] = std::sqrt(std::fabs(std::min((float)1., (float)tauLifetimeInfo.dxy()))); - mvaInput_[8] = std::min((float)10., std::fabs((float)tauLifetimeInfo.dxy_Sig())); + mvaInput_[6] = std::copysign(+1.f, (float)tauLifetimeInfo.dxy()); + mvaInput_[7] = std::sqrt(std::fabs(std::min(1.f, (float)tauLifetimeInfo.dxy()))); + mvaInput_[8] = std::min(10.f, std::fabs((float)tauLifetimeInfo.dxy_Sig())); mvaInput_[9] = ( tauLifetimeInfo.hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[10] = std::sqrt(decayDistMag); - mvaInput_[11] = std::min((float)10., (float)tauLifetimeInfo.flightLengthSig()); + mvaInput_[11] = std::min(10.f, (float)tauLifetimeInfo.flightLengthSig()); } else if ( mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kDBnewDMwLT ) { - mvaInput_[0] = std::log(std::max((float)1., (float)tau->pt())); + mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); mvaInput_[1] = std::fabs((float)tau->eta()); - mvaInput_[2] = std::log(std::max((float)1.e-2, chargedIsoPtSum)); - mvaInput_[3] = std::log(std::max((float)1.e-2, neutralIsoPtSum)); - mvaInput_[4] = std::log(std::max((float)1.e-2, puCorrPtSum)); - mvaInput_[5] = std::log(std::max((float)1.e-2, photonPtSumOutsideSignalCone)); + mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); + mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum)); + mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); + mvaInput_[5] = std::log(std::max(1.e-2f, photonPtSumOutsideSignalCone)); mvaInput_[6] = tauDecayMode; - mvaInput_[7] = std::min((float)30., nPhoton); - mvaInput_[8] = std::min((float)0.5, ptWeightedDetaStrip); - mvaInput_[9] = std::min((float)0.5, ptWeightedDphiStrip); - mvaInput_[10] = std::min((float)0.5, ptWeightedDrSignal); - mvaInput_[11] = std::min((float)0.5, ptWeightedDrIsolation); - mvaInput_[12] = std::min((float)100., leadingTrackChi2); - mvaInput_[13] = std::min((float)1., eRatio); - mvaInput_[14] = TMath::Sign((float)+1., (float)tauLifetimeInfo.dxy()); - mvaInput_[15] = std::sqrt(std::fabs(std::min((float)1., std::fabs((float)tauLifetimeInfo.dxy())))); - mvaInput_[16] = std::min((float)10., std::fabs((float)tauLifetimeInfo.dxy_Sig())); - mvaInput_[17] = TMath::Sign((float)+1., (float)tauLifetimeInfo.ip3d()); - mvaInput_[18] = std::sqrt(std::fabs(std::min((float)1., std::fabs((float)tauLifetimeInfo.ip3d())))); - mvaInput_[19] = std::min((float)10., std::fabs((float)tauLifetimeInfo.ip3d_Sig())); + mvaInput_[7] = std::min(30.f, nPhoton); + mvaInput_[8] = std::min(0.5f, ptWeightedDetaStrip); + mvaInput_[9] = std::min(0.5f, ptWeightedDphiStrip); + mvaInput_[10] = std::min(0.5f, ptWeightedDrSignal); + mvaInput_[11] = std::min(0.5f, ptWeightedDrIsolation); + mvaInput_[12] = std::min(100.f, leadingTrackChi2); + mvaInput_[13] = std::min(1.f, eRatio); + mvaInput_[14] = std::copysign(+1.f, (float)tauLifetimeInfo.dxy()); + mvaInput_[15] = std::sqrt(std::fabs(std::min(1.f, std::fabs((float)tauLifetimeInfo.dxy())))); + mvaInput_[16] = std::min(10.f, std::fabs((float)tauLifetimeInfo.dxy_Sig())); + mvaInput_[17] = std::copysign(+1.f, (float)tauLifetimeInfo.ip3d()); + mvaInput_[18] = std::sqrt(std::fabs(std::min(1.f, std::fabs((float)tauLifetimeInfo.ip3d())))); + mvaInput_[19] = std::min(10.f, std::fabs((float)tauLifetimeInfo.ip3d_Sig())); mvaInput_[20] = ( tauLifetimeInfo.hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[21] = std::sqrt(decayDistMag); - mvaInput_[22] = std::min((float)10., (float)tauLifetimeInfo.flightLengthSig()); + mvaInput_[22] = std::min(10.f, (float)tauLifetimeInfo.flightLengthSig()); } else if ( mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kPWnewDMwLT ) { - mvaInput_[0] = std::log(std::max((float)1., (float)tau->pt())); + mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); mvaInput_[1] = std::fabs((float)tau->eta()); - mvaInput_[2] = std::log(std::max((float)1.e-2, chargedIsoPtSum)); - mvaInput_[3] = std::log(std::max((float)1.e-2, neutralIsoPtSum)); - mvaInput_[4] = std::log(std::max((float)1.e-2, footprintCorrection)); - mvaInput_[5] = std::log(std::max((float)1.e-2, photonPtSumOutsideSignalCone)); + mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); + mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum)); + mvaInput_[4] = std::log(std::max(1.e-2f, footprintCorrection)); + mvaInput_[5] = std::log(std::max(1.e-2f, photonPtSumOutsideSignalCone)); mvaInput_[6] = tauDecayMode; - mvaInput_[7] = std::min((float)30., nPhoton); - mvaInput_[8] = std::min((float)0.5, ptWeightedDetaStrip); - mvaInput_[9] = std::min((float)0.5, ptWeightedDphiStrip); - mvaInput_[10] = std::min((float)0.5, ptWeightedDrSignal); - mvaInput_[11] = std::min((float)0.5, ptWeightedDrIsolation); - mvaInput_[12] = std::min((float)100., leadingTrackChi2); - mvaInput_[13] = std::min((float)1., eRatio); - mvaInput_[14] = TMath::Sign((float)+1., (float)tauLifetimeInfo.dxy()); - mvaInput_[15] = std::sqrt(std::fabs(std::min((float)1., std::fabs((float)tauLifetimeInfo.dxy())))); - mvaInput_[16] = std::min((float)10., std::fabs((float)tauLifetimeInfo.dxy_Sig())); - mvaInput_[17] = TMath::Sign((float)+1., (float)tauLifetimeInfo.ip3d()); - mvaInput_[18] = std::sqrt(std::fabs(std::min((float)1., std::fabs((float)tauLifetimeInfo.ip3d())))); - mvaInput_[19] = std::min((float)10., std::fabs((float)tauLifetimeInfo.ip3d_Sig())); + mvaInput_[7] = std::min(30.f, nPhoton); + mvaInput_[8] = std::min(0.5f, ptWeightedDetaStrip); + mvaInput_[9] = std::min(0.5f, ptWeightedDphiStrip); + mvaInput_[10] = std::min(0.5f, ptWeightedDrSignal); + mvaInput_[11] = std::min(0.5f, ptWeightedDrIsolation); + mvaInput_[12] = std::min(100.f, leadingTrackChi2); + mvaInput_[13] = std::min(1.f, eRatio); + mvaInput_[14] = std::copysign(+1.f, (float)tauLifetimeInfo.dxy()); + mvaInput_[15] = std::sqrt(std::fabs(std::min(1.f, std::fabs((float)tauLifetimeInfo.dxy())))); + mvaInput_[16] = std::min(10.f, std::fabs((float)tauLifetimeInfo.dxy_Sig())); + mvaInput_[17] = std::copysign(+1.f, (float)tauLifetimeInfo.ip3d()); + mvaInput_[18] = std::sqrt(std::fabs(std::min(1.f, std::fabs((float)tauLifetimeInfo.ip3d())))); + mvaInput_[19] = std::min(10.f, std::fabs((float)tauLifetimeInfo.ip3d_Sig())); mvaInput_[20] = ( tauLifetimeInfo.hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[21] = std::sqrt(decayDistMag); - mvaInput_[22] = std::min((float)10., (float)tauLifetimeInfo.flightLengthSig()); + mvaInput_[22] = std::min(10.f, (float)tauLifetimeInfo.flightLengthSig()); } else if ( mvaOpt_ == kDBoldDMwLTwGJ || mvaOpt_ == kDBnewDMwLTwGJ ) { - mvaInput_[0] = std::log(std::max((float)1., (float)tau->pt())); + mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); mvaInput_[1] = std::fabs((float)tau->eta()); - mvaInput_[2] = std::log(std::max((float)1.e-2, chargedIsoPtSum)); - mvaInput_[3] = std::log(std::max((float)1.e-2, neutralIsoPtSum)); - mvaInput_[4] = std::log(std::max((float)1.e-2, puCorrPtSum)); - mvaInput_[5] = std::log(std::max((float)1.e-2, photonPtSumOutsideSignalCone)); + mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); + mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum)); + mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); + mvaInput_[5] = std::log(std::max(1.e-2f, photonPtSumOutsideSignalCone)); mvaInput_[6] = tauDecayMode; - mvaInput_[7] = std::min((float)30., nPhoton); - mvaInput_[8] = std::min((float)0.5, ptWeightedDetaStrip); - mvaInput_[9] = std::min((float)0.5, ptWeightedDphiStrip); - mvaInput_[10] = std::min((float)0.5, ptWeightedDrSignal); - mvaInput_[11] = std::min((float)0.5, ptWeightedDrIsolation); - mvaInput_[12] = std::min((float)1., eRatio); - mvaInput_[13] = TMath::Sign((float)+1., (float)tauLifetimeInfo.dxy()); - mvaInput_[14] = std::sqrt(std::fabs(std::min((float)1., std::fabs((float)tauLifetimeInfo.dxy())))); - mvaInput_[15] = std::min((float)10., std::fabs((float)tauLifetimeInfo.dxy_Sig())); - mvaInput_[16] = TMath::Sign((float)+1., (float)tauLifetimeInfo.ip3d()); - mvaInput_[17] = std::sqrt(std::fabs(std::min((float)1., std::fabs((float)tauLifetimeInfo.ip3d())))); - mvaInput_[18] = std::min((float)10., std::fabs((float)tauLifetimeInfo.ip3d_Sig())); + mvaInput_[7] = std::min(30.f, nPhoton); + mvaInput_[8] = std::min(0.5f, ptWeightedDetaStrip); + mvaInput_[9] = std::min(0.5f, ptWeightedDphiStrip); + mvaInput_[10] = std::min(0.5f, ptWeightedDrSignal); + mvaInput_[11] = std::min(0.5f, ptWeightedDrIsolation); + mvaInput_[12] = std::min(1.f, eRatio); + mvaInput_[13] = std::copysign(+1.f, (float)tauLifetimeInfo.dxy()); + mvaInput_[14] = std::sqrt(std::fabs(std::min(1.f, std::fabs((float)tauLifetimeInfo.dxy())))); + mvaInput_[15] = std::min(10.f, std::fabs((float)tauLifetimeInfo.dxy_Sig())); + mvaInput_[16] = std::copysign(+1.f, (float)tauLifetimeInfo.ip3d()); + mvaInput_[17] = std::sqrt(std::fabs(std::min(1.f, std::fabs((float)tauLifetimeInfo.ip3d())))); + mvaInput_[18] = std::min(10.f, std::fabs((float)tauLifetimeInfo.ip3d_Sig())); mvaInput_[19] = ( tauLifetimeInfo.hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[20] = std::sqrt(decayDistMag); - mvaInput_[21] = std::min((float)10., (float)tauLifetimeInfo.flightLengthSig()); - mvaInput_[22] = std::max((float)-1., gjAngleDiff); + mvaInput_[21] = std::min(10.f, (float)tauLifetimeInfo.flightLengthSig()); + mvaInput_[22] = std::max(-1.f, gjAngleDiff); } double mvaValue = mvaReader_->GetClassifier(mvaInput_); From f94703083c09992b7955df1d9c03c12996566533 Mon Sep 17 00:00:00 2001 From: anehrkor Date: Tue, 25 Apr 2017 16:29:02 +0200 Subject: [PATCH 4/6] Add protection against arguments of asin and acos being outside of allowed range (-1 < arg < 1) --- .../plugins/PATTauDiscriminationByMVAIsolationRun2.cc | 10 +++++++--- .../PFRecoTauDiscriminationByMVAIsolationRun2.cc | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc b/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc index fb63bafd86df3..312c532261f59 100644 --- a/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc +++ b/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc @@ -218,9 +218,13 @@ double PATTauDiscriminationByMVAIsolationRun2::discriminate(const TauRef& tau) c double mTau = 1.77682; double mAOne = tau->p4().M(); double pAOneMag = tau->p(); - double thetaGJmax = std::asin( (std::pow(mTau,2) - std::pow(mAOne,2) ) / ( 2 * mTau * pAOneMag ) ); - double thetaGJmeasured = std::acos( ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * decayDistMag ) ); - gjAngleDiff = thetaGJmeasured - thetaGJmax; + double argumentThetaGJmax = (std::pow(mTau,2) - std::pow(mAOne,2) ) / ( 2 * mTau * pAOneMag ); + double argumentThetaGJmeasured = ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * decayDistMag ); + if ( std::fabs(argumentThetaGJmax) <= 1. && std::fabs(argumentThetaGJmeasured) <= 1. ) { + double thetaGJmax = std::asin( argumentThetaGJmax ); + double thetaGJmeasured = std::acos( argumentThetaGJmeasured ); + gjAngleDiff = thetaGJmeasured - thetaGJmax; + } } if ( mvaOpt_ == kOldDMwoLT || mvaOpt_ == kNewDMwoLT ) { diff --git a/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc b/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc index d75ad4c46f69b..240bfb48207b4 100644 --- a/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc +++ b/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc @@ -229,9 +229,13 @@ double PFRecoTauDiscriminationByMVAIsolationRun2::discriminate(const PFTauRef& t double mTau = 1.77682; double mAOne = tau->p4().M(); double pAOneMag = tau->p(); - double thetaGJmax = std::asin( (std::pow(mTau,2) - std::pow(mAOne,2) ) / ( 2 * mTau * pAOneMag ) ); - double thetaGJmeasured = std::acos( ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * decayDistMag ) ); - gjAngleDiff = thetaGJmeasured - thetaGJmax; + double argumentThetaGJmax = (std::pow(mTau,2) - std::pow(mAOne,2) ) / ( 2 * mTau * pAOneMag ); + double argumentThetaGJmeasured = ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * decayDistMag ); + if ( std::fabs(argumentThetaGJmax) <= 1. && std::fabs(argumentThetaGJmeasured) <= 1. ) { + double thetaGJmax = std::asin( argumentThetaGJmax ); + double thetaGJmeasured = std::acos( argumentThetaGJmeasured ); + gjAngleDiff = thetaGJmeasured - thetaGJmax; + } } if ( mvaOpt_ == kOldDMwoLT || mvaOpt_ == kNewDMwoLT ) { From 2076be91b733d5c129a865f43f5cc6a1c3d17b4d Mon Sep 17 00:00:00 2001 From: anehrkor Date: Wed, 26 Apr 2017 08:58:06 +0200 Subject: [PATCH 5/6] Replace std::fabs by std::abs; remove redundant std::abs statements --- .../PATTauDiscriminationByMVAIsolationRun2.cc | 40 +++++++++---------- ...RecoTauDiscriminationByMVAIsolationRun2.cc | 40 +++++++++---------- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc b/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc index 312c532261f59..e7dfca382ee23 100644 --- a/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc +++ b/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc @@ -220,7 +220,7 @@ double PATTauDiscriminationByMVAIsolationRun2::discriminate(const TauRef& tau) c double pAOneMag = tau->p(); double argumentThetaGJmax = (std::pow(mTau,2) - std::pow(mAOne,2) ) / ( 2 * mTau * pAOneMag ); double argumentThetaGJmeasured = ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * decayDistMag ); - if ( std::fabs(argumentThetaGJmax) <= 1. && std::fabs(argumentThetaGJmeasured) <= 1. ) { + if ( std::abs(argumentThetaGJmax) <= 1. && std::abs(argumentThetaGJmeasured) <= 1. ) { double thetaGJmax = std::asin( argumentThetaGJmax ); double thetaGJmeasured = std::acos( argumentThetaGJmeasured ); gjAngleDiff = thetaGJmeasured - thetaGJmax; @@ -229,27 +229,27 @@ double PATTauDiscriminationByMVAIsolationRun2::discriminate(const TauRef& tau) c if ( mvaOpt_ == kOldDMwoLT || mvaOpt_ == kNewDMwoLT ) { mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); - mvaInput_[1] = std::fabs((float)tau->eta()); + mvaInput_[1] = std::abs((float)tau->eta()); mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum - 0.125f*puCorrPtSum)); mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); mvaInput_[5] = tauDecayMode; } else if ( mvaOpt_ == kOldDMwLT || mvaOpt_ == kNewDMwLT ) { mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); - mvaInput_[1] = std::fabs((float)tau->eta()); + mvaInput_[1] = std::abs((float)tau->eta()); mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum - 0.125f*puCorrPtSum)); mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); mvaInput_[5] = tauDecayMode; mvaInput_[6] = std::copysign(+1.f, tau->dxy()); - mvaInput_[7] = std::sqrt(std::min(1.f, std::fabs(tau->dxy()))); - mvaInput_[8] = std::min(10.f, std::fabs(tau->dxy_Sig())); + mvaInput_[7] = std::sqrt(std::min(1.f, std::abs(tau->dxy()))); + mvaInput_[8] = std::min(10.f, std::abs(tau->dxy_Sig())); mvaInput_[9] = ( tau->hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[10] = std::sqrt(decayDistMag); mvaInput_[11] = std::min(10.f, tau->flightLengthSig()); } else if ( mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kDBnewDMwLT ) { mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); - mvaInput_[1] = std::fabs((float)tau->eta()); + mvaInput_[1] = std::abs((float)tau->eta()); mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum)); mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); @@ -263,17 +263,17 @@ double PATTauDiscriminationByMVAIsolationRun2::discriminate(const TauRef& tau) c mvaInput_[12] = std::min(100.f, leadingTrackChi2); mvaInput_[13] = std::min(1.f, eRatio); mvaInput_[14] = std::copysign(+1.f, tau->dxy()); - mvaInput_[15] = std::sqrt(std::min(1.f, std::fabs(tau->dxy()))); - mvaInput_[16] = std::min(10.f, std::fabs(tau->dxy_Sig())); + mvaInput_[15] = std::sqrt(std::min(1.f, std::abs(tau->dxy()))); + mvaInput_[16] = std::min(10.f, std::abs(tau->dxy_Sig())); mvaInput_[17] = std::copysign(+1.f, tau->ip3d()); - mvaInput_[18] = std::sqrt(std::min(1.f, std::fabs(tau->ip3d()))); - mvaInput_[19] = std::min(10.f, std::fabs(tau->ip3d_Sig())); + mvaInput_[18] = std::sqrt(std::min(1.f, std::abs(tau->ip3d()))); + mvaInput_[19] = std::min(10.f, std::abs(tau->ip3d_Sig())); mvaInput_[20] = ( tau->hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[21] = std::sqrt(decayDistMag); mvaInput_[22] = std::min(10.f, tau->flightLengthSig()); } else if ( mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kPWnewDMwLT ) { mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); - mvaInput_[1] = std::fabs((float)tau->eta()); + mvaInput_[1] = std::abs((float)tau->eta()); mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum)); mvaInput_[4] = std::log(std::max(1.e-2f, footprintCorrection)); @@ -287,17 +287,17 @@ double PATTauDiscriminationByMVAIsolationRun2::discriminate(const TauRef& tau) c mvaInput_[12] = std::min(100.f, leadingTrackChi2); mvaInput_[13] = std::min(1.f, eRatio); mvaInput_[14] = std::copysign(+1.f, tau->dxy()); - mvaInput_[15] = std::sqrt(std::min(1.f, std::fabs(tau->dxy()))); - mvaInput_[16] = std::min(10.f, std::fabs(tau->dxy_Sig())); + mvaInput_[15] = std::sqrt(std::min(1.f, std::abs(tau->dxy()))); + mvaInput_[16] = std::min(10.f, std::abs(tau->dxy_Sig())); mvaInput_[17] = std::copysign(+1.f, tau->ip3d()); - mvaInput_[18] = std::sqrt(std::min(1.f, std::fabs(tau->ip3d()))); - mvaInput_[19] = std::min(10.f, std::fabs(tau->ip3d_Sig())); + mvaInput_[18] = std::sqrt(std::min(1.f, std::abs(tau->ip3d()))); + mvaInput_[19] = std::min(10.f, std::abs(tau->ip3d_Sig())); mvaInput_[20] = ( tau->hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[21] = std::sqrt(decayDistMag); mvaInput_[22] = std::min(10.f, tau->flightLengthSig()); } else if ( mvaOpt_ == kDBoldDMwLTwGJ || mvaOpt_ == kDBnewDMwLTwGJ ) { mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); - mvaInput_[1] = std::fabs((float)tau->eta()); + mvaInput_[1] = std::abs((float)tau->eta()); mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum)); mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); @@ -310,11 +310,11 @@ double PATTauDiscriminationByMVAIsolationRun2::discriminate(const TauRef& tau) c mvaInput_[11] = std::min(0.5f, ptWeightedDrIsolation); mvaInput_[12] = std::min(1.f, eRatio); mvaInput_[13] = std::copysign(+1.f, tau->dxy()); - mvaInput_[14] = std::sqrt(std::min(1.f, std::fabs(tau->dxy()))); - mvaInput_[15] = std::min(10.f, std::fabs(tau->dxy_Sig())); + mvaInput_[14] = std::sqrt(std::min(1.f, std::abs(tau->dxy()))); + mvaInput_[15] = std::min(10.f, std::abs(tau->dxy_Sig())); mvaInput_[16] = std::copysign(+1.f, tau->ip3d()); - mvaInput_[17] = std::sqrt(std::min(1.f, std::fabs(tau->ip3d()))); - mvaInput_[18] = std::min(10.f, std::fabs(tau->ip3d_Sig())); + mvaInput_[17] = std::sqrt(std::min(1.f, std::abs(tau->ip3d()))); + mvaInput_[18] = std::min(10.f, std::abs(tau->ip3d_Sig())); mvaInput_[19] = ( tau->hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[20] = std::sqrt(decayDistMag); mvaInput_[21] = std::min(10.f, tau->flightLengthSig()); diff --git a/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc b/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc index 240bfb48207b4..3072759d8cf60 100644 --- a/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc +++ b/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc @@ -231,7 +231,7 @@ double PFRecoTauDiscriminationByMVAIsolationRun2::discriminate(const PFTauRef& t double pAOneMag = tau->p(); double argumentThetaGJmax = (std::pow(mTau,2) - std::pow(mAOne,2) ) / ( 2 * mTau * pAOneMag ); double argumentThetaGJmeasured = ( tau->p4().px() * decayDistX + tau->p4().py() * decayDistY + tau->p4().pz() * decayDistZ ) / ( pAOneMag * decayDistMag ); - if ( std::fabs(argumentThetaGJmax) <= 1. && std::fabs(argumentThetaGJmeasured) <= 1. ) { + if ( std::abs(argumentThetaGJmax) <= 1. && std::abs(argumentThetaGJmeasured) <= 1. ) { double thetaGJmax = std::asin( argumentThetaGJmax ); double thetaGJmeasured = std::acos( argumentThetaGJmeasured ); gjAngleDiff = thetaGJmeasured - thetaGJmax; @@ -240,27 +240,27 @@ double PFRecoTauDiscriminationByMVAIsolationRun2::discriminate(const PFTauRef& t if ( mvaOpt_ == kOldDMwoLT || mvaOpt_ == kNewDMwoLT ) { mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); - mvaInput_[1] = std::fabs((float)tau->eta()); + mvaInput_[1] = std::abs((float)tau->eta()); mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum - 0.125f*puCorrPtSum)); mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); mvaInput_[5] = tauDecayMode; } else if ( mvaOpt_ == kOldDMwLT || mvaOpt_ == kNewDMwLT ) { mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); - mvaInput_[1] = std::fabs((float)tau->eta()); + mvaInput_[1] = std::abs((float)tau->eta()); mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum - 0.125f*puCorrPtSum)); mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); mvaInput_[5] = tauDecayMode; mvaInput_[6] = std::copysign(+1.f, (float)tauLifetimeInfo.dxy()); - mvaInput_[7] = std::sqrt(std::fabs(std::min(1.f, (float)tauLifetimeInfo.dxy()))); - mvaInput_[8] = std::min(10.f, std::fabs((float)tauLifetimeInfo.dxy_Sig())); + mvaInput_[7] = std::sqrt(std::abs(std::min(1.f, (float)tauLifetimeInfo.dxy()))); + mvaInput_[8] = std::min(10.f, std::abs((float)tauLifetimeInfo.dxy_Sig())); mvaInput_[9] = ( tauLifetimeInfo.hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[10] = std::sqrt(decayDistMag); mvaInput_[11] = std::min(10.f, (float)tauLifetimeInfo.flightLengthSig()); } else if ( mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kDBnewDMwLT ) { mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); - mvaInput_[1] = std::fabs((float)tau->eta()); + mvaInput_[1] = std::abs((float)tau->eta()); mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum)); mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); @@ -274,17 +274,17 @@ double PFRecoTauDiscriminationByMVAIsolationRun2::discriminate(const PFTauRef& t mvaInput_[12] = std::min(100.f, leadingTrackChi2); mvaInput_[13] = std::min(1.f, eRatio); mvaInput_[14] = std::copysign(+1.f, (float)tauLifetimeInfo.dxy()); - mvaInput_[15] = std::sqrt(std::fabs(std::min(1.f, std::fabs((float)tauLifetimeInfo.dxy())))); - mvaInput_[16] = std::min(10.f, std::fabs((float)tauLifetimeInfo.dxy_Sig())); + mvaInput_[15] = std::sqrt(std::min(1.f, std::abs((float)tauLifetimeInfo.dxy()))); + mvaInput_[16] = std::min(10.f, std::abs((float)tauLifetimeInfo.dxy_Sig())); mvaInput_[17] = std::copysign(+1.f, (float)tauLifetimeInfo.ip3d()); - mvaInput_[18] = std::sqrt(std::fabs(std::min(1.f, std::fabs((float)tauLifetimeInfo.ip3d())))); - mvaInput_[19] = std::min(10.f, std::fabs((float)tauLifetimeInfo.ip3d_Sig())); + mvaInput_[18] = std::sqrt(std::min(1.f, std::abs((float)tauLifetimeInfo.ip3d()))); + mvaInput_[19] = std::min(10.f, std::abs((float)tauLifetimeInfo.ip3d_Sig())); mvaInput_[20] = ( tauLifetimeInfo.hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[21] = std::sqrt(decayDistMag); mvaInput_[22] = std::min(10.f, (float)tauLifetimeInfo.flightLengthSig()); } else if ( mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kPWnewDMwLT ) { mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); - mvaInput_[1] = std::fabs((float)tau->eta()); + mvaInput_[1] = std::abs((float)tau->eta()); mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum)); mvaInput_[4] = std::log(std::max(1.e-2f, footprintCorrection)); @@ -298,17 +298,17 @@ double PFRecoTauDiscriminationByMVAIsolationRun2::discriminate(const PFTauRef& t mvaInput_[12] = std::min(100.f, leadingTrackChi2); mvaInput_[13] = std::min(1.f, eRatio); mvaInput_[14] = std::copysign(+1.f, (float)tauLifetimeInfo.dxy()); - mvaInput_[15] = std::sqrt(std::fabs(std::min(1.f, std::fabs((float)tauLifetimeInfo.dxy())))); - mvaInput_[16] = std::min(10.f, std::fabs((float)tauLifetimeInfo.dxy_Sig())); + mvaInput_[15] = std::sqrt(std::min(1.f, std::abs((float)tauLifetimeInfo.dxy()))); + mvaInput_[16] = std::min(10.f, std::abs((float)tauLifetimeInfo.dxy_Sig())); mvaInput_[17] = std::copysign(+1.f, (float)tauLifetimeInfo.ip3d()); - mvaInput_[18] = std::sqrt(std::fabs(std::min(1.f, std::fabs((float)tauLifetimeInfo.ip3d())))); - mvaInput_[19] = std::min(10.f, std::fabs((float)tauLifetimeInfo.ip3d_Sig())); + mvaInput_[18] = std::sqrt(std::min(1.f, std::abs((float)tauLifetimeInfo.ip3d()))); + mvaInput_[19] = std::min(10.f, std::abs((float)tauLifetimeInfo.ip3d_Sig())); mvaInput_[20] = ( tauLifetimeInfo.hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[21] = std::sqrt(decayDistMag); mvaInput_[22] = std::min(10.f, (float)tauLifetimeInfo.flightLengthSig()); } else if ( mvaOpt_ == kDBoldDMwLTwGJ || mvaOpt_ == kDBnewDMwLTwGJ ) { mvaInput_[0] = std::log(std::max(1.f, (float)tau->pt())); - mvaInput_[1] = std::fabs((float)tau->eta()); + mvaInput_[1] = std::abs((float)tau->eta()); mvaInput_[2] = std::log(std::max(1.e-2f, chargedIsoPtSum)); mvaInput_[3] = std::log(std::max(1.e-2f, neutralIsoPtSum)); mvaInput_[4] = std::log(std::max(1.e-2f, puCorrPtSum)); @@ -321,11 +321,11 @@ double PFRecoTauDiscriminationByMVAIsolationRun2::discriminate(const PFTauRef& t mvaInput_[11] = std::min(0.5f, ptWeightedDrIsolation); mvaInput_[12] = std::min(1.f, eRatio); mvaInput_[13] = std::copysign(+1.f, (float)tauLifetimeInfo.dxy()); - mvaInput_[14] = std::sqrt(std::fabs(std::min(1.f, std::fabs((float)tauLifetimeInfo.dxy())))); - mvaInput_[15] = std::min(10.f, std::fabs((float)tauLifetimeInfo.dxy_Sig())); + mvaInput_[14] = std::sqrt(std::min(1.f, std::abs((float)tauLifetimeInfo.dxy()))); + mvaInput_[15] = std::min(10.f, std::abs((float)tauLifetimeInfo.dxy_Sig())); mvaInput_[16] = std::copysign(+1.f, (float)tauLifetimeInfo.ip3d()); - mvaInput_[17] = std::sqrt(std::fabs(std::min(1.f, std::fabs((float)tauLifetimeInfo.ip3d())))); - mvaInput_[18] = std::min(10.f, std::fabs((float)tauLifetimeInfo.ip3d_Sig())); + mvaInput_[17] = std::sqrt(std::min(1.f, std::abs((float)tauLifetimeInfo.ip3d()))); + mvaInput_[18] = std::min(10.f, std::abs((float)tauLifetimeInfo.ip3d_Sig())); mvaInput_[19] = ( tauLifetimeInfo.hasSecondaryVertex() ) ? 1. : 0.; mvaInput_[20] = std::sqrt(decayDistMag); mvaInput_[21] = std::min(10.f, (float)tauLifetimeInfo.flightLengthSig()); From 6bfb85889caa2356656caf9bd4ec41d10a7b9b12 Mon Sep 17 00:00:00 2001 From: anehrkor Date: Wed, 26 Apr 2017 09:08:17 +0200 Subject: [PATCH 6/6] Add a few line breaks to improve readability --- .../plugins/PATTauDiscriminationByMVAIsolationRun2.cc | 8 ++++++-- .../plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc b/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc index e7dfca382ee23..fdd85a3c36141 100644 --- a/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc +++ b/RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc @@ -187,8 +187,12 @@ double PATTauDiscriminationByMVAIsolationRun2::discriminate(const TauRef& tau) c int tauDecayMode = tau->decayMode(); - if ( ((mvaOpt_ == kOldDMwoLT || mvaOpt_ == kOldDMwLT || mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kDBoldDMwLTwGJ) && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 10)) || - ((mvaOpt_ == kNewDMwoLT || mvaOpt_ == kNewDMwLT || mvaOpt_ == kDBnewDMwLT || mvaOpt_ == kPWnewDMwLT || mvaOpt_ == kDBnewDMwLTwGJ) && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 5 || tauDecayMode == 6 || tauDecayMode == 10 || tauDecayMode == 11)) ) { + if ( ((mvaOpt_ == kOldDMwoLT || mvaOpt_ == kOldDMwLT || mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kDBoldDMwLTwGJ) + && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 10)) + || + ((mvaOpt_ == kNewDMwoLT || mvaOpt_ == kNewDMwLT || mvaOpt_ == kDBnewDMwLT || mvaOpt_ == kPWnewDMwLT || mvaOpt_ == kDBnewDMwLTwGJ) + && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 5 || tauDecayMode == 6 || tauDecayMode == 10 || tauDecayMode == 11)) + ) { float chargedIsoPtSum = tau->tauID(chargedIsoPtSums_); float neutralIsoPtSum = tau->tauID(neutralIsoPtSums_); diff --git a/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc b/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc index 3072759d8cf60..4514eccf2c657 100644 --- a/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc +++ b/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc @@ -199,8 +199,12 @@ double PFRecoTauDiscriminationByMVAIsolationRun2::discriminate(const PFTauRef& t int tauDecayMode = tau->decayMode(); - if ( ((mvaOpt_ == kOldDMwoLT || mvaOpt_ == kOldDMwLT || mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kDBoldDMwLTwGJ) && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 10)) || - ((mvaOpt_ == kNewDMwoLT || mvaOpt_ == kNewDMwLT || mvaOpt_ == kDBnewDMwLT || mvaOpt_ == kPWnewDMwLT || mvaOpt_ == kDBnewDMwLTwGJ) && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 5 || tauDecayMode == 6 || tauDecayMode == 10 || tauDecayMode == 11)) ) { + if ( ((mvaOpt_ == kOldDMwoLT || mvaOpt_ == kOldDMwLT || mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kDBoldDMwLTwGJ) + && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 10)) + || + ((mvaOpt_ == kNewDMwoLT || mvaOpt_ == kNewDMwLT || mvaOpt_ == kDBnewDMwLT || mvaOpt_ == kPWnewDMwLT || mvaOpt_ == kDBnewDMwLTwGJ) + && (tauDecayMode == 0 || tauDecayMode == 1 || tauDecayMode == 2 || tauDecayMode == 5 || tauDecayMode == 6 || tauDecayMode == 10 || tauDecayMode == 11)) + ) { float chargedIsoPtSum = (*chargedIsoPtSums_)[tau]; float neutralIsoPtSum = (*neutralIsoPtSums_)[tau];