17 if ( config_.selectionType ==
"none" )
21 else if ( config_.selectionType ==
"globalMuons" )
23 if ( muons[index].isGlobalMuon() )
return GOOD;
26 else if ( config_.selectionType ==
"muonPOG" )
28 return muIdSelection_( index, muons );
30 else if ( config_.selectionType ==
"custom" )
32 return customSelection_( index, muons );
37 <<
"Unknown electron ID selection " << config_.selectionType;
43 MuonSelector::customSelection_(
const unsigned int&
index,
51 if ( muons[index].isGlobalMuon() )
52 muontrack = muons[
index].track();
54 muontrack = muons[
index].combinedMuon();
56 float pt_track = muontrack->pt();
57 float dpt_track = muontrack->error(0)/muontrack->qoverp()*muontrack->pt();
58 float chisq = muontrack->normalizedChi2();
59 int nHitsValid = muontrack->numberOfValidHits();
61 if ( dpt_track >= config_.dPbyPmax * pt_track )
return BAD;
63 if ( chisq > config_.chi2max )
return BAD;
65 if ( nHitsValid < config_.nHitsMin )
return BAD;
74 MuonSelector::muIdSelection_(
const unsigned int&
index,
float caloCompatibility(const reco::Muon &muon)
float segmentCompatibility(const reco::Muon &muon, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
ParticleStatus
Definition of particle status after selection.