00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CSCMonitorModule_H
00020 #define CSCMonitorModule_H
00021
00026 #include <memory>
00027 #include <iostream>
00028 #include <sstream>
00029 #include <fstream>
00030 #include <string>
00031 #include <vector>
00032 #include <map>
00033 #include <math.h>
00034 #include <bitset>
00035
00036 #include <FWCore/Framework/interface/EDAnalyzer.h>
00037 #include <DQMServices/Core/interface/DQMStore.h>
00038 #include <DQMServices/Core/interface/MonitorElement.h>
00039 #include <FWCore/ServiceRegistry/interface/Service.h>
00040 #include <FWCore/ParameterSet/interface/ParameterSet.h>
00041 #include <FWCore/MessageLogger/interface/MessageLogger.h>
00042
00043 #include "FWCore/Framework/interface/Event.h"
00044 #include "FWCore/Framework/interface/EventSetup.h"
00045 #include "FWCore/Framework/interface/Frameworkfwd.h"
00046 #include "DataFormats/FEDRawData/interface/FEDRawData.h"
00047 #include "DataFormats/FEDRawData/interface/FEDNumbering.h"
00048 #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
00049 #include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h"
00050 #include "EventFilter/CSCRawToDigi/interface/CSCDCCExaminer.h"
00051 #include "EventFilter/CSCRawToDigi/interface/CSCCFEBData.h"
00052 #include "EventFilter/CSCRawToDigi/interface/CSCCFEBTimeSlice.h"
00053
00054 #include "CondFormats/CSCObjects/interface/CSCCrateMap.h"
00055 #include "CondFormats/DataRecord/interface/CSCCrateMapRcd.h"
00056 #include "FWCore/Framework/interface/ESHandle.h"
00057 #include "DQM/CSCMonitorModule/interface/CSCDQM_Summary.h"
00058 #include "DQM/CSCMonitorModule/interface/CSCUtility.h"
00059
00064 #define LOGERROR(cat) edm::LogError (cat)
00065 #define LOGWARNING(cat) edm::LogWarning (cat)
00066 #define LOGINFO(cat) edm::LogInfo (cat)
00067 #define LOGDEBUG(cat) LogDebug (cat)
00068
00069 #define SUMMARY_FOLDER "Summary/"
00070 #define DDU_FOLDER "DDUs/"
00071 #define EVENTINFO_FOLDER "EventInfo/"
00072 #define SUMCONTENTS_FOLDER "EventInfo/reportSummaryContents/"
00073
00078 class CSCMonitorModule: public edm::EDAnalyzer {
00079
00080 public:
00081
00082 CSCMonitorModule(const edm::ParameterSet& ps);
00083 virtual ~CSCMonitorModule();
00084
00085 protected:
00086
00087 void beginJob(const edm::EventSetup& c);
00088 void beginRun(const edm::Run& r, const edm::EventSetup& c);
00089 void setup();
00090 void analyze(const edm::Event& e, const edm::EventSetup& c) ;
00091 void beginLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& context) ;
00092 void endRun(const edm::Run& r, const edm::EventSetup& c);
00093 void endJob();
00094
00095 private:
00096
00097 int loadCollection();
00098 void printCollection();
00099 void book(const std::string prefix);
00100 const bool isMEValid(const std::string name, MonitorElement*& me);
00101 const bool getCSCFromMap(const int crate, const int slot, int& csctype, int& cscposition) const;
00102
00104 void monitorEvent(const edm::Event& e) ;
00105 void monitorDCC(const CSCDCCEventData& dccEvent);
00106 void monitorDDU(const CSCDDUEventData& dduEvent);
00107 void monitorCSC(const CSCEventData& cscEvent, const int32_t& dduID);
00108 bool monitorExaminer(CSCDCCExaminer& examiner);
00109 void updateFracHistos();
00110
00112 edm::ParameterSet parameters;
00113 edm::ParameterSet effParameters;
00114 DQMStore* dbe;
00115 std::string monitorName;
00116 std::string rootDir;
00117 std::string bookingFile;
00118
00120 bool init;
00121
00123 bool hitBookDDU;
00124
00126 Bitset32 fractUpdateKey;
00127 uint32_t fractUpdateEvF;
00128
00130 edm::InputTag inputObjectsTag;
00131
00133 unsigned int examinerMask;
00134 bool examinerForce;
00135 bool examinerOutput;
00136 Bitset32 examinerCRCKey;
00137
00139 const CSCCrateMap* pcrate;
00140
00142 HistoDefMap collection;
00143
00145 uint32_t nEvents;
00146 uint32_t nCSCEvents;
00147 bool bCSCEventCounted;
00148 uint32_t L1ANumber;
00149 std::map<uint32_t,uint32_t> L1ANumbers;
00150
00152 const bool MEEMU(const std::string name, MonitorElement*& me);
00153 const bool MEDDU(const unsigned int dduId, const std::string name, MonitorElement*& me);
00154 const bool MEEventInfo(const std::string name, MonitorElement*& me);
00155 const bool MEReportSummaryContents(const std::string name, MonitorElement*& me);
00156
00158 cscdqm::Summary summary;
00159
00160 };
00161
00162 #endif