00001 #ifndef MuonRecoAnalyzer_H 00002 #define MuonRecoAnalyzer_H 00003 00004 00015 #include <memory> 00016 #include <fstream> 00017 #include "FWCore/Framework/interface/Frameworkfwd.h" 00018 #include "DQMOffline/Muon/src/MuonAnalyzerBase.h" 00019 #include "FWCore/Framework/interface/Event.h" 00020 #include "FWCore/Framework/interface/MakerMacros.h" 00021 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00022 #include "FWCore/ServiceRegistry/interface/Service.h" 00023 #include "DQMServices/Core/interface/DQMStore.h" 00024 #include "DQMServices/Core/interface/MonitorElement.h" 00025 #include "RecoMuon/TrackingTools/interface/MuonServiceProxy.h" 00026 00027 00028 class MuonRecoAnalyzer : public MuonAnalyzerBase { 00029 public: 00030 00032 MuonRecoAnalyzer(const edm::ParameterSet&, MuonServiceProxy *theService); 00033 00035 virtual ~MuonRecoAnalyzer(); 00036 00038 void beginJob(DQMStore *dbe); 00039 00041 void analyze(const edm::Event&, const edm::EventSetup&, const reco::Muon& recoMu); 00042 00043 //calculate residual & pull: 00044 void GetRes( reco::TrackRef t1, reco::TrackRef t2, std::string par, float &res, float &pull); 00045 00046 private: 00047 // ----------member data --------------------------- 00048 00049 edm::ParameterSet parameters; 00050 // Switch for verbosity 00051 std::string metname; 00052 // STA Label 00053 edm::InputTag theSTACollectionLabel; 00054 00055 //histo binning parameters 00056 int etaBin; 00057 double etaMin; 00058 double etaMax; 00059 00060 int thetaBin; 00061 double thetaMin; 00062 double thetaMax; 00063 00064 int phiBin; 00065 double phiMin; 00066 double phiMax; 00067 00068 int chi2Bin; 00069 double chi2Min; 00070 double chi2Max; 00071 00072 int pBin; 00073 double pMin; 00074 double pMax; 00075 00076 int ptBin; 00077 double ptMin; 00078 double ptMax; 00079 00080 int pResBin; 00081 double pResMin; 00082 double pResMax; 00083 00084 int rhBin; 00085 double rhMin; 00086 double rhMax; 00087 00088 //the histos 00089 MonitorElement* muReco; 00090 // global muon 00091 std::vector<MonitorElement*> etaGlbTrack; 00092 std::vector<MonitorElement*> etaResolution; 00093 std::vector<MonitorElement*> thetaGlbTrack; 00094 std::vector<MonitorElement*> thetaResolution; 00095 std::vector<MonitorElement*> phiGlbTrack; 00096 std::vector<MonitorElement*> phiResolution; 00097 std::vector<MonitorElement*> chi2OvDFGlbTrack; 00098 std::vector<MonitorElement*> probchi2GlbTrack; 00099 std::vector<MonitorElement*> pGlbTrack; 00100 std::vector<MonitorElement*> ptGlbTrack; 00101 std::vector<MonitorElement*> qGlbTrack; 00102 std::vector<MonitorElement*> qOverpResolution; 00103 std::vector<MonitorElement*> qOverptResolution; 00104 std::vector<MonitorElement*> oneOverpResolution; 00105 std::vector<MonitorElement*> oneOverptResolution; 00106 std::vector<MonitorElement*> rhAnalysis; 00107 std::vector<MonitorElement*> muVStkSytemRotation; 00108 00109 MonitorElement* etaPull; 00110 MonitorElement* thetaPull; 00111 MonitorElement* phiPull; 00112 MonitorElement* qOverpPull; 00113 MonitorElement* qOverptPull; 00114 MonitorElement* oneOverpPull; 00115 MonitorElement* oneOverptPull; 00116 00117 // tracker muon 00118 MonitorElement* etaTrack; 00119 MonitorElement* thetaTrack; 00120 MonitorElement* phiTrack; 00121 MonitorElement* chi2OvDFTrack; 00122 MonitorElement* probchi2Track; 00123 MonitorElement* pTrack; 00124 MonitorElement* ptTrack; 00125 MonitorElement* qTrack; 00126 // sta muon 00127 MonitorElement* etaStaTrack; 00128 MonitorElement* thetaStaTrack; 00129 MonitorElement* phiStaTrack; 00130 MonitorElement* chi2OvDFStaTrack; 00131 MonitorElement* probchi2StaTrack; 00132 MonitorElement* pStaTrack; 00133 MonitorElement* ptStaTrack; 00134 MonitorElement* qStaTrack; 00135 // efficiency 00136 std::vector<MonitorElement*> etaEfficiency; 00137 std::vector<MonitorElement*> phiEfficiency; 00138 00139 }; 00140 #endif