00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef CSCDQM_EventProcessor_H
00021 #define CSCDQM_EventProcessor_H
00022
00023 #include <set>
00024 #include <string>
00025 #include <math.h>
00026
00027 #include <TString.h>
00028
00029 #ifdef DQMGLOBAL
00030
00031 #include "FWCore/Framework/interface/Event.h"
00032 #include "DataFormats/FEDRawData/interface/FEDNumbering.h"
00033 #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
00034 #include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h"
00035
00036 #endif
00037
00038 #include "DQM/CSCMonitorModule/interface/CSCDQM_Logger.h"
00039 #include "DQM/CSCMonitorModule/interface/CSCDQM_Summary.h"
00040 #include "DQM/CSCMonitorModule/interface/CSCDQM_StripClusterFinder.h"
00041 #include "DQM/CSCMonitorModule/interface/CSCDQM_Configuration.h"
00042 #include "DQM/CSCMonitorModule/interface/CSCDQM_Configuration.h"
00043
00044 #include "EventFilter/CSCRawToDigi/interface/CSCDCCExaminer.h"
00045 #include "EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h"
00046 #include "EventFilter/CSCRawToDigi/interface/CSCCFEBTimeSlice.h"
00047 #include "EventFilter/CSCRawToDigi/interface/CSCCFEBData.h"
00048
00049 namespace cscdqm {
00050
00051 typedef std::map<std::string, uint32_t> CSCCounters;
00052
00057 class EventProcessor {
00058
00059
00060
00061
00062
00063 public:
00064
00065 EventProcessor(Configuration* const p_config);
00066 ~EventProcessor() { }
00067
00068 void init();
00069 void updateFractionHistos();
00070 void updateEfficiencyHistos();
00071 void updateFractionAndEfficiencyHistos() {
00072 updateFractionHistos();
00073 updateEfficiencyHistos();
00074 }
00075
00076 private:
00077
00078 void processExaminer(const uint16_t *data, const uint32_t dataSize, bool& eventDenied);
00079 void processDDU(const CSCDDUEventData& data);
00080 void processCSC(const CSCEventData& data, const int dduID);
00081
00082 void calcEMUFractionHisto(const HistoId& result, const HistoId& set, const HistoId& subset);
00083
00084 const bool getEMUHisto(const HistoId& histo, MonitorObject*& me);
00085 const bool getDDUHisto(const HistoId& histo, const HwId& dduID, MonitorObject*& me);
00086 const bool getCSCHisto(const HistoId& histo, const HwId& crateID, const HwId& dmbSlot, MonitorObject*& me);
00087 const bool getCSCHisto(const HistoId& histo, const HwId& crateID, const HwId& dmbSlot, const HwId& adId, MonitorObject*& me);
00088 const bool getParHisto(const HistoId& histo, MonitorObject*& me);
00089
00090 const bool getCSCFromMap(const unsigned int& crateId, const unsigned int& dmbId, unsigned int& cscType, unsigned int& cscPosition) const;
00091
00092 Configuration* config;
00093 Summary summary;
00094
00095 bool bCSCEventCounted;
00096
00097 std::map<std::string, uint32_t> nDMBEvents;
00098 std::map<std::string, CSCCounters> cscCntrs;
00099
00100 CSCDCCExaminer binChecker;
00101
00102 std::map<uint32_t, uint32_t> L1ANumbers;
00103 uint32_t L1ANumber;
00104 uint32_t BXN;
00105 bool fFirstEvent;
00106 bool fCloseL1As;
00107
00108
00109
00110
00111
00112 #ifdef DQMLOCAL
00113
00114 public:
00115
00116 void processEvent(const char* data, const int32_t dataSize, const uint32_t errorStat, const int32_t nodeNumber);
00117
00118 #endif
00119
00120
00121
00122
00123
00124 #ifdef DQMGLOBAL
00125
00126 public:
00127
00128 void processEvent(const edm::Event& e, const edm::InputTag& inputTag);
00129
00130 #endif
00131
00132 };
00133
00134 }
00135
00136 #endif