00001 #ifndef MEtoEDMConverter_h 00002 #define MEtoEDMConverter_h 00003 00014 // framework & common header files 00015 #include "FWCore/Framework/interface/EDProducer.h" 00016 #include "FWCore/Framework/interface/Frameworkfwd.h" 00017 #include "FWCore/Framework/interface/Event.h" 00018 #include "FWCore/Framework/interface/Run.h" 00019 #include "FWCore/Framework/interface/EventSetup.h" 00020 #include "DataFormats/Common/interface/Handle.h" 00021 #include "FWCore/Framework/interface/ESHandle.h" 00022 #include "DataFormats/Provenance/interface/Provenance.h" 00023 #include "FWCore/Framework/interface/MakerMacros.h" 00024 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00025 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00026 #include "FWCore/Utilities/interface/GetReleaseVersion.h" 00027 00028 //DQM services 00029 #include "DQMServices/Core/interface/DQMStore.h" 00030 #include "FWCore/ServiceRegistry/interface/Service.h" 00031 #include "DQMServices/Core/interface/MonitorElement.h" 00032 00033 // data format 00034 #include "DataFormats/Histograms/interface/MEtoEDMFormat.h" 00035 00036 // helper files 00037 #include <iostream> 00038 #include <stdlib.h> 00039 #include <string> 00040 #include <memory> 00041 #include <vector> 00042 #include <map> 00043 #include <assert.h> 00044 00045 #include "TString.h" 00046 #include "TH1F.h" 00047 #include "TH1S.h" 00048 #include "TH2F.h" 00049 #include "TH2S.h" 00050 #include "TH3F.h" 00051 #include "TProfile.h" 00052 #include "TProfile2D.h" 00053 #include "TObjString.h" 00054 00055 class MEtoEDMConverter : public edm::EDProducer 00056 { 00057 public: 00058 explicit MEtoEDMConverter(const edm::ParameterSet&); 00059 virtual ~MEtoEDMConverter(); 00060 virtual void beginJob(const edm::EventSetup&); 00061 virtual void endJob(); 00062 virtual void produce(edm::Event&, const edm::EventSetup&); 00063 virtual void beginRun(edm::Run&, const edm::EventSetup&); 00064 virtual void endRun(edm::Run&, const edm::EventSetup&); 00065 00066 typedef std::vector<uint32_t> TagList; 00067 00068 private: 00069 template <class T> struct mestorage 00070 { 00071 std::vector<std::string> name; 00072 std::vector<std::vector<uint32_t> > tags; 00073 std::vector<T> object; 00074 std::vector<std::string> release; 00075 std::vector<int> run; 00076 std::vector<std::string> datatier; 00077 }; 00078 00079 00080 std::string fName; 00081 int verbosity; 00082 int frequency; 00083 std::string path; 00084 00085 DQMStore *dbe; 00086 00087 // private statistics information 00088 std::map<int,int> count; 00089 std::string datatier; 00090 bool firstevent; 00091 00092 }; // end class declaration 00093 00094 #endif