00001 #include "DQM/HcalMonitorTasks/interface/HcalZDCMonitor.h"
00002
00003
00004 HcalZDCMonitor::HcalZDCMonitor(const edm::ParameterSet & ps) {
00005 Online_ = ps.getUntrackedParameter<bool>("online",false);
00006 mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns",false);
00007 enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup",false);
00008 debug_ = ps.getUntrackedParameter<int>("debug",0);
00009 prefixME_=ps.getUntrackedParameter<std::string>("subSystemFolder","Hcal/");
00010 if (prefixME_.substr(prefixME_.size()-1, prefixME_.size())!="/")
00011 prefixME_.append("/");
00012 subdir_=ps.getUntrackedParameter<std::string>("TaskFolder","ZDCMonitor_Hcal/");
00013 if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!="/")
00014 subdir_.append("/");
00015 subdir_=prefixME_+subdir_;
00016
00017 rechitLabel_=ps.getParameter<edm::InputTag>("rechitLabel");
00018 digiLabel_=ps.getParameter<edm::InputTag>("digiLabel");
00019 AllowedCalibTypes_ = ps.getUntrackedParameter<std::vector<int> > ("AllowedCalibTypes");
00020 skipOutOfOrderLS_ = ps.getUntrackedParameter<bool>("skipOutOfOrderLS",true);
00021 NLumiBlocks_ = ps.getUntrackedParameter<int>("NLumiBlocks",4000);
00022 makeDiagnostics_ = ps.getUntrackedParameter<bool>("makeDiagnostics",false);
00023 OnlineColdThreshold_ = ps.getUntrackedParameter<int>("ZDC_OnlineColdThreshold");
00024 OnlineDeadThreshold_ = ps.getUntrackedParameter<int>("ZDC_OnlineDeadThreshold");
00025 OfflineColdThreshold_ = ps.getUntrackedParameter<int>("ZDC_OfflineColdThreshold");
00026 OfflineDeadThreshold_ = ps.getUntrackedParameter<int>("ZDC_OfflineDeadThreshold");
00027 ColdADCThreshold_ = ps.getUntrackedParameter<int>("ZDC_ColdADCThreshold");
00028 ChannelWeighting_ = ps.getUntrackedParameter<std::vector<double>> ("ZDC_ChannelWeighting");
00029 MaxErrorRates_ = ps.getUntrackedParameter<std::vector<double>> ("ZDC_AcceptableChannelErrorRates");
00030 }
00031
00032
00033 HcalZDCMonitor::~HcalZDCMonitor() {
00034 }
00035
00036 void HcalZDCMonitor::reset() {
00037 }
00038
00039
00040 void HcalZDCMonitor::setup() {
00041 debug_=0;
00042
00043 HcalBaseDQMonitor::setup();
00044
00045
00046
00047 ievt_ = 0;
00048
00049
00050 if (dbe_) {
00051 dbe_->setCurrentFolder(subdir_);
00052 meEVT_ = dbe_->bookInt("ZDC Event Number");
00053 meEVT_->Fill(ievt_);
00054 char name[128];
00055 char title[128];
00056
00057
00058
00059
00063 dbe_->setCurrentFolder(subdir_);
00064 PZDC_QualityIndexVsLB_ = dbe_->book1D("PZDC_QualityIndexVSLB","Quality Index for the ZDC+ vs LS; LS; Quality Index", NLumiBlocks_,0,NLumiBlocks_);
00065 NZDC_QualityIndexVsLB_ = dbe_->book1D("NZDC_QualityIndexVSLB","Quality Index for the ZDC- vs LS; LS; Quality Index", NLumiBlocks_,0,NLumiBlocks_);
00066 EventsVsLS = dbe_->book1D("EventsVsLS", "Total Number of Events per LS; LS; # of Events", NLumiBlocks_,0,NLumiBlocks_);
00067
00068
00069
00075
00076 dbe_->setCurrentFolder(subdir_ + "Errors/Digis");
00077 ZDC_Digi_Errors = dbe_->book2D("ZDC_Digi_Errors", "Raw Number of Digi Errors Per ZDC Channel", 2, 0, 2, 9, 0, 9);
00078 ZDC_Digi_Errors->setBinLabel(1,"ZDC+",1);
00079 ZDC_Digi_Errors->setBinLabel(2,"ZDC-",1);
00080 ZDC_Digi_Errors->setBinLabel(1,"EM1",2);
00081 ZDC_Digi_Errors->setBinLabel(2,"EM2",2);
00082 ZDC_Digi_Errors->setBinLabel(3,"EM3",2);
00083 ZDC_Digi_Errors->setBinLabel(4,"EM4",2);
00084 ZDC_Digi_Errors->setBinLabel(5,"EM5",2);
00085 ZDC_Digi_Errors->setBinLabel(6,"HAD1",2);
00086 ZDC_Digi_Errors->setBinLabel(7,"HAD2",2);
00087 ZDC_Digi_Errors->setBinLabel(8,"HAD3",2);
00088 ZDC_Digi_Errors->setBinLabel(9,"HAD4",2);
00089 ZDC_Digi_Errors->getTH2F()->SetOption("coltext");
00090
00091
00092 ZDC_DigiErrorsVsLS=dbe_->book1D("ZDC_DigiErrorsVsLS","Total Number of (Digi) Errors found in the ZDCs vs. Lumi Section;LS;# errors",NLumiBlocks_,0,NLumiBlocks_);
00093
00094
00095
00096
00097 dbe_->setCurrentFolder(subdir_+"Errors/Digis/DigiErrorCauses");
00098 ZDC_DigiErrors_DVER = dbe_->book2D("ZDC_DigiErrors_DVER","Raw Number of Digi Errors Caused by Finding .dv()=0 or .er()=1",2,0,2,9,0,9);
00099 ZDC_DigiErrors_DVER->setBinLabel(1,"ZDC+",1);
00100 ZDC_DigiErrors_DVER->setBinLabel(2,"ZDC-",1);
00101 ZDC_DigiErrors_DVER->setBinLabel(1,"EM1",2);
00102 ZDC_DigiErrors_DVER->setBinLabel(2,"EM2",2);
00103 ZDC_DigiErrors_DVER->setBinLabel(3,"EM3",2);
00104 ZDC_DigiErrors_DVER->setBinLabel(4,"EM4",2);
00105 ZDC_DigiErrors_DVER->setBinLabel(5,"EM5",2);
00106 ZDC_DigiErrors_DVER->setBinLabel(6,"HAD1",2);
00107 ZDC_DigiErrors_DVER->setBinLabel(7,"HAD2",2);
00108 ZDC_DigiErrors_DVER->setBinLabel(8,"HAD3",2);
00109 ZDC_DigiErrors_DVER->setBinLabel(9,"HAD4",2);
00110 ZDC_DigiErrors_DVER->getTH2F()->SetOption("coltext");
00111
00112
00113 ZDC_DigiErrors_CAPID = dbe_->book2D("ZDC_DigiErrors_CAPID","Raw Number of Digi Errors Caused by the Caps not Alternating",2,0,2,9,0,9);
00114 ZDC_DigiErrors_CAPID->setBinLabel(1,"ZDC+",1);
00115 ZDC_DigiErrors_CAPID->setBinLabel(2,"ZDC-",1);
00116 ZDC_DigiErrors_CAPID->setBinLabel(1,"EM1",2);
00117 ZDC_DigiErrors_CAPID->setBinLabel(2,"EM2",2);
00118 ZDC_DigiErrors_CAPID->setBinLabel(3,"EM3",2);
00119 ZDC_DigiErrors_CAPID->setBinLabel(4,"EM4",2);
00120 ZDC_DigiErrors_CAPID->setBinLabel(5,"EM5",2);
00121 ZDC_DigiErrors_CAPID->setBinLabel(6,"HAD1",2);
00122 ZDC_DigiErrors_CAPID->setBinLabel(7,"HAD2",2);
00123 ZDC_DigiErrors_CAPID->setBinLabel(8,"HAD3",2);
00124 ZDC_DigiErrors_CAPID->setBinLabel(9,"HAD4",2);
00125 ZDC_DigiErrors_CAPID->getTH2F()->SetOption("coltext");
00126
00132
00133
00134 dbe_->setCurrentFolder(subdir_ + "Errors/HotChannel");
00135 ZDC_Hot_Channel_Errors = dbe_->book2D("ZDC_Hot_Channel_Errors", "Raw Number of Times Each Channel Appeared Hot", 2, 0, 2, 9, 0, 9);
00136 ZDC_Hot_Channel_Errors->setBinLabel(1,"ZDC+",1);
00137 ZDC_Hot_Channel_Errors->setBinLabel(2,"ZDC-",1);
00138 ZDC_Hot_Channel_Errors->setBinLabel(1,"EM1",2);
00139 ZDC_Hot_Channel_Errors->setBinLabel(2,"EM2",2);
00140 ZDC_Hot_Channel_Errors->setBinLabel(3,"EM3",2);
00141 ZDC_Hot_Channel_Errors->setBinLabel(4,"EM4",2);
00142 ZDC_Hot_Channel_Errors->setBinLabel(5,"EM5",2);
00143 ZDC_Hot_Channel_Errors->setBinLabel(6,"HAD1",2);
00144 ZDC_Hot_Channel_Errors->setBinLabel(7,"HAD2",2);
00145 ZDC_Hot_Channel_Errors->setBinLabel(8,"HAD3",2);
00146 ZDC_Hot_Channel_Errors->setBinLabel(9,"HAD4",2);
00147 ZDC_Hot_Channel_Errors->getTH2F()->SetOption("coltext");
00148
00149
00150 ZDC_HotChannelErrorsVsLS=dbe_->book1D("ZDC_HotChannelErrorsVsLS","Total Number of Hot Channel Errors in the ZDCs vs. Lumi Section; LS; # Hot channels", NLumiBlocks_,0,NLumiBlocks_);
00151
00152
00153
00159
00160 dbe_->setCurrentFolder(subdir_ + "Errors/DeadChannel");
00161 ZDC_Dead_Channel_Errors = dbe_->book2D("ZDC_Dead_Channel_Errors", "Raw Number of Times Each Channel Appeared Dead", 2, 0, 2, 9, 0, 9);
00162 ZDC_Dead_Channel_Errors->setBinLabel(1,"ZDC+",1);
00163 ZDC_Dead_Channel_Errors->setBinLabel(2,"ZDC-",1);
00164 ZDC_Dead_Channel_Errors->setBinLabel(1,"EM1",2);
00165 ZDC_Dead_Channel_Errors->setBinLabel(2,"EM2",2);
00166 ZDC_Dead_Channel_Errors->setBinLabel(3,"EM3",2);
00167 ZDC_Dead_Channel_Errors->setBinLabel(4,"EM4",2);
00168 ZDC_Dead_Channel_Errors->setBinLabel(5,"EM5",2);
00169 ZDC_Dead_Channel_Errors->setBinLabel(6,"HAD1",2);
00170 ZDC_Dead_Channel_Errors->setBinLabel(7,"HAD2",2);
00171 ZDC_Dead_Channel_Errors->setBinLabel(8,"HAD3",2);
00172 ZDC_Dead_Channel_Errors->setBinLabel(9,"HAD4",2);
00173 ZDC_Dead_Channel_Errors->getTH2F()->SetOption("coltext");
00174
00175 ZDC_DeadChannelErrorsVsLS=dbe_->book1D("ZDC_DeadChannelErrorsVsLS","Total Number of Dead Channel Errors in the ZDC vs. Lumi Section; LS; # of Dead Chanels", NLumiBlocks_, 0, NLumiBlocks_);
00176
00177
00183
00184 dbe_->setCurrentFolder(subdir_ + "Errors/ColdChannel");
00185 ZDC_Cold_Channel_Errors = dbe_->book2D("ZDC_Cold_Channel_Errors", "Raw Number of Times Each Channel Appeared Cold", 2, 0, 2, 9, 0, 9);
00186 ZDC_Cold_Channel_Errors->setBinLabel(1,"ZDC+",1);
00187 ZDC_Cold_Channel_Errors->setBinLabel(2,"ZDC-",1);
00188 ZDC_Cold_Channel_Errors->setBinLabel(1,"EM1",2);
00189 ZDC_Cold_Channel_Errors->setBinLabel(2,"EM2",2);
00190 ZDC_Cold_Channel_Errors->setBinLabel(3,"EM3",2);
00191 ZDC_Cold_Channel_Errors->setBinLabel(4,"EM4",2);
00192 ZDC_Cold_Channel_Errors->setBinLabel(5,"EM5",2);
00193 ZDC_Cold_Channel_Errors->setBinLabel(6,"HAD1",2);
00194 ZDC_Cold_Channel_Errors->setBinLabel(7,"HAD2",2);
00195 ZDC_Cold_Channel_Errors->setBinLabel(8,"HAD3",2);
00196 ZDC_Cold_Channel_Errors->setBinLabel(9,"HAD4",2);
00197 ZDC_Cold_Channel_Errors->getTH2F()->SetOption("coltext");
00198
00199 ZDC_ColdChannelErrorsVsLS=dbe_->book1D("ZDC_ColdChannelErrorsVsLS","Total Number of Cold Channels in the ZDC vs. Lumi Section; LS; # of Cold Chanels", NLumiBlocks_, 0, NLumiBlocks_);
00200
00201
00202
00203
00209
00210
00211 dbe_->setCurrentFolder(subdir_ + "Errors");
00212 ZDC_TotalChannelErrors = dbe_->book2D("ZDC_TotalChannelErrors","Total Number of Errors(Digi Error, Hot Cell or Dead Cell) Per Channel in the ZDC" ,2,0,2,9,0,9);
00213 ZDC_TotalChannelErrors->setBinLabel(1,"ZDC+",1);
00214 ZDC_TotalChannelErrors->setBinLabel(2,"ZDC-",1);
00215 ZDC_TotalChannelErrors->setBinLabel(1,"EM1",2);
00216 ZDC_TotalChannelErrors->setBinLabel(2,"EM2",2);
00217 ZDC_TotalChannelErrors->setBinLabel(3,"EM3",2);
00218 ZDC_TotalChannelErrors->setBinLabel(4,"EM4",2);
00219 ZDC_TotalChannelErrors->setBinLabel(5,"EM5",2);
00220 ZDC_TotalChannelErrors->setBinLabel(6,"HAD1",2);
00221 ZDC_TotalChannelErrors->setBinLabel(7,"HAD2",2);
00222 ZDC_TotalChannelErrors->setBinLabel(8,"HAD3",2);
00223 ZDC_TotalChannelErrors->setBinLabel(9,"HAD4",2);
00224 ZDC_TotalChannelErrors->getTH2F()->SetOption("coltext");
00225
00231
00232 dbe_->setCurrentFolder(subdir_);
00233 h_2D_charge = dbe_->book2D("2D_DigiCharge", "Digi Charge (fC)", 2, 0, 2, 9, 0, 9);
00234 h_2D_charge->setBinLabel(1,"ZDC+",1);
00235 h_2D_charge->setBinLabel(2,"ZDC-",1);
00236 h_2D_charge->setBinLabel(1,"EM1",2);
00237 h_2D_charge->setBinLabel(2,"EM2",2);
00238 h_2D_charge->setBinLabel(3,"EM3",2);
00239 h_2D_charge->setBinLabel(4,"EM4",2);
00240 h_2D_charge->setBinLabel(5,"EM5",2);
00241 h_2D_charge->setBinLabel(6,"HAD1",2);
00242 h_2D_charge->setBinLabel(7,"HAD2",2);
00243 h_2D_charge->setBinLabel(8,"HAD3",2);
00244 h_2D_charge->setBinLabel(9,"HAD4",2);
00245
00246 h_2D_TSMean = dbe_->book2D("2D_DigiTiming", "Digi Timing", 2, 0, 2, 9, 0, 9);
00247 h_2D_TSMean->setBinLabel(1,"ZDC+",1);
00248 h_2D_TSMean->setBinLabel(2,"ZDC-",1);
00249 h_2D_TSMean->setBinLabel(1,"EM1",2);
00250 h_2D_TSMean->setBinLabel(2,"EM2",2);
00251 h_2D_TSMean->setBinLabel(3,"EM3",2);
00252 h_2D_TSMean->setBinLabel(4,"EM4",2);
00253 h_2D_TSMean->setBinLabel(5,"EM5",2);
00254 h_2D_TSMean->setBinLabel(6,"HAD1",2);
00255 h_2D_TSMean->setBinLabel(7,"HAD2",2);
00256 h_2D_TSMean->setBinLabel(8,"HAD3",2);
00257 h_2D_TSMean->setBinLabel(9,"HAD4",2);
00258
00259 h_2D_RecHitEnergy = dbe_->book2D("2D_RecHitEnergy", "Rechit Energy", 2, 0, 2, 9, 0, 9);
00260 h_2D_RecHitEnergy->setBinLabel(1,"ZDC+",1);
00261 h_2D_RecHitEnergy->setBinLabel(2,"ZDC-",1);
00262 h_2D_RecHitEnergy->setBinLabel(1,"EM1",2);
00263 h_2D_RecHitEnergy->setBinLabel(2,"EM2",2);
00264 h_2D_RecHitEnergy->setBinLabel(3,"EM3",2);
00265 h_2D_RecHitEnergy->setBinLabel(4,"EM4",2);
00266 h_2D_RecHitEnergy->setBinLabel(5,"EM5",2);
00267 h_2D_RecHitEnergy->setBinLabel(6,"HAD1",2);
00268 h_2D_RecHitEnergy->setBinLabel(7,"HAD2",2);
00269 h_2D_RecHitEnergy->setBinLabel(8,"HAD3",2);
00270 h_2D_RecHitEnergy->setBinLabel(9,"HAD4",2);
00271
00272 h_2D_RecHitTime = dbe_->book2D("2D_RecHitTime", "Rechit Timing", 2, 0, 2, 9, 0, 9);
00273 h_2D_RecHitTime->setBinLabel(1,"ZDC+",1);
00274 h_2D_RecHitTime->setBinLabel(2,"ZDC-",1);
00275 h_2D_RecHitTime->setBinLabel(1,"EM1",2);
00276 h_2D_RecHitTime->setBinLabel(2,"EM2",2);
00277 h_2D_RecHitTime->setBinLabel(3,"EM3",2);
00278 h_2D_RecHitTime->setBinLabel(4,"EM4",2);
00279 h_2D_RecHitTime->setBinLabel(5,"EM5",2);
00280 h_2D_RecHitTime->setBinLabel(6,"HAD1",2);
00281 h_2D_RecHitTime->setBinLabel(7,"HAD2",2);
00282 h_2D_RecHitTime->setBinLabel(8,"HAD3",2);
00283 h_2D_RecHitTime->setBinLabel(9,"HAD4",2);
00284
00285 h_2D_saturation = dbe_->book2D("h_2D_QIE", "Saturation Check", 2, 0, 2, 9, 0, 9);
00286 h_2D_saturation->setBinLabel(1,"ZDC+",1);
00287 h_2D_saturation->setBinLabel(2,"ZDC-",1);
00288 h_2D_saturation->setBinLabel(1,"EM1",2);
00289 h_2D_saturation->setBinLabel(2,"EM2",2);
00290 h_2D_saturation->setBinLabel(3,"EM3",2);
00291 h_2D_saturation->setBinLabel(4,"EM4",2);
00292 h_2D_saturation->setBinLabel(5,"EM5",2);
00293 h_2D_saturation->setBinLabel(6,"HAD1",2);
00294 h_2D_saturation->setBinLabel(7,"HAD2",2);
00295 h_2D_saturation->setBinLabel(8,"HAD3",2);
00296 h_2D_saturation->setBinLabel(9,"HAD4",2);
00297
00298 dbe_->setCurrentFolder(subdir_ + "Digis");
00299
00300 for (int i = 0; i < 5; ++i) {
00301
00302 sprintf(title, "h_ZDCP_EMChan_%i_Pulse", i + 1);
00303 sprintf(name, "ZDC Plus EM Section Pulse for channel %i", i + 1);
00304 h_ZDCP_EM_Pulse[i]= dbe_->book1D(title, name, 10, -0.5, 9.5);
00305 h_ZDCP_EM_Pulse[i]->setAxisTitle("Time Slice id",1);
00306 h_ZDCP_EM_Pulse[i]->setAxisTitle("Pulse Height",2);
00307
00308 sprintf(title, "h_ZDCM_EMChan_%i_Pulse", i + 1);
00309 sprintf(name, "ZDC Minus EM Section Pulse for channel %i", i + 1);
00310 h_ZDCM_EM_Pulse[i] = dbe_->book1D(title, name, 10, -0.5, 9.5);
00311 h_ZDCM_EM_Pulse[i]->setAxisTitle("Time Slice id",1);
00312 h_ZDCM_EM_Pulse[i]->setAxisTitle("Pulse Height",2);
00313
00314 sprintf(title, "h_ZDCP_EMChan_%i_Charge", i + 1);
00315 sprintf(name, "ZDC Plus EM Section Charge for channel %i", i + 1);
00316 h_ZDCP_EM_Charge[i] = dbe_->book1D(title, name, 1000, 0., 30000.);
00317 h_ZDCP_EM_Charge[i]->setAxisTitle("Charge (fC)",1);
00318 h_ZDCP_EM_Charge[i]->setAxisTitle("Events",2);
00319
00320 sprintf(title, "h_ZDCM_EMChan_%i_Charge", i + 1);
00321 sprintf(name, "ZDC Minus EM Section Charge for channel %i", i + 1);
00322 h_ZDCM_EM_Charge[i] = dbe_->book1D(title, name, 1000, 0., 30000.);
00323 h_ZDCM_EM_Charge[i]->setAxisTitle("Charge (fC)",1);
00324 h_ZDCM_EM_Charge[i]->setAxisTitle("Events",2);
00325
00326 sprintf(title, "h_ZDCP_EMChan_%i_TSMean", i + 1);
00327 sprintf(name, "ZDC Plus EM Section TSMean for channel %i", i + 1);
00328 h_ZDCP_EM_TSMean[i] = dbe_->book1D(title, name, 100, -0.5, 9.5);
00329 h_ZDCP_EM_TSMean[i]->setAxisTitle("Timing",1);
00330 h_ZDCP_EM_TSMean[i]->setAxisTitle("Events",2);
00331
00332 sprintf(title, "h_ZDCM_EMChan_%i_TSMean", i + 1);
00333 sprintf(name, "ZDC Minus EM Section TSMean for channel %i", i + 1);
00334 h_ZDCM_EM_TSMean[i] = dbe_->book1D(title, name, 100, -0.5, 9.5);
00335 h_ZDCM_EM_TSMean[i]->setAxisTitle("Timing",1);
00336 h_ZDCM_EM_TSMean[i]->setAxisTitle("Events",2);
00337 }
00338
00339 for (int i = 0; i < 4; ++i) {
00340
00341 sprintf(title, "h_ZDCP_HADChan_%i_Pulse", i + 1);
00342 sprintf(name, "ZDC Plus HAD Section Pulse for channel %i", i + 1);
00343 h_ZDCP_HAD_Pulse[i] = dbe_->book1D(title, name, 10, -0.5, 9.5);
00344 h_ZDCP_HAD_Pulse[i]->setAxisTitle("Time Slice id",1);
00345 h_ZDCP_HAD_Pulse[i]->setAxisTitle("Pulse Height",2);
00346
00347 sprintf(title, "h_ZDCM_HADChan_%i_Pulse", i + 1);
00348 sprintf(name, "ZDC Minus HAD Section Pulse for channel %i", i + 1);
00349 h_ZDCM_HAD_Pulse[i] = dbe_->book1D(title, name, 10, -0.5, 9.5);
00350 h_ZDCP_HAD_Pulse[i]->setAxisTitle("Time Slice id",1);
00351 h_ZDCP_HAD_Pulse[i]->setAxisTitle("Pulse Height",2);
00352
00353 sprintf(title, "h_ZDCP_HADChan_%i_Charge", i + 1);
00354 sprintf(name, "ZDC Plus HAD Section Charge for channel %i", i + 1);
00355 h_ZDCP_HAD_Charge[i] = dbe_->book1D(title, name, 1000, 0., 30000.);
00356 h_ZDCP_HAD_Charge[i]->setAxisTitle("Charge (fC)",1);
00357 h_ZDCP_HAD_Charge[i]->setAxisTitle("Events",2);
00358
00359 sprintf(title, "h_ZDCM_HADChan_%i_Charge", i + 1);
00360 sprintf(name, "ZDC Minus HAD Section Charge for channel %i", i + 1);
00361 h_ZDCM_HAD_Charge[i] = dbe_->book1D(title, name, 1000, 0., 30000.);
00362 h_ZDCM_HAD_Charge[i]->setAxisTitle("Charge (fC)",1);
00363 h_ZDCM_HAD_Charge[i]->setAxisTitle("Events",2);
00364
00365 sprintf(title, "h_ZDCP_HADChan_%i_TSMean", i + 1);
00366 sprintf(name, "ZDC Plus HAD Section TSMean for channel %i", i + 1);
00367 h_ZDCP_HAD_TSMean[i] = dbe_->book1D(title, name, 100, -0.5, 9.5);
00368 h_ZDCP_HAD_TSMean[i]->setAxisTitle("Timing",1);
00369 h_ZDCP_HAD_TSMean[i]->setAxisTitle("Events",2);
00370
00371 sprintf(title, "h_ZDCM_HADChan_%i_TSMean", i + 1);
00372 sprintf(name, "ZDC Minus HAD Section TSMean for channel %i", i + 1);
00373 h_ZDCM_HAD_TSMean[i] = dbe_->book1D(title, name, 100, -0.5, 9.5);
00374 h_ZDCM_HAD_TSMean[i]->setAxisTitle("Timing",1);
00375 h_ZDCM_HAD_TSMean[i]->setAxisTitle("Events",2);
00376 }
00377
00378 dbe_->setCurrentFolder(subdir_ + "RecHits");
00379 for (int i = 0; i < 5; ++i) {
00380
00381 sprintf(title,"h_ZDCP_EMChan_%i_RecHit_Energy",i+1);
00382 sprintf(name,"ZDC EM Section Rechit Energy for channel %i",i+1);
00383 h_ZDCP_EM_RecHitEnergy[i] = dbe_->book1D(title, name, 1010, -100., 10000.);
00384 h_ZDCP_EM_RecHitEnergy[i]->setAxisTitle("Energy (GeV)",1);
00385 h_ZDCP_EM_RecHitEnergy[i]->setAxisTitle("Events",2);
00386
00387 sprintf(title,"h_ZDCM_EMChan_%i_RecHit_Energy",i+1);
00388 sprintf(name,"ZDC EM Section Rechit Energy for channel %i",i+1);
00389 h_ZDCM_EM_RecHitEnergy[i] = dbe_->book1D(title, name, 1010, -100., 10000.);
00390 h_ZDCM_EM_RecHitEnergy[i]->setAxisTitle("Energy (GeV)",1);
00391 h_ZDCM_EM_RecHitEnergy[i]->setAxisTitle("Events",2);
00392
00393 sprintf(title,"h_ZDCP_EMChan_%i_RecHit_Timing",i+1);
00394 sprintf(name,"ZDC EM Section Rechit Timing for channel %i",i+1);
00395 h_ZDCP_EM_RecHitTiming[i] = dbe_->book1D(title, name, 100, -100., 100.);
00396 h_ZDCP_EM_RecHitTiming[i]->setAxisTitle("RecHit Time",1);
00397 h_ZDCP_EM_RecHitTiming[i]->setAxisTitle("Events",2);
00398
00399 sprintf(title,"h_ZDCM_EMChan_%i_RecHit_Timing",i+1);
00400 sprintf(name,"ZDC EM Section Rechit Timing for channel %i",i+1);
00401 h_ZDCM_EM_RecHitTiming[i] = dbe_->book1D(title, name, 100, -100., 100.);
00402 h_ZDCM_EM_RecHitTiming[i]->setAxisTitle("RecHit Time",1);
00403 h_ZDCM_EM_RecHitTiming[i]->setAxisTitle("Events",2);
00404 }
00405
00406 for (int i = 0; i < 4; ++i) {
00407
00408 sprintf(title,"h_ZDCP_HADChan_%i_RecHit_Energy",i+1);
00409 sprintf(name,"ZDC HAD Section Rechit Energy for channel %i",i+1);
00410 h_ZDCP_HAD_RecHitEnergy[i] = dbe_->book1D(title, name, 1010, -100., 10000.);
00411 h_ZDCP_HAD_RecHitEnergy[i]->setAxisTitle("Energy (GeV)",1);
00412 h_ZDCP_HAD_RecHitEnergy[i]->setAxisTitle("Events",2);
00413
00414 sprintf(title,"h_ZDCM_HADChan_%i_RecHit_Energy",i+1);
00415 sprintf(name,"ZDC HAD Section Rechit Energy for channel %i",i+1);
00416 h_ZDCM_HAD_RecHitEnergy[i] = dbe_->book1D(title, name, 1010, -100., 10000.);
00417 h_ZDCM_HAD_RecHitEnergy[i]->setAxisTitle("Energy (GeV)",1);
00418 h_ZDCM_HAD_RecHitEnergy[i]->setAxisTitle("Events",2);
00419
00420 sprintf(title,"h_ZDCP_HADChan_%i_RecHit_Timing",i+1);
00421 sprintf(name,"ZDC HAD Section Rechit Timing for channel %i",i+1);
00422 h_ZDCP_HAD_RecHitTiming[i] = dbe_->book1D(title, name, 100, -100., 100.);
00423 h_ZDCP_HAD_RecHitTiming[i]->setAxisTitle("RecHit Time",1);
00424 h_ZDCP_HAD_RecHitTiming[i]->setAxisTitle("Events",2);
00425
00426 sprintf(title,"h_ZDCM_HADChan_%i_RecHit_Timing",i+1);
00427 sprintf(name,"ZDC HAD Section Rechit Timing for channel %i",i+1);
00428 h_ZDCM_HAD_RecHitTiming[i] = dbe_->book1D(title, name, 100, -100., 100.);
00429 h_ZDCM_HAD_RecHitTiming[i]->setAxisTitle("RecHit Time",1);
00430 h_ZDCM_HAD_RecHitTiming[i]->setAxisTitle("Events",2);
00431 }
00432 }
00433 return;
00434 }
00435
00436
00437 void HcalZDCMonitor::beginRun(const edm::Run& run, const edm::EventSetup& c)
00438 {
00439 HcalBaseDQMonitor::beginRun(run, c);
00440 if (tevt_==0) this->setup();
00441
00442 for (int i=0;i<18;++i)
00443 {
00444 ColdChannelCounter[i]=0;
00445 DeadChannelCounter[i]=0;
00446 }
00447
00448 EventCounter=0;
00449
00450 }
00451
00452 void HcalZDCMonitor::endRun(const edm::Run& run, const edm::EventSetup& c)
00453 {
00454 for(int i=0;i<18;++i)
00455 {
00456 ZDC_Cold_Channel_Errors->Fill(i/9,i%9,ColdChannelCounter[i]);
00457 ZDC_Dead_Channel_Errors->Fill(i/9,i%9,DeadChannelCounter[i]);
00458 ZDC_TotalChannelErrors->Fill(i/9,i%9,ColdChannelCounter[i]);
00459 ZDC_TotalChannelErrors->Fill(i/9,i%9,DeadChannelCounter[i]);
00460 }
00461 HcalBaseDQMonitor::endRun(run, c);
00462 }
00463
00464 void HcalZDCMonitor::analyze(const edm::Event& e, const edm::EventSetup& c)
00465 {
00466 if (!IsAllowedCalibType()) return;
00467 if (LumiInOrder(e.luminosityBlock())==false) return;
00468 HcalBaseDQMonitor::analyze(e,c);
00469
00470 edm::Handle<ZDCDigiCollection> zdcdigis;
00471 e.getByLabel(digiLabel_,zdcdigis);
00472 edm::Handle<ZDCRecHitCollection> zdcrechits;
00473 e.getByLabel(rechitLabel_,zdcrechits);
00474 edm::Handle<HcalUnpackerReport> report;
00475 e.getByLabel(digiLabel_,report);
00476 processEvent(*zdcdigis, *zdcrechits, *report);
00477 }
00478
00479 void HcalZDCMonitor::beginLuminosityBlock(const edm::LuminosityBlock& e, const edm::EventSetup& c)
00480 {
00481 HcalBaseDQMonitor::beginLuminosityBlock(e,c);
00482
00483
00484
00485
00486 EventCounter=0;
00487 for (int i=0;i<18;++i)
00488 {
00489 ChannelRatio[i]=0.;
00490 TotalChannelErrors[i]=0;
00491 }
00492
00493 }
00494
00495
00496
00497 void HcalZDCMonitor::processEvent(const ZDCDigiCollection& digi, const ZDCRecHitCollection& rechit, const HcalUnpackerReport& report) {
00498
00499 meEVT_->Fill(ievt_);
00500
00501
00502
00503
00504 double fSum = 0.;
00505 std::vector<double> fData;
00506 double digiThresh = 99.5;
00507
00508 int digiSaturation = 127;
00509
00510
00511
00512 if (digi.size()>0)
00513 {
00514 ZDC_Digi_Errors->Fill(-1,-1,1);
00515 ZDC_Hot_Channel_Errors->Fill(-1,-1,1);
00516 ZDC_TotalChannelErrors->Fill(-1,-1,1);
00517 ZDC_Cold_Channel_Errors->Fill(-1,-1,1);
00518 ZDC_Dead_Channel_Errors->Fill(-1,-1,1);
00519 EventCounter+=1;
00520 }
00521 for (int i=0;i<18;++i)
00522 {
00523 ChannelHasDigiError[i]=false;
00524 DigiErrorDVER[i]=false;
00525 DigiErrorCAPID[i]=false;
00526 HotChannelError[i]=false;
00527 DeadChannelError[i]=true;
00528 }
00529
00530
00531 typedef std::vector<DetId> DetIdVector;
00532
00533 for (DetIdVector::const_iterator baddigi_iter=report.bad_quality_begin();
00534 baddigi_iter != report.bad_quality_end();
00535 ++baddigi_iter)
00536 {
00537 DetId id(baddigi_iter->rawId());
00538 if (id.det()==DetId::Calo && id.subdetId()==HcalZDCDetId::SubdetectorId)
00539
00540
00541 {
00542
00543 HcalZDCDetId id(baddigi_iter->rawId());
00544 int iSide = id.zside();
00545 int iSection = id.section();
00546 int iChannel = id.channel();
00547 if(iSection==1 || iSection==2){
00548 ChannelHasDigiError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
00549 DeadChannelError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=false;
00550
00551 }
00552 }
00553 else continue;
00554
00555 }
00556
00557
00558
00559
00560
00561
00562
00563
00564 for (ZDCDigiCollection::const_iterator digi_iter = digi.begin();
00565 digi_iter != digi.end(); ++digi_iter)
00566 {
00567 const ZDCDataFrame digi = (const ZDCDataFrame) (*digi_iter);
00568
00569 int iSide = digi_iter->id().zside();
00570 int iSection = digi_iter->id().section();
00571 int iChannel = digi_iter->id().channel();
00572
00573 unsigned int fTS = digi_iter->size();
00574 while (fData.size()<fTS)
00575 fData.push_back(-999);
00576 while (fData.size()>fTS)
00577 fData.pop_back();
00578
00579 if (iSection==1 || iSection==2)
00580 {
00581
00583
00586 DeadChannelError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=false;
00588
00589 int iCapID=27;
00590 int iCapIDPrevious=27;
00591 int HotCounter=0;
00592 int ColdCounter=0;
00593
00594 for (int iTS=0; iTS<digi.size(); ++iTS)
00595 {
00597 if (digi[iTS].adc()==127) HotCounter+=1;
00598 else HotCounter=0;
00599 if (HotCounter >= 3) HotChannelError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
00601
00602
00604 if (digi[iTS].adc()<=10) ColdCounter+=1;
00605 if (ColdCounter==10)
00606 {
00607 ColdChannelCounter[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]+=1;
00608 }
00610
00611
00614 if ((ChannelHasDigiError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=false))
00615 {
00616 iCapID=digi.sample(iTS).capid();
00617 if (iTS>0) iCapIDPrevious=digi.sample(iTS-1).capid();
00618
00619 if (digi.sample(iTS).dv()==0 || digi.sample(iTS).er()==1)
00620 {
00621 ChannelHasDigiError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
00622 DigiErrorDVER[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
00623 break;
00624 }
00625 else
00626 {
00627 if (iTS==0) continue;
00628 else
00629 {
00630 if ((iCapID-iCapIDPrevious+4)%4!=1)
00631 {
00632 ChannelHasDigiError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
00633 DigiErrorCAPID[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
00634 break;
00635 }
00636 }
00637 }
00638 }
00639 }
00640
00642
00643
00644
00645
00646 fSum = 0.;
00647 bool saturated = false;
00648 for (unsigned int i = 0; i < fTS; ++i)
00649 {
00650
00651 fData[i]=digi[i].nominal_fC();
00652 if (digi[i].adc()==digiSaturation){
00653 saturated=true;
00654 }
00655 }
00656
00657 double fTSMean = 0;
00658 if (fData.size()>6)
00659 fTSMean = getTime(fData, 4, 6, fSum);
00660
00661 if (saturated==true){
00662 h_2D_saturation->Fill(iSide==1?0:1,iSection==1?iChannel-1:iChannel+4,1);
00663 }
00664
00665 if (iSection == 1)
00666 {
00667 if (iSide == 1) {
00668 for (unsigned int i = 0; i < fTS; ++i) {
00669 if (fData[i] > digiThresh) h_ZDCP_EM_Pulse[iChannel - 1]->Fill(i, fData[i]);
00670 }
00671 if (fSum > digiThresh) {
00672 h_ZDCP_EM_Charge[iChannel - 1]->Fill(fSum);
00673 h_ZDCP_EM_TSMean[iChannel - 1]->Fill(fTSMean);
00674
00675 }
00676 }
00677 if (iSide == -1) {
00678 for (unsigned int i = 0; i < fTS; ++i) {
00679 if (fData[i] > digiThresh) h_ZDCM_EM_Pulse[iChannel - 1]->Fill(i, fData[i]);
00680 }
00681 if (fSum > digiThresh) {
00682 h_ZDCM_EM_Charge[iChannel - 1]->Fill(fSum);
00683 h_ZDCM_EM_TSMean[iChannel - 1]->Fill(fTSMean);
00684 }
00685 }
00686 }
00687
00688 else if (iSection == 2)
00689 {
00690 if (iSide == 1) {
00691 for (unsigned int i = 0; i < fTS; ++i) {
00692 if (fData[i] > digiThresh) h_ZDCP_HAD_Pulse[iChannel - 1]->Fill(i, fData[i]);
00693 }
00694 if (fSum > digiThresh) {
00695 h_ZDCP_HAD_Charge[iChannel - 1]->Fill(fSum);
00696 h_ZDCP_HAD_TSMean[iChannel - 1]->Fill(fTSMean);
00697 }
00698 }
00699 if (iSide == -1) {
00700 for (unsigned int i = 0; i < fTS; ++i) {
00701 if (fData[i] > digiThresh) h_ZDCM_HAD_Pulse[iChannel - 1]->Fill(i, fData[i]);
00702 }
00703 if (fSum > digiThresh) {
00704 h_ZDCM_HAD_Charge[iChannel - 1]->Fill(fSum);
00705 h_ZDCM_HAD_TSMean[iChannel - 1]->Fill(fTSMean);
00706 }
00707 }
00708 }
00709 }
00710 }
00711
00712
00713
00715
00717 int numdigierrors=0;
00718 int numhoterrors=0;
00719
00720 for (int i = 0; i<18; i++){
00721 if (ChannelHasDigiError[i]==true)
00722 {
00723 ++numdigierrors;
00724 ZDC_Digi_Errors->Fill(i/9,i%9,1);
00725 }
00726 if (DigiErrorDVER[i]==true)
00727 {
00728 ZDC_DigiErrors_DVER->Fill(i/9,i%9,1);
00729 }
00730 if (DigiErrorCAPID[i]==true)
00731 {
00732 ZDC_DigiErrors_CAPID->Fill(i/9,i%9,1);
00733 }
00734 if(HotChannelError[i]==true)
00735 {
00736 ++numhoterrors;
00737 ZDC_Hot_Channel_Errors->Fill(i/9,(i%9),1);
00738 }
00739 if(DeadChannelError[i]==true)
00740 {
00741 DeadChannelCounter[i]+=1;
00742 }
00743
00744 if (ChannelHasDigiError[i] || HotChannelError[i])
00745 {
00746 ZDC_TotalChannelErrors->Fill(i/9,i%9,1);
00747 TotalChannelErrors[i]+=1;
00748 }
00749 }
00750
00751
00752 if (numdigierrors>0)
00753 ZDC_DigiErrorsVsLS->Fill(currentLS,numdigierrors);
00754 if (numhoterrors>0)
00755 ZDC_HotChannelErrorsVsLS->Fill(currentLS,numhoterrors);
00757
00759
00760
00761
00762
00763 for (ZDCRecHitCollection::const_iterator rechit_iter = rechit.begin();
00764 rechit_iter != rechit.end(); ++rechit_iter)
00765 {
00766 HcalZDCDetId id(rechit_iter->id());
00767 int Side = (rechit_iter->id()).zside();
00768 int Section = (rechit_iter->id()).section();
00769 int Channel = (rechit_iter->id()).channel();
00770
00771
00772 if(Section==1)
00773 {
00774 if (Side ==1 ){
00775 h_ZDCP_EM_RecHitEnergy[Channel-1]->Fill(rechit_iter->energy());
00776 h_ZDCP_EM_RecHitTiming[Channel-1]->Fill(rechit_iter->time());
00777 }
00778 if (Side == -1 ){
00779 h_ZDCM_EM_RecHitEnergy[Channel-1]->Fill(rechit_iter->energy());
00780 h_ZDCM_EM_RecHitTiming[Channel-1]->Fill(rechit_iter->time());
00781 }
00782 }
00783 else if(Section==2)
00784 {
00785 if (Side ==1 ){
00786 h_ZDCP_HAD_RecHitEnergy[Channel-1]->Fill(rechit_iter->energy());
00787 h_ZDCP_HAD_RecHitTiming[Channel-1]->Fill(rechit_iter->time());
00788 }
00789 if (Side == -1 ){
00790 h_ZDCM_HAD_RecHitEnergy[Channel-1]->Fill(rechit_iter->energy());
00791 h_ZDCM_HAD_RecHitTiming[Channel-1]->Fill(rechit_iter->time());
00792 }
00793 }
00794 }
00795
00796 }
00797
00798
00799
00800
00801
00802
00803
00804
00805
00806
00807
00808
00809
00810
00811
00812
00813
00814
00815
00816
00817
00818
00819
00820
00821
00822
00823
00824
00825
00826
00827
00828
00829
00830 double HcalZDCMonitor::getTime(std::vector<double>fData, unsigned int ts_min, unsigned int ts_max, double &fSum) {
00831 double weightedTime = 0.;
00832 double SumT = 0.;
00833 double Time = -999.;
00834 double digiThreshf = 99.5;
00835
00836 for (unsigned int ts=ts_min; ts<=ts_max; ++ts) {
00837 if (fData[ts] > digiThreshf){
00838 weightedTime += ts * fData[ts];
00839 SumT += fData[ts];
00840 }
00841 }
00842
00843 if (SumT > 0.) {
00844 Time = weightedTime / SumT;
00845 }
00846
00847 fSum = SumT;
00848
00849 return Time;
00850
00851 }
00852
00853
00854 void HcalZDCMonitor::endLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& c)
00855 {
00856
00857 bool HadLumiError[18]={false};
00858
00859 EventsVsLS->Fill(currentLS,EventCounter);
00860
00861 if(Online_ == false)
00862 {
00863 for (int i=0;i<18;++i)
00864 {
00865 ChannelRatio[i]=(TotalChannelErrors[i])*1./EventCounter;
00866 if (ChannelRatio[i] <= MaxErrorRates_[i])
00867 {
00868 if (i<9)
00869 {
00870 PZDC_QualityIndexVsLB_->Fill(currentLS,ChannelWeighting_[i]);
00871 }
00872 else
00873 {
00874 NZDC_QualityIndexVsLB_->Fill(currentLS,ChannelWeighting_[i]);
00875 }
00876 if (ColdChannelCounter[i] >= OfflineColdThreshold_)
00877 {
00878 ZDC_Cold_Channel_Errors->Fill(i/9,i%9,ColdChannelCounter[i]);
00879 ZDC_ColdChannelErrorsVsLS->Fill(currentLS,1);
00880 ZDC_TotalChannelErrors->Fill(i/9,i%9,ColdChannelCounter[i]);
00881 ColdChannelCounter[i]=0;
00882 HadLumiError[i]=true;
00883 }
00884 if (DeadChannelCounter[i] >= OfflineDeadThreshold_)
00885 {
00886 ZDC_Dead_Channel_Errors->Fill(i/9,i%9,DeadChannelCounter[i]);
00887 ZDC_DeadChannelErrorsVsLS->Fill(currentLS,1);
00888 ZDC_TotalChannelErrors->Fill(i/9,i%9,DeadChannelCounter[i]);
00889 DeadChannelCounter[i]=0;
00890 HadLumiError[i]=true;
00891 }
00892 if (HadLumiError[i]==true)
00893 {
00894 if (i<9)
00895 {
00896 PZDC_QualityIndexVsLB_->Fill(currentLS,(-1*ChannelWeighting_[i]));
00897 }
00898 else
00899 {
00900 NZDC_QualityIndexVsLB_->Fill(currentLS,(-1*ChannelWeighting_[i]));
00901 }
00902 }
00903 }
00904 else
00905 {
00906 if (ColdChannelCounter[i] > OfflineColdThreshold_)
00907 {
00908 ZDC_Cold_Channel_Errors->Fill(i/9,i%9,ColdChannelCounter[i]);
00909 ZDC_ColdChannelErrorsVsLS->Fill(currentLS,1);
00910 ZDC_TotalChannelErrors->Fill(i/9,i%9,ColdChannelCounter[i]);
00911 ColdChannelCounter[i]=0;
00912 }
00913 if (DeadChannelCounter[i] > OfflineDeadThreshold_)
00914 {
00915 ZDC_Dead_Channel_Errors->Fill(i/9,i%9,DeadChannelCounter[i]);
00916 ZDC_DeadChannelErrorsVsLS->Fill(currentLS,1);
00917 ZDC_TotalChannelErrors->Fill(i/9,i%9,DeadChannelCounter[i]);
00918 DeadChannelCounter[i]=0;
00919 }
00920 }
00921 }
00922 }
00923
00924 if(Online_ == true)
00925 {
00926 for (int i=0;i<18;++i)
00927 {
00928 ChannelRatio[i]=(TotalChannelErrors[i])*1./EventCounter;
00929 if (ChannelRatio[i] <= MaxErrorRates_[i])
00930 {
00931 if (i<9)
00932 {
00933 PZDC_QualityIndexVsLB_->Fill(currentLS,ChannelWeighting_[i]);
00934 }
00935 else
00936 {
00937 NZDC_QualityIndexVsLB_->Fill(currentLS,ChannelWeighting_[i]);
00938 }
00939 if (ColdChannelCounter[i] >= OnlineColdThreshold_)
00940 {
00941 ZDC_Cold_Channel_Errors->Fill(i/9,i%9,ColdChannelCounter[i]);
00942 ZDC_ColdChannelErrorsVsLS->Fill(currentLS,1);
00943 ZDC_TotalChannelErrors->Fill(i/9,i%9,ColdChannelCounter[i]);
00944 ColdChannelCounter[i]=0;
00945 HadLumiError[i]=true;
00946 }
00947 if (DeadChannelCounter[i] >= OnlineDeadThreshold_)
00948 {
00949 ZDC_Dead_Channel_Errors->Fill(i/9,i%9,DeadChannelCounter[i]);
00950 ZDC_DeadChannelErrorsVsLS->Fill(currentLS,1);
00951 ZDC_TotalChannelErrors->Fill(i/9,i%9,DeadChannelCounter[i]);
00952 DeadChannelCounter[i]=0;
00953 HadLumiError[i]=true;
00954 }
00955 if (HadLumiError[i]==true)
00956 {
00957 if (i<9)
00958 {
00959 PZDC_QualityIndexVsLB_->Fill(currentLS,(-1*ChannelWeighting_[i]));
00960 }
00961 else
00962 {
00963 NZDC_QualityIndexVsLB_->Fill(currentLS,(-1*ChannelWeighting_[i]));
00964 }
00965 }
00966 }
00967 else
00968 {
00969 if (ColdChannelCounter[i] > OnlineColdThreshold_)
00970 {
00971 ZDC_Cold_Channel_Errors->Fill(i/9,i%9,ColdChannelCounter[i]);
00972 ZDC_ColdChannelErrorsVsLS->Fill(currentLS,1);
00973 ZDC_TotalChannelErrors->Fill(i/9,i%9,ColdChannelCounter[i]);
00974 ColdChannelCounter[i]=0;
00975 }
00976 if (DeadChannelCounter[i] > OnlineDeadThreshold_)
00977 {
00978 ZDC_Dead_Channel_Errors->Fill(i/9,i%9,DeadChannelCounter[i]);
00979 ZDC_DeadChannelErrorsVsLS->Fill(currentLS,1);
00980 ZDC_TotalChannelErrors->Fill(i/9,i%9,DeadChannelCounter[i]);
00981 DeadChannelCounter[i]=0;
00982 }
00983 }
00984 }
00985 }
00986
00987
00988
00989
00990 if (dbe_==0)
00991 {
00992 return;
00993 }
00994 HcalBaseDQMonitor::endLuminosityBlock(lumiSeg, c);
00995
00996 for (int i = 0; i < 5; ++i) {
00997
00998 h_2D_charge->setBinContent(1, i + 1, h_ZDCP_EM_Charge[i]->getMean());
00999 h_2D_TSMean->setBinContent(1, i + 1, h_ZDCP_EM_TSMean[i]->getMean());
01000 h_2D_RecHitEnergy->setBinContent(1, i + 1, h_ZDCP_EM_RecHitEnergy[i]->getMean());
01001 h_2D_RecHitTime->setBinContent(1, i + 1, h_ZDCP_EM_RecHitTiming[i]->getMean());
01002
01003 h_2D_charge->setBinContent(2, i + 1, h_ZDCM_EM_Charge[i]->getMean());
01004 h_2D_TSMean->setBinContent(2, i + 1, h_ZDCM_EM_TSMean[i]->getMean());
01005 h_2D_RecHitEnergy->setBinContent(2, i + 1, h_ZDCM_EM_RecHitEnergy[i]->getMean());
01006 h_2D_RecHitTime->setBinContent(2, i + 1, h_ZDCM_EM_RecHitTiming[i]->getMean());
01007 }
01008 for (int i = 0; i < 4; ++i) {
01009
01010 h_2D_charge->setBinContent(1, i + 6, h_ZDCP_HAD_Charge[i]->getMean());
01011 h_2D_TSMean->setBinContent(1, i + 6, h_ZDCP_HAD_TSMean[i]->getMean());
01012 h_2D_RecHitEnergy->setBinContent(1, i + 6, h_ZDCP_HAD_RecHitEnergy[i]->getMean());
01013 h_2D_RecHitTime->setBinContent(1, i + 6, h_ZDCP_HAD_RecHitTiming[i]->getMean());
01014
01015
01016 h_2D_charge->setBinContent(2, i + 6, h_ZDCM_HAD_Charge[i]->getMean());
01017 h_2D_TSMean->setBinContent(2, i + 6, h_ZDCM_HAD_TSMean[i]->getMean());
01018 h_2D_RecHitEnergy->setBinContent(2, i + 6, h_ZDCM_HAD_RecHitEnergy[i]->getMean());
01019 h_2D_RecHitTime->setBinContent(2, i + 6, h_ZDCM_HAD_RecHitTiming[i]->getMean());
01020
01021
01022 }
01023 }
01024
01025
01026 DEFINE_FWK_MODULE(HcalZDCMonitor);