00001 #ifndef L1TGMT_H 00002 #define L1TGMT_H 00003 00004 /* 00005 * \file L1TGMT.h 00006 * 00007 * $Date: 2010/01/14 09:16:16 $ 00008 * $Revision: 1.11 $ 00009 * \author J. Berryhill, I. Mikulec 00010 * 00011 */ 00012 00013 // system include files 00014 #include <memory> 00015 #include <unistd.h> 00016 00017 // user include files 00018 #include "FWCore/Framework/interface/Frameworkfwd.h" 00019 #include "FWCore/Framework/interface/EDAnalyzer.h" 00020 00021 #include "FWCore/Framework/interface/Event.h" 00022 #include "FWCore/Framework/interface/MakerMacros.h" 00023 00024 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00025 00026 #include "DQMServices/Core/interface/DQMStore.h" 00027 #include "DQMServices/Core/interface/MonitorElement.h" 00028 #include "FWCore/ServiceRegistry/interface/Service.h" 00029 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00030 00031 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuRegionalCand.h" 00032 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTCand.h" 00033 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTExtendedCand.h" 00034 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTReadoutCollection.h" 00035 00036 #include <iostream> 00037 #include <fstream> 00038 #include <vector> 00039 00040 // 00041 // class decleration 00042 // 00043 00044 class L1TGMT : public edm::EDAnalyzer { 00045 00046 public: 00047 00048 // Constructor 00049 L1TGMT(const edm::ParameterSet& ps); 00050 00051 // Destructor 00052 virtual ~L1TGMT(); 00053 00054 protected: 00055 // Analyze 00056 void analyze(const edm::Event& e, const edm::EventSetup& c); 00057 00058 // BeginJob 00059 void beginJob(void); 00060 00061 // BeginRun 00062 void beginRun(const edm::Run& r, const edm::EventSetup& c); 00063 00064 // EndJob 00065 void endJob(void); 00066 00067 private: 00068 // ----------member data --------------------------- 00069 DQMStore * dbe; 00070 00071 enum ensubs { DTTF=0, RPCb, CSCTF, RPCf, GMT }; 00072 00073 MonitorElement* subs_nbx[5]; 00074 MonitorElement* subs_eta[5]; 00075 MonitorElement* subs_phi[5]; 00076 MonitorElement* subs_pt[5]; 00077 MonitorElement* subs_qty[5]; 00078 MonitorElement* subs_etaphi[5]; 00079 MonitorElement* subs_etaqty[5]; 00080 MonitorElement* subs_bits[5]; 00081 00082 MonitorElement* regional_triggers; 00083 00084 MonitorElement* bx_number; 00085 MonitorElement* dbx_chip; 00086 MonitorElement* eta_dtcsc_and_rpc; 00087 MonitorElement* eta_dtcsc_only; 00088 MonitorElement* eta_rpc_only; 00089 MonitorElement* phi_dtcsc_and_rpc; 00090 MonitorElement* phi_dtcsc_only; 00091 MonitorElement* phi_rpc_only; 00092 MonitorElement* etaphi_dtcsc_and_rpc; 00093 MonitorElement* etaphi_dtcsc_only; 00094 MonitorElement* etaphi_rpc_only; 00095 MonitorElement* dist_phi_dt_rpc; 00096 MonitorElement* dist_phi_csc_rpc; 00097 MonitorElement* dist_phi_dt_csc; 00098 MonitorElement* dist_eta_dt_rpc; 00099 MonitorElement* dist_eta_csc_rpc; 00100 MonitorElement* dist_eta_dt_csc; 00101 MonitorElement* bx_dt_rpc; 00102 MonitorElement* bx_csc_rpc; 00103 MonitorElement* bx_dt_csc; 00104 00105 MonitorElement* n_rpcb_vs_dttf ; 00106 MonitorElement* n_rpcf_vs_csctf; 00107 MonitorElement* n_csctf_vs_dttf; 00108 00109 MonitorElement* subs_dbx[4]; 00110 00111 int nev_; // Number of events processed 00112 std::string outputFile_; //file name for ROOT ouput 00113 bool verbose_; 00114 bool monitorDaemon_; 00115 ofstream logFile_; 00116 edm::InputTag gmtSource_ ; 00117 00118 int evnum_old_; // event number of previous event 00119 int bxnum_old_; // bx of previous event 00120 int obnum_old_; // orbit of previous event 00121 int trsrc_old_; // code of trigger source ( bits: 0 DT, 1 bRPC, 2 CSC, 3 fRPC ) 00122 00123 static const double piconv_; 00124 double phiconv_(float phi); 00125 void book_(const edm::EventSetup& c); 00126 }; 00127 00128 #endif