diff --git a/PhysicsTools/PatAlgos/python/recoLayer0/bTagging_cff.py b/PhysicsTools/PatAlgos/python/recoLayer0/bTagging_cff.py
index 0291775995823..159a4040dec10 100644
--- a/PhysicsTools/PatAlgos/python/recoLayer0/bTagging_cff.py
+++ b/PhysicsTools/PatAlgos/python/recoLayer0/bTagging_cff.py
@@ -21,14 +21,10 @@
, 'pfInclusiveSecondaryVertexFinderTagInfosCA15'
, 'pfInclusiveSecondaryVertexFinderNegativeTagInfos'
, 'softPFMuonsTagInfos'
- , 'softPFMuonsTagInfosAK8'
- , 'softPFMuonsTagInfosCA15'
, 'softPFElectronsTagInfos'
- , 'softPFElectronsTagInfosAK8'
- , 'softPFElectronsTagInfosCA15'
- #C-Tagging tag infos
+ # C-Tagging tag infos
, 'pfInclusiveSecondaryVertexFinderCvsLTagInfos'
- # TopTagInfos (unrelated to b tagging)
+ # TopTagInfos (unrelated to b tagging)
, 'caTopTagInfos'
]
# extend for "internal use" in PAT/MINIAOD (renaming)
@@ -130,9 +126,9 @@
, 'pfCombinedMVAV2BJetTags' : ['pfImpactParameterTagInfos', 'pfSecondaryVertexTagInfos', 'pfInclusiveSecondaryVertexFinderTagInfos', 'softPFMuonsTagInfos', 'softPFElectronsTagInfos']
, 'pfCombinedSecondaryVertexSoftLeptonBJetTags' : ['pfImpactParameterTagInfos', 'pfInclusiveSecondaryVertexFinderTagInfos', 'softPFMuonsTagInfos', 'softPFElectronsTagInfos']
, 'pfNegativeCombinedSecondaryVertexSoftLeptonBJetTags' : ['pfImpactParameterTagInfos', 'pfInclusiveSecondaryVertexFinderNegativeTagInfos', 'softPFMuonsTagInfos', 'softPFElectronsTagInfos']
- , 'pfBoostedDoubleSecondaryVertexAK8BJetTags' : ['pfImpactParameterTagInfosAK8', 'pfInclusiveSecondaryVertexFinderTagInfosAK8', 'softPFMuonsTagInfosAK8', 'softPFElectronsTagInfosAK8']
- , 'pfBoostedDoubleSecondaryVertexCA15BJetTags' : ['pfImpactParameterTagInfosCA15', 'pfInclusiveSecondaryVertexFinderTagInfosCA15', 'softPFMuonsTagInfosCA15', 'softPFElectronsTagInfosCA15']
- #C-Tagging
- , 'pfCombinedCvsLJetTags' : ["pfImpactParameterTagInfos", "pfInclusiveSecondaryVertexFinderCvsLTagInfos", "softPFMuonsTagInfos", "softPFElectronsTagInfos"]
- , 'pfCombinedCvsBJetTags' : ["pfImpactParameterTagInfos", "pfInclusiveSecondaryVertexFinderCvsLTagInfos", "softPFMuonsTagInfos", "softPFElectronsTagInfos"]
+ , 'pfBoostedDoubleSecondaryVertexAK8BJetTags' : ['pfImpactParameterTagInfosAK8', 'pfInclusiveSecondaryVertexFinderTagInfosAK8']
+ , 'pfBoostedDoubleSecondaryVertexCA15BJetTags' : ['pfImpactParameterTagInfosCA15', 'pfInclusiveSecondaryVertexFinderTagInfosCA15']
+ # C-Tagging
+ , 'pfCombinedCvsLJetTags' : ["pfImpactParameterTagInfos", "pfInclusiveSecondaryVertexFinderCvsLTagInfos", "softPFMuonsTagInfos", "softPFElectronsTagInfos"]
+ , 'pfCombinedCvsBJetTags' : ["pfImpactParameterTagInfos", "pfInclusiveSecondaryVertexFinderCvsLTagInfos", "softPFMuonsTagInfos", "softPFElectronsTagInfos"]
}
diff --git a/PhysicsTools/PatAlgos/python/tools/jetTools.py b/PhysicsTools/PatAlgos/python/tools/jetTools.py
index d19a8eb2afa6b..61a4775a6c3bf 100644
--- a/PhysicsTools/PatAlgos/python/tools/jetTools.py
+++ b/PhysicsTools/PatAlgos/python/tools/jetTools.py
@@ -488,16 +488,8 @@ def toolCode(self, process):
setattr(process, btagInfo+_labelName+postfix, btag.softMuonTagInfos.clone(jets = jetSource, primaryVertex=pvSource))
if btagInfo == 'softPFMuonsTagInfos':
setattr(process, btagInfo+_labelName+postfix, btag.softPFMuonsTagInfos.clone(jets = jetSource, primaryVertex=pvSource, muons=muSource))
- if btagInfo == 'softPFMuonsTagInfosAK8':
- setattr(process, btagInfo+_labelName+postfix, btag.softPFMuonsTagInfosAK8.clone(jets = jetSource, primaryVertex=pvSource, muons=muSource))
- if btagInfo == 'softPFMuonsTagInfosCA15':
- setattr(process, btagInfo+_labelName+postfix, btag.softPFMuonsTagInfosCA15.clone(jets = jetSource, primaryVertex=pvSource, muons=muSource))
if btagInfo == 'softPFElectronsTagInfos':
setattr(process, btagInfo+_labelName+postfix, btag.softPFElectronsTagInfos.clone(jets = jetSource, primaryVertex=pvSource, electrons=elSource))
- if btagInfo == 'softPFElectronsTagInfosAK8':
- setattr(process, btagInfo+_labelName+postfix, btag.softPFElectronsTagInfosAK8.clone(jets = jetSource, primaryVertex=pvSource, electrons=elSource))
- if btagInfo == 'softPFElectronsTagInfosCA15':
- setattr(process, btagInfo+_labelName+postfix, btag.softPFElectronsTagInfosCA15.clone(jets = jetSource, primaryVertex=pvSource, electrons=elSource))
acceptedTagInfos.append(btagInfo)
elif hasattr(toptag, btagInfo) :
acceptedTagInfos.append(btagInfo)
diff --git a/RecoBTag/SecondaryVertex/BuildFile.xml b/RecoBTag/SecondaryVertex/BuildFile.xml
index 66f245b372fed..ca3a97ed868ad 100644
--- a/RecoBTag/SecondaryVertex/BuildFile.xml
+++ b/RecoBTag/SecondaryVertex/BuildFile.xml
@@ -8,6 +8,7 @@
+
diff --git a/RecoBTag/SecondaryVertex/interface/CandidateBoostedDoubleSecondaryVertexComputer.h b/RecoBTag/SecondaryVertex/interface/CandidateBoostedDoubleSecondaryVertexComputer.h
index 22276c98c5fd8..e877e507a5e49 100644
--- a/RecoBTag/SecondaryVertex/interface/CandidateBoostedDoubleSecondaryVertexComputer.h
+++ b/RecoBTag/SecondaryVertex/interface/CandidateBoostedDoubleSecondaryVertexComputer.h
@@ -2,6 +2,7 @@
#define RecoBTag_SecondaryVertex_CandidateBoostedDoubleSecondaryVertexComputer_h
#include "FWCore/ParameterSet/interface/ParameterSet.h"
+#include "FWCore/Framework/interface/ESHandle.h"
#include "CommonTools/Utils/interface/TMVAEvaluator.h"
#include "RecoBTau/JetTagComputer/interface/JetTagComputer.h"
#include "DataFormats/JetReco/interface/JetCollection.h"
@@ -9,6 +10,9 @@
#include "DataFormats/VertexReco/interface/VertexFwd.h"
#include "DataFormats/Candidate/interface/VertexCompositePtrCandidate.h"
#include "RecoBTag/SecondaryVertex/interface/TrackKinematics.h"
+#include "RecoBTag/SecondaryVertex/interface/V0Filter.h"
+#include "RecoBTag/SecondaryVertex/interface/TrackSelector.h"
+#include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
#include "fastjet/PseudoJet.hh"
#include "fastjet/contrib/Njettiness.hh"
@@ -18,6 +22,7 @@ class CandidateBoostedDoubleSecondaryVertexComputer : public JetTagComputer {
public:
CandidateBoostedDoubleSecondaryVertexComputer(const edm::ParameterSet & parameters);
+ void initialize(const JetTagComputerRecord &) override;
float discriminator(const TagInfoHelper & tagInfos) const override;
private:
@@ -25,15 +30,25 @@ class CandidateBoostedDoubleSecondaryVertexComputer : public JetTagComputer {
void setTracksPVBase(const reco::TrackRef & trackRef, const reco::VertexRef & vertexRef, float & PVweight) const;
void setTracksPV(const reco::CandidatePtr & trackRef, const reco::VertexRef & vertexRef, float & PVweight) const;
void vertexKinematics(const reco::VertexCompositePtrCandidate & vertex, reco::TrackKinematics & vertexKinematics) const;
+ void etaRelToTauAxis(const reco::VertexCompositePtrCandidate & vertex, fastjet::PseudoJet & tauAxis, std::vector & tau_trackEtaRel) const;
- const double beta_ ;
+ const double beta_;
const double R0_;
// N-subjettiness calculator
fastjet::contrib::Njettiness njettiness_;
const double maxSVDeltaRToJet_;
-
+ const bool useCondDB_;
+ const std::string gbrForestLabel_;
const edm::FileInPath weightFile_;
+ const bool useGBRForest_;
+ const bool useAdaBoost_;
+ const bool maxDistToAxis_;
+ const bool maxDecayLen_;
+ reco::V0Filter trackPairV0Filter;
+ reco::TrackSelector trackSelector;
+
+ edm::ESHandle trackBuilder;
std::unique_ptr mvaID;
};
diff --git a/RecoBTag/SecondaryVertex/python/candidateBoostedDoubleSecondaryVertexAK8Computer_cfi.py b/RecoBTag/SecondaryVertex/python/candidateBoostedDoubleSecondaryVertexAK8Computer_cfi.py
index ef47d34c92e38..d4956374d5ede 100644
--- a/RecoBTag/SecondaryVertex/python/candidateBoostedDoubleSecondaryVertexAK8Computer_cfi.py
+++ b/RecoBTag/SecondaryVertex/python/candidateBoostedDoubleSecondaryVertexAK8Computer_cfi.py
@@ -1,8 +1,15 @@
import FWCore.ParameterSet.Config as cms
+from RecoBTag.SecondaryVertex.trackSelection_cff import *
+
candidateBoostedDoubleSecondaryVertexAK8Computer = cms.ESProducer("CandidateBoostedDoubleSecondaryVertexESProducer",
+ trackSelectionBlock,
beta = cms.double(1.0),
R0 = cms.double(0.8),
maxSVDeltaRToJet = cms.double(0.7),
- weightFile = cms.FileInPath('RecoBTag/SecondaryVertex/data/BoostedDoubleSV_AK8_BDT.weights.xml.gz')
+ useCondDB = cms.bool(False),
+ weightFile = cms.FileInPath('RecoBTag/SecondaryVertex/data/BoostedDoubleSV_AK8_BDT_v2.weights.xml.gz'),
+ useGBRForest = cms.bool(True),
+ useAdaBoost = cms.bool(False),
+ trackPairV0Filter = cms.PSet(k0sMassWindow = cms.double(0.03))
)
diff --git a/RecoBTag/SecondaryVertex/python/candidateBoostedDoubleSecondaryVertexCA15Computer_cfi.py b/RecoBTag/SecondaryVertex/python/candidateBoostedDoubleSecondaryVertexCA15Computer_cfi.py
index 9008fa0aaccc7..d91b153c9288d 100644
--- a/RecoBTag/SecondaryVertex/python/candidateBoostedDoubleSecondaryVertexCA15Computer_cfi.py
+++ b/RecoBTag/SecondaryVertex/python/candidateBoostedDoubleSecondaryVertexCA15Computer_cfi.py
@@ -1,8 +1,15 @@
import FWCore.ParameterSet.Config as cms
+from RecoBTag.SecondaryVertex.trackSelection_cff import *
+
candidateBoostedDoubleSecondaryVertexCA15Computer = cms.ESProducer("CandidateBoostedDoubleSecondaryVertexESProducer",
+ trackSelectionBlock,
beta = cms.double(1.0),
R0 = cms.double(1.5),
maxSVDeltaRToJet = cms.double(1.3),
- weightFile = cms.FileInPath('RecoBTag/SecondaryVertex/data/BoostedDoubleSV_CA15_BDT.weights.xml.gz')
+ useCondDB = cms.bool(False),
+ weightFile = cms.FileInPath('RecoBTag/SecondaryVertex/data/BoostedDoubleSV_CA15_BDT_v2.weights.xml.gz'),
+ useGBRForest = cms.bool(True),
+ useAdaBoost = cms.bool(False),
+ trackPairV0Filter = cms.PSet(k0sMassWindow = cms.double(0.03))
)
diff --git a/RecoBTag/SecondaryVertex/python/pfBoostedDoubleSecondaryVertexAK8BJetTags_cfi.py b/RecoBTag/SecondaryVertex/python/pfBoostedDoubleSecondaryVertexAK8BJetTags_cfi.py
index 5a98bcf736695..21cb9bbb8ae42 100644
--- a/RecoBTag/SecondaryVertex/python/pfBoostedDoubleSecondaryVertexAK8BJetTags_cfi.py
+++ b/RecoBTag/SecondaryVertex/python/pfBoostedDoubleSecondaryVertexAK8BJetTags_cfi.py
@@ -3,7 +3,5 @@
pfBoostedDoubleSecondaryVertexAK8BJetTags = cms.EDProducer("JetTagProducer",
jetTagComputer = cms.string('candidateBoostedDoubleSecondaryVertexAK8Computer'),
tagInfos = cms.VInputTag(cms.InputTag("pfImpactParameterTagInfosAK8"),
- cms.InputTag("pfInclusiveSecondaryVertexFinderTagInfosAK8"),
- cms.InputTag("softPFMuonsTagInfosAK8"),
- cms.InputTag("softPFElectronsTagInfosAK8"))
+ cms.InputTag("pfInclusiveSecondaryVertexFinderTagInfosAK8"))
)
diff --git a/RecoBTag/SecondaryVertex/python/pfBoostedDoubleSecondaryVertexCA15BJetTags_cfi.py b/RecoBTag/SecondaryVertex/python/pfBoostedDoubleSecondaryVertexCA15BJetTags_cfi.py
index 40869cc1e55b9..85a93ac5443bf 100644
--- a/RecoBTag/SecondaryVertex/python/pfBoostedDoubleSecondaryVertexCA15BJetTags_cfi.py
+++ b/RecoBTag/SecondaryVertex/python/pfBoostedDoubleSecondaryVertexCA15BJetTags_cfi.py
@@ -3,7 +3,5 @@
pfBoostedDoubleSecondaryVertexCA15BJetTags = cms.EDProducer("JetTagProducer",
jetTagComputer = cms.string('candidateBoostedDoubleSecondaryVertexCA15Computer'),
tagInfos = cms.VInputTag(cms.InputTag("pfImpactParameterTagInfosCA15"),
- cms.InputTag("pfInclusiveSecondaryVertexFinderTagInfosCA15"),
- cms.InputTag("softPFMuonsTagInfosCA15"),
- cms.InputTag("softPFElectronsTagInfosCA15"))
+ cms.InputTag("pfInclusiveSecondaryVertexFinderTagInfosCA15"))
)
diff --git a/RecoBTag/SecondaryVertex/src/CandidateBoostedDoubleSecondaryVertexComputer.cc b/RecoBTag/SecondaryVertex/src/CandidateBoostedDoubleSecondaryVertexComputer.cc
index 3544d1beedbaa..181a38e9926d6 100644
--- a/RecoBTag/SecondaryVertex/src/CandidateBoostedDoubleSecondaryVertexComputer.cc
+++ b/RecoBTag/SecondaryVertex/src/CandidateBoostedDoubleSecondaryVertexComputer.cc
@@ -1,11 +1,18 @@
#include "RecoBTag/SecondaryVertex/interface/CandidateBoostedDoubleSecondaryVertexComputer.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
+
+#include "CondFormats/DataRecord/interface/BTauGenericMVAJetTagComputerRcd.h"
+#include "CondFormats/DataRecord/interface/GBRWrapperRcd.h"
+#include "TrackingTools/Records/interface/TransientTrackRecord.h"
+#include "RecoBTau/JetTagComputer/interface/JetTagComputerRecord.h"
#include "DataFormats/BTauReco/interface/CandIPTagInfo.h"
#include "DataFormats/BTauReco/interface/CandSecondaryVertexTagInfo.h"
-#include "DataFormats/BTauReco/interface/CandSoftLeptonTagInfo.h"
#include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
#include "DataFormats/PatCandidates/interface/PackedCandidate.h"
+#include "RecoVertex/VertexPrimitives/interface/ConvertToFromReco.h"
+#include "RecoBTau/JetTagComputer/interface/JetTagComputer.h"
+#include "TrackingTools/IPTools/interface/IPTools.h"
CandidateBoostedDoubleSecondaryVertexComputer::CandidateBoostedDoubleSecondaryVertexComputer(const edm::ParameterSet & parameters) :
@@ -13,39 +20,73 @@ CandidateBoostedDoubleSecondaryVertexComputer::CandidateBoostedDoubleSecondaryVe
R0_(parameters.getParameter("R0")),
njettiness_(fastjet::contrib::OnePass_KT_Axes(), fastjet::contrib::NormalizedMeasure(beta_,R0_)),
maxSVDeltaRToJet_(parameters.getParameter("maxSVDeltaRToJet")),
- weightFile_(parameters.getParameter("weightFile"))
+ useCondDB_(parameters.getParameter("useCondDB")),
+ gbrForestLabel_(parameters.existsAs("gbrForestLabel") ? parameters.getParameter("gbrForestLabel") : ""),
+ weightFile_(parameters.existsAs("weightFile") ? parameters.getParameter("weightFile") : edm::FileInPath()),
+ useGBRForest_(parameters.existsAs("useGBRForest") ? parameters.getParameter("useGBRForest") : false),
+ useAdaBoost_(parameters.existsAs("useAdaBoost") ? parameters.getParameter("useAdaBoost") : false),
+ maxDistToAxis_(parameters.getParameter("trackSelection").getParameter("maxDistToAxis")),
+ maxDecayLen_(parameters.getParameter("trackSelection").getParameter("maxDecayLen")),
+ trackPairV0Filter(parameters.getParameter("trackPairV0Filter")),
+ trackSelector(parameters.getParameter("trackSelection"))
{
uses(0, "ipTagInfos");
uses(1, "svTagInfos");
- uses(2, "muonTagInfos");
- uses(3, "elecTagInfos");
mvaID.reset(new TMVAEvaluator());
+}
- // variable order needs to be the same as in the training
- std::vector variables({"PFLepton_ptrel", "z_ratio1", "tau_dot", "SV_mass_0", "SV_vtx_EnergyRatio_0",
- "SV_vtx_EnergyRatio_1","PFLepton_IP2D", "tau2/tau1", "nSL", "jetNTracksEtaRel"});
- std::vector spectators({"massGroomed", "flavour", "nbHadrons", "ptGroomed", "etaGroomed"});
+void CandidateBoostedDoubleSecondaryVertexComputer::initialize(const JetTagComputerRecord & record)
+{
+ // variable names and order need to be the same as in the training
+ std::vector variables({"z_ratio",
+ "trackSipdSig_3","trackSipdSig_2","trackSipdSig_1","trackSipdSig_0",
+ "trackSipdSig_1_0","trackSipdSig_0_0","trackSipdSig_1_1","trackSipdSig_0_1",
+ "trackSip2dSigAboveCharm_0","trackSip2dSigAboveBottom_0","trackSip2dSigAboveBottom_1",
+ "tau0_trackEtaRel_0","tau0_trackEtaRel_1","tau0_trackEtaRel_2",
+ "tau1_trackEtaRel_0","tau1_trackEtaRel_1","tau1_trackEtaRel_2",
+ "tau_vertexMass_0","tau_vertexEnergyRatio_0","tau_vertexDeltaR_0","tau_flightDistance2dSig_0",
+ "tau_vertexMass_1","tau_vertexEnergyRatio_1","tau_flightDistance2dSig_1",
+ "jetNTracks","nSV"});
+ // book TMVA readers
+ std::vector spectators({"massPruned", "flavour", "nbHadrons", "ptPruned", "etaPruned"});
+
+ if (useCondDB_)
+ {
+ const GBRWrapperRcd & gbrWrapperRecord = record.getRecord();
- mvaID->initialize("Color:Silent:Error", "BDTG", weightFile_.fullPath(), variables, spectators,true,false);
-}
+ edm::ESHandle gbrForestHandle;
+ gbrWrapperRecord.get(gbrForestLabel_.c_str(), gbrForestHandle);
+ mvaID->initializeGBRForest(gbrForestHandle.product(), variables, spectators, useAdaBoost_);
+ }
+ else
+ mvaID->initialize("Color:Silent:Error", "BDT", weightFile_.fullPath(), variables, spectators, useGBRForest_, useAdaBoost_);
+
+ // get TransientTrackBuilder
+ const TransientTrackRecord & transientTrackRcd = record.getRecord();
+ transientTrackRcd.get("TransientTrackBuilder", trackBuilder);
+}
float CandidateBoostedDoubleSecondaryVertexComputer::discriminator(const TagInfoHelper & tagInfo) const
{
// get TagInfos
const reco::CandIPTagInfo & ipTagInfo = tagInfo.get(0);
const reco::CandSecondaryVertexTagInfo & svTagInfo = tagInfo.get(1);
- const reco::CandSoftLeptonTagInfo & muonTagInfo = tagInfo.get(2);
- const reco::CandSoftLeptonTagInfo & elecTagInfo = tagInfo.get(3);
// default discriminator value
float value = -10.;
// default variable values
- float z_ratio = -1. , tau_dot = -1., SV_pt_0 = -1., SV_mass_0 = -1., SV_EnergyRatio_0 = -1., SV_EnergyRatio_1 = -1., tau21 = -1.;
- int contSV = 0, vertexNTracks = 0;
- int nSL = 0, nSM = 0, nSE = 0;
+ float z_ratio = -3.;
+ float trackSip3dSig_3 = -50., trackSip3dSig_2 = -50., trackSip3dSig_1 = -50., trackSip3dSig_0 = -50.;
+ float tau2_trackSip3dSig_0 = -50., tau1_trackSip3dSig_0 = -50., tau2_trackSip3dSig_1 = -50., tau1_trackSip3dSig_1 = -50.;
+ float trackSip2dSigAboveCharm_0 = -19., trackSip2dSigAboveBottom_0 = -19., trackSip2dSigAboveBottom_1 = -19.;
+ float tau1_trackEtaRel_0 = -1., tau1_trackEtaRel_1 = -1., tau1_trackEtaRel_2 = -1.;
+ float tau2_trackEtaRel_0 = -1., tau2_trackEtaRel_1 = -1., tau2_trackEtaRel_2 = -1.;
+ float tau1_vertexMass = -1., tau1_vertexEnergyRatio = -1., tau1_vertexDeltaR = -1., tau1_flightDistance2dSig = -1.;
+ float tau2_vertexMass = -1., tau2_vertexEnergyRatio = -1., tau2_vertexDeltaR = -1., tau2_flightDistance2dSig = -1.;
+ float jetNTracks = 0, nSV = 0, tau1_nSecondaryVertices = 0, tau2_nSecondaryVertices = 0;
// get the jet reference
const reco::JetBaseRef jet = svTagInfo.jet();
@@ -54,111 +95,490 @@ float CandidateBoostedDoubleSecondaryVertexComputer::discriminator(const TagInfo
float tau2, tau1;
// calculate N-subjettiness
calcNsubjettiness(jet, tau1, tau2, currentAxes);
- if (tau1 != 0.) tau21 = tau2/tau1;
- const std::vector & selectedTracks( ipTagInfo.selectedTracks() );
- size_t trackSize = selectedTracks.size();
const reco::VertexRef & vertexRef = ipTagInfo.primaryVertex();
+ GlobalPoint pv(0.,0.,0.);
+ if ( ipTagInfo.primaryVertex().isNonnull() )
+ pv = GlobalPoint(vertexRef->x(),vertexRef->y(),vertexRef->z());
+
+ const std::vector & selectedTracks = ipTagInfo.selectedTracks();
+ const std::vector & ipData = ipTagInfo.impactParameterData();
+ size_t trackSize = selectedTracks.size();
+
+
reco::TrackKinematics allKinematics;
+ std::vector IP3Ds, IP3Ds_1, IP3Ds_2;
+ int contTrk=0;
+ // loop over tracks associated to the jet
for (size_t itt=0; itt < trackSize; ++itt)
{
- const reco::Track & ptrack = *(reco::btag::toTrack(selectedTracks[itt]));
const reco::CandidatePtr ptrackRef = selectedTracks[itt];
+ const reco::Track * ptrackPtr = reco::btag::toTrack(ptrackRef);
+ const reco::Track & ptrack = *ptrackPtr;
float track_PVweight = 0.;
setTracksPV(ptrackRef, vertexRef, track_PVweight);
- if (track_PVweight>0.) { allKinematics.add(ptrack, track_PVweight); }
+ if (track_PVweight>0.5) allKinematics.add(ptrack, track_PVweight);
+
+ const reco::btag::TrackIPData &data = ipData[itt];
+ if (trackSelector(ptrack, data, *jet, pv)) jetNTracks += 1.;
+
+ // check if the track is from V0
+ bool isfromV0 = false;
+ const reco::Track * trackPairV0Test[2];
+
+ trackPairV0Test[0] = ptrackPtr;
+
+ for (size_t jtt=0; jtt < trackSize; ++jtt)
+ {
+ if (itt == jtt) continue;
+
+ const reco::CandidatePtr pairTrackRef = selectedTracks[jtt];
+ const reco::Track * pairTrackPtr = reco::btag::toTrack(pairTrackRef);
+
+ trackPairV0Test[1] = pairTrackPtr;
+
+ if (!trackPairV0Filter(trackPairV0Test, 2))
+ {
+ isfromV0 = true;
+ break;
+ }
+ }
+
+ reco::TransientTrack transientTrack = trackBuilder->build(ptrack);
+ GlobalVector direction(jet->px(), jet->py(), jet->pz());
+
+ if (currentAxes.size() > 1)
+ {
+ if (reco::deltaR2(ptrack,currentAxes[1]) < reco::deltaR2(ptrack,currentAxes[0]))
+ direction = GlobalVector(currentAxes[1].px(), currentAxes[1].py(), currentAxes[1].pz());
+ else
+ direction = GlobalVector(currentAxes[0].px(), currentAxes[0].py(), currentAxes[0].pz());
+ }
+ else if (currentAxes.size() > 0)
+ direction = GlobalVector(currentAxes[0].px(), currentAxes[0].py(), currentAxes[0].pz());
+
+ // decay distance and track distance wrt to the closest tau axis
+ float decayLengthTau=-1;
+ float distTauAxis=-1;
+
+ TrajectoryStateOnSurface closest = IPTools::closestApproachToJet(transientTrack.impactPointState(), *vertexRef , direction, transientTrack.field());
+ if (closest.isValid())
+ decayLengthTau = (closest.globalPosition() - RecoVertex::convertPos(vertexRef->position())).mag();
+
+ distTauAxis = std::abs(IPTools::jetTrackDistance(transientTrack, direction, *vertexRef ).second.value());
+
+ float IP3Dsig = ipTagInfo.impactParameterData()[itt].ip3d.significance();
+
+ if( !isfromV0 && decayLengthTau 1)
+ {
+ if (reco::deltaR2(ptrack,currentAxes[0]) < reco::deltaR2(ptrack,currentAxes[1]))
+ IP3Ds_1.push_back( IP3Dsig<-50. ? -50. : IP3Dsig );
+ else
+ IP3Ds_2.push_back( IP3Dsig<-50. ? -50. : IP3Dsig );
+ }
+ else
+ IP3Ds_1.push_back( IP3Dsig<-50. ? -50. : IP3Dsig );
+ }
+ }
+
+ std::vector indices = ipTagInfo.sortedIndexes(reco::btag::IP2DSig);
+ bool charmThreshSet = false;
+
+ reco::TrackKinematics kin;
+ for (size_t i=0; i 1.5 // charm cut
+ && !charmThreshSet )
+ {
+ trackSip2dSigAboveCharm_0 = data.ip2d.significance();
+
+ charmThreshSet = true;
+ }
+
+ if ( kin.vectorSum().M() > 5.2 ) // bottom cut
+ {
+ trackSip2dSigAboveBottom_0 = data.ip2d.significance();
+ if ( (i+1)() );
+ std::sort( IP3Ds_1.begin(),IP3Ds_1.end(),std::greater() );
+ std::sort( IP3Ds_2.begin(),IP3Ds_2.end(),std::greater() );
+ int num_1 = IP3Ds_1.size();
+ int num_2 = IP3Ds_2.size();
+
+ switch(contTrk){
+ case 0:
+
+ trackSip3dSig_0 = dummyTrack;
+ trackSip3dSig_1 = dummyTrack;
+ trackSip3dSig_2 = dummyTrack;
+ trackSip3dSig_3 = dummyTrack;
+
+ break;
+
+ case 1:
+
+ trackSip3dSig_0 = IP3Ds.at(0);
+ trackSip3dSig_1 = dummyTrack;
+ trackSip3dSig_2 = dummyTrack;
+ trackSip3dSig_3 = dummyTrack;
+
+ break;
+
+ case 2:
+
+ trackSip3dSig_0 = IP3Ds.at(0);
+ trackSip3dSig_1 = IP3Ds.at(1);
+ trackSip3dSig_2 = dummyTrack;
+ trackSip3dSig_3 = dummyTrack;
+
+ break;
+
+ case 3:
+
+ trackSip3dSig_0 = IP3Ds.at(0);
+ trackSip3dSig_1 = IP3Ds.at(1);
+ trackSip3dSig_2 = IP3Ds.at(2);
+ trackSip3dSig_3 = dummyTrack;
+
+ break;
+
+ default:
+
+ trackSip3dSig_0 = IP3Ds.at(0);
+ trackSip3dSig_1 = IP3Ds.at(1);
+ trackSip3dSig_2 = IP3Ds.at(2);
+ trackSip3dSig_3 = IP3Ds.at(3);
+
+ }
+
+ switch(num_1){
+ case 0:
+
+ tau1_trackSip3dSig_0 = dummyTrack;
+ tau1_trackSip3dSig_1 = dummyTrack;
+
+ break;
+
+ case 1:
+
+ tau1_trackSip3dSig_0 = IP3Ds_1.at(0);
+ tau1_trackSip3dSig_1 = dummyTrack;
+
+ break;
+
+ case 2:
+
+ tau1_trackSip3dSig_0 = IP3Ds_1.at(0);
+ tau1_trackSip3dSig_1 = IP3Ds_1.at(1);
+
+ break;
+
+ case 3:
+
+ tau1_trackSip3dSig_0 = IP3Ds_1.at(0);
+ tau1_trackSip3dSig_1 = IP3Ds_1.at(1);
+
+ break;
+
+ default:
+
+ tau1_trackSip3dSig_0 = IP3Ds_1.at(0);
+ tau1_trackSip3dSig_1 = IP3Ds_1.at(1);
+
+ }
+
+ switch(num_2){
+ case 0:
+
+ tau2_trackSip3dSig_0 = dummyTrack;
+ tau2_trackSip3dSig_1 = dummyTrack;
+
+ break;
+
+ case 1:
+ tau2_trackSip3dSig_0 = IP3Ds_2.at(0);
+ tau2_trackSip3dSig_1 = dummyTrack;
+
+ break;
+
+ case 2:
+ tau2_trackSip3dSig_0 = IP3Ds_2.at(0);
+ tau2_trackSip3dSig_1 = IP3Ds_2.at(1);
+
+ break;
+
+ case 3:
+ tau2_trackSip3dSig_0 = IP3Ds_2.at(0);
+ tau2_trackSip3dSig_1 = IP3Ds_2.at(1);
+ break;
+
+ default:
+
+ tau2_trackSip3dSig_0 = IP3Ds_2.at(0);
+ tau2_trackSip3dSig_1 = IP3Ds_2.at(1);
+
}
math::XYZVector jetDir = jet->momentum().Unit();
+ reco::TrackKinematics tau1Kinematics;
+ reco::TrackKinematics tau2Kinematics;
+ std::vector tau1_trackEtaRels, tau2_trackEtaRels;
- std::map VTXmass;
+ std::map VTXmap;
for (size_t vtx = 0; vtx < svTagInfo.nVertices(); ++vtx)
{
- vertexNTracks += (svTagInfo.secondaryVertex(vtx)).numberOfSourceCandidatePtrs();
- GlobalVector flightDir = svTagInfo.flightDirection(vtx);
- if (reco::deltaR2(flightDir, jetDir)<(maxSVDeltaRToJet_*maxSVDeltaRToJet_))
+ reco::TrackKinematics vertexKinematic;
+
+ // get the vertex kinematics
+ const reco::VertexCompositePtrCandidate vertex = svTagInfo.secondaryVertex(vtx);
+ vertexKinematics(vertex, vertexKinematic);
+
+ if (currentAxes.size() > 1)
{
- ++contSV;
- VTXmass[svTagInfo.secondaryVertex(vtx).p4().mass()]=vtx;
+ if (reco::deltaR2(svTagInfo.flightDirection(vtx),currentAxes[1]) < reco::deltaR2(svTagInfo.flightDirection(vtx),currentAxes[0]))
+ {
+ tau2Kinematics = tau2Kinematics + vertexKinematic;
+ if( tau2_flightDistance2dSig < 0 )
+ {
+ tau2_flightDistance2dSig = svTagInfo.flightDistance(vtx,true).significance();
+ tau2_vertexDeltaR = reco::deltaR(svTagInfo.flightDirection(vtx),currentAxes[1]);
+ }
+ etaRelToTauAxis(vertex, currentAxes[1], tau2_trackEtaRels);
+ tau2_nSecondaryVertices += 1.;
+ }
+ else
+ {
+ tau1Kinematics = tau1Kinematics + vertexKinematic;
+ if( tau1_flightDistance2dSig < 0 )
+ {
+ tau1_flightDistance2dSig =svTagInfo.flightDistance(vtx,true).significance();
+ tau1_vertexDeltaR = reco::deltaR(svTagInfo.flightDirection(vtx),currentAxes[0]);
+ }
+ etaRelToTauAxis(vertex, currentAxes[0], tau1_trackEtaRels);
+ tau1_nSecondaryVertices += 1.;
+ }
+
+ }
+ else if (currentAxes.size() > 0)
+ {
+ tau1Kinematics = tau1Kinematics + vertexKinematic;
+ if( tau1_flightDistance2dSig < 0 )
+ {
+ tau1_flightDistance2dSig =svTagInfo.flightDistance(vtx,true).significance();
+ tau1_vertexDeltaR = reco::deltaR(svTagInfo.flightDirection(vtx),currentAxes[0]);
+ }
+ etaRelToTauAxis(vertex, currentAxes[1], tau1_trackEtaRels);
+ tau1_nSecondaryVertices += 1.;
}
+
+ GlobalVector flightDir = svTagInfo.flightDirection(vtx);
+ if (reco::deltaR2(flightDir, jetDir)<(maxSVDeltaRToJet_*maxSVDeltaRToJet_))
+ VTXmap[svTagInfo.flightDistance(vtx).error()]=vtx;
+ }
+ nSV = VTXmap.size();
+
+
+ math::XYZTLorentzVector allSum = allKinematics.weightedVectorSum() ;
+ if ( tau1_nSecondaryVertices > 0. )
+ {
+ math::XYZTLorentzVector tau1_vertexSum = tau1Kinematics.weightedVectorSum();
+ tau1_vertexEnergyRatio = tau1_vertexSum.E() / allSum.E();
+ if ( tau1_vertexEnergyRatio > 50. ) tau1_vertexEnergyRatio = 50.;
+
+ tau1_vertexMass = tau1_vertexSum.M();
+ }
+
+ if ( tau2_nSecondaryVertices > 0. )
+ {
+ math::XYZTLorentzVector tau2_vertexSum = tau2Kinematics.weightedVectorSum();
+ tau2_vertexEnergyRatio = tau2_vertexSum.E() / allSum.E();
+ if ( tau2_vertexEnergyRatio > 50. ) tau2_vertexEnergyRatio = 50.;
+
+ tau2_vertexMass= tau2_vertexSum.M();
+ }
+
+
+ float dummyEtaRel = -1.;
+
+ std::sort( tau1_trackEtaRels.begin(),tau1_trackEtaRels.end() );
+ std::sort( tau2_trackEtaRels.begin(),tau2_trackEtaRels.end() );
+
+ switch(tau2_trackEtaRels.size()){
+ case 0:
+
+ tau2_trackEtaRel_0 = dummyEtaRel;
+ tau2_trackEtaRel_1 = dummyEtaRel;
+ tau2_trackEtaRel_2 = dummyEtaRel;
+
+ break;
+
+ case 1:
+
+ tau2_trackEtaRel_0 = tau2_trackEtaRels.at(0);
+ tau2_trackEtaRel_1 = dummyEtaRel;
+ tau2_trackEtaRel_2 = dummyEtaRel;
+
+ break;
+
+ case 2:
+
+ tau2_trackEtaRel_0 = tau2_trackEtaRels.at(0);
+ tau2_trackEtaRel_1 = tau2_trackEtaRels.at(1);
+ tau2_trackEtaRel_2 = dummyEtaRel;
+
+ break;
+
+ default:
+
+ tau2_trackEtaRel_0 = tau2_trackEtaRels.at(0);
+ tau2_trackEtaRel_1 = tau2_trackEtaRels.at(1);
+ tau2_trackEtaRel_2 = tau2_trackEtaRels.at(2);
+
+ }
+
+ switch(tau1_trackEtaRels.size()){
+ case 0:
+
+ tau1_trackEtaRel_0 = dummyEtaRel;
+ tau1_trackEtaRel_1 = dummyEtaRel;
+ tau1_trackEtaRel_2 = dummyEtaRel;
+
+ break;
+
+ case 1:
+
+ tau1_trackEtaRel_0 = tau1_trackEtaRels.at(0);
+ tau1_trackEtaRel_1 = dummyEtaRel;
+ tau1_trackEtaRel_2 = dummyEtaRel;
+
+ break;
+
+ case 2:
+
+ tau1_trackEtaRel_0 = tau1_trackEtaRels.at(0);
+ tau1_trackEtaRel_1 = tau1_trackEtaRels.at(1);
+ tau1_trackEtaRel_2 = dummyEtaRel;
+
+ break;
+
+ default:
+
+ tau1_trackEtaRel_0 = tau1_trackEtaRels.at(0);
+ tau1_trackEtaRel_1 = tau1_trackEtaRels.at(1);
+ tau1_trackEtaRel_2 = tau1_trackEtaRels.at(2);
+
}
int cont=0;
GlobalVector flightDir_0, flightDir_1;
reco::Candidate::LorentzVector SV_p4_0 , SV_p4_1;
- for ( std::map::reverse_iterator iVtx=VTXmass.rbegin(); iVtx!=VTXmass.rend(); ++iVtx)
+
+ for ( std::map::iterator iVtx=VTXmap.begin(); iVtx!=VTXmap.end(); ++iVtx)
{
++cont;
const reco::VertexCompositePtrCandidate &vertex = svTagInfo.secondaryVertex(iVtx->second);
- reco::TrackKinematics vtxKinematics;
- vertexKinematics(vertex, vtxKinematics);
- math::XYZTLorentzVector allSum = allKinematics.weightedVectorSum();
- math::XYZTLorentzVector vertexSum = vtxKinematics.weightedVectorSum();
if (cont==1)
{
- SV_mass_0 = vertex.p4().mass() ;
- SV_EnergyRatio_0 = vertexSum.E() / allSum.E();
- SV_pt_0 = vertex.p4().pt();
flightDir_0 = svTagInfo.flightDirection(iVtx->second);
SV_p4_0 = vertex.p4();
- if (reco::deltaR2(flightDir_0,currentAxes[1])second);
SV_p4_1 = vertex.p4();
- z_ratio = reco::deltaR(flightDir_0,flightDir_1)*SV_pt_0/(SV_p4_0+SV_p4_1).mass();
+
+ z_ratio = reco::deltaR(flightDir_0,flightDir_1)*SV_p4_1.pt()/(SV_p4_1+SV_p4_0).mass();
+
break;
}
}
- nSM = muonTagInfo.leptons();
- nSE = elecTagInfo.leptons();
- nSL = nSM + nSE;
+ // when only one tau axis has SVs assigned, they are all assigned to the 1st tau axis
+ // in the special case below need to swap values
+ if( (tau1_vertexMass<0 && tau2_vertexMass>0) )
+ {
+ float temp = tau1_trackEtaRel_0;
+ tau1_trackEtaRel_0= tau2_trackEtaRel_0;
+ tau2_trackEtaRel_0= temp;
- float PFLepton_ptrel = -1., PFLepton_IP2D = -1.;
+ temp = tau1_trackEtaRel_1;
+ tau1_trackEtaRel_1= tau2_trackEtaRel_1;
+ tau2_trackEtaRel_1= temp;
- // PFMuon information
- for (size_t leptIdx = 0; leptIdx < muonTagInfo.leptons() ; ++leptIdx)
- {
- float PFMuon_ptrel = (muonTagInfo.properties(leptIdx).ptRel);
- if (PFMuon_ptrel > PFLepton_ptrel )
- {
- PFLepton_ptrel = PFMuon_ptrel;
- PFLepton_IP2D = (muonTagInfo.properties(leptIdx).sip2d);
- }
- }
+ temp = tau1_trackEtaRel_2;
+ tau1_trackEtaRel_2= tau2_trackEtaRel_2;
+ tau2_trackEtaRel_2= temp;
- // PFElectron information
- for (size_t leptIdx = 0; leptIdx < elecTagInfo.leptons() ; ++leptIdx)
- {
- float PFElectron_ptrel = (elecTagInfo.properties(leptIdx).ptRel);
- if (PFElectron_ptrel > PFLepton_ptrel )
- {
- PFLepton_ptrel = PFElectron_ptrel;
- PFLepton_IP2D = (elecTagInfo.properties(leptIdx).sip2d);
- }
+ temp = tau1_flightDistance2dSig;
+ tau1_flightDistance2dSig= tau2_flightDistance2dSig;
+ tau2_flightDistance2dSig= temp;
+
+ temp = tau1_vertexDeltaR;
+ tau1_vertexDeltaR= tau2_vertexDeltaR;
+ tau2_vertexDeltaR= temp;
+
+ temp = tau1_vertexEnergyRatio;
+ tau1_vertexEnergyRatio= tau2_vertexEnergyRatio;
+ tau2_vertexEnergyRatio= temp;
+
+ temp = tau1_vertexMass;
+ tau1_vertexMass= tau2_vertexMass;
+ tau2_vertexMass= temp;
}
+
std::map inputs;
- inputs["z_ratio1"] = z_ratio;
- inputs["tau_dot"] = tau_dot;
- inputs["SV_mass_0"] = SV_mass_0;
- inputs["SV_vtx_EnergyRatio_0"] = SV_EnergyRatio_0;
- inputs["SV_vtx_EnergyRatio_1"] = SV_EnergyRatio_1;
- inputs["jetNTracksEtaRel"] = vertexNTracks;
- inputs["PFLepton_ptrel"] = PFLepton_ptrel;
- inputs["PFLepton_IP2D"] = PFLepton_IP2D;
- inputs["nSL"] = nSL;
- inputs["tau2/tau1"] = tau21;
-
+ inputs["z_ratio"] = z_ratio;
+ inputs["trackSipdSig_3"] = trackSip3dSig_3;
+ inputs["trackSipdSig_2"] = trackSip3dSig_2;
+ inputs["trackSipdSig_1"] = trackSip3dSig_1;
+ inputs["trackSipdSig_0"] = trackSip3dSig_0;
+ inputs["trackSipdSig_1_0"] = tau2_trackSip3dSig_0;
+ inputs["trackSipdSig_0_0"] = tau1_trackSip3dSig_0;
+ inputs["trackSipdSig_1_1"] = tau2_trackSip3dSig_1;
+ inputs["trackSipdSig_0_1"] = tau1_trackSip3dSig_1;
+ inputs["trackSip2dSigAboveCharm_0"] = trackSip2dSigAboveCharm_0;
+ inputs["trackSip2dSigAboveBottom_0"] = trackSip2dSigAboveBottom_0;
+ inputs["trackSip2dSigAboveBottom_1"] = trackSip2dSigAboveBottom_1;
+ inputs["tau1_trackEtaRel_0"] = tau2_trackEtaRel_0;
+ inputs["tau1_trackEtaRel_1"] = tau2_trackEtaRel_1;
+ inputs["tau1_trackEtaRel_2"] = tau2_trackEtaRel_2;
+ inputs["tau0_trackEtaRel_0"] = tau1_trackEtaRel_0;
+ inputs["tau0_trackEtaRel_1"] = tau1_trackEtaRel_1;
+ inputs["tau0_trackEtaRel_2"] = tau1_trackEtaRel_2;
+ inputs["tau_vertexMass_0"] = tau1_vertexMass;
+ inputs["tau_vertexEnergyRatio_0"] = tau1_vertexEnergyRatio;
+ inputs["tau_vertexDeltaR_0"] = tau1_vertexDeltaR;
+ inputs["tau_flightDistance2dSig_0"] = tau1_flightDistance2dSig;
+ inputs["tau_vertexMass_1"] = tau2_vertexMass;
+ inputs["tau_vertexEnergyRatio_1"] = tau2_vertexEnergyRatio;
+ inputs["tau_flightDistance2dSig_1"] = tau2_flightDistance2dSig;
+ inputs["jetNTracks"] = jetNTracks;
+ inputs["nSV"] = nSV;
+
// evaluate the MVA
value = mvaID->evaluate(inputs);
@@ -241,3 +661,14 @@ void CandidateBoostedDoubleSecondaryVertexComputer::vertexKinematics(const reco:
vtxKinematics.add(mytrack, 1.0);
}
}
+
+
+void CandidateBoostedDoubleSecondaryVertexComputer::etaRelToTauAxis(const reco::VertexCompositePtrCandidate & vertex,
+ fastjet::PseudoJet & tauAxis, std::vector & tau_trackEtaRel) const
+{
+ math::XYZVector direction(tauAxis.px(), tauAxis.py(), tauAxis.pz());
+ const std::vector & tracks = vertex.daughterPtrVector();
+
+ for(std::vector::const_iterator track = tracks.begin(); track != tracks.end(); ++track)
+ tau_trackEtaRel.push_back(std::abs(reco::btau::etaRel(direction.Unit(), (*track)->momentum())));
+}
diff --git a/RecoBTag/SoftLepton/python/softLepton_cff.py b/RecoBTag/SoftLepton/python/softLepton_cff.py
index a680466ad343d..77859d666477f 100644
--- a/RecoBTag/SoftLepton/python/softLepton_cff.py
+++ b/RecoBTag/SoftLepton/python/softLepton_cff.py
@@ -4,11 +4,7 @@
from RecoBTau.JetTagComputer.jetTagRecord_cfi import *
from RecoBTag.SoftLepton.softMuonTagInfos_cfi import *
from RecoBTag.SoftLepton.softPFElectronTagInfos_cfi import *
-from RecoBTag.SoftLepton.softPFElectronTagInfosAK8_cfi import *
-from RecoBTag.SoftLepton.softPFElectronTagInfosCA15_cfi import *
from RecoBTag.SoftLepton.softPFMuonTagInfos_cfi import *
-from RecoBTag.SoftLepton.softPFMuonTagInfosAK8_cfi import *
-from RecoBTag.SoftLepton.softPFMuonTagInfosCA15_cfi import *
from RecoBTag.SoftLepton.SoftLeptonByMVA_cff import *
from RecoBTag.SoftLepton.SoftLeptonByPt_cff import *
from RecoBTag.SoftLepton.SoftLeptonByIP3d_cff import *
diff --git a/RecoBTag/SoftLepton/python/softPFElectronTagInfosAK8_cfi.py b/RecoBTag/SoftLepton/python/softPFElectronTagInfosAK8_cfi.py
deleted file mode 100644
index 6e79c59064a19..0000000000000
--- a/RecoBTag/SoftLepton/python/softPFElectronTagInfosAK8_cfi.py
+++ /dev/null
@@ -1,8 +0,0 @@
-import FWCore.ParameterSet.Config as cms
-
-from RecoBTag.SoftLepton.softPFElectronTagInfos_cfi import *
-
-softPFElectronsTagInfosAK8 = softPFElectronsTagInfos.clone(
- jets = cms.InputTag("ak8PFJetsCHS"),
- DeltaRElectronJet=cms.double(0.8)
-)
diff --git a/RecoBTag/SoftLepton/python/softPFElectronTagInfosCA15_cfi.py b/RecoBTag/SoftLepton/python/softPFElectronTagInfosCA15_cfi.py
deleted file mode 100644
index 9ecd224acec31..0000000000000
--- a/RecoBTag/SoftLepton/python/softPFElectronTagInfosCA15_cfi.py
+++ /dev/null
@@ -1,8 +0,0 @@
-import FWCore.ParameterSet.Config as cms
-
-from RecoBTag.SoftLepton.softPFElectronTagInfos_cfi import *
-
-softPFElectronsTagInfosCA15 = softPFElectronsTagInfos.clone(
- jets = cms.InputTag("ca15PFJetsCHS"),
- DeltaRElectronJet=cms.double(1.5)
-)
diff --git a/RecoBTag/SoftLepton/python/softPFMuonTagInfosAK8_cfi.py b/RecoBTag/SoftLepton/python/softPFMuonTagInfosAK8_cfi.py
deleted file mode 100644
index 2d8f7d156790a..0000000000000
--- a/RecoBTag/SoftLepton/python/softPFMuonTagInfosAK8_cfi.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import FWCore.ParameterSet.Config as cms
-
-from RecoBTag.SoftLepton.softPFMuonTagInfos_cfi import *
-
-softPFMuonsTagInfosAK8 = softPFMuonsTagInfos.clone(
- jets = cms.InputTag("ak8PFJetsCHS")
-)
diff --git a/RecoBTag/SoftLepton/python/softPFMuonTagInfosCA15_cfi.py b/RecoBTag/SoftLepton/python/softPFMuonTagInfosCA15_cfi.py
deleted file mode 100644
index 82c434f8ba2b2..0000000000000
--- a/RecoBTag/SoftLepton/python/softPFMuonTagInfosCA15_cfi.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import FWCore.ParameterSet.Config as cms
-
-from RecoBTag.SoftLepton.softPFMuonTagInfos_cfi import *
-
-softPFMuonsTagInfosCA15 = softPFMuonsTagInfos.clone(
- jets = cms.InputTag("ca15PFJetsCHS")
-)
diff --git a/RecoBTau/JetTagComputer/BuildFile.xml b/RecoBTau/JetTagComputer/BuildFile.xml
index ec376d66938d2..ebb3b963bfa51 100644
--- a/RecoBTau/JetTagComputer/BuildFile.xml
+++ b/RecoBTau/JetTagComputer/BuildFile.xml
@@ -8,6 +8,7 @@
+
diff --git a/RecoBTau/JetTagComputer/interface/JetTagComputerRecord.h b/RecoBTau/JetTagComputer/interface/JetTagComputerRecord.h
index 9472ceba48444..eeb2e029f50f9 100644
--- a/RecoBTau/JetTagComputer/interface/JetTagComputerRecord.h
+++ b/RecoBTau/JetTagComputer/interface/JetTagComputerRecord.h
@@ -6,10 +6,11 @@
class BTauGenericMVAJetTagComputerRcd;
class GBRWrapperRcd;
+class TransientTrackRecord;
class JetTagComputerRecord :
public edm::eventsetup::DependentRecordImplementation<
JetTagComputerRecord,
- boost::mpl::vector > {};
+ boost::mpl::vector > {};
#endif