00001 // -*- C++ -*- 00002 // 00003 // Package: DQMOffline/Muon 00004 // Class: MuonIdDQM 00005 // 00006 /* 00007 00008 Description: Makes and fills lots of histograms using the various reco::Muon 00009 methods. All code is adapted from Validation/MuonIdentification 00010 00011 00012 */ 00013 // 00014 // Original Author: Jacob Ribnik 00015 // Created: Wed Apr 18 13:48:08 CDT 2007 00016 // $Id: MuonIdDQM.h,v 1.3 2010/01/21 21:44:25 jribnik Exp $ 00017 // 00018 // 00019 00020 #ifndef DQMOffline_Muon_MuonIdDQM_h 00021 #define DQMOffline_Muon_MuonIdDQM_h 00022 00023 // system include files 00024 #include <string> 00025 00026 // user include files 00027 #include "DataFormats/CSCRecHit/interface/CSCSegmentCollection.h" 00028 #include "DataFormats/DTRecHit/interface/DTRecSegment4DCollection.h" 00029 #include "DataFormats/MuonDetId/interface/CSCDetId.h" 00030 #include "DataFormats/MuonDetId/interface/DTChamberId.h" 00031 #include "DataFormats/MuonDetId/interface/MuonSubdetId.h" 00032 #include "DataFormats/MuonReco/interface/Muon.h" 00033 #include "DataFormats/MuonReco/interface/MuonFwd.h" 00034 00035 #include "DQMServices/Core/interface/DQMStore.h" 00036 #include "DQMServices/Core/interface/MonitorElement.h" 00037 00038 #include "FWCore/Framework/interface/EDAnalyzer.h" 00039 #include "FWCore/Framework/interface/ESHandle.h" 00040 #include "FWCore/Framework/interface/Event.h" 00041 #include "FWCore/Framework/interface/Frameworkfwd.h" 00042 #include "FWCore/Framework/interface/MakerMacros.h" 00043 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00044 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00045 #include "FWCore/ServiceRegistry/interface/Service.h" 00046 00047 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h" 00048 #include "Geometry/CSCGeometry/interface/CSCGeometry.h" 00049 #include "Geometry/Records/interface/GlobalTrackingGeometryRecord.h" 00050 00051 class MuonIdDQM : public edm::EDAnalyzer { 00052 public: 00053 explicit MuonIdDQM(const edm::ParameterSet&); 00054 ~MuonIdDQM(); 00055 00056 private: 00057 virtual void beginJob(); 00058 virtual void analyze(const edm::Event&, const edm::EventSetup&); 00059 virtual void endJob(); 00060 virtual void Fill(MonitorElement*, float); 00061 00062 DQMStore* dbe_; 00063 00064 // ----------member data --------------------------- 00065 edm::InputTag inputMuonCollection_; 00066 edm::InputTag inputDTRecSegment4DCollection_; 00067 edm::InputTag inputCSCSegmentCollection_; 00068 bool useTrackerMuons_; 00069 bool useGlobalMuons_; 00070 bool useTrackerMuonsNotGlobalMuons_; 00071 bool useGlobalMuonsNotTrackerMuons_; 00072 std::string baseFolder_; 00073 00074 edm::Handle<reco::MuonCollection> muonCollectionH_; 00075 edm::Handle<DTRecSegment4DCollection> dtSegmentCollectionH_; 00076 edm::Handle<CSCSegmentCollection> cscSegmentCollectionH_; 00077 edm::ESHandle<GlobalTrackingGeometry> geometry_; 00078 00079 // trackerMuon == 0; globalMuon == 1 00080 MonitorElement* hNumChambers[4]; 00081 MonitorElement* hNumMatches[4]; 00082 00083 // by station 00084 MonitorElement* hDTNumSegments[4][4]; 00085 MonitorElement* hDTDx[4][4]; 00086 MonitorElement* hDTPullx[4][4]; 00087 MonitorElement* hDTDdXdZ[4][4]; 00088 MonitorElement* hDTPulldXdZ[4][4]; 00089 MonitorElement* hDTDy[4][3]; 00090 MonitorElement* hDTPully[4][3]; 00091 MonitorElement* hDTDdYdZ[4][3]; 00092 MonitorElement* hDTPulldYdZ[4][3]; 00093 MonitorElement* hCSCNumSegments[4][4]; 00094 MonitorElement* hCSCDx[4][4]; 00095 MonitorElement* hCSCPullx[4][4]; 00096 MonitorElement* hCSCDdXdZ[4][4]; 00097 MonitorElement* hCSCPulldXdZ[4][4]; 00098 MonitorElement* hCSCDy[4][4]; 00099 MonitorElement* hCSCPully[4][4]; 00100 MonitorElement* hCSCDdYdZ[4][4]; 00101 MonitorElement* hCSCPulldYdZ[4][4]; 00102 00103 // segment matching "efficiency" 00104 MonitorElement* hSegmentIsAssociatedBool; 00105 }; 00106 00107 #endif