00001 #ifndef HcalPedestalClient_H 00002 #define HcalPedestalClient_H 00003 00004 #include "DQM/HcalMonitorClient/interface/HcalBaseClient.h" 00005 #include "CalibFormats/HcalObjects/interface/HcalDbService.h" 00006 #include "CalibFormats/HcalObjects/interface/HcalDbRecord.h" 00007 #include "CondFormats/HcalObjects/interface/HcalPedestal.h" 00008 #include "CondFormats/HcalObjects/interface/HcalPedestalWidth.h" 00009 #include "CondFormats/HcalObjects/interface/HcalElectronicsMap.h" 00010 #include <CalibCalorimetry/HcalAlgos/interface/HcalAlgoUtils.h> 00011 #include "DataFormats/HcalDetId/interface/HcalDetId.h" 00012 #include "DataFormats/HcalDetId/interface/HcalElectronicsId.h" 00013 #include "FWCore/Framework/interface/ESHandle.h" 00014 #include "DQMServices/Core/interface/DQMStore.h" 00015 00016 #include "DQM/HcalMonitorClient/interface/HcalClientUtils.h" 00017 #include "DQM/HcalMonitorClient/interface/HcalHistoUtils.h" 00018 00019 00020 class HcalPedestalClient : public HcalBaseClient { 00021 00022 public: 00023 00025 HcalPedestalClient(); 00027 ~HcalPedestalClient(); 00028 00029 void init(const edm::ParameterSet& ps, DQMStore* dbe, string clientName); 00030 00032 void analyze(void); 00033 00035 void beginJob(const EventSetup& c); 00036 00038 void endJob(void); 00039 00041 void beginRun(void); 00042 00044 void endRun(void); 00045 00047 void setup(void); 00048 00050 void cleanup(void); 00051 00053 void htmlOutput(int run, string htmlDir, string htmlName); 00054 void htmlExpertOutput(int run, string htmlDir, string htmlName); 00055 void getHistograms(); 00056 void loadHistograms(TFile* f); 00057 00059 void report(); 00060 00061 void resetAllME(); 00062 void createTests(); 00063 00064 private: 00065 00066 //void generateBadChanList(string dir); 00067 vector<int> badChan_; 00068 vector<double> badMean_; 00069 vector<double> badRMS_; 00070 00071 vector <std::string> subdets_; 00072 00073 bool doFCpeds_; // pedestal units in fC (if false, assume ADC) 00074 // specify time slices over which to calculate pedestals -- are these needed in client? 00075 bool startingTimeSlice_; 00076 bool endingTimeSlice_; 00077 00078 // Specify maximum allowed difference between ADC pedestal and nominal value 00079 double nominalPedMeanInADC_; 00080 double nominalPedWidthInADC_; 00081 double maxPedMeanDiffADC_; 00082 double maxPedWidthDiffADC_; // specify maximum width of pedestal (in ADC) 00083 double minErrorFlag_; // minimum error rate which causes problem cells to be dumped in client 00084 TH2F* MeanMapByDepth[6]; 00085 TH2F* RMSMapByDepth[6]; 00086 00087 // Problem Pedestal Plots 00088 TH2F* ProblemPedestals; 00089 TH2F* ProblemPedestalsByDepth[6]; 00090 00091 // Pedestals from Database 00092 TH2F* ADC_PedestalFromDBByDepth[6]; 00093 TH2F* ADC_WidthFromDBByDepth[6]; 00094 TH2F* fC_PedestalFromDBByDepth[6]; 00095 TH2F* fC_WidthFromDBByDepth[6]; 00096 00097 // Raw pedestals in ADC 00098 TH2F* rawADCPedestalMean[6]; 00099 TH2F* rawADCPedestalRMS[6]; 00100 TH1F* rawADCPedestalMean_1D[6]; 00101 TH1F* rawADCPedestalRMS_1D[6]; 00102 00103 // subtracted pedestals in ADC 00104 TH2F* subADCPedestalMean[6]; 00105 TH2F* subADCPedestalRMS[6]; 00106 TH1F* subADCPedestalMean_1D[6]; 00107 TH1F* subADCPedestalRMS_1D[6]; 00108 00109 // Raw pedestals in FC 00110 TH2F* rawFCPedestalMean[6]; 00111 TH2F* rawFCPedestalRMS[6]; 00112 TH1F* rawFCPedestalMean_1D[6]; 00113 TH1F* rawFCPedestalRMS_1D[6]; 00114 00115 // subtracted pedestals in FC 00116 TH2F* subFCPedestalMean[6]; 00117 TH2F* subFCPedestalRMS[6]; 00118 TH1F* subFCPedestalMean_1D[6]; 00119 TH1F* subFCPedestalRMS_1D[6]; 00120 00121 00122 00123 }; 00124 00125 #endif