Skip to content

Commit

Permalink
Merge pull request #12445 from cms-btv-pog/BoostedDoubleSVTaggerV2_fr…
Browse files Browse the repository at this point in the history
…om-CMSSW_7_6_1

Updated version of the boosted double SV tagger (76X)
  • Loading branch information
davidlange6 committed Dec 3, 2015
2 parents 11b7bb8 + 9fc470c commit 1343e49
Show file tree
Hide file tree
Showing 17 changed files with 552 additions and 139 deletions.
18 changes: 7 additions & 11 deletions PhysicsTools/PatAlgos/python/recoLayer0/bTagging_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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"]
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def applySubstructure( process ) :
jetSource = cms.InputTag('ak8PFJetsCHS'),
algo= 'AK', rParam = 0.8,
jetCorrections = ('AK8PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute']), 'None'),
btagDiscriminators = [x.getModuleLabel() for x in patJetsDefault.discriminatorSources],
btagDiscriminators = ([x.getModuleLabel() for x in patJetsDefault.discriminatorSources] + ['pfBoostedDoubleSecondaryVertexAK8BJetTags']),
genJetCollection = cms.InputTag('slimmedGenJetsAK8')
)
process.patJetsAK8.userData.userFloats.src = [] # start with empty list of user floats
Expand Down
8 changes: 0 additions & 8 deletions PhysicsTools/PatAlgos/python/tools/jetTools.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
1 change: 1 addition & 0 deletions RecoBTag/SecondaryVertex/BuildFile.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<use name="DataFormats/PatCandidates"/>
<use name="RecoVertex/VertexTools"/>
<use name="RecoBTau/JetTagComputer"/>
<use name="TrackingTools/IPTools"/>
<use name="rootmath"/>
<use name="fastjet"/>
<use name="fastjet-contrib"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,17 @@
#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"
#include "DataFormats/VertexReco/interface/Vertex.h"
#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"
Expand All @@ -18,23 +22,47 @@ class CandidateBoostedDoubleSecondaryVertexComputer : public JetTagComputer {
public:
CandidateBoostedDoubleSecondaryVertexComputer(const edm::ParameterSet & parameters);

void initialize(const JetTagComputerRecord &) override;
float discriminator(const TagInfoHelper & tagInfos) const override;

private:
void calcNsubjettiness(const reco::JetBaseRef & jet, float & tau1, float & tau2, std::vector<fastjet::PseudoJet> & currentAxes) const;
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<float> & 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 double maxDistToAxis_;
const double maxDecayLen_;
reco::V0Filter trackPairV0Filter;
reco::TrackSelector trackSelector;

edm::ESHandle<TransientTrackBuilder> trackBuilder;
std::unique_ptr<TMVAEvaluator> mvaID;

// static variables
static constexpr float dummyZ_ratio = -3.0f;
static constexpr float dummyTrackSip3dSig = -50.0f;
static constexpr float dummyTrackSip2dSigAbove = -19.0f;
static constexpr float dummyTrackEtaRel = -1.0f;
static constexpr float dummyVertexMass = -1.0f;
static constexpr float dummyVertexEnergyRatio = -1.0f;
static constexpr float dummyVertexDeltaR = -1.0f;
static constexpr float dummyFlightDistance2dSig = -1.0f;

static constexpr float charmThreshold = 1.5f;
static constexpr float bottomThreshold = 5.2f;
};

#endif // RecoBTag_SecondaryVertex_CandidateBoostedDoubleSecondaryVertexComputer_h
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
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))
)

candidateBoostedDoubleSecondaryVertexAK8Computer.trackSelection.jetDeltaRMax = cms.double(0.8)
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
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))
)

candidateBoostedDoubleSecondaryVertexCA15Computer.trackSelection.jetDeltaRMax = cms.double(1.5)
Original file line number Diff line number Diff line change
Expand Up @@ -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"))
)
Original file line number Diff line number Diff line change
Expand Up @@ -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"))
)
Loading

0 comments on commit 1343e49

Please sign in to comment.