Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:24:26

0001 #include "RecoBTag/FeatureTools/interface/deep_helpers.h"
0002 #include "DataFormats/BTauReco/interface/SecondaryVertexFeatures.h"
0003 
0004 #include "DataFormats/JetReco/interface/Jet.h"
0005 #include "DataFormats/Candidate/interface/VertexCompositePtrCandidate.h"
0006 #include "DataFormats/VertexReco/interface/Vertex.h"
0007 
0008 #include "RecoBTag/FeatureTools/interface/SecondaryVertexConverter.h"
0009 
0010 namespace btagbtvdeep {
0011 
0012   void svToFeatures(const reco::VertexCompositePtrCandidate& sv,
0013                     const reco::Vertex& pv,
0014                     const reco::Jet& jet,
0015                     SecondaryVertexFeatures& sv_features,
0016                     const bool flip) {
0017     math::XYZVector jet_dir = jet.momentum().Unit();
0018     sv_features.pt = sv.pt();
0019     sv_features.ptrel = sv.pt() / jet.pt();
0020     sv_features.etarel = catch_infs_and_bound(std::fabs(sv.eta() - jet.eta()) - 0.5, 0, -2, 0);
0021     sv_features.phirel = catch_infs_and_bound(std::fabs(reco::deltaPhi(sv.phi(), jet.phi())) - 0.5, 0, -2, 0);
0022     sv_features.eta = sv.eta();
0023     sv_features.phi = sv.phi();
0024     sv_features.e = sv.energy();
0025     sv_features.px = sv.px();
0026     sv_features.py = sv.py();
0027     sv_features.pz = sv.pz();
0028     sv_features.deltaR = catch_infs_and_bound(std::fabs(reco::deltaR(sv, jet_dir)) - 0.5, 0, -2, 0);
0029     sv_features.mass = sv.mass();
0030     sv_features.ntracks = sv.numberOfDaughters();
0031     sv_features.chi2 = sv.vertexChi2();
0032     sv_features.normchi2 = catch_infs_and_bound(sv_features.chi2 / sv.vertexNdof(), 1000, -1000, 1000);
0033     const auto& dxy_meas = vertexDxy(sv, pv);
0034     sv_features.dxy = dxy_meas.value();
0035     sv_features.dxysig = catch_infs_and_bound(dxy_meas.value() / dxy_meas.error(), 0, -1, 800);
0036     const auto& d3d_meas = vertexD3d(sv, pv);
0037     sv_features.d3d = d3d_meas.value();
0038     sv_features.d3dsig = catch_infs_and_bound(d3d_meas.value() / d3d_meas.error(), 0, -1, 800);
0039     sv_features.costhetasvpv = (flip ? -1.f : 1.f) * vertexDdotP(sv, pv);
0040     sv_features.enratio = sv.energy() / jet.energy();
0041   }
0042 
0043 }  // namespace btagbtvdeep