File indexing completed on 2023-05-05 02:48:01
0001 #include "RecoBTag/FeatureTools/interface/ChargedCandidateConverter.h"
0002
0003 namespace btagbtvdeep {
0004
0005 void packedCandidateToFeatures(const pat::PackedCandidate* c_pf,
0006 const pat::Jet& jet,
0007 const TrackInfoBuilder& track_info,
0008 const bool isWeightedJet,
0009 const float drminpfcandsv,
0010 const float jetR,
0011 const float puppiw,
0012 ChargedCandidateFeatures& c_pf_features,
0013 const bool flip,
0014 const float distminpfcandsv) {
0015 commonCandidateToFeatures(
0016 c_pf, jet, track_info, isWeightedJet, drminpfcandsv, jetR, puppiw, c_pf_features, flip, distminpfcandsv);
0017
0018 c_pf_features.vtx_ass = c_pf->pvAssociationQuality();
0019
0020 c_pf_features.puppiw = puppiw;
0021
0022
0023
0024 if (c_pf->hasTrackDetails()) {
0025 const auto& pseudo_track = c_pf->pseudoTrack();
0026 c_pf_features.chi2 = catch_infs_and_bound(pseudo_track.normalizedChi2(), 300, -1, 300);
0027
0028 c_pf_features.quality = pseudo_track.qualityMask();
0029 } else {
0030
0031 c_pf_features.chi2 = catch_infs_and_bound(-1, 300, -1, 300);
0032 c_pf_features.quality = (1 << reco::TrackBase::loose);
0033 }
0034
0035 c_pf_features.dxy = catch_infs(c_pf->dxy());
0036 c_pf_features.dz = catch_infs(c_pf->dz());
0037 c_pf_features.dxysig = c_pf->bestTrack() ? catch_infs(c_pf->dxy() / c_pf->dxyError()) : 0;
0038 c_pf_features.dzsig = c_pf->bestTrack() ? catch_infs(c_pf->dz() / c_pf->dzError()) : 0;
0039 }
0040
0041 void recoCandidateToFeatures(const reco::PFCandidate* c_pf,
0042 const reco::Jet& jet,
0043 const TrackInfoBuilder& track_info,
0044 const bool isWeightedJet,
0045 const float drminpfcandsv,
0046 const float jetR,
0047 const float puppiw,
0048 const int pv_ass_quality,
0049 const reco::VertexRef& pv,
0050 ChargedCandidateFeatures& c_pf_features,
0051 const bool flip,
0052 const float distminpfcandsv) {
0053 commonCandidateToFeatures(
0054 c_pf, jet, track_info, isWeightedJet, drminpfcandsv, jetR, puppiw, c_pf_features, flip, distminpfcandsv);
0055
0056 c_pf_features.vtx_ass = vtx_ass_from_pfcand(*c_pf, pv_ass_quality, pv);
0057 c_pf_features.puppiw = puppiw;
0058
0059 const auto& pseudo_track = (c_pf->bestTrack()) ? *c_pf->bestTrack() : reco::Track();
0060 c_pf_features.chi2 = catch_infs_and_bound(std::floor(pseudo_track.normalizedChi2()), 300, -1, 300);
0061 c_pf_features.quality = quality_from_pfcand(*c_pf);
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072 }
0073
0074 }