8 unsigned int nsrc = src.size();
9 std::vector<bool>
good(nsrc,
true);
10 for (
unsigned int i = 0;
i < nsrc; ++
i) {
17 for (
unsigned int j = i + 1;
j < nsrc; ++
j) {
24 if (nSegments2 == 0 || nSegments1 == 0)
37 for (
unsigned int i = 0;
i < nsrc; ++
i) {
48 (mu1.reco::Muon::innerTrack().isNonnull() ? mu1.reco::Muon::innerTrack() == mu2.reco::Muon::innerTrack()
49 : mu1.reco::Muon::outerTrack() == mu2.reco::Muon::outerTrack());
69 return (nm1 != nm2 ? nm1 > nm2 : mu1.
pt() > mu2.
pt());
std::vector< bool > clean(const std::vector< pat::Muon > &muons) const
Return a vector of boolean marking the muons to be considered clean.
double sharedFraction_
Fraction of shared segments.
double pt() const final
transverse momentum
bool isBetterMuon(const pat::Muon &mu1, bool mu1PF, const pat::Muon &mu2, bool mu2PF) const
StringCutObjectSelector< pat::Muon > passthrough_
Always-accept cut.
bool isSameMuon(const pat::Muon &mu1, const pat::Muon &mu2) const
Methods.
const edm::Ptr< reco::Candidate > & originalObjectRef() const
reference to original object. Returns a null reference if not available
bool isNull() const
Checks for null.
int sharedSegments(const reco::Muon &muon1, const reco::Muon &muon2, unsigned int segmentArbitrationMask=reco::MuonSegmentMatch::BestInChamberByDR)
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
reco::TrackRef track() const override
reference to Track reconstructed in the tracker only (reimplemented from reco::Muon) ...
auto const good
min quality of good
StringCutObjectSelector< pat::Muon > preselection_
Preselection cut.
int numberOfMatches(ArbitrationType type=SegmentAndTrackArbitration) const
get number of chambers with matched segments
Analysis-level muon class.
bool isGlobalMuon() const override
~CMGMuonCleanerBySegmentsAlgo()
int charge() const final
electric charge