00001 #ifndef VertexMonitor_H 00002 #define VertexMonitor_H 00003 // -*- C++ -*- 00004 // 00005 // 00010 // system include files 00011 #include <memory> 00012 00013 // user include files 00014 #include "FWCore/Framework/interface/Frameworkfwd.h" 00015 #include "FWCore/Framework/interface/EDAnalyzer.h" 00016 00017 #include "FWCore/Framework/interface/Event.h" 00018 #include "FWCore/Framework/interface/MakerMacros.h" 00019 00020 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00021 00022 #include "DQMServices/Core/interface/MonitorElement.h" 00023 00024 #include "DataFormats/VertexReco/interface/Vertex.h" 00025 00026 class GetLumi; 00027 00028 class DQMStore; 00029 00030 class VertexMonitor 00031 { 00032 public: 00033 VertexMonitor(const edm::ParameterSet&,edm::InputTag,edm::InputTag, std::string pvLabel); 00034 virtual ~VertexMonitor(); 00035 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); 00036 00037 virtual void beginJob(DQMStore * dqmStore_); 00038 virtual void analyze(const edm::Event&, const edm::EventSetup&); 00039 00040 virtual void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&); 00041 virtual void endLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&); 00042 00043 // ----------member data --------------------------- 00044 00045 edm::ParameterSet conf_; 00046 00047 edm::InputTag primaryVertexInputTag_; 00048 edm::InputTag selectedPrimaryVertexInputTag_; 00049 std::string label_; 00050 00051 GetLumi* lumiDetails_; 00052 00053 MonitorElement* NumberOfPVtx; 00054 MonitorElement* NumberOfPVtxVsBXlumi; 00055 MonitorElement* NumberOfPVtxVsGoodPVtx; 00056 MonitorElement* NumberOfGoodPVtx; 00057 MonitorElement* NumberOfGoodPVtxVsBXlumi; 00058 MonitorElement* FractionOfGoodPVtx; 00059 MonitorElement* FractionOfGoodPVtxVsBXlumi; 00060 MonitorElement* FractionOfGoodPVtxVsGoodPVtx; 00061 MonitorElement* FractionOfGoodPVtxVsPVtx; 00062 MonitorElement* NumberOfFakePVtx; 00063 MonitorElement* NumberOfFakePVtxVsBXlumi; 00064 MonitorElement* NumberOfFakePVtxVsGoodPVtx; 00065 MonitorElement* NumberOfBADndofPVtx; 00066 MonitorElement* NumberOfBADndofPVtxVsBXlumi; 00067 MonitorElement* NumberOfBADndofPVtxVsGoodPVtx; 00068 00069 MonitorElement* Chi2oNDFVsGoodPVtx; 00070 MonitorElement* Chi2oNDFVsBXlumi; 00071 MonitorElement* Chi2ProbVsGoodPVtx; 00072 MonitorElement* Chi2ProbVsBXlumi; 00073 00074 MonitorElement* GoodPVtxSumPt; 00075 MonitorElement* GoodPVtxSumPtVsBXlumi; 00076 MonitorElement* GoodPVtxSumPtVsGoodPVtx; 00077 00078 MonitorElement* GoodPVtxNumberOfTracks; 00079 MonitorElement* GoodPVtxNumberOfTracksVsBXlumi; 00080 MonitorElement* GoodPVtxNumberOfTracksVsGoodPVtx; 00081 MonitorElement* GoodPVtxNumberOfTracksVsGoodPVtxNdof; 00082 00083 MonitorElement* GoodPVtxChi2oNDFVsGoodPVtx; 00084 MonitorElement* GoodPVtxChi2oNDFVsBXlumi; 00085 MonitorElement* GoodPVtxChi2ProbVsGoodPVtx; 00086 MonitorElement* GoodPVtxChi2ProbVsBXlumi; 00087 00088 bool doAllPlots_; 00089 bool doPlotsVsBXlumi_; 00090 bool doPlotsVsGoodPVtx_; 00091 00092 std::string histname; //for naming the histograms according to algorithm used 00093 00094 }; 00095 #endif