Go to the documentation of this file.00001 #ifndef DTMonitorModule_DTBlockedROChannelsTest_H
00002 #define DTMonitorModule_DTBlockedROChannelsTest_H
00003
00013 #include <FWCore/Framework/interface/EDAnalyzer.h>
00014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00015 #include <FWCore/Framework/interface/Event.h>
00016 #include "FWCore/Framework/interface/ESHandle.h"
00017 #include <FWCore/Framework/interface/EventSetup.h>
00018 #include <FWCore/Framework/interface/LuminosityBlock.h>
00019 #include "DataFormats/MuonDetId/interface/DTChamberId.h"
00020
00021 class DQMStore;
00022 class MonitorElement;
00023 class DTReadOutMapping;
00024 class DTTimeEvolutionHisto;
00025
00026 class DTBlockedROChannelsTest: public edm::EDAnalyzer{
00027
00028 public:
00029
00031 DTBlockedROChannelsTest(const edm::ParameterSet& ps);
00032
00034 ~DTBlockedROChannelsTest();
00035
00036 protected:
00037
00039 void beginJob();
00040
00042 void beginRun(const edm::Run& run, const edm::EventSetup& c);
00043
00045 void analyze(const edm::Event& e, const edm::EventSetup& c);
00046
00048 void endJob();
00049
00050 void beginLuminosityBlock(edm::LuminosityBlock const& lumiSeg, edm::EventSetup const& context) ;
00051
00053 void performClientDiagnostic();
00054
00056 void endLuminosityBlock(edm::LuminosityBlock const& lumiSeg, edm::EventSetup const& c);
00057
00059 void endRun(edm::Run const& run, edm::EventSetup const& eSetup);
00060
00061 private:
00062 int readOutToGeometry(int dduId, int rosNumber, int& wheel, int& sector);
00063
00064 private:
00065
00066
00067 int nupdates;
00068
00069
00070 int prescaleFactor;
00071
00072 int nevents;
00073 int neventsPrev;
00074 unsigned int nLumiSegs;
00075 unsigned int prevNLumiSegs;
00076 double prevTotalPerc;
00077
00078 int run;
00079
00080
00081 DQMStore* dbe;
00082 edm::ESHandle<DTReadOutMapping> mapping;
00083
00084
00085
00086 std::map<int, MonitorElement*> wheelHitos;
00087 MonitorElement *summaryHisto;
00088
00089 bool offlineMode;
00090
00091 std::map<int, double> resultsPerLumi;
00092 DTTimeEvolutionHisto* hSystFractionVsLS;
00093
00094
00095 class DTRobBinsMap {
00096 public:
00097 DTRobBinsMap(const int fed, const int ros, const DQMStore* dbe);
00098
00099 DTRobBinsMap();
00100
00101
00102 ~DTRobBinsMap();
00103
00104
00105 void addRobBin(int robBin);
00106 void init(bool v) {init_ = v;}
00107
00108 bool robChanged(int robBin);
00109
00110 double getChamberPercentage();
00111
00112 void readNewValues();
00113
00114 private:
00115 int getValueRobBin(int robBin) const;
00116 int getValueRos() const;
00117
00118 int rosBin;
00119 bool init_;
00120
00121 std::map<int, int> robsAndValues;
00122 int rosValue;
00123
00124 const MonitorElement* meROS;
00125 const MonitorElement* meDDU;
00126
00127 std::string rosHName;
00128 std::string dduHName;
00129
00130 const DQMStore* theDbe;
00131 };
00132
00133 std::map<DTChamberId, DTRobBinsMap> chamberMap;
00134
00135 };
00136
00137 #endif