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 HcalZDCMonitor::HcalZDCMonitor() : TotalChannelErrors{}, DeadChannelCounter{}, ColdChannelCounter{},
4  DeadChannelError{}, HotChannelError{}, DigiErrorCAPID{}, DigiErrorDVER{},
5  ChannelHasDigiError{}
6 {
7 }
9 }
11 }
12 
14  HcalBaseMonitor::setup(ps, ib);
15 
16  baseFolder_ = rootFolder_ + "ZDCMonitor_Hcal";
17 
18  const edm::ParameterSet& psZDC(ps.getParameter<edm::ParameterSet>("zdcMonitorTask"));
19  NLumiBlocks_ = psZDC.getUntrackedParameter<int>("NLumiBlocks",4000);
20  ChannelWeighting_ = psZDC.getUntrackedParameter<std::vector<double>> ("ZDC_ChannelWeighting");
21  MaxErrorRates_ = psZDC.getUntrackedParameter<std::vector<double>> ("ZDC_AcceptableChannelErrorRates");
22  OfflineColdThreshold_ = psZDC.getUntrackedParameter<int>("ZDC_OfflineColdThreshold");
23  OfflineDeadThreshold_ = psZDC.getUntrackedParameter<int>("ZDC_OfflineDeadThreshold");
24  OnlineDeadThreshold_ = psZDC.getUntrackedParameter<int>("ZDC_OnlineDeadThreshold");
25  OnlineColdThreshold_ = psZDC.getUntrackedParameter<int>("ZDC_OnlineColdThreshold");
26 
27  for (int i=0;i<18;++i)
28  {
31  }
32 
33  EventCounter=0;
34 
35  if (showTiming) {
36  cpu_timer.reset();
37  cpu_timer.start();
38  }
39 
40  if (fVerbosity > 0)
41  std::cout << "<HcalZDCMonitor::setup> Setting up histograms" << std::endl;
42 
43  if (fVerbosity > 1)
44  std::cout << "<HcalZDCMonitor::setup> Getting variable values from cfg files" << std::endl;
45 
46  // Set initial event # to 0
47  ievt_ = 0;
48 
49  //Histograms
50  if (fVerbosity > 1)
51  std::cout << "<HcalZDCMonitor::setup> Setting up Histograms" << std::endl;
52 
54  meEVT_ = ib.bookInt("ZDC Event Number");
55  meEVT_->Fill(ievt_);
56  char name[128];
57  char title[128];
58 
59  PZDC_QualityIndexVsLB_ = ib.book1D("PZDC_QualityIndexVSLB","Quality Index for the ZDC+ vs LS; LS; Quality Index", NLumiBlocks_,0,NLumiBlocks_);
60  NZDC_QualityIndexVsLB_ = ib.book1D("NZDC_QualityIndexVSLB","Quality Index for the ZDC- vs LS; LS; Quality Index", NLumiBlocks_,0,NLumiBlocks_);
61  EventsVsLS = ib.book1D("EventsVsLS", "Total Number of Events per LS; LS; # of Events", NLumiBlocks_,0,NLumiBlocks_);
62 
63  //
64  h_2D_charge = ib.book2D("2D_DigiCharge", "Digi Charge (fC)", 2, 0, 2, 9, 0, 9);
65  h_2D_charge->setBinLabel(1,"ZDC+",1);
66  h_2D_charge->setBinLabel(2,"ZDC-",1);
67  h_2D_charge->setBinLabel(1,"EM1",2);
68  h_2D_charge->setBinLabel(2,"EM2",2);
69  h_2D_charge->setBinLabel(3,"EM3",2);
70  h_2D_charge->setBinLabel(4,"EM4",2);
71  h_2D_charge->setBinLabel(5,"EM5",2);
72  h_2D_charge->setBinLabel(6,"HAD1",2);
73  h_2D_charge->setBinLabel(7,"HAD2",2);
74  h_2D_charge->setBinLabel(8,"HAD3",2);
75  h_2D_charge->setBinLabel(9,"HAD4",2);
76 
77  h_2D_TSMean = ib.book2D("2D_DigiTiming", "Digi Timing", 2, 0, 2, 9, 0, 9);
78  h_2D_TSMean->setBinLabel(1,"ZDC+",1);
79  h_2D_TSMean->setBinLabel(2,"ZDC-",1);
80  h_2D_TSMean->setBinLabel(1,"EM1",2);
81  h_2D_TSMean->setBinLabel(2,"EM2",2);
82  h_2D_TSMean->setBinLabel(3,"EM3",2);
83  h_2D_TSMean->setBinLabel(4,"EM4",2);
84  h_2D_TSMean->setBinLabel(5,"EM5",2);
85  h_2D_TSMean->setBinLabel(6,"HAD1",2);
86  h_2D_TSMean->setBinLabel(7,"HAD2",2);
87  h_2D_TSMean->setBinLabel(8,"HAD3",2);
88  h_2D_TSMean->setBinLabel(9,"HAD4",2);
89 
90  h_2D_RecHitEnergy = ib.book2D("2D_RecHitEnergy", "Rechit Energy", 2, 0, 2, 9, 0, 9);
91  h_2D_RecHitEnergy->setBinLabel(1,"ZDC+",1);
92  h_2D_RecHitEnergy->setBinLabel(2,"ZDC-",1);
93  h_2D_RecHitEnergy->setBinLabel(1,"EM1",2);
94  h_2D_RecHitEnergy->setBinLabel(2,"EM2",2);
95  h_2D_RecHitEnergy->setBinLabel(3,"EM3",2);
96  h_2D_RecHitEnergy->setBinLabel(4,"EM4",2);
97  h_2D_RecHitEnergy->setBinLabel(5,"EM5",2);
98  h_2D_RecHitEnergy->setBinLabel(6,"HAD1",2);
99  h_2D_RecHitEnergy->setBinLabel(7,"HAD2",2);
100  h_2D_RecHitEnergy->setBinLabel(8,"HAD3",2);
101  h_2D_RecHitEnergy->setBinLabel(9,"HAD4",2);
102 
103  h_2D_RecHitTime = ib.book2D("2D_RecHitTime", "Rechit Timing", 2, 0, 2, 9, 0, 9);
104  h_2D_RecHitTime->setBinLabel(1,"ZDC+",1);
105  h_2D_RecHitTime->setBinLabel(2,"ZDC-",1);
106  h_2D_RecHitTime->setBinLabel(1,"EM1",2);
107  h_2D_RecHitTime->setBinLabel(2,"EM2",2);
108  h_2D_RecHitTime->setBinLabel(3,"EM3",2);
109  h_2D_RecHitTime->setBinLabel(4,"EM4",2);
110  h_2D_RecHitTime->setBinLabel(5,"EM5",2);
111  h_2D_RecHitTime->setBinLabel(6,"HAD1",2);
112  h_2D_RecHitTime->setBinLabel(7,"HAD2",2);
113  h_2D_RecHitTime->setBinLabel(8,"HAD3",2);
114  h_2D_RecHitTime->setBinLabel(9,"HAD4",2);
115 
116  h_2D_saturation = ib.book2D("h_2D_QIE", "Saturation Check", 2, 0, 2, 9, 0, 9);
117  h_2D_saturation->setBinLabel(1,"ZDC+",1);
118  h_2D_saturation->setBinLabel(2,"ZDC-",1);
119  h_2D_saturation->setBinLabel(1,"EM1",2);
120  h_2D_saturation->setBinLabel(2,"EM2",2);
121  h_2D_saturation->setBinLabel(3,"EM3",2);
122  h_2D_saturation->setBinLabel(4,"EM4",2);
123  h_2D_saturation->setBinLabel(5,"EM5",2);
124  h_2D_saturation->setBinLabel(6,"HAD1",2);
125  h_2D_saturation->setBinLabel(7,"HAD2",2);
126  h_2D_saturation->setBinLabel(8,"HAD3",2);
127  h_2D_saturation->setBinLabel(9,"HAD4",2);
128 
129 
130  // digi errors
131  ib.setCurrentFolder(baseFolder_ + "/Errors/Digis");
132  ZDC_Digi_Errors = ib.book2D("ZDC_Digi_Errors", "Raw Number of Digi Errors Per ZDC Channel", 2, 0, 2, 9, 0, 9);
133  ZDC_Digi_Errors->setBinLabel(1,"ZDC+",1);
134  ZDC_Digi_Errors->setBinLabel(2,"ZDC-",1);
135  ZDC_Digi_Errors->setBinLabel(1,"EM1",2);
136  ZDC_Digi_Errors->setBinLabel(2,"EM2",2);
137  ZDC_Digi_Errors->setBinLabel(3,"EM3",2);
138  ZDC_Digi_Errors->setBinLabel(4,"EM4",2);
139  ZDC_Digi_Errors->setBinLabel(5,"EM5",2);
140  ZDC_Digi_Errors->setBinLabel(6,"HAD1",2);
141  ZDC_Digi_Errors->setBinLabel(7,"HAD2",2);
142  ZDC_Digi_Errors->setBinLabel(8,"HAD3",2);
143  ZDC_Digi_Errors->setBinLabel(9,"HAD4",2);
144  ZDC_Digi_Errors->getTH2F()->SetOption("coltext");
145 
146 
147  ZDC_DigiErrorsVsLS = ib.book1D("ZDC_DigiErrorsVsLS","Total Number of (Digi) Errors found in the ZDCs vs. Lumi Section;LS;# errors",NLumiBlocks_,0,NLumiBlocks_);
148 
149  ib.setCurrentFolder(baseFolder_ + "/Errors/Digis/DigiErrorCauses");
150  ZDC_DigiErrors_DVER = ib.book2D("ZDC_DigiErrors_DVER","Raw Number of Digi Errors Caused by Finding .dv()=0 or .er()=1",2,0,2,9,0,9);
151  ZDC_DigiErrors_DVER->setBinLabel(1,"ZDC+",1);
152  ZDC_DigiErrors_DVER->setBinLabel(2,"ZDC-",1);
153  ZDC_DigiErrors_DVER->setBinLabel(1,"EM1",2);
154  ZDC_DigiErrors_DVER->setBinLabel(2,"EM2",2);
155  ZDC_DigiErrors_DVER->setBinLabel(3,"EM3",2);
156  ZDC_DigiErrors_DVER->setBinLabel(4,"EM4",2);
157  ZDC_DigiErrors_DVER->setBinLabel(5,"EM5",2);
158  ZDC_DigiErrors_DVER->setBinLabel(6,"HAD1",2);
159  ZDC_DigiErrors_DVER->setBinLabel(7,"HAD2",2);
160  ZDC_DigiErrors_DVER->setBinLabel(8,"HAD3",2);
161  ZDC_DigiErrors_DVER->setBinLabel(9,"HAD4",2);
162  ZDC_DigiErrors_DVER->getTH2F()->SetOption("coltext");
163 
164  ZDC_DigiErrors_CAPID = ib.book2D("ZDC_DigiErrors_CAPID","Raw Number of Digi Errors Caused by the Caps not Alternating",2,0,2,9,0,9);
165  ZDC_DigiErrors_CAPID->setBinLabel(1,"ZDC+",1);
166  ZDC_DigiErrors_CAPID->setBinLabel(2,"ZDC-",1);
167  ZDC_DigiErrors_CAPID->setBinLabel(1,"EM1",2);
168  ZDC_DigiErrors_CAPID->setBinLabel(2,"EM2",2);
169  ZDC_DigiErrors_CAPID->setBinLabel(3,"EM3",2);
170  ZDC_DigiErrors_CAPID->setBinLabel(4,"EM4",2);
171  ZDC_DigiErrors_CAPID->setBinLabel(5,"EM5",2);
172  ZDC_DigiErrors_CAPID->setBinLabel(6,"HAD1",2);
173  ZDC_DigiErrors_CAPID->setBinLabel(7,"HAD2",2);
174  ZDC_DigiErrors_CAPID->setBinLabel(8,"HAD3",2);
175  ZDC_DigiErrors_CAPID->setBinLabel(9,"HAD4",2);
176  ZDC_DigiErrors_CAPID->getTH2F()->SetOption("coltext");
177 
178 
179  // hot channels
180  ib.setCurrentFolder(baseFolder_ + "/Errors/HotChannel");
181  ZDC_Hot_Channel_Errors = ib.book2D("ZDC_Hot_Channel_Errors", "Raw Number of Times Each Channel Appeared Hot", 2, 0, 2, 9, 0, 9);
182  ZDC_Hot_Channel_Errors->setBinLabel(1,"ZDC+",1);
183  ZDC_Hot_Channel_Errors->setBinLabel(2,"ZDC-",1);
189  ZDC_Hot_Channel_Errors->setBinLabel(6,"HAD1",2);
190  ZDC_Hot_Channel_Errors->setBinLabel(7,"HAD2",2);
191  ZDC_Hot_Channel_Errors->setBinLabel(8,"HAD3",2);
192  ZDC_Hot_Channel_Errors->setBinLabel(9,"HAD4",2);
193  ZDC_Hot_Channel_Errors->getTH2F()->SetOption("coltext");
194 
195 
196  ZDC_HotChannelErrorsVsLS = ib.book1D("ZDC_HotChannelErrorsVsLS","Total Number of Hot Channel Errors in the ZDCs vs. Lumi Section; LS; # Hot channels", NLumiBlocks_,0,NLumiBlocks_);
197 
198  // dead channels
199  ib.setCurrentFolder(baseFolder_ + "/Errors/DeadChannel");
200  ZDC_Dead_Channel_Errors = ib.book2D("ZDC_Dead_Channel_Errors", "Raw Number of Times Each Channel Appeared Dead", 2, 0, 2, 9, 0, 9);
212  ZDC_Dead_Channel_Errors->getTH2F()->SetOption("coltext");
213 
214  ZDC_DeadChannelErrorsVsLS = ib.book1D("ZDC_DeadChannelErrorsVsLS","Total Number of Dead Channel Errors in the ZDC vs. Lumi Section; LS; # of Dead Chanels", NLumiBlocks_, 0, NLumiBlocks_);
215 
216  // cold channels
217  ib.setCurrentFolder(baseFolder_ + "/Errors/ColdChannel");
218  ZDC_Cold_Channel_Errors = ib.book2D("ZDC_Cold_Channel_Errors", "Raw Number of Times Each Channel Appeared Cold", 2, 0, 2, 9, 0, 9);
230  ZDC_Cold_Channel_Errors->getTH2F()->SetOption("coltext");
231 
232  ZDC_ColdChannelErrorsVsLS=ib.book1D("ZDC_ColdChannelErrorsVsLS","Total Number of Cold Channels in the ZDC vs. Lumi Section; LS; # of Cold Chanels", NLumiBlocks_, 0, NLumiBlocks_);
233 
234  // total errors
235  ib.setCurrentFolder(baseFolder_ + "/Errors");
236  ZDC_TotalChannelErrors = ib.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);
237  ZDC_TotalChannelErrors->setBinLabel(1,"ZDC+",1);
238  ZDC_TotalChannelErrors->setBinLabel(2,"ZDC-",1);
244  ZDC_TotalChannelErrors->setBinLabel(6,"HAD1",2);
245  ZDC_TotalChannelErrors->setBinLabel(7,"HAD2",2);
246  ZDC_TotalChannelErrors->setBinLabel(8,"HAD3",2);
247  ZDC_TotalChannelErrors->setBinLabel(9,"HAD4",2);
248  ZDC_TotalChannelErrors->getTH2F()->SetOption("coltext");
249 
250  ib.setCurrentFolder(baseFolder_ + "/Digis");
251 
252  for (int i = 0; i < 5; ++i) {
253  // pulse Plus Side
254  sprintf(title, "h_ZDCP_EMChan_%i_Pulse", i + 1);
255  sprintf(name, "ZDC Plus EM Section Pulse for channel %i", i + 1);
256  h_ZDCP_EM_Pulse[i] = ib.book1D(title, name, 10, -0.5, 9.5);
257  h_ZDCP_EM_Pulse[i]->setAxisTitle("Time Slice id",1);
258  h_ZDCP_EM_Pulse[i]->setAxisTitle("Pulse Height",2);
259  // pulse Minus Side
260  sprintf(title, "h_ZDCM_EMChan_%i_Pulse", i + 1);
261  sprintf(name, "ZDC Minus EM Section Pulse for channel %i", i + 1);
262  h_ZDCM_EM_Pulse[i] = ib.book1D(title, name, 10, -0.5, 9.5);
263  h_ZDCM_EM_Pulse[i]->setAxisTitle("Time Slice id",1);
264  h_ZDCM_EM_Pulse[i]->setAxisTitle("Pulse Height",2);
265  // integrated charge over 10 time samples
266  sprintf(title, "h_ZDCP_EMChan_%i_Charge", i + 1);
267  sprintf(name, "ZDC Plus EM Section Charge for channel %i", i + 1);
268  h_ZDCP_EM_Charge[i] = ib.book1D(title, name, 1000, 0., 30000.);
269  h_ZDCP_EM_Charge[i]->setAxisTitle("Charge (fC)",1);
270  h_ZDCP_EM_Charge[i]->setAxisTitle("Events",2);
271  // integrated charge over 10 time samples
272  sprintf(title, "h_ZDCM_EMChan_%i_Charge", i + 1);
273  sprintf(name, "ZDC Minus EM Section Charge for channel %i", i + 1);
274  h_ZDCM_EM_Charge[i] = ib.book1D(title, name, 1000, 0., 30000.);
275  h_ZDCM_EM_Charge[i]->setAxisTitle("Charge (fC)",1);
276  h_ZDCM_EM_Charge[i]->setAxisTitle("Events",2);
277  // charge weighted time slice
278  sprintf(title, "h_ZDCP_EMChan_%i_TSMean", i + 1);
279  sprintf(name, "ZDC Plus EM Section TSMean for channel %i", i + 1);
280  h_ZDCP_EM_TSMean[i] = ib.book1D(title, name, 100, -0.5, 9.5);
281  h_ZDCP_EM_TSMean[i]->setAxisTitle("Timing",1);
282  h_ZDCP_EM_TSMean[i]->setAxisTitle("Events",2);
283  // charge weighted time slice
284  sprintf(title, "h_ZDCM_EMChan_%i_TSMean", i + 1);
285  sprintf(name, "ZDC Minus EM Section TSMean for channel %i", i + 1);
286  h_ZDCM_EM_TSMean[i] = ib.book1D(title, name, 100, -0.5, 9.5);
287  h_ZDCM_EM_TSMean[i]->setAxisTitle("Timing",1);
288  h_ZDCM_EM_TSMean[i]->setAxisTitle("Events",2);
289  }
290 
291  for (int i = 0; i < 4; ++i) {
292  // pulse Plus Side
293  sprintf(title, "h_ZDCP_HADChan_%i_Pulse", i + 1);
294  sprintf(name, "ZDC Plus HAD Section Pulse for channel %i", i + 1);
295  h_ZDCP_HAD_Pulse[i] = ib.book1D(title, name, 10, -0.5, 9.5);
296  h_ZDCP_HAD_Pulse[i]->setAxisTitle("Time Slice id",1);
297  h_ZDCP_HAD_Pulse[i]->setAxisTitle("Pulse Height",2);
298  // pulse Minus Side
299  sprintf(title, "h_ZDCM_HADChan_%i_Pulse", i + 1);
300  sprintf(name, "ZDC Minus HAD Section Pulse for channel %i", i + 1);
301  h_ZDCM_HAD_Pulse[i] = ib.book1D(title, name, 10, -0.5, 9.5);
302  h_ZDCM_HAD_Pulse[i]->setAxisTitle("Time Slice id",1);
303  h_ZDCM_HAD_Pulse[i]->setAxisTitle("Pulse Height",2);
304  // integrated charge over 10 time samples
305  sprintf(title, "h_ZDCP_HADChan_%i_Charge", i + 1);
306  sprintf(name, "ZDC Plus HAD Section Charge for channel %i", i + 1);
307  h_ZDCP_HAD_Charge[i] = ib.book1D(title, name, 1000, 0., 30000.);
308  h_ZDCP_HAD_Charge[i]->setAxisTitle("Charge (fC)",1);
309  h_ZDCP_HAD_Charge[i]->setAxisTitle("Events",2);
310  // integrated charge over 10 time samples
311  sprintf(title, "h_ZDCM_HADChan_%i_Charge", i + 1);
312  sprintf(name, "ZDC Minus HAD Section Charge for channel %i", i + 1);
313  h_ZDCM_HAD_Charge[i] = ib.book1D(title, name, 1000, 0., 30000.);
314  h_ZDCM_HAD_Charge[i]->setAxisTitle("Charge (fC)",1);
315  h_ZDCM_HAD_Charge[i]->setAxisTitle("Events",2);
316  // charge weighted time slice
317  sprintf(title, "h_ZDCP_HADChan_%i_TSMean", i + 1);
318  sprintf(name, "ZDC Plus HAD Section TSMean for channel %i", i + 1);
319  h_ZDCP_HAD_TSMean[i] = ib.book1D(title, name, 100, -0.5, 9.5);
320  h_ZDCP_HAD_TSMean[i]->setAxisTitle("Timing",1);
321  h_ZDCP_HAD_TSMean[i]->setAxisTitle("Events",2);
322  // charge weighted time slice
323  sprintf(title, "h_ZDCM_HADChan_%i_TSMean", i + 1);
324  sprintf(name, "ZDC Minus HAD Section TSMean for channel %i", i + 1);
325  h_ZDCM_HAD_TSMean[i] = ib.book1D(title, name, 100, -0.5, 9.5);
326  h_ZDCM_HAD_TSMean[i]->setAxisTitle("Timing",1);
327  h_ZDCM_HAD_TSMean[i]->setAxisTitle("Events",2);
328  }
329 
330  ib.setCurrentFolder(baseFolder_ + "/RecHits");
331 
332  for (int i = 0; i < 5; ++i) {
333  //RecHitEnergy Plus Side
334  sprintf(title,"h_ZDCP_EMChan_%i_RecHit_Energy",i+1);
335  sprintf(name,"ZDC EM Section Rechit Energy for channel %i",i+1);
336  h_ZDCP_EM_RecHitEnergy[i] = ib.book1D(title, name, 1010, -100., 10000.);
337  h_ZDCP_EM_RecHitEnergy[i]->setAxisTitle("Energy (GeV)",1);
338  h_ZDCP_EM_RecHitEnergy[i]->setAxisTitle("Events",2);
339  //RecHitEnergy Minus Side
340  sprintf(title,"h_ZDCM_EMChan_%i_RecHit_Energy",i+1);
341  sprintf(name,"ZDC EM Section Rechit Energy for channel %i",i+1);
342  h_ZDCM_EM_RecHitEnergy[i] = ib.book1D(title, name, 1010, -100., 10000.);
343  h_ZDCM_EM_RecHitEnergy[i]->setAxisTitle("Energy (GeV)",1);
344  h_ZDCM_EM_RecHitEnergy[i]->setAxisTitle("Events",2);
345  //RecHit Timing Plus Side
346  sprintf(title,"h_ZDCP_EMChan_%i_RecHit_Timing",i+1);
347  sprintf(name,"ZDC EM Section Rechit Timing for channel %i",i+1);
348  h_ZDCP_EM_RecHitTiming[i] = ib.book1D(title, name, 100, -100., 100.);
349  h_ZDCP_EM_RecHitTiming[i]->setAxisTitle("RecHit Time",1);
350  h_ZDCP_EM_RecHitTiming[i]->setAxisTitle("Events",2);
351  //RecHit Timing Minus Side
352  sprintf(title,"h_ZDCM_EMChan_%i_RecHit_Timing",i+1);
353  sprintf(name,"ZDC EM Section Rechit Timing for channel %i",i+1);
354  h_ZDCM_EM_RecHitTiming[i] = ib.book1D(title, name, 100, -100., 100.);
355  h_ZDCM_EM_RecHitTiming[i]->setAxisTitle("RecHit Time",1);
356  h_ZDCM_EM_RecHitTiming[i]->setAxisTitle("Events",2);
357  }
358 
359  for (int i = 0; i < 4; ++i) {
360  //RecHitEnergy Plus Side
361  sprintf(title,"h_ZDCP_HADChan_%i_RecHit_Energy",i+1);
362  sprintf(name,"ZDC HAD Section Rechit Energy for channel %i",i+1);
363  h_ZDCP_HAD_RecHitEnergy[i] = ib.book1D(title, name, 1010, -100., 10000.);
364  h_ZDCP_HAD_RecHitEnergy[i]->setAxisTitle("Energy (GeV)",1);
365  h_ZDCP_HAD_RecHitEnergy[i]->setAxisTitle("Events",2);
366  //RecHitEnergy Minus Side
367  sprintf(title,"h_ZDCM_HADChan_%i_RecHit_Energy",i+1);
368  sprintf(name,"ZDC HAD Section Rechit Energy for channel %i",i+1);
369  h_ZDCM_HAD_RecHitEnergy[i] = ib.book1D(title, name, 1010, -100., 10000.);
370  h_ZDCM_HAD_RecHitEnergy[i]->setAxisTitle("Energy (GeV)",1);
371  h_ZDCM_HAD_RecHitEnergy[i]->setAxisTitle("Events",2);
372  //RecHit Timing Plus Side
373  sprintf(title,"h_ZDCP_HADChan_%i_RecHit_Timing",i+1);
374  sprintf(name,"ZDC HAD Section Rechit Timing for channel %i",i+1);
375  h_ZDCP_HAD_RecHitTiming[i] = ib.book1D(title, name, 100, -100., 100.);
376  h_ZDCP_HAD_RecHitTiming[i]->setAxisTitle("RecHit Time",1);
377  h_ZDCP_HAD_RecHitTiming[i]->setAxisTitle("Events",2);
378  //RecHit Timing Minus Side
379  sprintf(title,"h_ZDCM_HADChan_%i_RecHit_Timing",i+1);
380  sprintf(name,"ZDC HAD Section Rechit Timing for channel %i",i+1);
381  h_ZDCM_HAD_RecHitTiming[i] = ib.book1D(title, name, 100, -100., 100.);
382  h_ZDCM_HAD_RecHitTiming[i]->setAxisTitle("RecHit Time",1);
383  h_ZDCM_HAD_RecHitTiming[i]->setAxisTitle("Events",2);
384  }
385 
386  return;
387 }
388 
390  if (fVerbosity > 0)
391  std::cout << "<HcalZDCMonitor::processEvent> Processing Event..." << std::endl;
392  if (showTiming)
393  {
394  cpu_timer.reset();
395  cpu_timer.start();
396  }
397  ++ievt_;
398  meEVT_->Fill(ievt_);
399 
400  //--------------------------------------
401  // ZDC Digi part
402  //--------------------------------------
403  double fSum = 0.;
404  std::vector<double> fData;
405  double digiThresh = 99.5; //corresponds to 40 ADC counts
406  //int digiThreshADC = 40;
407  int digiSaturation = 127;
408  //double ZDCQIEConst = 2.6;
409 
410  if (digi.size()>0) {
411  ZDC_Digi_Errors->Fill(-1,-1,1);
412  ZDC_Hot_Channel_Errors->Fill(-1,-1,1);
413  ZDC_TotalChannelErrors->Fill(-1,-1,1);
414  ZDC_Cold_Channel_Errors->Fill(-1,-1,1);
415  ZDC_Dead_Channel_Errors->Fill(-1,-1,1);
416  EventCounter+=1;
417  }
418 
419  for (int i=0;i<18;++i) {
420  ChannelHasDigiError[i]=false;
421  DigiErrorDVER[i]=false;
422  DigiErrorCAPID[i]=false;
423  HotChannelError[i]=false;
424  DeadChannelError[i]=true;
425  }
426 
427  typedef std::vector<DetId> DetIdVector;
428 
429  for (DetIdVector::const_iterator baddigi_iter=report.bad_quality_begin();
430  baddigi_iter != report.bad_quality_end();
431  ++baddigi_iter)
432  {
433  DetId id(baddigi_iter->rawId());
434  if (id.det()==DetId::Calo && id.subdetId()==HcalZDCDetId::SubdetectorId)
435  {
436  HcalZDCDetId id(baddigi_iter->rawId());
437  int iSide = id.zside();
438  int iSection = id.section();
439  int iChannel = id.channel();
440  if(iSection==1 || iSection==2){
441  ChannelHasDigiError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
442  DeadChannelError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=false;
443  //do stuff
444  }//end of if i(Section==1 || iSection==2)
445  }
446  else continue;
447 
448  }//end unpacker section
449 
450 
451  // ChannelHasError[18]: [0-8] are iSide=1, [9-17] are iSide=2
452  // First 5 bins ([0-4],[9-13]) are EM bins
453  // Last 4 bins are HAD bins
454 
455  for (ZDCDigiCollection::const_iterator digi_iter = digi.begin();
456  digi_iter != digi.end(); ++digi_iter)
457  {
458  const ZDCDataFrame digi = (const ZDCDataFrame) (*digi_iter);
459  //HcalZDCDetId id(digi_iter->id());
460  int iSide = digi_iter->id().zside();
461  int iSection = digi_iter->id().section();
462  int iChannel = digi_iter->id().channel();
463 
464  unsigned int fTS = digi_iter->size();
465  while (fData.size()<fTS)
466  fData.push_back(-999);
467  while (fData.size()>fTS)
468  fData.pop_back(); // delete last elements
469 
470  if (iSection==1 || iSection==2)
471  {
472 
474 
477  DeadChannelError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=false;
479 
480  int iCapID=27;
481  int iCapIDPrevious=27;
482  int HotCounter=0;
483  int ColdCounter=0;
484 
485  for (int iTS=0; iTS<digi.size(); ++iTS) //looping over all ten timeslices
486  {
488  if (digi[iTS].adc()==127) HotCounter+=1;
489  else HotCounter=0;//require 3 consecutive saturated Time Slices in a single channel in a single event
490  if (HotCounter >= 3) HotChannelError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
492 
493 
495  if (digi[iTS].adc()<=10) ColdCounter+=1;
496  if (ColdCounter==10)
497  {
498  ColdChannelCounter[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]+=1;
499  }
501 
502 
505  if ((ChannelHasDigiError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=false))
506  {
507  iCapID=digi.sample(iTS).capid();
508  if (iTS>0) iCapIDPrevious=digi.sample(iTS-1).capid();
509 
510  if (digi.sample(iTS).dv()==0 || digi.sample(iTS).er()==1)
511  {
512  ChannelHasDigiError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
513  DigiErrorDVER[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
514  break;
515  }
516  else
517  {
518  if (iTS==0) continue;
519  else
520  {
521  if ((iCapID-iCapIDPrevious+4)%4!=1)
522  {
523  ChannelHasDigiError[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
524  DigiErrorCAPID[(9*((1-iSide)/2))+(iChannel-1)+(5*((iSection-1)%2))]=true;
525  break;
526  }//end of capid rotation check
527  }//checking if TS!=0
528  } // end of the check for dv/er
529  }//END of unpacker double check
530  } // end of TS loop
531 
533 
534 
535  fSum = 0.;
536  bool saturated = false;
537  for (unsigned int i = 0; i < fTS; ++i)
538  {
539  //fData[i]=digi[i].nominal_fC() * ZDCQIEConst;
540  fData[i]=digi[i].nominal_fC();
541  if (digi[i].adc()==digiSaturation){
542  saturated=true;
543  }
544  }
545 
546  double fTSMean = 0;
547  if (fData.size()>6)
548  fTSMean = getTime(fData, 4, 6, fSum); // tsmin = 4, tsmax = 6.
549  //std::cout << "Side= " << iSide << " Section= " << iSection << " Channel= " << iChannel << "\tCharge\t" << fSum <<std::endl;
550  if (saturated==true){
551  h_2D_saturation->Fill(iSide==1?0:1,iSection==1?iChannel-1:iChannel+4,1);
552  }
553 
554  if (iSection == 1)
555  { // EM
556  if (iSide == 1) { // Plus
557  for (unsigned int i = 0; i < fTS; ++i) {
558  if (fData[i] > digiThresh) h_ZDCP_EM_Pulse[iChannel - 1]->Fill(i, fData[i]);
559  }
560  if (fSum > digiThresh) {
561  h_ZDCP_EM_Charge[iChannel - 1]->Fill(fSum);
562  h_ZDCP_EM_TSMean[iChannel - 1]->Fill(fTSMean);
563  //std::cout<< "fSum " << fSum << " fTSMean " << fTSMean <<std::endl;
564  }
565  } // Plus
566  if (iSide == -1) { // Minus
567  for (unsigned int i = 0; i < fTS; ++i) {
568  if (fData[i] > digiThresh) h_ZDCM_EM_Pulse[iChannel - 1]->Fill(i, fData[i]);
569  }
570  if (fSum > digiThresh) {
571  h_ZDCM_EM_Charge[iChannel - 1]->Fill(fSum);
572  h_ZDCM_EM_TSMean[iChannel - 1]->Fill(fTSMean);
573  }
574  } // Minus
575  }// EM
576 
577  else if (iSection == 2)
578  { // HAD
579  if (iSide == 1) { // Plus
580  for (unsigned int i = 0; i < fTS; ++i) {
581  if (fData[i] > digiThresh) h_ZDCP_HAD_Pulse[iChannel - 1]->Fill(i, fData[i]);
582  }
583  if (fSum > digiThresh) {
584  h_ZDCP_HAD_Charge[iChannel - 1]->Fill(fSum);
585  h_ZDCP_HAD_TSMean[iChannel - 1]->Fill(fTSMean);
586  }
587  } // Plus
588  if (iSide == -1) { // Minus
589  for (unsigned int i = 0; i < fTS; ++i) {
590  if (fData[i] > digiThresh) h_ZDCM_HAD_Pulse[iChannel - 1]->Fill(i, fData[i]);
591  }
592  if (fSum > digiThresh) {
593  h_ZDCM_HAD_Charge[iChannel - 1]->Fill(fSum);
594  h_ZDCM_HAD_TSMean[iChannel - 1]->Fill(fTSMean);
595  }
596  }// Minus
597  } // HAD
598  }//end of if (iSection==1 || iSection==2)
599  } // loop on zdc digi collection
600 
601 
602 
604  // Fill Fall 2012 histograms
606  int numdigierrors=0;
607  int numhoterrors=0;
608 
609  for (int i = 0; i<18; i++){
610  if (ChannelHasDigiError[i]==true)
611  {
612  ++numdigierrors;
613  ZDC_Digi_Errors->Fill(i/9,i%9,1);
614  }
615  if (DigiErrorDVER[i]==true)
616  {
617  ZDC_DigiErrors_DVER->Fill(i/9,i%9,1);
618  }
619  if (DigiErrorCAPID[i]==true)
620  {
621  ZDC_DigiErrors_CAPID->Fill(i/9,i%9,1);
622  }
623  if(HotChannelError[i]==true)
624  {
625  ++numhoterrors;
626  ZDC_Hot_Channel_Errors->Fill(i/9,(i%9),1);
627  }
628  if(DeadChannelError[i]==true)
629  {
630  DeadChannelCounter[i]+=1;
631  }
632  // If any of the above is true, fill the total channel errors
634  {
635  ZDC_TotalChannelErrors->Fill(i/9,i%9,1);
636  TotalChannelErrors[i]+=1;
637  }
638  }//end the for i<18 loop
639 
640 
641  if (numdigierrors>0)
642  ZDC_DigiErrorsVsLS->Fill(lumiblock,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
643  if (numhoterrors>0)
644  ZDC_HotChannelErrorsVsLS->Fill(lumiblock,numhoterrors);
646  //End of filling Fall 2012 histograms
648 
649 
650  //--------------------------------------
651  // ZDC RecHit part
652  //--------------------------------------
653  for (ZDCRecHitCollection::const_iterator rechit_iter = rechit.begin();
654  rechit_iter != rechit.end(); ++rechit_iter)
655  {
656  int Side = (rechit_iter->id()).zside();
657  int Section = (rechit_iter->id()).section();
658  int Channel = (rechit_iter->id()).channel();
659  //std::cout << "RecHitEnergy " << zhit->energy() << " RecHitTime " << zhit->time() << std::endl;
660 
661  if(Section==1)
662  { //EM
663  if (Side ==1 ){ // Plus
664  h_ZDCP_EM_RecHitEnergy[Channel-1]->Fill(rechit_iter->energy());
665  h_ZDCP_EM_RecHitTiming[Channel-1]->Fill(rechit_iter->time());
666  }
667  if (Side == -1 ){ //Minus
668  h_ZDCM_EM_RecHitEnergy[Channel-1]->Fill(rechit_iter->energy());
669  h_ZDCM_EM_RecHitTiming[Channel-1]->Fill(rechit_iter->time());
670  }
671  } //EM
672  else if(Section==2)
673  { //HAD
674  if (Side ==1 ){ //Plus
675  h_ZDCP_HAD_RecHitEnergy[Channel-1]->Fill(rechit_iter->energy());
676  h_ZDCP_HAD_RecHitTiming[Channel-1]->Fill(rechit_iter->time());
677  }
678  if (Side == -1 ){ //Minus
679  h_ZDCM_HAD_RecHitEnergy[Channel-1]->Fill(rechit_iter->energy());
680  h_ZDCM_HAD_RecHitTiming[Channel-1]->Fill(rechit_iter->time());
681  }
682  } // HAD
683  } // loop on rechits
684 
685 } // end of event processing
686 /*
687  ------------------------------------------------------------------------------------
688 // This is what we did to find the good signal. After we've started to use only time slice 4,5,6.
689 bool HcalZDCMonitor::isGood(std::vector<double>fData, double fCut, double fPercentage) {
690 bool dec = false;
691 int ts_max = -1;
692 
693 ts_max = getTSMax(fData);
694 if (ts_max == 0 || ts_max == (int)(fData.size() - 1))
695 return false;
696 float sum = fData[ts_max - 1] + fData[ts_max + 1];
697 
698 // cout << "tsMax " << ts_max << " data[tsmax] " << mData[ts_max] << " sum " << sum << endl;
699 if (fData[ts_max] > fCut && sum > (fData[ts_max] * fPercentage))
700 dec = true;
701 return dec;
702 } // bool HcalZDCMonitor::isGood
703 
704 int HcalZDCMonitor::getTSMax(std::vector<double>fData)
705 {
706 int ts_max = -100;
707 double max = -999.;
708 
709 for (unsigned int j = 0; j < fData.size(); ++j) {
710 if (max < fData[j]) {
711 max = fData[j];
712 ts_max = j;
713 }
714 }
715 return ts_max;
716 } // int HcalZDCMonitor::getTSMax()
717 ------------------------------------------------------------------------------------
718 */
719 double HcalZDCMonitor::getTime(const std::vector<double>& fData, unsigned int ts_min, unsigned int ts_max, double &fSum) {
720  double weightedTime = 0.;
721  double SumT = 0.;
722  double Time = -999.;
723  double digiThreshf = 99.5;
724 
725  for (unsigned int ts=ts_min; ts<=ts_max; ++ts) {
726  if (fData[ts] > digiThreshf){
727  weightedTime += ts * fData[ts];
728  SumT += fData[ts];
729  }
730  }
731 
732  if (SumT > 0.) {
733  Time = weightedTime / SumT;
734  }
735 
736  fSum = SumT;
737 
738  return Time;
739 
740 } //double HcalZDCMonitor::getTime()
741 
742 
744 {
745  bool HadLumiError[18]={false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false};
746 
748 
749  if(Online_ == false)
750  {//checks if DQM is in OFFLINE MODE
751  for (int i=0;i<18;++i) {
753  if (ChannelRatio[i] <= MaxErrorRates_[i]) {
754  if (i<9) {
756  } else {
758  }
759  if (ColdChannelCounter[i] >= OfflineColdThreshold_)//Begin Cold Error Plots
760  {
763  ZDC_TotalChannelErrors->Fill(i/9,i%9,ColdChannelCounter[i]);//Can change this between 1, or the amount of errors (Currently the latter)
765  HadLumiError[i]=true;
766  }//END OF Cold Error Plot
768  {//Begin Dead Error Plots
771  ZDC_TotalChannelErrors->Fill(i/9,i%9,DeadChannelCounter[i]); //Could fill this with 1 or total dead errors (which is currently done)
773  HadLumiError[i]=true;
774  }//END OF Dead Channel Plots
775  if (HadLumiError[i]==true)
776  {//Removing the QI for Dead of Cold Channels
777  if (i<9) {
779  } else {
781  }
782  }//END OF QI Removal
783  }//END OF ChannelRatio[i]<=MaxErrorRates_[i]
784  else {
785  //This part only happens if ChannelRatio[i] > MaxErrorRates_[i]...
786  //Above you notice the QI plots become 'un-filled'.
787  //If the plot was never filled to begin with,
788  //then we do not want to remove from the plot causing there to be a negative QI
790  {//Begin Cold Error Plots
795  }//END OF Cold Error Plot
797  {//Begin Dead Error plots
802  }//END OF Dead Error Plots
803  }
804  }//END OF FOR LOOP
805  }//END OF DQM OFFLINE PART
806 
807  if(Online_ == true)
808  {//checks if DQM is in ONLINE MODE
809  for (int i=0;i<18;++i) {
811  if (ChannelRatio[i] <= MaxErrorRates_[i]) {
812  if (i<9) {
814  } else {
816  }
817  if (ColdChannelCounter[i] >= OnlineColdThreshold_)//Begin Cold Error Plots
818  {
821  ZDC_TotalChannelErrors->Fill(i/9,i%9,ColdChannelCounter[i]);//Can change this between 1, or the amount of errors (Currently the latter)
823  HadLumiError[i]=true;
824  }//END OF Cold Error Plot
826  {//Begin Dead Error Plots
829  ZDC_TotalChannelErrors->Fill(i/9,i%9,DeadChannelCounter[i]); //Could fill this with 1 or total dead errors (which is currently done)
831  HadLumiError[i]=true;
832  }//END OF Dead Channel Plots
833  if (HadLumiError[i]==true)
834  {//Removing the QI for Dead of Cold Channels
835  if (i<9) {
837  } else {
839  }
840  }//END OF QI Removal
841  }//END OF ChannelRatio[i]<=MaxErrorRates_[i]
842  else {
843  //This part only happens if ChannelRatio[i] > MaxErrorRates_[i]...
844  //Above you notice the QI plots become 'un-filled'.
845  //If the plot was never filled to begin with,
846  //then we do not want to remove from the plot causing there to be a negative QI
848  {//Begin Cold Error Plots
853  }//END OF Cold Error Plot
855  {//Begin Dead Error plots
860  }//END OF Dead Error Plots
861  }//end of ChannelRatio[i] > MaxErrorRates_[i] part
862  }//END OF FOR LOOP
863  }//END OF DQM ONLINE PART
864 
865 
866 
867 
869 
870  for (int i = 0; i < 5; ++i) { // EM Channels
871  // ZDC Plus
872  h_2D_charge->setBinContent(1, i + 1, h_ZDCP_EM_Charge[i]->getMean());
873  h_2D_TSMean->setBinContent(1, i + 1, h_ZDCP_EM_TSMean[i]->getMean());
876  // ZDC Minus
877  h_2D_charge->setBinContent(2, i + 1, h_ZDCM_EM_Charge[i]->getMean());
878  h_2D_TSMean->setBinContent(2, i + 1, h_ZDCM_EM_TSMean[i]->getMean());
881  }
882 
883  for (int i = 0; i < 4; ++i) { // HAD channels
884  // ZDC Plus
885  h_2D_charge->setBinContent(1, i + 6, h_ZDCP_HAD_Charge[i]->getMean());
886  h_2D_TSMean->setBinContent(1, i + 6, h_ZDCP_HAD_TSMean[i]->getMean());
889  // ZDC Minus
890  //h_ZDCM_HAD_Pulse[i]->Scale(10. / h_ZDCM_HAD_Pulse[i]->getEntries());
891  h_2D_charge->setBinContent(2, i + 6, h_ZDCM_HAD_Charge[i]->getMean());
892  h_2D_TSMean->setBinContent(2, i + 6, h_ZDCM_HAD_TSMean[i]->getMean());
895  }
896 } // void HcalZDCMonitor::endLuminosityBlock()
897 
int adc(sample_type sample)
get the ADC sample (12 bits)
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
void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * ZDC_DigiErrorsVsLS
MonitorElement * h_ZDCP_HAD_RecHitTiming[4]
MonitorElement * h_ZDCM_EM_Pulse[5]
MonitorElement * h_ZDCM_HAD_TSMean[4]
int ib
Definition: cuy.py:660
int ColdChannelCounter[18]
void start()
Definition: CPUTimer.cc:74
MonitorElement * ZDC_Hot_Channel_Errors
MonitorElement * h_ZDCM_EM_TSMean[5]
bool HotChannelError[18]
MonitorElement * h_ZDCM_EM_RecHitTiming[5]
MonitorElement * NZDC_QualityIndexVsLB_
MonitorElement * ZDC_Dead_Channel_Errors
MonitorElement * h_2D_TSMean
MonitorElement * h_ZDCM_HAD_RecHitTiming[4]
virtual void setup(const edm::ParameterSet &ps, DQMStore::IBooker &ib)
MonitorElement * h_ZDCP_EM_RecHitEnergy[5]
int zside() const
get the z-side of the cell (1/-1)
Definition: HcalZDCDetId.h:34
MonitorElement * bookInt(Args &&...args)
Definition: DQMStore.h:103
std::vector< ZDCDataFrame >::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:28
std::vector< double > ChannelWeighting_
void reset()
Definition: CPUTimer.cc:107
MonitorElement * h_ZDCP_EM_TSMean[5]
int zside(DetId const &)
MonitorElement * h_ZDCM_EM_Charge[5]
std::vector< double > MaxErrorRates_
MonitorElement * ZDC_DeadChannelErrorsVsLS
void setup(const edm::ParameterSet &ps, DQMStore::IBooker &ib)
void Fill(long long x)
tuple report
Definition: zeeHLT_cff.py:9
MonitorElement * ZDC_HotChannelErrorsVsLS
MonitorElement * h_ZDCP_HAD_Charge[4]
MonitorElement * ZDC_ColdChannelErrorsVsLS
const HcalQIESample & sample(int i) const
access a sample
Definition: ZDCDataFrame.h:39
MonitorElement * ZDC_DigiErrors_CAPID
bool DigiErrorDVER[18]
std::string rootFolder_
MonitorElement * ZDC_DigiErrors_DVER
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
DetIdVector::const_iterator bad_quality_begin() const
MonitorElement * h_2D_saturation
MonitorElement * h_2D_charge
edm::CPUTimer cpu_timer
MonitorElement * h_2D_RecHitTime
MonitorElement * h_ZDCM_HAD_Charge[4]
std::string baseFolder_
MonitorElement * h_ZDCM_HAD_RecHitEnergy[4]
MonitorElement * ZDC_Cold_Channel_Errors
const_iterator end() const
void endLuminosityBlock(void)
Definition: DetId.h:18
MonitorElement * PZDC_QualityIndexVsLB_
double getTime(const std::vector< double > &fData, unsigned int ts_min, unsigned int ts_max, double &fSum)
MonitorElement * h_2D_RecHitEnergy
static const int SubdetectorId
Definition: HcalZDCDetId.h:20
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
bool DigiErrorCAPID[18]
int capid() const
get the Capacitor id
Definition: HcalQIESample.h:26
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
bool DeadChannelError[18]
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]
MonitorElement * ZDC_Digi_Errors
size_type size() const
MonitorElement * ZDC_TotalChannelErrors
MonitorElement * h_ZDCP_HAD_RecHitEnergy[4]
int TotalChannelErrors[18]
tuple cout
Definition: gather_cfg.py:121
DQMChannel Channel
float ChannelRatio[18]
int DeadChannelCounter[18]
TH2F * getTH2F(void) const
MonitorElement * h_ZDCP_EM_Charge[5]
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:30
const_iterator begin() const
DetIdVector::const_iterator bad_quality_end() const
MonitorElement * h_ZDCP_EM_RecHitTiming[5]
MonitorElement * h_ZDCM_HAD_Pulse[4]