Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-16 23:01:11

0001 #include "RecoBTag/FeatureTools/interface/LostTracksConverter.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                                  LostTracksFeatures& lt_features,
0013                                  const bool flip,
0014                                  const float distminpfcandsv) {
0015     commonCandidateToFeatures(
0016         c_pf, jet, track_info, isWeightedJet, drminpfcandsv, jetR, puppiw, lt_features, flip, distminpfcandsv);
0017 
0018     lt_features.puppiw = puppiw;
0019     lt_features.charge = c_pf->charge();
0020 
0021     lt_features.lostInnerHits = catch_infs(c_pf->lostInnerHits(), 2);
0022     lt_features.numberOfPixelHits = catch_infs(c_pf->numberOfPixelHits(), -1);
0023     lt_features.numberOfStripHits = catch_infs(c_pf->stripLayersWithMeasurement(), -1);
0024 
0025     // if PackedCandidate does not have TrackDetails this gives an Exception
0026     // because unpackCovariance might be called for pseudoTrack/bestTrack
0027     if (c_pf->hasTrackDetails()) {
0028       const auto& pseudo_track = c_pf->pseudoTrack();
0029       lt_features.chi2 = catch_infs_and_bound(pseudo_track.normalizedChi2(), 300, -1, 300);
0030       // this returns the quality enum not a mask.
0031       lt_features.quality = pseudo_track.qualityMask();
0032     } else {
0033       // default negative chi2 and loose track if notTrackDetails
0034       lt_features.chi2 = catch_infs_and_bound(-1, 300, -1, 300);
0035       lt_features.quality = (1 << reco::TrackBase::loose);
0036     }
0037   }
0038   void recoCandidateToFeatures(const reco::PFCandidate* c_pf,
0039                                const reco::Jet& jet,
0040                                const TrackInfoBuilder& track_info,
0041                                const bool isWeightedJet,
0042                                const float drminpfcandsv,
0043                                const float jetR,
0044                                const float puppiw,
0045                                const int pv_ass_quality,
0046                                const reco::VertexRef& pv,
0047                                LostTracksFeatures& lt_features,
0048                                const bool flip,
0049                                const float distminpfcandsv) {
0050     commonCandidateToFeatures(
0051         c_pf, jet, track_info, isWeightedJet, drminpfcandsv, jetR, puppiw, lt_features, flip, distminpfcandsv);
0052 
0053     lt_features.puppiw = puppiw;
0054 
0055     const auto& pseudo_track = (c_pf->bestTrack()) ? *c_pf->bestTrack() : reco::Track();
0056     lt_features.chi2 = catch_infs_and_bound(std::floor(pseudo_track.normalizedChi2()), 300, -1, 300);
0057     lt_features.quality = quality_from_pfcand(*c_pf);
0058   }
0059 
0060 }  // namespace btagbtvdeep