CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalZDCMonitor.cc
Go to the documentation of this file.
2 
3 // constructor
5  Online_ = ps.getUntrackedParameter<bool>("online",false);
6  mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns",false);
7  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup",false);
8  debug_ = ps.getUntrackedParameter<int>("debug",0);
9  prefixME_=ps.getUntrackedParameter<std::string>("subSystemFolder","Hcal/");
10  if (prefixME_.substr(prefixME_.size()-1, prefixME_.size())!="/")
11  prefixME_.append("/");
12  subdir_=ps.getUntrackedParameter<std::string>("TaskFolder","ZDCMonitor_Hcal/");
13  if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!="/")
14  subdir_.append("/");
15  subdir_=prefixME_+subdir_;
16 
17  rechitLabel_=ps.getParameter<edm::InputTag>("rechitLabel");
18  digiLabel_=ps.getParameter<edm::InputTag>("digiLabel");
19  AllowedCalibTypes_ = ps.getUntrackedParameter<std::vector<int> > ("AllowedCalibTypes");
20  skipOutOfOrderLS_ = ps.getUntrackedParameter<bool>("skipOutOfOrderLS",true);
21  NLumiBlocks_ = ps.getUntrackedParameter<int>("NLumiBlocks",4000);
22  makeDiagnostics_ = ps.getUntrackedParameter<bool>("makeDiagnostics",false);
23  OnlineColdThreshold_ = ps.getUntrackedParameter<int>("ZDC_OnlineColdThreshold");
24  OnlineDeadThreshold_ = ps.getUntrackedParameter<int>("ZDC_OnlineDeadThreshold");
25  OfflineColdThreshold_ = ps.getUntrackedParameter<int>("ZDC_OfflineColdThreshold");
26  OfflineDeadThreshold_ = ps.getUntrackedParameter<int>("ZDC_OfflineDeadThreshold");
27  ColdADCThreshold_ = ps.getUntrackedParameter<int>("ZDC_ColdADCThreshold");
28  ChannelWeighting_ = ps.getUntrackedParameter<std::vector<double>> ("ZDC_ChannelWeighting");
29  MaxErrorRates_ = ps.getUntrackedParameter<std::vector<double>> ("ZDC_AcceptableChannelErrorRates");
30 }
31 
32 //destructor
34 }
35 
37 }
38 
39 
41  debug_=0;
42 
44 
45 
46  // Set initial event # to 0
47  ievt_ = 0;
48 
49  //Histograms
50  if (dbe_) {
52  meEVT_ = dbe_->bookInt("ZDC Event Number");
53  meEVT_->Fill(ievt_);
54  char name[128];
55  char title[128];
56 
57  // Add histograms of your choice
58 
59 
64  PZDC_QualityIndexVsLB_ = dbe_->book1D("PZDC_QualityIndexVSLB","Quality Index for the ZDC+ vs LS; LS; Quality Index", NLumiBlocks_,0,NLumiBlocks_);
65  NZDC_QualityIndexVsLB_ = dbe_->book1D("NZDC_QualityIndexVSLB","Quality Index for the ZDC- vs LS; LS; Quality Index", NLumiBlocks_,0,NLumiBlocks_);
66  EventsVsLS = dbe_->book1D("EventsVsLS", "Total Number of Events per LS; LS; # of Events", NLumiBlocks_,0,NLumiBlocks_);
67 
68 
69 
75 
76  dbe_->setCurrentFolder(subdir_ + "Errors/Digis");
77  ZDC_Digi_Errors = dbe_->book2D("ZDC_Digi_Errors", "Raw Number of Digi Errors Per ZDC Channel", 2, 0, 2, 9, 0, 9);
78  ZDC_Digi_Errors->setBinLabel(1,"ZDC+",1);
79  ZDC_Digi_Errors->setBinLabel(2,"ZDC-",1);
80  ZDC_Digi_Errors->setBinLabel(1,"EM1",2);
81  ZDC_Digi_Errors->setBinLabel(2,"EM2",2);
82  ZDC_Digi_Errors->setBinLabel(3,"EM3",2);
83  ZDC_Digi_Errors->setBinLabel(4,"EM4",2);
84  ZDC_Digi_Errors->setBinLabel(5,"EM5",2);
85  ZDC_Digi_Errors->setBinLabel(6,"HAD1",2);
86  ZDC_Digi_Errors->setBinLabel(7,"HAD2",2);
87  ZDC_Digi_Errors->setBinLabel(8,"HAD3",2);
88  ZDC_Digi_Errors->setBinLabel(9,"HAD4",2);
89  ZDC_Digi_Errors->getTH2F()->SetOption("coltext");
90 
91 
92  ZDC_DigiErrorsVsLS=dbe_->book1D("ZDC_DigiErrorsVsLS","Total Number of (Digi) Errors found in the ZDCs vs. Lumi Section;LS;# errors",NLumiBlocks_,0,NLumiBlocks_);
93 
94 
95 
96 
97  dbe_->setCurrentFolder(subdir_+"Errors/Digis/DigiErrorCauses");
98  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);
99  ZDC_DigiErrors_DVER->setBinLabel(1,"ZDC+",1);
100  ZDC_DigiErrors_DVER->setBinLabel(2,"ZDC-",1);
101  ZDC_DigiErrors_DVER->setBinLabel(1,"EM1",2);
102  ZDC_DigiErrors_DVER->setBinLabel(2,"EM2",2);
103  ZDC_DigiErrors_DVER->setBinLabel(3,"EM3",2);
104  ZDC_DigiErrors_DVER->setBinLabel(4,"EM4",2);
105  ZDC_DigiErrors_DVER->setBinLabel(5,"EM5",2);
106  ZDC_DigiErrors_DVER->setBinLabel(6,"HAD1",2);
107  ZDC_DigiErrors_DVER->setBinLabel(7,"HAD2",2);
108  ZDC_DigiErrors_DVER->setBinLabel(8,"HAD3",2);
109  ZDC_DigiErrors_DVER->setBinLabel(9,"HAD4",2);
110  ZDC_DigiErrors_DVER->getTH2F()->SetOption("coltext");
111 
112 
113  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);
114  ZDC_DigiErrors_CAPID->setBinLabel(1,"ZDC+",1);
115  ZDC_DigiErrors_CAPID->setBinLabel(2,"ZDC-",1);
116  ZDC_DigiErrors_CAPID->setBinLabel(1,"EM1",2);
117  ZDC_DigiErrors_CAPID->setBinLabel(2,"EM2",2);
118  ZDC_DigiErrors_CAPID->setBinLabel(3,"EM3",2);
119  ZDC_DigiErrors_CAPID->setBinLabel(4,"EM4",2);
120  ZDC_DigiErrors_CAPID->setBinLabel(5,"EM5",2);
121  ZDC_DigiErrors_CAPID->setBinLabel(6,"HAD1",2);
122  ZDC_DigiErrors_CAPID->setBinLabel(7,"HAD2",2);
123  ZDC_DigiErrors_CAPID->setBinLabel(8,"HAD3",2);
124  ZDC_DigiErrors_CAPID->setBinLabel(9,"HAD4",2);
125  ZDC_DigiErrors_CAPID->getTH2F()->SetOption("coltext");
126 
132 
133 
134  dbe_->setCurrentFolder(subdir_ + "Errors/HotChannel");
135  ZDC_Hot_Channel_Errors = dbe_->book2D("ZDC_Hot_Channel_Errors", "Raw Number of Times Each Channel Appeared Hot", 2, 0, 2, 9, 0, 9);
136  ZDC_Hot_Channel_Errors->setBinLabel(1,"ZDC+",1);
137  ZDC_Hot_Channel_Errors->setBinLabel(2,"ZDC-",1);
143  ZDC_Hot_Channel_Errors->setBinLabel(6,"HAD1",2);
144  ZDC_Hot_Channel_Errors->setBinLabel(7,"HAD2",2);
145  ZDC_Hot_Channel_Errors->setBinLabel(8,"HAD3",2);
146  ZDC_Hot_Channel_Errors->setBinLabel(9,"HAD4",2);
147  ZDC_Hot_Channel_Errors->getTH2F()->SetOption("coltext");
148 
149 
150  ZDC_HotChannelErrorsVsLS=dbe_->book1D("ZDC_HotChannelErrorsVsLS","Total Number of Hot Channel Errors in the ZDCs vs. Lumi Section; LS; # Hot channels", NLumiBlocks_,0,NLumiBlocks_);
151 
152 
153 
159 
160  dbe_->setCurrentFolder(subdir_ + "Errors/DeadChannel");
161  ZDC_Dead_Channel_Errors = dbe_->book2D("ZDC_Dead_Channel_Errors", "Raw Number of Times Each Channel Appeared Dead", 2, 0, 2, 9, 0, 9);
172  ZDC_Dead_Channel_Errors->setBinLabel(9,"HAD4",2);
173  ZDC_Dead_Channel_Errors->getTH2F()->SetOption("coltext");
174 
175  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_);
176 
177 
183 
184  dbe_->setCurrentFolder(subdir_ + "Errors/ColdChannel");
185  ZDC_Cold_Channel_Errors = dbe_->book2D("ZDC_Cold_Channel_Errors", "Raw Number of Times Each Channel Appeared Cold", 2, 0, 2, 9, 0, 9);
196  ZDC_Cold_Channel_Errors->setBinLabel(9,"HAD4",2);
197  ZDC_Cold_Channel_Errors->getTH2F()->SetOption("coltext");
198 
199  ZDC_ColdChannelErrorsVsLS=dbe_->book1D("ZDC_ColdChannelErrorsVsLS","Total Number of Cold Channels in the ZDC vs. Lumi Section; LS; # of Cold Chanels", NLumiBlocks_, 0, NLumiBlocks_);
200 
201 
202 
203 
209 
210 
211  dbe_->setCurrentFolder(subdir_ + "Errors");
212  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);
213  ZDC_TotalChannelErrors->setBinLabel(1,"ZDC+",1);
214  ZDC_TotalChannelErrors->setBinLabel(2,"ZDC-",1);
220  ZDC_TotalChannelErrors->setBinLabel(6,"HAD1",2);
221  ZDC_TotalChannelErrors->setBinLabel(7,"HAD2",2);
222  ZDC_TotalChannelErrors->setBinLabel(8,"HAD3",2);
223  ZDC_TotalChannelErrors->setBinLabel(9,"HAD4",2);
224  ZDC_TotalChannelErrors->getTH2F()->SetOption("coltext");
225 
231 
233  h_2D_charge = dbe_->book2D("2D_DigiCharge", "Digi Charge (fC)", 2, 0, 2, 9, 0, 9);
234  h_2D_charge->setBinLabel(1,"ZDC+",1);
235  h_2D_charge->setBinLabel(2,"ZDC-",1);
236  h_2D_charge->setBinLabel(1,"EM1",2);
237  h_2D_charge->setBinLabel(2,"EM2",2);
238  h_2D_charge->setBinLabel(3,"EM3",2);
239  h_2D_charge->setBinLabel(4,"EM4",2);
240  h_2D_charge->setBinLabel(5,"EM5",2);
241  h_2D_charge->setBinLabel(6,"HAD1",2);
242  h_2D_charge->setBinLabel(7,"HAD2",2);
243  h_2D_charge->setBinLabel(8,"HAD3",2);
244  h_2D_charge->setBinLabel(9,"HAD4",2);
245 
246  h_2D_TSMean = dbe_->book2D("2D_DigiTiming", "Digi Timing", 2, 0, 2, 9, 0, 9);
247  h_2D_TSMean->setBinLabel(1,"ZDC+",1);
248  h_2D_TSMean->setBinLabel(2,"ZDC-",1);
249  h_2D_TSMean->setBinLabel(1,"EM1",2);
250  h_2D_TSMean->setBinLabel(2,"EM2",2);
251  h_2D_TSMean->setBinLabel(3,"EM3",2);
252  h_2D_TSMean->setBinLabel(4,"EM4",2);
253  h_2D_TSMean->setBinLabel(5,"EM5",2);
254  h_2D_TSMean->setBinLabel(6,"HAD1",2);
255  h_2D_TSMean->setBinLabel(7,"HAD2",2);
256  h_2D_TSMean->setBinLabel(8,"HAD3",2);
257  h_2D_TSMean->setBinLabel(9,"HAD4",2);
258 
259  h_2D_RecHitEnergy = dbe_->book2D("2D_RecHitEnergy", "Rechit Energy", 2, 0, 2, 9, 0, 9);
260  h_2D_RecHitEnergy->setBinLabel(1,"ZDC+",1);
261  h_2D_RecHitEnergy->setBinLabel(2,"ZDC-",1);
262  h_2D_RecHitEnergy->setBinLabel(1,"EM1",2);
263  h_2D_RecHitEnergy->setBinLabel(2,"EM2",2);
264  h_2D_RecHitEnergy->setBinLabel(3,"EM3",2);
265  h_2D_RecHitEnergy->setBinLabel(4,"EM4",2);
266  h_2D_RecHitEnergy->setBinLabel(5,"EM5",2);
267  h_2D_RecHitEnergy->setBinLabel(6,"HAD1",2);
268  h_2D_RecHitEnergy->setBinLabel(7,"HAD2",2);
269  h_2D_RecHitEnergy->setBinLabel(8,"HAD3",2);
270  h_2D_RecHitEnergy->setBinLabel(9,"HAD4",2);
271 
272  h_2D_RecHitTime = dbe_->book2D("2D_RecHitTime", "Rechit Timing", 2, 0, 2, 9, 0, 9);
273  h_2D_RecHitTime->setBinLabel(1,"ZDC+",1);
274  h_2D_RecHitTime->setBinLabel(2,"ZDC-",1);
275  h_2D_RecHitTime->setBinLabel(1,"EM1",2);
276  h_2D_RecHitTime->setBinLabel(2,"EM2",2);
277  h_2D_RecHitTime->setBinLabel(3,"EM3",2);
278  h_2D_RecHitTime->setBinLabel(4,"EM4",2);
279  h_2D_RecHitTime->setBinLabel(5,"EM5",2);
280  h_2D_RecHitTime->setBinLabel(6,"HAD1",2);
281  h_2D_RecHitTime->setBinLabel(7,"HAD2",2);
282  h_2D_RecHitTime->setBinLabel(8,"HAD3",2);
283  h_2D_RecHitTime->setBinLabel(9,"HAD4",2);
284 
285  h_2D_saturation = dbe_->book2D("h_2D_QIE", "Saturation Check", 2, 0, 2, 9, 0, 9);
286  h_2D_saturation->setBinLabel(1,"ZDC+",1);
287  h_2D_saturation->setBinLabel(2,"ZDC-",1);
288  h_2D_saturation->setBinLabel(1,"EM1",2);
289  h_2D_saturation->setBinLabel(2,"EM2",2);
290  h_2D_saturation->setBinLabel(3,"EM3",2);
291  h_2D_saturation->setBinLabel(4,"EM4",2);
292  h_2D_saturation->setBinLabel(5,"EM5",2);
293  h_2D_saturation->setBinLabel(6,"HAD1",2);
294  h_2D_saturation->setBinLabel(7,"HAD2",2);
295  h_2D_saturation->setBinLabel(8,"HAD3",2);
296  h_2D_saturation->setBinLabel(9,"HAD4",2);
297 
298  dbe_->setCurrentFolder(subdir_ + "Digis");
299 
300  for (int i = 0; i < 5; ++i) {
301  // pulse Plus Side
302  sprintf(title, "h_ZDCP_EMChan_%i_Pulse", i + 1);
303  sprintf(name, "ZDC Plus EM Section Pulse for channel %i", i + 1);
304  h_ZDCP_EM_Pulse[i]= dbe_->book1D(title, name, 10, -0.5, 9.5);
305  h_ZDCP_EM_Pulse[i]->setAxisTitle("Time Slice id",1);
306  h_ZDCP_EM_Pulse[i]->setAxisTitle("Pulse Height",2);
307  // pulse Minus Side
308  sprintf(title, "h_ZDCM_EMChan_%i_Pulse", i + 1);
309  sprintf(name, "ZDC Minus EM Section Pulse for channel %i", i + 1);
310  h_ZDCM_EM_Pulse[i] = dbe_->book1D(title, name, 10, -0.5, 9.5);
311  h_ZDCM_EM_Pulse[i]->setAxisTitle("Time Slice id",1);
312  h_ZDCM_EM_Pulse[i]->setAxisTitle("Pulse Height",2);
313  // integrated charge over 10 time samples
314  sprintf(title, "h_ZDCP_EMChan_%i_Charge", i + 1);
315  sprintf(name, "ZDC Plus EM Section Charge for channel %i", i + 1);
316  h_ZDCP_EM_Charge[i] = dbe_->book1D(title, name, 1000, 0., 30000.);
317  h_ZDCP_EM_Charge[i]->setAxisTitle("Charge (fC)",1);
318  h_ZDCP_EM_Charge[i]->setAxisTitle("Events",2);
319  // integrated charge over 10 time samples
320  sprintf(title, "h_ZDCM_EMChan_%i_Charge", i + 1);
321  sprintf(name, "ZDC Minus EM Section Charge for channel %i", i + 1);
322  h_ZDCM_EM_Charge[i] = dbe_->book1D(title, name, 1000, 0., 30000.);
323  h_ZDCM_EM_Charge[i]->setAxisTitle("Charge (fC)",1);
324  h_ZDCM_EM_Charge[i]->setAxisTitle("Events",2);
325  // charge weighted time slice
326  sprintf(title, "h_ZDCP_EMChan_%i_TSMean", i + 1);
327  sprintf(name, "ZDC Plus EM Section TSMean for channel %i", i + 1);
328  h_ZDCP_EM_TSMean[i] = dbe_->book1D(title, name, 100, -0.5, 9.5);
329  h_ZDCP_EM_TSMean[i]->setAxisTitle("Timing",1);
330  h_ZDCP_EM_TSMean[i]->setAxisTitle("Events",2);
331  // charge weighted time slice
332  sprintf(title, "h_ZDCM_EMChan_%i_TSMean", i + 1);
333  sprintf(name, "ZDC Minus EM Section TSMean for channel %i", i + 1);
334  h_ZDCM_EM_TSMean[i] = dbe_->book1D(title, name, 100, -0.5, 9.5);
335  h_ZDCM_EM_TSMean[i]->setAxisTitle("Timing",1);
336  h_ZDCM_EM_TSMean[i]->setAxisTitle("Events",2);
337  }
338 
339  for (int i = 0; i < 4; ++i) {
340  // pulse Plus Side
341  sprintf(title, "h_ZDCP_HADChan_%i_Pulse", i + 1);
342  sprintf(name, "ZDC Plus HAD Section Pulse for channel %i", i + 1);
343  h_ZDCP_HAD_Pulse[i] = dbe_->book1D(title, name, 10, -0.5, 9.5);
344  h_ZDCP_HAD_Pulse[i]->setAxisTitle("Time Slice id",1);
345  h_ZDCP_HAD_Pulse[i]->setAxisTitle("Pulse Height",2);
346  // pulse Minus Side
347  sprintf(title, "h_ZDCM_HADChan_%i_Pulse", i + 1);
348  sprintf(name, "ZDC Minus HAD Section Pulse for channel %i", i + 1);
349  h_ZDCM_HAD_Pulse[i] = dbe_->book1D(title, name, 10, -0.5, 9.5);
350  h_ZDCP_HAD_Pulse[i]->setAxisTitle("Time Slice id",1);
351  h_ZDCP_HAD_Pulse[i]->setAxisTitle("Pulse Height",2);
352  // integrated charge over 10 time samples
353  sprintf(title, "h_ZDCP_HADChan_%i_Charge", i + 1);
354  sprintf(name, "ZDC Plus HAD Section Charge for channel %i", i + 1);
355  h_ZDCP_HAD_Charge[i] = dbe_->book1D(title, name, 1000, 0., 30000.);
356  h_ZDCP_HAD_Charge[i]->setAxisTitle("Charge (fC)",1);
357  h_ZDCP_HAD_Charge[i]->setAxisTitle("Events",2);
358  // integrated charge over 10 time samples
359  sprintf(title, "h_ZDCM_HADChan_%i_Charge", i + 1);
360  sprintf(name, "ZDC Minus HAD Section Charge for channel %i", i + 1);
361  h_ZDCM_HAD_Charge[i] = dbe_->book1D(title, name, 1000, 0., 30000.);
362  h_ZDCM_HAD_Charge[i]->setAxisTitle("Charge (fC)",1);
363  h_ZDCM_HAD_Charge[i]->setAxisTitle("Events",2);
364  // charge weighted time slice
365  sprintf(title, "h_ZDCP_HADChan_%i_TSMean", i + 1);
366  sprintf(name, "ZDC Plus HAD Section TSMean for channel %i", i + 1);
367  h_ZDCP_HAD_TSMean[i] = dbe_->book1D(title, name, 100, -0.5, 9.5);
368  h_ZDCP_HAD_TSMean[i]->setAxisTitle("Timing",1);
369  h_ZDCP_HAD_TSMean[i]->setAxisTitle("Events",2);
370  // charge weighted time slice
371  sprintf(title, "h_ZDCM_HADChan_%i_TSMean", i + 1);
372  sprintf(name, "ZDC Minus HAD Section TSMean for channel %i", i + 1);
373  h_ZDCM_HAD_TSMean[i] = dbe_->book1D(title, name, 100, -0.5, 9.5);
374  h_ZDCM_HAD_TSMean[i]->setAxisTitle("Timing",1);
375  h_ZDCM_HAD_TSMean[i]->setAxisTitle("Events",2);
376  }
377 
378  dbe_->setCurrentFolder(subdir_ + "RecHits");
379  for (int i = 0; i < 5; ++i) {
380  //RecHitEnergy Plus Side
381  sprintf(title,"h_ZDCP_EMChan_%i_RecHit_Energy",i+1);
382  sprintf(name,"ZDC EM Section Rechit Energy for channel %i",i+1);
383  h_ZDCP_EM_RecHitEnergy[i] = dbe_->book1D(title, name, 1010, -100., 10000.);
384  h_ZDCP_EM_RecHitEnergy[i]->setAxisTitle("Energy (GeV)",1);
385  h_ZDCP_EM_RecHitEnergy[i]->setAxisTitle("Events",2);
386  //RecHitEnergy Minus Side
387  sprintf(title,"h_ZDCM_EMChan_%i_RecHit_Energy",i+1);
388  sprintf(name,"ZDC EM Section Rechit Energy for channel %i",i+1);
389  h_ZDCM_EM_RecHitEnergy[i] = dbe_->book1D(title, name, 1010, -100., 10000.);
390  h_ZDCM_EM_RecHitEnergy[i]->setAxisTitle("Energy (GeV)",1);
391  h_ZDCM_EM_RecHitEnergy[i]->setAxisTitle("Events",2);
392  //RecHit Timing Plus Side
393  sprintf(title,"h_ZDCP_EMChan_%i_RecHit_Timing",i+1);
394  sprintf(name,"ZDC EM Section Rechit Timing for channel %i",i+1);
395  h_ZDCP_EM_RecHitTiming[i] = dbe_->book1D(title, name, 100, -100., 100.);
396  h_ZDCP_EM_RecHitTiming[i]->setAxisTitle("RecHit Time",1);
397  h_ZDCP_EM_RecHitTiming[i]->setAxisTitle("Events",2);
398  //RecHit Timing Minus Side
399  sprintf(title,"h_ZDCM_EMChan_%i_RecHit_Timing",i+1);
400  sprintf(name,"ZDC EM Section Rechit Timing for channel %i",i+1);
401  h_ZDCM_EM_RecHitTiming[i] = dbe_->book1D(title, name, 100, -100., 100.);
402  h_ZDCM_EM_RecHitTiming[i]->setAxisTitle("RecHit Time",1);
403  h_ZDCM_EM_RecHitTiming[i]->setAxisTitle("Events",2);
404  }
405 
406  for (int i = 0; i < 4; ++i) {
407  //RecHitEnergy Plus Side
408  sprintf(title,"h_ZDCP_HADChan_%i_RecHit_Energy",i+1);
409  sprintf(name,"ZDC HAD Section Rechit Energy for channel %i",i+1);
410  h_ZDCP_HAD_RecHitEnergy[i] = dbe_->book1D(title, name, 1010, -100., 10000.);
411  h_ZDCP_HAD_RecHitEnergy[i]->setAxisTitle("Energy (GeV)",1);
412  h_ZDCP_HAD_RecHitEnergy[i]->setAxisTitle("Events",2);
413  //RecHitEnergy Minus Side
414  sprintf(title,"h_ZDCM_HADChan_%i_RecHit_Energy",i+1);
415  sprintf(name,"ZDC HAD Section Rechit Energy for channel %i",i+1);
416  h_ZDCM_HAD_RecHitEnergy[i] = dbe_->book1D(title, name, 1010, -100., 10000.);
417  h_ZDCM_HAD_RecHitEnergy[i]->setAxisTitle("Energy (GeV)",1);
418  h_ZDCM_HAD_RecHitEnergy[i]->setAxisTitle("Events",2);
419  //RecHit Timing Plus Side
420  sprintf(title,"h_ZDCP_HADChan_%i_RecHit_Timing",i+1);
421  sprintf(name,"ZDC HAD Section Rechit Timing for channel %i",i+1);
422  h_ZDCP_HAD_RecHitTiming[i] = dbe_->book1D(title, name, 100, -100., 100.);
423  h_ZDCP_HAD_RecHitTiming[i]->setAxisTitle("RecHit Time",1);
424  h_ZDCP_HAD_RecHitTiming[i]->setAxisTitle("Events",2);
425  //RecHit Timing Minus Side
426  sprintf(title,"h_ZDCM_HADChan_%i_RecHit_Timing",i+1);
427  sprintf(name,"ZDC HAD Section Rechit Timing for channel %i",i+1);
428  h_ZDCM_HAD_RecHitTiming[i] = dbe_->book1D(title, name, 100, -100., 100.);
429  h_ZDCM_HAD_RecHitTiming[i]->setAxisTitle("RecHit Time",1);
430  h_ZDCM_HAD_RecHitTiming[i]->setAxisTitle("Events",2);
431  }
432  } // if (dbe_)
433  return;
434 }
435 
436 
438 {
440  if (tevt_==0) this->setup(); // call basic setup of histograms
441 
442  for (int i=0;i<18;++i)
443  {
446  }
447 
448  EventCounter=0;
449 
450 }
451 
453 {
454  for(int i=0;i<18;++i)
455  {
460  }
462 }
463 
465 {
466  if (!IsAllowedCalibType()) return;
467  if (LumiInOrder(e.luminosityBlock())==false) return;
469 
471  e.getByLabel(digiLabel_,zdcdigis);
473  e.getByLabel(rechitLabel_,zdcrechits);
475  e.getByLabel(digiLabel_,report);
476  processEvent(*zdcdigis, *zdcrechits, *report); // run the histogramming/analysis specific to this code
477 }
478 
480 {
482  // ZDC_Dead_Channel_Errors->Fill(-1,-1,1);
483  // ZDC_Cold_Channel_Errors->Fill(-1,-1,1); READ COMMENT!!!!
484  // The above line should be uncommented IF, in the fill (down in endlumiblock) we used a value of 1 to say that a specific ZDC channel had 1 Cold Error after >50 times that the cold error occured. Currently, I have it set so that if a ZDC channel goes over the threshold, the RAW number of times that the channel appeared cold shows up. For example: the cold threshold is at 50, EM 1 has a cold Error 51 times...currently, the number 51 will show up in the ZDC_Cold_Channel_Errors plot...however the other way....it would say 1.
485  //This is only a problem when you get to the client level since this line fills the underflow bin. The underflow bin is read in by the client as the divisor. If you try to divide a number of ColdEvents by a number of Lumis...most likely your rate will be greater than one. For now I am moving this line back to processEvent.
486  EventCounter=0;
487  for (int i=0;i<18;++i)
488  {
489  ChannelRatio[i]=0.;
491  }
492 
493 }
494 
495 
496 
498 
499  meEVT_->Fill(ievt_);
500 
501  //--------------------------------------
502  // ZDC Digi part
503  //--------------------------------------
504  double fSum = 0.;
505  std::vector<double> fData;
506  double digiThresh = 99.5; //corresponds to 40 ADC counts
507  //int digiThreshADC = 40;
508  int digiSaturation = 127;
509  //double ZDCQIEConst = 2.6;
510 
511 
512  if (digi.size()>0)
513  {
514  ZDC_Digi_Errors->Fill(-1,-1,1);
515  ZDC_Hot_Channel_Errors->Fill(-1,-1,1);
516  ZDC_TotalChannelErrors->Fill(-1,-1,1);
517  ZDC_Cold_Channel_Errors->Fill(-1,-1,1);
518  ZDC_Dead_Channel_Errors->Fill(-1,-1,1);
519  EventCounter+=1;
520  }
521  for (int i=0;i<18;++i)
522  {
523  ChannelHasDigiError[i]=false;
524  DigiErrorDVER[i]=false;
525  DigiErrorCAPID[i]=false;
526  HotChannelError[i]=false;
527  DeadChannelError[i]=true;
528  }
529 
530 
531  typedef std::vector<DetId> DetIdVector;
532 
533  for (DetIdVector::const_iterator baddigi_iter=report.bad_quality_begin();
534  baddigi_iter != report.bad_quality_end();
535  ++baddigi_iter)
536  {
537  DetId id(baddigi_iter->rawId());
538  if (id.det()==DetId::Calo && id.subdetId()==HcalZDCDetId::SubdetectorId)
539  //HcalDetId id(baddigi_iter->rawId());
540  //if (id.subdet()==HcalZDCDetId::SubdetectorId)
541  {
542  // const ZDCDataFrame digi = (const ZDCDataFrame) (*baddigi_iter);
543  HcalZDCDetId id(baddigi_iter->rawId());
544  int iSide = id.zside();
545  int iSection = id.section();
546  int iChannel = id.channel();
547  if(iSection==1 || iSection==2){
548  ChannelHasDigiError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
549  DeadChannelError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=false;
550  //do stuff
551  }//end of if i(Section==1 || iSection==2)
552  }
553  else continue;
554 
555  }//end unpacker section
556 
557 
558 
559  // ChannelHasError[18]: [0-8] are iSide=1, [9-17] are iSide=2
560  // First 5 bins ([0-4],[9-13]) are EM bins
561  // Last 4 bins are HAD bins
562 
563 
564  for (ZDCDigiCollection::const_iterator digi_iter = digi.begin();
565  digi_iter != digi.end(); ++digi_iter)
566  {
567  const ZDCDataFrame digi = (const ZDCDataFrame) (*digi_iter);
568  //HcalZDCDetId id(digi_iter->id());
569  int iSide = digi_iter->id().zside();
570  int iSection = digi_iter->id().section();
571  int iChannel = digi_iter->id().channel();
572 
573  unsigned int fTS = digi_iter->size();
574  while (fData.size()<fTS)
575  fData.push_back(-999);
576  while (fData.size()>fTS)
577  fData.pop_back(); // delete last elements
578 
579  if (iSection==1 || iSection==2)
580  {
581 
583 
586  DeadChannelError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=false;
588 
589  int iCapID=27;
590  int iCapIDPrevious=27;
591  int HotCounter=0;
592  int ColdCounter=0;
593 
594  for (int iTS=0; iTS<digi.size(); ++iTS) //looping over all ten timeslices
595  {
597  if (digi[iTS].adc()==127) HotCounter+=1;
598  else HotCounter=0;//require 3 consecutive saturated Time Slices in a single channel in a single event
599  if (HotCounter >= 3) HotChannelError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
601 
602 
604  if (digi[iTS].adc()<=10) ColdCounter+=1;
605  if (ColdCounter==10)
606  {
607  ColdChannelCounter[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]+=1;
608  }
610 
611 
614  if ((ChannelHasDigiError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=false))
615  {
616  iCapID=digi.sample(iTS).capid();
617  if (iTS>0) iCapIDPrevious=digi.sample(iTS-1).capid();
618 
619  if (digi.sample(iTS).dv()==0 || digi.sample(iTS).er()==1)
620  {
621  ChannelHasDigiError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
622  DigiErrorDVER[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
623  break;
624  }
625  else
626  {
627  if (iTS==0) continue;
628  else
629  {
630  if ((iCapID-iCapIDPrevious+4)%4!=1)
631  {
632  ChannelHasDigiError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
633  DigiErrorCAPID[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
634  break;
635  }//end of capid rotation check
636  }//checking if TS!=0
637  } // end of the check for dv/er
638  }//END of unpacker double check
639  } // end of TS loop
640 
642 
643 
644 
645 
646  fSum = 0.;
647  bool saturated = false;
648  for (unsigned int i = 0; i < fTS; ++i)
649  {
650  //fData[i]=digi[i].nominal_fC() * ZDCQIEConst;
651  fData[i]=digi[i].nominal_fC();
652  if (digi[i].adc()==digiSaturation){
653  saturated=true;
654  }
655  }
656 
657  double fTSMean = 0;
658  if (fData.size()>6)
659  fTSMean = getTime(fData, 4, 6, fSum); // tsmin = 4, tsmax = 6.
660  //std::cout << "Side= " << iSide << " Section= " << iSection << " Channel= " << iChannel << "\tCharge\t" << fSum <<std::endl;
661  if (saturated==true){
662  h_2D_saturation->Fill(iSide==1?0:1,iSection==1?iChannel-1:iChannel+4,1);
663  }
664 
665  if (iSection == 1)
666  { // EM
667  if (iSide == 1) { // Plus
668  for (unsigned int i = 0; i < fTS; ++i) {
669  if (fData[i] > digiThresh) h_ZDCP_EM_Pulse[iChannel - 1]->Fill(i, fData[i]);
670  }
671  if (fSum > digiThresh) {
672  h_ZDCP_EM_Charge[iChannel - 1]->Fill(fSum);
673  h_ZDCP_EM_TSMean[iChannel - 1]->Fill(fTSMean);
674  //std::cout<< "fSum " << fSum << " fTSMean " << fTSMean <<std::endl;
675  }
676  } // Plus
677  if (iSide == -1) { // Minus
678  for (unsigned int i = 0; i < fTS; ++i) {
679  if (fData[i] > digiThresh) h_ZDCM_EM_Pulse[iChannel - 1]->Fill(i, fData[i]);
680  }
681  if (fSum > digiThresh) {
682  h_ZDCM_EM_Charge[iChannel - 1]->Fill(fSum);
683  h_ZDCM_EM_TSMean[iChannel - 1]->Fill(fTSMean);
684  }
685  } // Minus
686  }// EM
687 
688  else if (iSection == 2)
689  { // HAD
690  if (iSide == 1) { // Plus
691  for (unsigned int i = 0; i < fTS; ++i) {
692  if (fData[i] > digiThresh) h_ZDCP_HAD_Pulse[iChannel - 1]->Fill(i, fData[i]);
693  }
694  if (fSum > digiThresh) {
695  h_ZDCP_HAD_Charge[iChannel - 1]->Fill(fSum);
696  h_ZDCP_HAD_TSMean[iChannel - 1]->Fill(fTSMean);
697  }
698  } // Plus
699  if (iSide == -1) { // Minus
700  for (unsigned int i = 0; i < fTS; ++i) {
701  if (fData[i] > digiThresh) h_ZDCM_HAD_Pulse[iChannel - 1]->Fill(i, fData[i]);
702  }
703  if (fSum > digiThresh) {
704  h_ZDCM_HAD_Charge[iChannel - 1]->Fill(fSum);
705  h_ZDCM_HAD_TSMean[iChannel - 1]->Fill(fTSMean);
706  }
707  }// Minus
708  } // HAD
709  }//end of if (iSection==1 || iSection==2)
710  } // loop on zdc digi collection
711 
712 
713 
715  // Fill Fall 2012 histograms
717  int numdigierrors=0;
718  int numhoterrors=0;
719 
720  for (int i = 0; i<18; i++){
721  if (ChannelHasDigiError[i]==true)
722  {
723  ++numdigierrors;
724  ZDC_Digi_Errors->Fill(i/9,i%9,1);
725  }
726  if (DigiErrorDVER[i]==true)
727  {
728  ZDC_DigiErrors_DVER->Fill(i/9,i%9,1);
729  }
730  if (DigiErrorCAPID[i]==true)
731  {
732  ZDC_DigiErrors_CAPID->Fill(i/9,i%9,1);
733  }
734  if(HotChannelError[i]==true)
735  {
736  ++numhoterrors;
737  ZDC_Hot_Channel_Errors->Fill(i/9,(i%9),1);
738  }
739  if(DeadChannelError[i]==true)
740  {
741  DeadChannelCounter[i]+=1;
742  }
743  // If any of the above is true, fill the total channel errors
745  {
746  ZDC_TotalChannelErrors->Fill(i/9,i%9,1);
747  TotalChannelErrors[i]+=1;
748  }
749  }//end the for i<18 loop
750 
751 
752  if (numdigierrors>0)
753  ZDC_DigiErrorsVsLS->Fill(currentLS,numdigierrors); //could make this ->Fill(currentLS,1) if I want to count each event as only having one error even if multiple channels are in error
754  if (numhoterrors>0)
755  ZDC_HotChannelErrorsVsLS->Fill(currentLS,numhoterrors);
757  //End of filling Fall 2012 histograms
759 
760  //--------------------------------------
761  // ZDC RecHit part
762  //--------------------------------------
763  for (ZDCRecHitCollection::const_iterator rechit_iter = rechit.begin();
764  rechit_iter != rechit.end(); ++rechit_iter)
765  {
766  HcalZDCDetId id(rechit_iter->id());
767  int Side = (rechit_iter->id()).zside();
768  int Section = (rechit_iter->id()).section();
769  int Channel = (rechit_iter->id()).channel();
770  //std::cout << "RecHitEnergy " << zhit->energy() << " RecHitTime " << zhit->time() << std::endl;
771 
772  if(Section==1)
773  { //EM
774  if (Side ==1 ){ // Plus
775  h_ZDCP_EM_RecHitEnergy[Channel-1]->Fill(rechit_iter->energy());
776  h_ZDCP_EM_RecHitTiming[Channel-1]->Fill(rechit_iter->time());
777  }
778  if (Side == -1 ){ //Minus
779  h_ZDCM_EM_RecHitEnergy[Channel-1]->Fill(rechit_iter->energy());
780  h_ZDCM_EM_RecHitTiming[Channel-1]->Fill(rechit_iter->time());
781  }
782  } //EM
783  else if(Section==2)
784  { //HAD
785  if (Side ==1 ){ //Plus
786  h_ZDCP_HAD_RecHitEnergy[Channel-1]->Fill(rechit_iter->energy());
787  h_ZDCP_HAD_RecHitTiming[Channel-1]->Fill(rechit_iter->time());
788  }
789  if (Side == -1 ){ //Minus
790  h_ZDCM_HAD_RecHitEnergy[Channel-1]->Fill(rechit_iter->energy());
791  h_ZDCM_HAD_RecHitTiming[Channel-1]->Fill(rechit_iter->time());
792  }
793  } // HAD
794  } // loop on rechits
795 
796 } // end of event processing
797 /*
798 ------------------------------------------------------------------------------------
799 // This is what we did to find the good signal. After we've started to use only time slice 4,5,6.
800 bool HcalZDCMonitor::isGood(std::vector<double>fData, double fCut, double fPercentage) {
801  bool dec = false;
802  int ts_max = -1;
803 
804  ts_max = getTSMax(fData);
805  if (ts_max == 0 || ts_max == (int)(fData.size() - 1))
806  return false;
807  float sum = fData[ts_max - 1] + fData[ts_max + 1];
808 
809  // cout << "tsMax " << ts_max << " data[tsmax] " << mData[ts_max] << " sum " << sum << endl;
810  if (fData[ts_max] > fCut && sum > (fData[ts_max] * fPercentage))
811  dec = true;
812  return dec;
813 } // bool HcalZDCMonitor::isGood
814 
815 int HcalZDCMonitor::getTSMax(std::vector<double>fData)
816 {
817  int ts_max = -100;
818  double max = -999.;
819 
820  for (unsigned int j = 0; j < fData.size(); ++j) {
821  if (max < fData[j]) {
822  max = fData[j];
823  ts_max = j;
824  }
825  }
826  return ts_max;
827 } // int HcalZDCMonitor::getTSMax()
828 ------------------------------------------------------------------------------------
829 */
830 double HcalZDCMonitor::getTime(std::vector<double>fData, unsigned int ts_min, unsigned int ts_max, double &fSum) {
831  double weightedTime = 0.;
832  double SumT = 0.;
833  double Time = -999.;
834  double digiThreshf = 99.5;
835 
836  for (unsigned int ts=ts_min; ts<=ts_max; ++ts) {
837  if (fData[ts] > digiThreshf){
838  weightedTime += ts * fData[ts];
839  SumT += fData[ts];
840  }
841  }
842 
843  if (SumT > 0.) {
844  Time = weightedTime / SumT;
845  }
846 
847  fSum = SumT;
848 
849  return Time;
850 
851 } //double HcalZDCMonitor::getTime()
852 
853 
855 {
856 
857  bool HadLumiError[18]={false};
858 
860 
861  if(Online_ == false)
862  {//checks if DQM is in OFFLINE MODE
863  for (int i=0;i<18;++i)
864  {
866  if (ChannelRatio[i] <= MaxErrorRates_[i])
867  {
868  if (i<9)
869  {
871  }
872  else
873  {
875  }
876  if (ColdChannelCounter[i] >= OfflineColdThreshold_)//Begin Cold Error Plots
877  {
880  ZDC_TotalChannelErrors->Fill(i/9,i%9,ColdChannelCounter[i]);//Can change this between 1, or the amount of errors (Currently the latter)
882  HadLumiError[i]=true;
883  }//END OF Cold Error Plot
885  {//Begin Dead Error Plots
888  ZDC_TotalChannelErrors->Fill(i/9,i%9,DeadChannelCounter[i]); //Could fill this with 1 or total dead errors (which is currently done)
890  HadLumiError[i]=true;
891  }//END OF Dead Channel Plots
892  if (HadLumiError[i]==true)
893  {//Removing the QI for Dead of Cold Channels
894  if (i<9)
895  {
897  }
898  else
899  {
901  }
902  }//END OF QI Removal
903  }//END OF ChannelRatio[i]<=MaxErrorRates_[i]
904  else
905  {//This part only happens if ChannelRatio[i] > MaxErrorRates_[i]...Above you notice the QI plots become 'un-filled'. If the plot was never filled to begin with, then we do not want to remove from the plot causing there to be a negative QI
907  {//Begin Cold Error Plots
912  }//END OF Cold Error Plot
914  {//Begin Dead Error plots
919  }//END OF Dead Error Plots
920  }
921  }//END OF FOR LOOP
922  }//END OF DQM OFFLINE PART
923 
924  if(Online_ == true)
925  {//checks if DQM is in ONLINE MODE
926  for (int i=0;i<18;++i)
927  {
929  if (ChannelRatio[i] <= MaxErrorRates_[i])
930  {
931  if (i<9)
932  {
934  }
935  else
936  {
938  }
939  if (ColdChannelCounter[i] >= OnlineColdThreshold_)//Begin Cold Error Plots
940  {
943  ZDC_TotalChannelErrors->Fill(i/9,i%9,ColdChannelCounter[i]);//Can change this between 1, or the amount of errors (Currently the latter)
945  HadLumiError[i]=true;
946  }//END OF Cold Error Plot
948  {//Begin Dead Error Plots
951  ZDC_TotalChannelErrors->Fill(i/9,i%9,DeadChannelCounter[i]); //Could fill this with 1 or total dead errors (which is currently done)
953  HadLumiError[i]=true;
954  }//END OF Dead Channel Plots
955  if (HadLumiError[i]==true)
956  {//Removing the QI for Dead of Cold Channels
957  if (i<9)
958  {
960  }
961  else
962  {
964  }
965  }//END OF QI Removal
966  }//END OF ChannelRatio[i]<=MaxErrorRates_[i]
967  else
968  {//This part only happens if ChannelRatio[i] > MaxErrorRates_[i]...Above you notice the QI plots become 'un-filled'. If the plot was never filled to begin with, then we do not want to remove from the plot causing there to be a negative QI
970  {//Begin Cold Error Plots
975  }//END OF Cold Error Plot
977  {//Begin Dead Error plots
982  }//END OF Dead Error Plots
983  }//end of ChannelRatio[i] > MaxErrorRates_[i] part
984  }//END OF FOR LOOP
985  }//END OF DQM ONLINE PART
986 
987 
988 
989  //if (LumiInOrder(lumiSeg.luminosityBlock())==false) return; // WHY DOESN'T THIS WORK?
990  if (dbe_==0)
991  {
992  return;
993  }
995 
996  for (int i = 0; i < 5; ++i) { // EM Channels
997  // ZDC Plus
998  h_2D_charge->setBinContent(1, i + 1, h_ZDCP_EM_Charge[i]->getMean());
999  h_2D_TSMean->setBinContent(1, i + 1, h_ZDCP_EM_TSMean[i]->getMean());
1001  h_2D_RecHitTime->setBinContent(1, i + 1, h_ZDCP_EM_RecHitTiming[i]->getMean());
1002  // ZDC Minus
1003  h_2D_charge->setBinContent(2, i + 1, h_ZDCM_EM_Charge[i]->getMean());
1004  h_2D_TSMean->setBinContent(2, i + 1, h_ZDCM_EM_TSMean[i]->getMean());
1006  h_2D_RecHitTime->setBinContent(2, i + 1, h_ZDCM_EM_RecHitTiming[i]->getMean());
1007  }
1008  for (int i = 0; i < 4; ++i) { // HAD channels
1009  // ZDC Plus
1010  h_2D_charge->setBinContent(1, i + 6, h_ZDCP_HAD_Charge[i]->getMean());
1011  h_2D_TSMean->setBinContent(1, i + 6, h_ZDCP_HAD_TSMean[i]->getMean());
1014  // ZDC Minus
1015  //h_ZDCM_HAD_Pulse[i]->Scale(10. / h_ZDCM_HAD_Pulse[i]->getEntries());
1016  h_2D_charge->setBinContent(2, i + 6, h_ZDCM_HAD_Charge[i]->getMean());
1017  h_2D_TSMean->setBinContent(2, i + 6, h_ZDCM_HAD_TSMean[i]->getMean());
1020 
1021  // use ZDCProblemsCurrentLB_ for stuff
1022  }
1023 }// void HcalZDCMonitor::endLuminosityBlock()
1024 
1025 
int adc(sample_type sample)
get the ADC sample (12 bits)
virtual void endLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
MonitorElement * h_ZDCP_HAD_TSMean[4]
T getParameter(std::string const &) const
bool ChannelHasDigiError[18]
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
bool LumiInOrder(int lumisec)
void setBinContent(int binx, double content)
set content of bin (1-D)
void beginLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
MonitorElement * ZDC_DigiErrorsVsLS
MonitorElement * h_ZDCP_HAD_RecHitTiming[4]
MonitorElement * h_ZDCM_EM_Pulse[5]
edm::InputTag digiLabel_
MonitorElement * h_ZDCM_HAD_TSMean[4]
int ColdChannelCounter[18]
MonitorElement * ZDC_Hot_Channel_Errors
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
MonitorElement * h_ZDCM_EM_TSMean[5]
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:717
bool HotChannelError[18]
MonitorElement * h_ZDCM_EM_RecHitTiming[5]
MonitorElement * NZDC_QualityIndexVsLB_
MonitorElement * ZDC_Dead_Channel_Errors
double getTime(std::vector< double > fData, unsigned int ts_min, unsigned int ts_max, double &fSum)
MonitorElement * h_2D_TSMean
MonitorElement * h_ZDCM_HAD_RecHitTiming[4]
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
MonitorElement * h_ZDCP_EM_RecHitEnergy[5]
std::vector< int > AllowedCalibTypes_
edm::InputTag rechitLabel_
std::vector< T >::const_iterator const_iterator
MonitorElement * h_ZDCP_EM_Pulse[5]
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
bool dv() const
is the Data Valid bit set?
Definition: HcalQIESample.h:30
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:59
std::vector< double > ChannelWeighting_
MonitorElement * h_ZDCP_EM_TSMean[5]
MonitorElement * h_ZDCM_EM_Charge[5]
std::vector< double > MaxErrorRates_
MonitorElement * ZDC_DeadChannelErrorsVsLS
void Fill(long long x)
tuple report
Definition: zeeHLT_cff.py:9
MonitorElement * ZDC_HotChannelErrorsVsLS
MonitorElement * h_ZDCP_HAD_Charge[4]
MonitorElement * ZDC_ColdChannelErrorsVsLS
virtual void beginRun(const edm::Run &run, const edm::EventSetup &c)
void analyze(const edm::Event &e, const edm::EventSetup &c)
void processEvent(const ZDCDigiCollection &digi, const ZDCRecHitCollection &rechit, const HcalUnpackerReport &report)
const HcalQIESample & sample(int i) const
access a sample
Definition: ZDCDataFrame.h:39
MonitorElement * ZDC_DigiErrors_CAPID
bool DigiErrorDVER[18]
MonitorElement * ZDC_DigiErrors_DVER
virtual void beginLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
DetIdVector::const_iterator bad_quality_begin() const
MonitorElement * h_2D_saturation
MonitorElement * h_2D_charge
MonitorElement * h_2D_RecHitTime
MonitorElement * h_ZDCM_HAD_Charge[4]
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
MonitorElement * h_ZDCM_HAD_RecHitEnergy[4]
MonitorElement * ZDC_Cold_Channel_Errors
const_iterator end() const
Definition: DetId.h:20
MonitorElement * PZDC_QualityIndexVsLB_
MonitorElement * h_2D_RecHitEnergy
static const int SubdetectorId
Definition: HcalZDCDetId.h:22
bool DigiErrorCAPID[18]
int capid() const
get the Capacitor id
Definition: HcalQIESample.h:28
HcalZDCMonitor(const edm::ParameterSet &ps)
bool DeadChannelError[18]
void endRun(const edm::Run &run, const edm::EventSetup &c)
MonitorElement * EventsVsLS
MonitorElement * h_ZDCP_HAD_Pulse[4]
int size() const
total number of samples in the digi
Definition: ZDCDataFrame.h:26
MonitorElement * meEVT_
MonitorElement * h_ZDCM_EM_RecHitEnergy[5]
virtual void endRun(const edm::Run &run, const edm::EventSetup &c)
MonitorElement * ZDC_Digi_Errors
size_type size() const
MonitorElement * ZDC_TotalChannelErrors
MonitorElement * h_ZDCP_HAD_RecHitEnergy[4]
int TotalChannelErrors[18]
DQMChannel Channel
float ChannelRatio[18]
int DeadChannelCounter[18]
TH2F * getTH2F(void) const
MonitorElement * bookInt(const char *name)
Book int.
Definition: DQMStore.cc:624
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:845
virtual void setup(void)
MonitorElement * h_ZDCP_EM_Charge[5]
void endLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
bool er() const
is the error bit set?
Definition: HcalQIESample.h:32
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
void beginRun(const edm::Run &run, const edm::EventSetup &c)
const_iterator begin() const
Definition: Run.h:33
DetIdVector::const_iterator bad_quality_end() const
MonitorElement * h_ZDCP_EM_RecHitTiming[5]
MonitorElement * h_ZDCM_HAD_Pulse[4]