00001 #ifndef RecoParticleFlow_PFProducer_PFMuonAlgo_h 00002 #define RecoParticleFlow_PFProducer_PFMuonAlgo_h 00003 00004 #include "DataFormats/ParticleFlowReco/interface/PFBlockElement.h" 00005 #include "DataFormats/MuonReco/interface/Muon.h" 00006 00007 class PFMuonAlgo { 00008 00009 public: 00010 00012 PFMuonAlgo() {;} 00013 00015 virtual ~PFMuonAlgo() {;} 00016 00018 static bool isMuon( const reco::PFBlockElement& elt ); 00019 00020 static bool isLooseMuon( const reco::PFBlockElement& elt ); 00021 00022 static bool isGlobalTightMuon( const reco::PFBlockElement& elt ); 00023 00024 static bool isGlobalLooseMuon( const reco::PFBlockElement& elt ); 00025 00026 static bool isTrackerTightMuon( const reco::PFBlockElement& elt ); 00027 00028 static bool isTrackerLooseMuon( const reco::PFBlockElement& elt ); 00029 00030 static bool isIsolatedMuon( const reco::PFBlockElement& elt ); 00031 00032 static bool isMuon( const reco::MuonRef& muonRef ); 00033 00034 static bool isLooseMuon( const reco::MuonRef& muonRef ); 00035 00036 static bool isGlobalTightMuon( const reco::MuonRef& muonRef ); 00037 00038 static bool isGlobalLooseMuon( const reco::MuonRef& muonRef ); 00039 00040 static bool isTrackerTightMuon( const reco::MuonRef& muonRef ); 00041 00042 static bool isTrackerLooseMuon( const reco::MuonRef& muonRef ); 00043 00044 static bool isIsolatedMuon( const reco::MuonRef& muonRef ); 00045 00046 static bool isTightMuonPOG(const reco::MuonRef& muonRef); 00047 00048 static void printMuonProperties( const reco::MuonRef& muonRef ); 00049 00050 private: 00051 00052 }; 00053 00054 #endif