File indexing completed on 2024-04-06 12:31:06
0001
0002 #include "SimTracker/TrackHistory/interface/JetVetoedTracksAssociatorDRVertex.h"
0003
0004 JetVetoedTracksAssociationDRVertex::JetVetoedTracksAssociationDRVertex(double dr) : mDeltaR2Threshold(dr * dr) {}
0005
0006 void JetVetoedTracksAssociationDRVertex::produce(reco::JetTracksAssociation::Container *fAssociation,
0007 const std::vector<edm::RefToBase<reco::Jet>> &fJets,
0008 const std::vector<reco::TrackRef> &fTracks,
0009 TrackClassifier &classifier) const {
0010
0011 std::vector<math::RhoEtaPhiVector> trackP3s;
0012 trackP3s.reserve(fTracks.size());
0013 for (unsigned i = 0; i < fTracks.size(); ++i) {
0014 const reco::Track *track = &*(fTracks[i]);
0015 trackP3s.push_back(math::RhoEtaPhiVector(track->p(), track->eta(), track->phi()));
0016 }
0017
0018 for (unsigned j = 0; j < fJets.size(); ++j) {
0019 reco::TrackRefVector assoTracks;
0020 const reco::Jet *jet = &*(fJets[j]);
0021 double jetEta = jet->eta();
0022 double jetPhi = jet->phi();
0023 for (unsigned t = 0; t < fTracks.size(); ++t) {
0024 double dR2 = deltaR2(jetEta, jetPhi, trackP3s[t].eta(), trackP3s[t].phi());
0025 classifier.evaluate(reco::TrackBaseRef(fTracks[t]));
0026 if (dR2 < mDeltaR2Threshold &&
0027 (classifier.is(TrackClassifier::BWeakDecay) || classifier.is(TrackClassifier::CWeakDecay) ||
0028 classifier.is(TrackClassifier::PrimaryVertex)))
0029 assoTracks.push_back(fTracks[t]);
0030 }
0031 reco::JetTracksAssociation::setValue(fAssociation, fJets[j], assoTracks);
0032 }
0033 }