00001 #ifndef GlobalDigisHistogrammer_h 00002 #define GlobalDigisHistogrammer_h 00003 00015 // framework & common header files 00016 #include "FWCore/Framework/interface/EDAnalyzer.h" 00017 #include "FWCore/Framework/interface/Frameworkfwd.h" 00018 #include "FWCore/Framework/interface/Event.h" 00019 #include "FWCore/Framework/interface/EventSetup.h" 00020 #include "DataFormats/Common/interface/Handle.h" 00021 #include "FWCore/Framework/interface/ESHandle.h" 00022 00023 //DQM services 00024 #include "DQMServices/Core/interface/DQMStore.h" 00025 #include "FWCore/ServiceRegistry/interface/Service.h" 00026 00027 00028 //#include "DataFormats/Common/interface/Provenance.h" 00029 #include "DataFormats/Provenance/interface/Provenance.h" 00030 #include "FWCore/Framework/interface/MakerMacros.h" 00031 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00032 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00033 00034 00035 // event info 00036 #include "SimDataFormats/ValidationFormats/interface/PValidationFormats.h" 00037 00038 // helper files 00039 //#include <CLHEP/Vector/LorentzVector.h> 00040 //#include <CLHEP/Units/SystemOfUnits.h> 00041 00042 #include <iostream> 00043 #include <stdlib.h> 00044 #include <string> 00045 #include <memory> 00046 #include <vector> 00047 #include <map> 00048 #include <math.h> 00049 00050 #include "TString.h" 00051 #include "DQMServices/Core/interface/MonitorElement.h" 00052 00053 00054 class GlobalDigisHistogrammer : public edm::EDAnalyzer 00055 { 00056 00057 public: 00058 00059 //typedef std::vector<float> FloatVector; 00060 //typedef std::vector<double> DoubleVector; 00061 //typedef std::vector<int> IntVector; 00062 typedef std::map<uint32_t,float,std::less<uint32_t> > MapType; 00063 00064 explicit GlobalDigisHistogrammer(const edm::ParameterSet&); 00065 virtual ~GlobalDigisHistogrammer(); 00066 virtual void beginJob(const edm::EventSetup&); 00067 virtual void endJob(); 00068 virtual void analyze(const edm::Event&, const edm::EventSetup&); 00069 00070 00071 private: 00072 00073 // parameter information 00074 std::string fName; 00075 int verbosity; 00076 int frequency; 00077 std::string label; 00078 bool getAllProvenances; 00079 bool printProvenanceInfo; 00080 00081 DQMStore *dbe; 00082 std::string outputfile; 00083 bool doOutput; 00084 00085 edm::InputTag GlobalDigisSrc_; 00086 //edm::InputTag srcGlobalDigis; 00087 00088 // Electromagnetic info 00089 // ECal info 00090 MonitorElement *mehEcaln[3]; 00091 MonitorElement *mehEcalAEE[2]; 00092 MonitorElement *mehEcalSHE[2]; 00093 MonitorElement *mehEcalMaxPos[2]; 00094 MonitorElement *mehEcalMultvAEE[2]; 00095 MonitorElement *mehEcalSHEvAEESHE[2]; 00096 MonitorElement *mehEScalADC[3]; 00097 00098 // HCal info 00099 MonitorElement *mehHcaln[4]; 00100 MonitorElement *mehHcalAEE[4]; 00101 MonitorElement *mehHcalSHE[4]; 00102 MonitorElement *mehHcalAEESHE[4]; 00103 MonitorElement *mehHcalSHEvAEE[4]; 00104 00105 00106 // Tracker info 00107 // SiStrip 00108 00109 MonitorElement *mehSiStripn[19]; 00110 MonitorElement *mehSiStripADC[19]; 00111 MonitorElement *mehSiStripStrip[19]; 00112 00113 00114 // SiPxl 00115 00116 MonitorElement *mehSiPixeln[7]; 00117 MonitorElement *mehSiPixelADC[7]; 00118 MonitorElement *mehSiPixelRow[7]; 00119 MonitorElement *mehSiPixelCol[7]; 00120 00121 // Muon info 00122 // DT 00123 MonitorElement *mehDtMuonn[4]; 00124 MonitorElement *mehDtMuonLayer[4]; 00125 MonitorElement *mehDtMuonTime[4]; 00126 MonitorElement *mehDtMuonTimevLayer[4]; 00127 00128 // CSC Strip 00129 00130 MonitorElement *mehCSCStripn; 00131 MonitorElement *mehCSCStripADC; 00132 MonitorElement *mehCSCWiren; 00133 MonitorElement *mehCSCWireTime; 00134 00135 float theCSCStripPedestalSum; 00136 int theCSCStripPedestalCount; 00137 // private statistics information 00138 unsigned int count; 00139 00140 }; // end class declaration 00141 00142 00143 00144 00145 00146 00147 #endif //PGlobalDigisHistogrammer_h