Go to the documentation of this file.00001 #ifndef DQM_HCALMONITORTASKS_HCALDEADCELLMONITOR_H
00002 #define DQM_HCALMONITORTASKS_HCALDEADCELLMONITOR_H
00003
00004 #include "DQM/HcalMonitorTasks/interface/HcalBaseDQMonitor.h"
00005 #include "DataFormats/HcalDigi/interface/HcalDigiCollections.h"
00006 #include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
00007
00008
00009
00010 #include "CondFormats/HcalObjects/interface/HcalChannelStatus.h"
00011 #include "CondFormats/HcalObjects/interface/HcalChannelQuality.h"
00012 #include "CondFormats/HcalObjects/interface/HcalCondObjectContainer.h"
00013 #include "CondFormats/DataRecord/interface/HcalChannelQualityRcd.h"
00014
00015 #include "CalibCalorimetry/HcalAlgos/interface/HcalDbASCIIIO.h"
00016 #include "CalibFormats/HcalObjects/interface/HcalDbRecord.h"
00017
00018 #include <cmath>
00019 #include <iostream>
00020 #include <fstream>
00021
00029 class HcalDeadCellMonitor: public HcalBaseDQMonitor {
00030
00031 public:
00032 HcalDeadCellMonitor(const edm::ParameterSet& ps);
00033
00034 ~HcalDeadCellMonitor();
00035
00036 void setup();
00037 void beginRun(const edm::Run& run, const edm::EventSetup& c);
00038 void analyze(edm::Event const&e, edm::EventSetup const&s);
00039 void endLuminosityBlock(const edm::LuminosityBlock& lumiSeg,
00040 const edm::EventSetup& c);
00041 void endRun(const edm::Run& run, const edm::EventSetup& c);
00042 void endJob();
00043 void cleanup();
00044 void reset();
00045
00046 void processEvent(const HBHERecHitCollection& hbHits,
00047 const HORecHitCollection& hoHits,
00048 const HFRecHitCollection& hfHits,
00049 const HBHEDigiCollection& hbhedigi,
00050 const HODigiCollection& hodigi,
00051 const HFDigiCollection& hfdigi
00052 );
00053
00054 private:
00055 void zeroCounters(bool resetpresent=false);
00056
00057 void processEvent_HBHEdigi(const HBHEDataFrame digi);
00058 template<class T> void process_Digi(T& digi);
00059 template<class T> void process_RecHit(T& rechit);
00060
00061 bool deadmon_makeDiagnostics_;
00062 int minDeadEventCount_;
00063
00064
00065 bool deadmon_test_digis_;
00066 bool deadmon_test_rechits_;
00067
00068 void fillNevents_problemCells();
00069 void fillNevents_recentdigis();
00070 void fillNevents_recentrechits();
00071
00072
00073 double energyThreshold_;
00074 double HBenergyThreshold_;
00075 double HEenergyThreshold_;
00076 double HOenergyThreshold_;
00077 double HFenergyThreshold_;
00078
00079 EtaPhiHists RecentMissingDigisByDepth;
00080 EtaPhiHists DigiPresentByDepth;
00081 EtaPhiHists RecentMissingRecHitsByDepth;
00082 EtaPhiHists RecHitPresentByDepth;
00083
00084
00085 MonitorElement *ProblemsVsLB, *ProblemsVsLB_HB, *ProblemsVsLB_HE, *ProblemsVsLB_HO, *ProblemsVsLB_HF;
00086 MonitorElement *NumberOfNeverPresentDigis, *NumberOfNeverPresentDigisHB, *NumberOfNeverPresentDigisHE, *NumberOfNeverPresentDigisHO, *NumberOfNeverPresentDigisHF;
00087 MonitorElement *NumberOfRecentMissingDigis, *NumberOfRecentMissingDigisHB, *NumberOfRecentMissingDigisHE, *NumberOfRecentMissingDigisHO, *NumberOfRecentMissingDigisHF;
00088 MonitorElement *NumberOfRecentMissingRecHits, *NumberOfRecentMissingRecHitsHB, *NumberOfRecentMissingRecHitsHE, *NumberOfRecentMissingRecHitsHO, *NumberOfRecentMissingRecHitsHF;
00089 MonitorElement *NumberOfNeverPresentRecHits, *NumberOfNeverPresentRecHitsHB, *NumberOfNeverPresentRecHitsHE, *NumberOfNeverPresentRecHitsHO, *NumberOfNeverPresentRecHitsHF;
00090
00091 MonitorElement *Nevents;
00092
00093 MonitorElement *HBDeadVsEvent, *HEDeadVsEvent, *HODeadVsEvent, *HFDeadVsEvent;
00094 bool present_digi[85][72][4];
00095 bool present_rechit[85][72][4];
00096 unsigned int recentoccupancy_digi[85][72][4];
00097 unsigned int recentoccupancy_rechit[85][72][4];
00098
00099 int deadevt_;
00100 int NumBadHB, NumBadHE, NumBadHO, NumBadHF, NumBadHFLUMI, NumBadHO0, NumBadHO12;
00101 edm::InputTag digiLabel_;
00102 edm::InputTag hbheRechitLabel_, hoRechitLabel_, hfRechitLabel_;
00103
00104 bool endLumiProcessed_;
00105
00106 bool excludeHORing2_;
00107 };
00108
00109 #endif