00001 #ifndef Validation_RecoMuon_RecoMuonValidator_H 00002 #define Validation_RecoMuon_RecoMuonValidator_H 00003 00004 #include "FWCore/Framework/interface/Frameworkfwd.h" 00005 #include "FWCore/Framework/interface/EDAnalyzer.h" 00006 #include "FWCore/Framework/interface/ESHandle.h" 00007 #include "FWCore/Framework/interface/Event.h" 00008 00009 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00010 #include "FWCore/Utilities/interface/InputTag.h" 00011 00012 #include "CommonTools/RecoAlgos/interface/TrackingParticleSelector.h" 00013 #include "DataFormats/TrackReco/interface/Track.h" 00014 00015 #include "SimMuon/MCTruth/interface/MuonAssociatorByHits.h" 00016 00017 // for selection cut 00018 #include "CommonTools/Utils/interface/StringCutObjectSelector.h" 00019 00020 class DQMStore; 00021 class MonitorElement; 00022 class MuonServiceProxy; 00023 class TrackAssociatorBase; 00024 00025 class RecoMuonValidator : public edm::EDAnalyzer 00026 { 00027 public: 00028 RecoMuonValidator(const edm::ParameterSet& pset); 00029 ~RecoMuonValidator(); 00030 00031 virtual void beginRun(const edm::Run&, const edm::EventSetup& eventSetup); 00032 virtual void endRun(); 00033 virtual void analyze(const edm::Event& event, const edm::EventSetup& eventSetup); 00034 virtual int countMuonHits(const reco::Track& track) const; 00035 virtual int countTrackerHits(const reco::Track& track) const; 00036 00037 protected: 00038 unsigned int verbose_; 00039 00040 edm::InputTag simLabel_; 00041 edm::InputTag muonLabel_; 00042 std::string muonSelection_; 00043 00044 edm::InputTag muAssocLabel_; 00045 const MuonAssociatorByHits * assoByHits; 00046 00047 edm::InputTag beamspotLabel_; 00048 edm::InputTag primvertexLabel_; 00049 00050 std::string outputFileName_; 00051 std::string subDir_; 00052 00053 MuonServiceProxy * theMuonService; 00054 DQMStore * theDQM; 00055 00056 bool doAbsEta_; 00057 bool doAssoc_; 00058 bool usePFMuon_; 00059 00060 TrackingParticleSelector tpSelector_; 00061 00062 // Track to use 00063 MuonAssociatorByHits::MuonTrackType trackType_; 00064 00065 struct MuonME; 00066 MuonME * muonME_; 00067 00068 struct CommonME; 00069 CommonME * commonME_; 00070 00071 private: 00072 StringCutObjectSelector<reco::Muon> selector_; 00073 bool wantTightMuon_; 00074 00075 }; 00076 00077 #endif 00078 /* vim:set ts=2 sts=2 sw=2 expandtab: */