00001 #ifndef L1TdeGCT_H 00002 #define L1TdeGCT_H 00003 00004 /*\class L1TdeGCT 00005 *\description GCT data|emulation comparison DQM interface 00006 produces expert level DQM monitorable elements 00007 *\author N.Leonardo 00008 *\date 08.09 00009 */ 00010 00011 // system, common includes 00012 #include <memory> 00013 #include <string> 00014 #include "FWCore/ServiceRegistry/interface/Service.h" 00015 #include "FWCore/Framework/interface/Frameworkfwd.h" 00016 #include "FWCore/Framework/interface/EDAnalyzer.h" 00017 #include "FWCore/Framework/interface/Event.h" 00018 #include "FWCore/Framework/interface/MakerMacros.h" 00019 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00020 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00021 // dqm includes 00022 #include "DQMServices/Core/interface/DQMStore.h" 00023 #include "DQMServices/Core/interface/MonitorElement.h" 00024 // l1 dataformats, d|e record includes 00025 #include "L1Trigger/HardwareValidation/interface/DEtrait.h" 00026 00027 class L1TdeGCT : public edm::EDAnalyzer { 00028 00029 public: 00030 00031 explicit L1TdeGCT(const edm::ParameterSet&); 00032 ~L1TdeGCT(); 00033 00034 protected: 00035 00036 virtual void beginJob(void) ; 00037 virtual void analyze(const edm::Event&, const edm::EventSetup&); 00038 virtual void endJob() ; 00039 00040 private: 00041 00042 // input d|e record 00043 edm::InputTag DEsource_; 00044 bool hasRecord_; 00045 00046 // debug verbose level 00047 int verbose_; 00048 int verbose() {return verbose_;} 00049 00050 // root output file name 00051 std::string histFile_; 00052 00053 // dqm histogram folder 00054 std::string histFolder_; 00055 00056 // dqm common 00057 DQMStore* dbe; 00058 bool monitorDaemon_; 00059 00060 // (em) iso, no-iso, (jets) cen, for, tau & energy sums. 00061 static const int nGctColl_ = dedefs::GCThfbit-dedefs::GCTisolaem+1; 00062 00063 // counters 00064 int colCount[nGctColl_]; 00065 int nWithCol[nGctColl_]; 00066 00067 // MEs 00068 MonitorElement* sysrates; 00069 MonitorElement* sysncand[2]; 00070 MonitorElement* errortype[nGctColl_]; 00071 // location 00072 MonitorElement* etaphi [nGctColl_]; 00073 MonitorElement* eta [nGctColl_]; 00074 MonitorElement* phi [nGctColl_]; 00075 MonitorElement* rnk [nGctColl_]; 00076 MonitorElement* etaData[nGctColl_]; 00077 MonitorElement* phiData[nGctColl_]; 00078 MonitorElement* rnkData[nGctColl_]; 00079 00080 // trigger data word 00081 MonitorElement* dword [nGctColl_]; 00082 MonitorElement* eword [nGctColl_]; 00083 MonitorElement* deword[nGctColl_]; 00084 MonitorElement* masked[nGctColl_]; 00085 00086 public: 00087 00088 }; 00089 00090 #endif