CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EBSummaryClient.cc
Go to the documentation of this file.
1 /*
2  * \file EBSummaryClient.cc
3  *
4  * $Date: 2012/06/11 22:57:15 $
5  * $Revision: 1.232 $
6  * \author G. Della Ricca
7  *
8 */
9 
10 #include <memory>
11 #include <iostream>
12 #include <fstream>
13 #include <iomanip>
14 
16 
19 
20 #ifdef WITH_ECAL_COND_DB
23 #endif
24 
28 
39 
41 
43 
44  // cloneME switch
45  cloneME_ = ps.getUntrackedParameter<bool>("cloneME", true);
46 
47  // verbose switch
48  verbose_ = ps.getUntrackedParameter<bool>("verbose", true);
49 
50  // debug switch
51  debug_ = ps.getUntrackedParameter<bool>("debug", false);
52 
53  // prefixME path
54  prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");
55 
56  subfolder_ = ps.getUntrackedParameter<std::string>("subfolder", "");
57 
58  // enableCleanup_ switch
59  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
60 
61  produceReports_ = ps.getUntrackedParameter<bool>("produceReports", true);
62 
63  reducedReports_ = ps.getUntrackedParameter<bool>("reducedReports", false);
64 
65  // vector of selected Super Modules (Defaults to all 36).
66  superModules_.reserve(36);
67  for ( unsigned int i = 1; i <= 36; i++ ) superModules_.push_back(i);
68  superModules_ = ps.getUntrackedParameter<std::vector<int> >("superModules", superModules_);
69 
70  laserWavelengths_.reserve(4);
71  for ( unsigned int i = 1; i <= 4; i++ ) laserWavelengths_.push_back(i);
72  laserWavelengths_ = ps.getUntrackedParameter<std::vector<int> >("laserWavelengths", laserWavelengths_);
73 
74  MGPAGains_.reserve(3);
75  for ( unsigned int i = 1; i <= 3; i++ ) MGPAGains_.push_back(i);
76  MGPAGains_ = ps.getUntrackedParameter<std::vector<int> >("MGPAGains", MGPAGains_);
77 
78  MGPAGainsPN_.reserve(2);
79  for ( unsigned int i = 1; i <= 3; i++ ) MGPAGainsPN_.push_back(i);
80  MGPAGainsPN_ = ps.getUntrackedParameter<std::vector<int> >("MGPAGainsPN", MGPAGainsPN_);
81 
82  timingNHitThreshold_ = ps.getUntrackedParameter<int>("timingNHitThreshold", 5);
83 
84  synchErrorThreshold_ = ps.getUntrackedParameter<double>("synchErrorThreshold", 0.01);
85 
86  // summary maps
87  meIntegrity_ = 0;
88  meIntegrityPN_ = 0;
89  meOccupancy_ = 0;
90  meOccupancyPN_ = 0;
91  meStatusFlags_ = 0;
96 
97  meLaserL1_ = 0;
98  meLaserL1PN_ = 0;
99  meLaserL1Ampl_ = 0;
100  meLaserL1Timing_ = 0;
102 
103  meLaserL2_ = 0;
104  meLaserL2PN_ = 0;
105  meLaserL2Ampl_ = 0;
106  meLaserL2Timing_ = 0;
108 
109  meLaserL3_ = 0;
110  meLaserL3PN_ = 0;
111  meLaserL3Ampl_ = 0;
112  meLaserL3Timing_ = 0;
114 
115  meLaserL4_ = 0;
116  meLaserL4PN_ = 0;
117  meLaserL4Ampl_ = 0;
118  meLaserL4Timing_ = 0;
120 
121  mePedestalG01_ = 0;
122  mePedestalG06_ = 0;
123  mePedestalG12_ = 0;
124  mePedestalPNG01_ = 0;
125  mePedestalPNG16_ = 0;
126  meTestPulseG01_ = 0;
127  meTestPulseG06_ = 0;
128  meTestPulseG12_ = 0;
129  meTestPulsePNG01_ = 0;
130  meTestPulsePNG16_ = 0;
134  meGlobalSummary_ = 0;
135 
136  meRecHitEnergy_ = 0;
137  meTiming_ = 0;
138  meTimingMean1D_ = 0;
139  meTimingRMS1D_ = 0;
140  meTimingMean_ = 0;
141  meTimingRMS_ = 0;
142  meTriggerTowerEt_ = 0;
146 
147  // summary errors
148  meIntegrityErr_ = 0;
149  meOccupancy1D_ = 0;
150  meStatusFlagsErr_ = 0;
152  meLaserL1Err_ = 0;
153  meLaserL1PNErr_ = 0;
154  meLaserL2Err_ = 0;
155  meLaserL2PNErr_ = 0;
156  meLaserL3Err_ = 0;
157  meLaserL3PNErr_ = 0;
158  meLaserL4Err_ = 0;
159  meLaserL4PNErr_ = 0;
160 
161  meSummaryErr_ = 0;
162 
163  // additional histograms from tasks
164  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
165 
166  int ism = superModules_[i];
167 
168  hpot01_[ism-1] = 0;
169  httt01_[ism-1] = 0;
170  htmt01_[ism-1] = 0;
171 
172  }
173 }
174 
176 
177 }
178 
180 
182 
183  if ( debug_ ) std::cout << "EBSummaryClient: beginJob" << std::endl;
184 
185  ievt_ = 0;
186  jevt_ = 0;
187 
188 }
189 
191 
192  if ( debug_ ) std::cout << "EBSummaryClient: beginRun" << std::endl;
193 
194  jevt_ = 0;
195 
196  this->setup();
197 
198 }
199 
201 
202  if ( debug_ ) std::cout << "EBSummaryClient: endJob, ievt = " << ievt_ << std::endl;
203 
204  this->cleanup();
205 
206 }
207 
209 
210  if ( debug_ ) std::cout << "EBSummaryClient: endRun, jevt = " << jevt_ << std::endl;
211 
212  this->cleanup();
213 
214 }
215 
217 
218  bool integrityClient(false);
219  bool occupancyClient(false);
220  bool statusFlagsClient(false);
221  bool pedestalOnlineClient(false);
222  bool laserClient(false);
223  bool pedestalClient(false);
224  bool testPulseClient(false);
225  bool timingClient(false);
226  bool triggerTowerClient(false);
227 
228  for(unsigned i = 0; i < clients_.size(); i++){
229 
230  if(dynamic_cast<EBIntegrityClient*>(clients_[i])) integrityClient = true;
231  if(dynamic_cast<EBOccupancyClient*>(clients_[i])) occupancyClient = true;
232  if(dynamic_cast<EBStatusFlagsClient*>(clients_[i])) statusFlagsClient = true;
233  if(dynamic_cast<EBPedestalOnlineClient*>(clients_[i])) pedestalOnlineClient = true;
234  if(dynamic_cast<EBLaserClient*>(clients_[i])) laserClient = true;
235  if(dynamic_cast<EBPedestalClient*>(clients_[i])) pedestalClient = true;
236  if(dynamic_cast<EBTestPulseClient*>(clients_[i])) testPulseClient = true;
237  if(dynamic_cast<EBTimingClient*>(clients_[i])) timingClient = true;
238  if(dynamic_cast<EBTriggerTowerClient*>(clients_[i])) triggerTowerClient = true;
239 
240  }
241 
243 
244  dqmStore_->setCurrentFolder( prefixME_ + "/EBSummaryClient" );
245 
246  if(integrityClient){
247  if(produceReports_){
249  name = "EBIT integrity quality summary";
250  meIntegrity_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
251  meIntegrity_->setAxisTitle("jphi", 1);
252  meIntegrity_->setAxisTitle("jeta", 2);
253 
255  name = "EBIT integrity quality errors summary";
256  meIntegrityErr_ = dqmStore_->book1D(name, name, 36, 1, 37);
257  for (int i = 0; i < 36; i++) {
258  meIntegrityErr_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
259  }
260  }
261  if(laserClient){
263  name = "EBIT PN integrity quality summary";
264  meIntegrityPN_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
265  meIntegrityPN_->setAxisTitle("jchannel", 1);
266  meIntegrityPN_->setAxisTitle("jpseudo-strip", 2);
267  }
268  }
269 
270  if(occupancyClient){
271  if(produceReports_){
273  name = "EBOT digi occupancy summary";
274  meOccupancy_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
275  meOccupancy_->setAxisTitle("jphi", 1);
276  meOccupancy_->setAxisTitle("jeta", 2);
277 
279  name = "EBOT digi occupancy summary 1D";
280  meOccupancy1D_ = dqmStore_->book1D(name, name, 36, 1, 37);
281  for (int i = 0; i < 36; i++) {
282  meOccupancy1D_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
283  }
284 
286  name = "EBOT energy summary";
287  meRecHitEnergy_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
288  meRecHitEnergy_->setAxisTitle("jphi", 1);
289  meRecHitEnergy_->setAxisTitle("jeta", 2);
290  meRecHitEnergy_->setAxisTitle("energy (GeV)", 3);
291  }
292  if(laserClient){
294  name = "EBOT PN digi occupancy summary";
295  meOccupancyPN_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
296  meOccupancyPN_->setAxisTitle("jchannel", 1);
297  meOccupancyPN_->setAxisTitle("jpseudo-strip", 2);
298  }
299 
300  }
301 
302  if(statusFlagsClient && produceReports_){
304  name = "EBSFT front-end status summary";
305  meStatusFlags_ = dqmStore_->book2D(name, name, 72, 0., 72., 34, -17., 17.);
306  meStatusFlags_->setAxisTitle("jphi'", 1);
307  meStatusFlags_->setAxisTitle("jeta'", 2);
308 
310  name = "EBSFT front-end status errors summary";
311  meStatusFlagsErr_ = dqmStore_->book1D(name, name, 36, 1, 37);
312  for (int i = 0; i < 36; i++) {
313  meStatusFlagsErr_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
314  }
315  }
316 
317  if(pedestalOnlineClient && produceReports_){
319  name = "EBPOT pedestal quality summary G12";
320  mePedestalOnline_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
321  mePedestalOnline_->setAxisTitle("jphi", 1);
322  mePedestalOnline_->setAxisTitle("jeta", 2);
323 
325  name = "EBPOT pedestal quality errors summary G12";
326  mePedestalOnlineErr_ = dqmStore_->book1D(name, name, 36, 1, 37);
327  for (int i = 0; i < 36; i++) {
328  mePedestalOnlineErr_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
329  }
330 
332  name = "EBPOT pedestal G12 RMS map";
333  mePedestalOnlineRMSMap_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
337 
339  name = "EBPOT pedestal G12 mean";
340  mePedestalOnlineMean_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 100, 150., 250.);
341  for (int i = 0; i < 36; i++) {
342  mePedestalOnlineMean_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
343  }
344 
346  name = "EBPOT pedestal G12 rms";
347  mePedestalOnlineRMS_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 100, 0., 10.);
348  for (int i = 0; i < 36; i++) {
349  mePedestalOnlineRMS_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
350  }
351  }
352 
353  if(laserClient){
354 
355  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 1) != laserWavelengths_.end() ) {
356 
358  name = "EBLT laser quality summary L1";
359  meLaserL1_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
360  meLaserL1_->setAxisTitle("jphi", 1);
361  meLaserL1_->setAxisTitle("jeta", 2);
362 
364  name = "EBLT laser quality errors summary L1";
365  meLaserL1Err_ = dqmStore_->book1D(name, name, 36, 1, 37);
366  for (int i = 0; i < 36; i++) {
367  meLaserL1Err_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
368  }
369 
371  name = "EBLT PN laser quality summary L1";
372  meLaserL1PN_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
373  meLaserL1PN_->setAxisTitle("jchannel", 1);
374  meLaserL1PN_->setAxisTitle("jpseudo-strip", 2);
375 
377  name = "EBLT PN laser quality errors summary L1";
378  meLaserL1PNErr_ = dqmStore_->book1D(name, name, 36, 1, 37);
379  for (int i = 0; i < 36; i++) {
380  meLaserL1PNErr_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
381  }
382 
384  name = "EBLT laser L1 amplitude summary";
385  meLaserL1Ampl_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096., "s");
386  for (int i = 0; i < 36; i++) {
387  meLaserL1Ampl_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
388  }
389 
391  name = "EBLT laser L1 timing summary";
392  meLaserL1Timing_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 100, 0., 10., "s");
393  for (int i = 0; i < 36; i++) {
394  meLaserL1Timing_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
395  }
396 
398  name = "EBLT laser L1 amplitude over PN summary";
399  meLaserL1AmplOverPN_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096.*12., "s");
400  for (int i = 0; i < 36; i++) {
401  meLaserL1AmplOverPN_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
402  }
403 
404  }
405 
406  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 2) != laserWavelengths_.end() ) {
407 
409  name = "EBLT laser quality summary L2";
410  meLaserL2_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
411  meLaserL2_->setAxisTitle("jphi", 1);
412  meLaserL2_->setAxisTitle("jeta", 2);
413 
415  name = "EBLT laser quality errors summary L2";
416  meLaserL2Err_ = dqmStore_->book1D(name, name, 36, 1, 37);
417  for (int i = 0; i < 36; i++) {
418  meLaserL2Err_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
419  }
420 
422  name = "EBLT PN laser quality summary L2";
423  meLaserL2PN_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
424  meLaserL2PN_->setAxisTitle("jchannel", 1);
425  meLaserL2PN_->setAxisTitle("jpseudo-strip", 2);
426 
428  name = "EBLT PN laser quality errors summary L2";
429  meLaserL2PNErr_ = dqmStore_->book1D(name, name, 36, 1, 37);
430  for (int i = 0; i < 36; i++) {
431  meLaserL2PNErr_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
432  }
433 
435  name = "EBLT laser L2 amplitude summary";
436  meLaserL2Ampl_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096., "s");
437  for (int i = 0; i < 36; i++) {
438  meLaserL2Ampl_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
439  }
440 
442  name = "EBLT laser L2 timing summary";
443  meLaserL2Timing_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 100, 0., 10., "s");
444  for (int i = 0; i < 36; i++) {
445  meLaserL2Timing_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
446  }
447 
449  name = "EBLT laser L2 amplitude over PN summary";
450  meLaserL2AmplOverPN_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096.*12., "s");
451  for (int i = 0; i < 36; i++) {
452  meLaserL2AmplOverPN_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
453  }
454 
455  }
456 
457  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 3) != laserWavelengths_.end() ) {
458 
460  name = "EBLT laser quality summary L3";
461  meLaserL3_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
462  meLaserL3_->setAxisTitle("jphi", 1);
463  meLaserL3_->setAxisTitle("jeta", 2);
464 
466  name = "EBLT laser quality errors summary L3";
467  meLaserL3Err_ = dqmStore_->book1D(name, name, 36, 1, 37);
468  for (int i = 0; i < 36; i++) {
469  meLaserL3Err_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
470  }
471 
473  name = "EBLT PN laser quality summary L3";
474  meLaserL3PN_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
475  meLaserL3PN_->setAxisTitle("jchannel", 1);
476  meLaserL3PN_->setAxisTitle("jpseudo-strip", 2);
477 
479  name = "EBLT PN laser quality errors summary L3";
480  meLaserL3PNErr_ = dqmStore_->book1D(name, name, 36, 1, 37);
481  for (int i = 0; i < 36; i++) {
482  meLaserL3PNErr_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
483  }
484 
486  name = "EBLT laser L3 amplitude summary";
487  meLaserL3Ampl_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096., "s");
488  for (int i = 0; i < 36; i++) {
489  meLaserL3Ampl_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
490  }
491 
493  name = "EBLT laser L3 timing summary";
494  meLaserL3Timing_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 100, 0., 10., "s");
495  for (int i = 0; i < 36; i++) {
496  meLaserL3Timing_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
497  }
498 
500  name = "EBLT laser L3 amplitude over PN summary";
501  meLaserL3AmplOverPN_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096.*12., "s");
502  for (int i = 0; i < 36; i++) {
503  meLaserL3AmplOverPN_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
504  }
505 
506  }
507 
508  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 4) != laserWavelengths_.end() ) {
509 
511  name = "EBLT laser quality summary L4";
512  meLaserL4_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
513  meLaserL4_->setAxisTitle("jphi", 1);
514  meLaserL4_->setAxisTitle("jeta", 2);
515 
517  name = "EBLT laser quality errors summary L4";
518  meLaserL4Err_ = dqmStore_->book1D(name, name, 36, 1, 37);
519  for (int i = 0; i < 36; i++) {
520  meLaserL4Err_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
521  }
522 
524  name = "EBLT PN laser quality summary L4";
525  meLaserL4PN_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
526  meLaserL4PN_->setAxisTitle("jchannel", 1);
527  meLaserL4PN_->setAxisTitle("jpseudo-strip", 2);
528 
530  name = "EBLT PN laser quality errors summary L4";
531  meLaserL4PNErr_ = dqmStore_->book1D(name, name, 36, 1, 37);
532  for (int i = 0; i < 36; i++) {
533  meLaserL4PNErr_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
534  }
535 
537  name = "EBLT laser L4 amplitude summary";
538  meLaserL4Ampl_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096., "s");
539  for (int i = 0; i < 36; i++) {
540  meLaserL4Ampl_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
541  }
542 
544  name = "EBLT laser L4 timing summary";
545  meLaserL4Timing_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 100, 0., 10., "s");
546  for (int i = 0; i < 36; i++) {
547  meLaserL4Timing_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
548  }
549 
551  name = "EBLT laser L4 amplitude over PN summary";
552  meLaserL4AmplOverPN_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096.*12., "s");
553  for (int i = 0; i < 36; i++) {
554  meLaserL4AmplOverPN_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
555  }
556 
557  }
558  }
559 
560  if(pedestalClient){
561  if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
562 
564  name = "EBPT pedestal quality G01 summary";
565  mePedestalG01_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
566  mePedestalG01_->setAxisTitle("jphi", 1);
567  mePedestalG01_->setAxisTitle("jeta", 2);
568 
569  }
570 
571  if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
572 
574  name = "EBPT pedestal quality G06 summary";
575  mePedestalG06_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
576  mePedestalG06_->setAxisTitle("jphi", 1);
577  mePedestalG06_->setAxisTitle("jeta", 2);
578 
579  }
580 
581  if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
582 
584  name = "EBPT pedestal quality G12 summary";
585  mePedestalG12_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
586  mePedestalG12_->setAxisTitle("jphi", 1);
587  mePedestalG12_->setAxisTitle("jeta", 2);
588 
589  }
590 
591  if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 1) != MGPAGainsPN_.end() ) {
592 
594  name = "EBPT PN pedestal quality G01 summary";
595  mePedestalPNG01_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10, 10.);
596  mePedestalPNG01_->setAxisTitle("jchannel", 1);
597  mePedestalPNG01_->setAxisTitle("jpseudo-strip", 2);
598 
599  }
600 
601  if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 16) != MGPAGainsPN_.end() ) {
602 
604  name = "EBPT PN pedestal quality G16 summary";
605  mePedestalPNG16_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10, 10.);
606  mePedestalPNG16_->setAxisTitle("jchannel", 1);
607  mePedestalPNG16_->setAxisTitle("jpseudo-strip", 2);
608 
609  }
610  }
611 
612  if(testPulseClient){
613  if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
614 
616  name = "EBTPT test pulse quality G01 summary";
617  meTestPulseG01_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
618  meTestPulseG01_->setAxisTitle("jphi", 1);
619  meTestPulseG01_->setAxisTitle("jeta", 2);
620 
621  }
622 
623  if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
624 
626  name = "EBTPT test pulse quality G06 summary";
627  meTestPulseG06_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
628  meTestPulseG06_->setAxisTitle("jphi", 1);
629  meTestPulseG06_->setAxisTitle("jeta", 2);
630 
631  }
632 
633  if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
634 
636  name = "EBTPT test pulse quality G12 summary";
637  meTestPulseG12_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
638  meTestPulseG12_->setAxisTitle("jphi", 1);
639  meTestPulseG12_->setAxisTitle("jeta", 2);
640 
641  }
642 
643  if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 1) != MGPAGainsPN_.end() ) {
644 
646  name = "EBTPT PN test pulse quality G01 summary";
647  meTestPulsePNG01_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
648  meTestPulsePNG01_->setAxisTitle("jchannel", 1);
649  meTestPulsePNG01_->setAxisTitle("jpseudo-strip", 2);
650 
651  }
652 
653  if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 16) != MGPAGainsPN_.end() ) {
654 
656  name = "EBTPT PN test pulse quality G16 summary";
657  meTestPulsePNG16_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
658  meTestPulsePNG16_->setAxisTitle("jchannel", 1);
659  meTestPulsePNG16_->setAxisTitle("jpseudo-strip", 2);
660 
661  }
662 
663  if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
664 
666  name = "EBTPT test pulse amplitude G01 summary";
667  meTestPulseAmplG01_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096.*12., "s");
668  for (int i = 0; i < 36; i++) {
669  meTestPulseAmplG01_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
670  }
671 
672  }
673 
674  if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
675 
677  name = "EBTPT test pulse amplitude G06 summary";
678  meTestPulseAmplG06_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096.*12., "s");
679  for (int i = 0; i < 36; i++) {
680  meTestPulseAmplG06_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
681  }
682 
683  }
684 
685  if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
686 
688  name = "EBTPT test pulse amplitude G12 summary";
689  meTestPulseAmplG12_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096.*12., "s");
690  for (int i = 0; i < 36; i++) {
691  meTestPulseAmplG12_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
692  }
693 
694  }
695  }
696 
697  if(timingClient){
699  name = "EBTMT timing quality summary";
700  meTiming_ = dqmStore_->book2D(name, name, 72, 0., 360., 34, -85., 85.);
701  meTiming_->setAxisTitle("jphi", 1);
702  meTiming_->setAxisTitle("jeta", 2);
703 
705  name = "EBTMT timing mean 1D summary";
706  meTimingMean1D_ = dqmStore_->book1D(name, name, 100, -25., 25.);
707  meTimingMean1D_->setAxisTitle("mean (ns)", 1);
708 
710  name = "EBTMT timing rms 1D summary";
711  meTimingRMS1D_ = dqmStore_->book1D(name, name, 100, 0.0, 10.0);
712  meTimingRMS1D_->setAxisTitle("rms (ns)", 1);
713 
715  name = "EBTMT timing mean";
716  meTimingMean_ = dqmStore_->bookProfile(name, name, 36, 1, 37, -20., 20.,"");
717  for (int i = 0; i < 36; i++) {
718  meTimingMean_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
719  }
720  meTimingMean_->setAxisTitle("mean (ns)", 2);
721 
723  name = "EBTMT timing rms";
724  meTimingRMS_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 100, 0., 10.,"");
725  for (int i = 0; i < 36; i++) {
726  meTimingRMS_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
727  }
728  meTimingRMS_->setAxisTitle("rms (ns)", 2);
729  }
730 
731  if(triggerTowerClient){
733  name = "EBTTT Et trigger tower summary";
734  meTriggerTowerEt_ = dqmStore_->book2D(name, name, 72, 0., 72., 34, -17., 17.);
735  meTriggerTowerEt_->setAxisTitle("jphi'", 1);
736  meTriggerTowerEt_->setAxisTitle("jeta'", 2);
737  meTriggerTowerEt_->setAxisTitle("Et (GeV)", 3);
738 
740  name = "EBTTT emulator error quality summary";
741  meTriggerTowerEmulError_ = dqmStore_->book2D(name, name, 72, 0., 72., 34, -17., 17.);
744 
746  name = "EBTTT Trigger Primitives Timing summary";
747  meTriggerTowerTiming_ = dqmStore_->book2D(name, name, 72, 0., 72., 34, -17., 17.);
748  meTriggerTowerTiming_->setAxisTitle("jphi'", 1);
749  meTriggerTowerTiming_->setAxisTitle("jeta'", 2);
750  meTriggerTowerTiming_->setAxisTitle("TP data matching emulator", 3);
751 
753  name = "EBTTT Trigger Primitives Non Single Timing summary";
754  meTriggerTowerNonSingleTiming_ = dqmStore_->book2D(name, name, 72, 0., 72., 34, -17., 17.);
758  }
759 
762  name = "EB global summary";
763  meGlobalSummary_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
764  meGlobalSummary_->setAxisTitle("jphi", 1);
765  meGlobalSummary_->setAxisTitle("jeta", 2);
766 
768  name = "EB global summary errors";
769  meSummaryErr_ = dqmStore_->book1D(name, name, 1, 0., 1.);
770  }
771 }
772 
774 
775  if ( ! enableCleanup_ ) return;
776 
777  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
778 
779  int ism = superModules_[i];
780 
781  if ( cloneME_ ) {
782  if ( hpot01_[ism-1] ) delete hpot01_[ism-1];
783  if ( httt01_[ism-1] ) delete httt01_[ism-1];
784  }
785 
786  hpot01_[ism-1] = 0;
787  httt01_[ism-1] = 0;
788 
789  }
790 
791  dqmStore_->setCurrentFolder( prefixME_ + "/EBSummaryClient" );
792 
794  meIntegrity_ = 0;
795 
797  meIntegrityErr_ = 0;
798 
800  meIntegrityPN_ = 0;
801 
803  meOccupancy_ = 0;
804 
806  meOccupancy1D_ = 0;
807 
809  meOccupancyPN_ = 0;
810 
812  meStatusFlags_ = 0;
813 
815  meStatusFlagsErr_ = 0;
816 
818  mePedestalOnline_ = 0;
819 
822 
825 
828 
831 
833  meLaserL1_ = 0;
834 
836  meLaserL1Err_ = 0;
837 
839  meLaserL1Ampl_ = 0;
840 
842  meLaserL1Timing_ = 0;
843 
846 
848  meLaserL1PN_ = 0;
849 
851  meLaserL1PNErr_ = 0;
852 
854  meLaserL2_ = 0;
855 
857  meLaserL2Err_ = 0;
858 
860  meLaserL2Ampl_ = 0;
861 
863  meLaserL2Timing_ = 0;
864 
867 
869  meLaserL2PN_ = 0;
870 
872  meLaserL2PNErr_ = 0;
873 
875  meLaserL3_ = 0;
876 
878  meLaserL3Err_ = 0;
879 
881  meLaserL3Ampl_ = 0;
882 
884  meLaserL3Timing_ = 0;
885 
888 
890  meLaserL3PN_ = 0;
891 
893  meLaserL3PNErr_ = 0;
894 
896  meLaserL4_ = 0;
897 
899  meLaserL4Err_ = 0;
900 
902  meLaserL4Ampl_ = 0;
903 
905  meLaserL4Timing_ = 0;
906 
909 
911  meLaserL4PN_ = 0;
912 
914  meLaserL4PNErr_ = 0;
915 
917  mePedestalG01_ = 0;
918 
920  mePedestalG06_ = 0;
921 
923  mePedestalG12_ = 0;
924 
926  meTestPulseG01_ = 0;
927 
929  meTestPulseG06_ = 0;
930 
932  meTestPulseG12_ = 0;
933 
935  meTestPulseG01_ = 0;
936 
939 
942 
945 
947  meRecHitEnergy_ = 0;
948 
950  meTiming_ = 0;
951 
953  meTimingMean1D_ = 0;
954 
956  meTimingRMS1D_ = 0;
957 
959  meTimingMean_ = 0;
960 
962  meTimingRMS_ = 0;
963 
965  meTriggerTowerEt_ = 0;
966 
969 
972 
975 
977  meGlobalSummary_ = 0;
978 
980  meSummaryErr_ = 0;
981 }
982 
983 #ifdef WITH_ECAL_COND_DB
984 bool EBSummaryClient::writeDb(EcalCondDBInterface* econn, RunIOV* runiov, MonRunIOV* moniov, bool& status) {
985 
986  status = true;
987 
988  return true;
989 
990 }
991 #endif
992 
994 
995  ievt_++;
996  jevt_++;
997  if ( ievt_ % 10 == 0 ) {
998  if ( debug_ ) std::cout << "EBSummaryClient: ievt/jevt = " << ievt_ << "/" << jevt_ << std::endl;
999  }
1000 
1001  uint32_t chWarnBit = 1 << EcalDQMStatusHelper::PHYSICS_BAD_CHANNEL_WARNING;
1002 
1003  for ( int iex = 1; iex <= 170; iex++ ) {
1004  for ( int ipx = 1; ipx <= 360; ipx++ ) {
1005 
1006  if ( meIntegrity_ ) meIntegrity_->setBinContent( ipx, iex, 6. );
1007  if ( meOccupancy_ ) meOccupancy_->setBinContent( ipx, iex, 0. );
1008  if ( meStatusFlags_ ) meStatusFlags_->setBinContent( ipx, iex, 6. );
1009  if ( mePedestalOnline_ ) mePedestalOnline_->setBinContent( ipx, iex, 6. );
1011  if ( meLaserL1_ ) meLaserL1_->setBinContent( ipx, iex, 6. );
1012  if ( meLaserL2_ ) meLaserL2_->setBinContent( ipx, iex, 6. );
1013  if ( meLaserL3_ ) meLaserL3_->setBinContent( ipx, iex, 6. );
1014  if ( meLaserL4_ ) meLaserL4_->setBinContent( ipx, iex, 6. );
1015  if ( mePedestalG01_ ) mePedestalG01_->setBinContent( ipx, iex, 6. );
1016  if ( mePedestalG06_ ) mePedestalG06_->setBinContent( ipx, iex, 6. );
1017  if ( mePedestalG12_ ) mePedestalG12_->setBinContent( ipx, iex, 6. );
1018  if ( meTestPulseG01_ ) meTestPulseG01_->setBinContent( ipx, iex, 6. );
1019  if ( meTestPulseG06_ ) meTestPulseG06_->setBinContent( ipx, iex, 6. );
1020  if ( meTestPulseG12_ ) meTestPulseG12_->setBinContent( ipx, iex, 6. );
1021 
1022  if ( meRecHitEnergy_ ) meRecHitEnergy_->setBinContent( ipx, iex, 0. );
1023 
1024  if(meGlobalSummary_ ) meGlobalSummary_->setBinContent( ipx, iex, 6. );
1025 
1026  }
1027  }
1028 
1029  for ( int iex = 1; iex <= 20; iex++ ) {
1030  for ( int ipx = 1; ipx <= 90; ipx++ ) {
1031 
1032  if ( meIntegrityPN_ ) meIntegrityPN_->setBinContent( ipx, iex, 6. );
1033  if ( meOccupancyPN_ ) meOccupancyPN_->setBinContent( ipx, iex, 0. );
1034  if ( meLaserL1PN_ ) meLaserL1PN_->setBinContent( ipx, iex, 6. );
1035  if ( meLaserL2PN_ ) meLaserL2PN_->setBinContent( ipx, iex, 6. );
1036  if ( meLaserL3PN_ ) meLaserL3PN_->setBinContent( ipx, iex, 6. );
1037  if ( meLaserL4PN_ ) meLaserL4PN_->setBinContent( ipx, iex, 6. );
1038  if ( mePedestalPNG01_ ) mePedestalPNG01_->setBinContent( ipx, iex, 6. );
1039  if ( mePedestalPNG16_ ) mePedestalPNG16_->setBinContent( ipx, iex, 6. );
1040  if ( meTestPulsePNG01_ ) meTestPulsePNG01_->setBinContent( ipx, iex, 6. );
1041  if ( meTestPulsePNG16_ ) meTestPulsePNG16_->setBinContent( ipx, iex, 6. );
1042 
1043  }
1044  }
1045 
1046  for ( int iex = 1; iex <= 34; iex++ ) {
1047  for ( int ipx = 1; ipx <= 72; ipx++ ) {
1048  if ( meTriggerTowerEt_ ) meTriggerTowerEt_->setBinContent( ipx, iex, 0. );
1052  if ( meTiming_ ) meTiming_->setBinContent( ipx, iex, 6. );
1053  }
1054  }
1055 
1056  if ( meIntegrity_ ) meIntegrity_->setEntries( 0 );
1059  if ( meOccupancy_ ) meOccupancy_->setEntries( 0 );
1069 
1070  if ( meLaserL1_ ) meLaserL1_->setEntries( 0 );
1071  if ( meLaserL1Err_ ) meLaserL1Err_->Reset();
1075  if ( meLaserL1PN_ ) meLaserL1PN_->setEntries( 0 );
1077 
1078  if ( meLaserL2_ ) meLaserL2_->setEntries( 0 );
1079  if ( meLaserL2Err_ ) meLaserL2Err_->Reset();
1083  if ( meLaserL2PN_ ) meLaserL2PN_->setEntries( 0 );
1085 
1086  if ( meLaserL3_ ) meLaserL3_->setEntries( 0 );
1087  if ( meLaserL3Err_ ) meLaserL3Err_->Reset();
1091  if ( meLaserL3PN_ ) meLaserL3PN_->setEntries( 0 );
1093 
1094  if ( meLaserL4_ ) meLaserL4_->setEntries( 0 );
1095  if ( meLaserL4Err_ ) meLaserL4Err_->Reset();
1099  if ( meLaserL4PN_ ) meLaserL4PN_->setEntries( 0 );
1101 
1115 
1117  if ( meTiming_ ) meTiming_->setEntries( 0 );
1120  if ( meTimingMean_ ) meTimingMean_->Reset();
1121  if ( meTimingRMS_ ) meTimingRMS_->Reset();
1126 
1128 
1130 
1131  MonitorElement* me(0);
1132  me = dqmStore_->get(prefixME_ + "/EBTimingTask/EBTMT timing map");
1133  TProfile2D* htmt(0);
1134  htmt = UtilsClient::getHisto(me, false, htmt);
1135 
1136  std::string subdir(subfolder_ == "" ? "" : subfolder_ + "/");
1137 
1138  TH1F* oosTrend(0);
1139 
1140  for ( unsigned int i=0; i<clients_.size(); i++ ) {
1141 
1142  EBIntegrityClient* ebic = dynamic_cast<EBIntegrityClient*>(clients_[i]);
1143  EBStatusFlagsClient* ebsfc = dynamic_cast<EBStatusFlagsClient*>(clients_[i]);
1144  if(!produceReports_) ebsfc = 0;
1145  EBPedestalOnlineClient* ebpoc = dynamic_cast<EBPedestalOnlineClient*>(clients_[i]);
1146  if(!produceReports_) ebpoc = 0;
1147 
1148  EBLaserClient* eblc = dynamic_cast<EBLaserClient*>(clients_[i]);
1149  EBPedestalClient* ebpc = dynamic_cast<EBPedestalClient*>(clients_[i]);
1150  EBTestPulseClient* ebtpc = dynamic_cast<EBTestPulseClient*>(clients_[i]);
1151 
1152  EBTimingClient* ebtmc = dynamic_cast<EBTimingClient*>(clients_[i]);
1153  EBTriggerTowerClient* ebtttc = dynamic_cast<EBTriggerTowerClient*>(clients_[i]);
1154 
1155  MonitorElement *me_01, *me_02, *me_03;
1156  MonitorElement *me_04, *me_05;
1157  // MonitorElement *me_f[6], *me_fg[2];
1158  TH2F* h2;
1159  TH2F* h3;
1160 
1161  me = dqmStore_->get( prefixME_ + "/EcalInfo/EBMM DCC" );
1163 
1164  me = dqmStore_->get( prefixME_ + "/EBRawDataTask/" + subdir + "EBRDT L1A FE errors" );
1166 
1167  me = dqmStore_->get(prefixME_ + "/EBRawDataTask/" + subdir + "EBRDT accumulated FE synchronization errors");
1168  oosTrend = UtilsClient::getHisto(me, cloneME_, oosTrend);
1169 
1170  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
1171 
1172  int ism = superModules_[i];
1173 
1174  me = dqmStore_->get( prefixME_ + "/EBOccupancyTask/" + subdir + "EBOT rec hit energy " + Numbers::sEB(ism) );
1175  hot01_[ism-1] = UtilsClient::getHisto( me, cloneME_, hot01_[ism-1] );
1176 
1177  me = dqmStore_->get( prefixME_ + "/EBPedestalOnlineTask/"+ subdir + "Gain12/EBPOT pedestal " + Numbers::sEB(ism) + " G12" );
1178  hpot01_[ism-1] = UtilsClient::getHisto( me, cloneME_, hpot01_[ism-1] );
1179 
1180  me = dqmStore_->get( prefixME_ + "/EBTriggerTowerTask/EBTTT Et map Real Digis " + Numbers::sEB(ism) );
1181  httt01_[ism-1] = UtilsClient::getHisto( me, cloneME_, httt01_[ism-1] );
1182 
1183  me = dqmStore_->get( prefixME_ + "/EBTimingTask/EBTMT timing " + Numbers::sEB(ism) );
1184  htmt01_[ism-1] = UtilsClient::getHisto( me, cloneME_, htmt01_[ism-1] );
1185 
1186  for ( int ie = 1; ie <= 85; ie++ ) {
1187  for ( int ip = 1; ip <= 20; ip++ ) {
1188 
1189  if ( ebic ) {
1190 
1191  me = ebic->meg01_[ism-1];
1192 
1193  if ( me ) {
1194 
1195  float xval = me->getBinContent( ie, ip );
1196 
1197  int iex;
1198  int ipx;
1199 
1200  if ( ism <= 18 ) {
1201  iex = 1+(85-ie);
1202  ipx = ip+20*(ism-1);
1203  } else {
1204  iex = 85+ie;
1205  ipx = 1+(20-ip)+20*(ism-19);
1206  }
1207 
1208  if(meIntegrity_) meIntegrity_->setBinContent( ipx, iex, xval );
1209  if( xval == 0 && meIntegrityErr_) meIntegrityErr_->Fill( ism );
1210 
1211  }
1212 
1213  h2 = ebic->h_[ism-1];
1214 
1215  if ( h2 ) {
1216 
1217  float xval = h2->GetBinContent( ie, ip );
1218 
1219  int iex;
1220  int ipx;
1221 
1222  if ( ism <= 18 ) {
1223  iex = 1+(85-ie);
1224  ipx = ip+20*(ism-1);
1225  } else {
1226  iex = 85+ie;
1227  ipx = 1+(20-ip)+20*(ism-19);
1228  }
1229 
1230  if(meOccupancy_) meOccupancy_->setBinContent( ipx, iex, xval );
1231  if ( xval != 0 && meOccupancy1D_) meOccupancy1D_->Fill( ism, xval );
1232 
1233  }
1234 
1235  }
1236 
1237  if ( ebpoc ) {
1238 
1239  me = ebpoc->meg03_[ism-1];
1240 
1241  if ( me ) {
1242 
1243  int iex;
1244  int ipx;
1245 
1246  if ( ism <= 18 ) {
1247  iex = 1+(85-ie);
1248  ipx = ip+20*(ism-1);
1249  } else {
1250  iex = 85+ie;
1251  ipx = 1+(20-ip)+20*(ism-19);
1252  }
1253 
1254  float xval = me->getBinContent( ie, ip );
1255 
1256  if(mePedestalOnline_) mePedestalOnline_->setBinContent( ipx, iex, xval );
1257  if ( xval == 0 && mePedestalOnlineErr_ ) mePedestalOnlineErr_->Fill( ism );
1258 
1259  }
1260 
1261  float num01, mean01, rms01;
1262  bool update01 = UtilsClient::getBinStatistics(hpot01_[ism-1], ie, ip, num01, mean01, rms01);
1263 
1264  if ( update01 ) {
1265 
1266  int iex;
1267  int ipx;
1268 
1269  if ( ism <= 18 ) {
1270  iex = 1+(85-ie);
1271  ipx = ip+20*(ism-1);
1272  } else {
1273  iex = 85+ie;
1274  ipx = 1+(20-ip)+20*(ism-19);
1275  }
1276 
1278 
1279  if(mePedestalOnlineRMS_) mePedestalOnlineRMS_->Fill( ism, rms01 );
1280 
1281  if(mePedestalOnlineMean_) mePedestalOnlineMean_->Fill( ism, mean01 );
1282 
1283  }
1284 
1285  }
1286 
1287  if ( eblc ) {
1288 
1289  int iex;
1290  int ipx;
1291 
1292  if ( ism <= 18 ) {
1293  iex = 1+(85-ie);
1294  ipx = ip+20*(ism-1);
1295  } else {
1296  iex = 85+ie;
1297  ipx = 1+(20-ip)+20*(ism-19);
1298  }
1299 
1300  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 1) != laserWavelengths_.end() ) {
1301 
1302  me = eblc->meg01_[ism-1];
1303 
1304  if ( me ) {
1305 
1306  float xval = me->getBinContent( ie, ip );
1307 
1308  if ( me->getEntries() != 0 ) {
1309  meLaserL1_->setBinContent( ipx, iex, xval );
1310  if ( xval == 0 ) meLaserL1Err_->Fill( ism );
1311  }
1312 
1313  }
1314 
1315  }
1316 
1317  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 2) != laserWavelengths_.end() ) {
1318 
1319  me = eblc->meg02_[ism-1];
1320 
1321  if ( me ) {
1322 
1323  float xval = me->getBinContent( ie, ip );
1324 
1325  if ( me->getEntries() != 0 ) {
1326  meLaserL2_->setBinContent( ipx, iex, xval );
1327  if ( xval == 0 ) meLaserL2Err_->Fill( ism );
1328  }
1329 
1330  }
1331 
1332  }
1333 
1334  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 3) != laserWavelengths_.end() ) {
1335 
1336  me = eblc->meg03_[ism-1];
1337 
1338  if ( me ) {
1339 
1340  float xval = me->getBinContent( ie, ip );
1341 
1342  if ( me->getEntries() != 0 ) {
1343  meLaserL3_->setBinContent( ipx, iex, xval );
1344  if ( xval == 0 ) meLaserL3Err_->Fill( ism );
1345  }
1346 
1347  }
1348 
1349  }
1350 
1351  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 4) != laserWavelengths_.end() ) {
1352 
1353  me = eblc->meg04_[ism-1];
1354 
1355  if ( me ) {
1356 
1357  float xval = me->getBinContent( ie, ip );
1358 
1359  if ( me->getEntries() != 0 ) {
1360  meLaserL4_->setBinContent( ipx, iex, xval );
1361  if ( xval == 0 ) meLaserL4Err_->Fill( ism );
1362  }
1363 
1364  }
1365 
1366  }
1367 
1368  }
1369 
1370  if ( ebpc ) {
1371 
1372  me_01 = ebpc->meg01_[ism-1];
1373  me_02 = ebpc->meg02_[ism-1];
1374  me_03 = ebpc->meg03_[ism-1];
1375 
1376  int iex;
1377  int ipx;
1378 
1379  if ( ism <= 18 ) {
1380  iex = 1+(85-ie);
1381  ipx = ip+20*(ism-1);
1382  } else {
1383  iex = 85+ie;
1384  ipx = 1+(20-ip)+20*(ism-19);
1385  }
1386 
1387  if ( me_01 ) {
1388  float val_01=me_01->getBinContent(ie,ip);
1389  if ( me_01->getEntries() != 0 ) mePedestalG01_->setBinContent( ipx, iex, val_01 );
1390  }
1391  if ( me_02 ) {
1392  float val_02=me_02->getBinContent(ie,ip);
1393  if ( me_02->getEntries() != 0 ) mePedestalG06_->setBinContent( ipx, iex, val_02 );
1394  }
1395  if ( me_03 ) {
1396  float val_03=me_03->getBinContent(ie,ip);
1397  if ( me_03->getEntries() != 0 ) mePedestalG12_->setBinContent( ipx, iex, val_03 );
1398  }
1399 
1400  }
1401 
1402  if ( ebtpc ) {
1403 
1404  me_01 = ebtpc->meg01_[ism-1];
1405  me_02 = ebtpc->meg02_[ism-1];
1406  me_03 = ebtpc->meg03_[ism-1];
1407 
1408  int iex;
1409  int ipx;
1410 
1411  if ( ism <= 18 ) {
1412  iex = 1+(85-ie);
1413  ipx = ip+20*(ism-1);
1414  } else {
1415  iex = 85+ie;
1416  ipx = 1+(20-ip)+20*(ism-19);
1417  }
1418 
1419  if ( me_01 ) {
1420 
1421  float val_01=me_01->getBinContent(ie,ip);
1422 
1423  if ( me_01->getEntries() != 0 ) meTestPulseG01_->setBinContent( ipx, iex, val_01 );
1424 
1425  }
1426  if ( me_02 ) {
1427 
1428  float val_02=me_02->getBinContent(ie,ip);
1429 
1430  if ( me_02->getEntries() != 0 ) meTestPulseG06_->setBinContent( ipx, iex, val_02 );
1431 
1432  }
1433  if ( me_03 ) {
1434 
1435  float val_03=me_03->getBinContent(ie,ip);
1436 
1437  if ( me_03->getEntries() != 0 ) meTestPulseG12_->setBinContent( ipx, iex, val_03 );
1438 
1439  }
1440 
1441 
1442  }
1443 
1444  if ( hot01_[ism-1] ) {
1445 
1446  float xval = hot01_[ism-1]->GetBinContent( ie, ip );
1447 
1448  int iex;
1449  int ipx;
1450 
1451  if ( ism <= 18 ) {
1452  iex = 1+(85-ie);
1453  ipx = ip+20*(ism-1);
1454  } else {
1455  iex = 85+ie;
1456  ipx = 1+(20-ip)+20*(ism-19);
1457  }
1458 
1459  if(meRecHitEnergy_) meRecHitEnergy_->setBinContent( ipx, iex, xval );
1460 
1461  }
1462 
1463  if ( ebtmc ) {
1464 
1465  float num02, mean02, rms02;
1466 
1467  bool update02 = UtilsClient::getBinStatistics(htmt01_[ism-1], ie, ip, num02, mean02, rms02, timingNHitThreshold_);
1468 
1469  if ( update02 ) {
1470 
1471  mean02 -= 50.;
1472 
1473  meTimingMean1D_->Fill(mean02);
1474 
1475  meTimingRMS1D_->Fill(rms02);
1476 
1477  meTimingMean_->Fill( ism, mean02 );
1478 
1479  meTimingRMS_->Fill( ism, rms02 );
1480 
1481  }
1482 
1483  }
1484 
1485  }
1486  }
1487 
1488  for (int ie = 1; ie <= 17; ie++ ) {
1489  for (int ip = 1; ip <= 4; ip++ ) {
1490 
1491  int iex;
1492  int ipx;
1493 
1494  if ( ism <= 18 ) {
1495  iex = 1+(17-ie);
1496  ipx = ip+4*(ism-1);
1497  } else {
1498  iex = 17+ie;
1499  ipx = 1+(4-ip)+4*(ism-19);
1500  }
1501 
1502  if ( ebsfc ) {
1503 
1504  me = dqmStore_->get(prefixME_ + "/EcalInfo/EBMM DCC");
1505 
1506  float xval = 6;
1507 
1508  if ( me ) {
1509 
1510  xval = 2;
1511  if ( me->getBinContent( ism ) > 0 ) xval = 1;
1512 
1513  }
1514 
1515  me = ebsfc->meh01_[ism-1];
1516 
1517  if ( me ) {
1518 
1519  if ( me->getBinContent( ie, ip ) > 0 ) xval = 0;
1520 
1521  meStatusFlags_->setBinContent( ipx, iex, xval );
1522 
1523  if ( me->getBinError( ie, ip ) > 0 && me->getBinError( ie, ip ) < 0.1 ) UtilsClient::maskBinContent( meStatusFlags_, ipx, iex );
1524 
1525  if ( xval == 0 ) meStatusFlagsErr_->Fill( ism );
1526 
1527  }
1528 
1529  }
1530 
1531  if ( ebtttc ) {
1532 
1533  float mean01 = 0;
1534  bool hadNonZeroInterest = false;
1535 
1536  if ( httt01_[ism-1] ) {
1537 
1538  mean01 = httt01_[ism-1]->GetBinContent( ie, ip );
1539 
1540  if ( mean01 != 0. ) {
1541  if ( meTriggerTowerEt_ ) meTriggerTowerEt_->setBinContent( ipx, iex, mean01 );
1542  }
1543 
1544  }
1545 
1546  me = ebtttc->me_o01_[ism-1];
1547 
1548  if ( me ) {
1549 
1550  float xval = me->getBinContent( ie, ip );
1551 
1552  if ( xval != 0. ) {
1553  meTriggerTowerTiming_->setBinContent( ipx, iex, xval );
1554  hadNonZeroInterest = true;
1555  }
1556 
1557  }
1558 
1559  me = ebtttc->me_o02_[ism-1];
1560 
1561  if ( me ) {
1562 
1563  float xval = me->getBinContent( ie, ip );
1564 
1565  if ( xval != 0. ) {
1566  meTriggerTowerNonSingleTiming_->setBinContent( ipx, iex, xval );
1567  }
1568 
1569  }
1570 
1571  float xval = 2;
1572  if( mean01 > 0. ) {
1573 
1574  h2 = ebtttc->l01_[ism-1];
1575  h3 = ebtttc->l02_[ism-1];
1576 
1577  if ( h2 && h3 ) {
1578 
1579  // float emulErrorVal = h2->GetBinContent( ie, ip ) + h3->GetBinContent( ie, ip );
1580  float emulErrorVal = h2->GetBinContent( ie, ip );
1581 
1582  if( emulErrorVal > 0.01 * ievt_ && hadNonZeroInterest ) xval = 0;
1583 
1584  }
1585 
1586  if ( xval!=0 && hadNonZeroInterest ) xval = 1;
1587 
1588  }
1589 
1590  meTriggerTowerEmulError_->setBinContent( ipx, iex, xval );
1591 
1592  }
1593 
1594  if ( ebtmc ) {
1595 
1596  if( htmt01_[ism-1] ){
1597 
1598  float num(0.);
1599  bool mask(false);
1600 
1601  for(int ce=1; ce<=5; ce++){
1602  for(int cp=1; cp<=5; cp++){
1603 
1604  int scie = (ie - 1) * 5 + ce;
1605  int scip = (ip - 1) * 5 + cp;
1606 
1607  num += htmt01_[ism-1]->GetBinEntries(htmt01_[ism-1]->GetBin(scie, scip));
1608 
1609  if(Masks::maskChannel(ism, scie, scip, chWarnBit, EcalBarrel)) mask = true;
1610  }
1611  }
1612 
1613  float nHitThreshold(timingNHitThreshold_ * 18.);
1614 
1615  bool update01(false);
1616  float num01, mean01, rms01;
1617  update01 = UtilsClient::getBinStatistics(htmt, ipx, iex, num01, mean01, rms01, nHitThreshold);
1618 
1619  mean01 -= 50.;
1620 
1621  if(!update01){
1622  mean01 = 0.;
1623  rms01 = 0.;
1624  }
1625 
1626  update01 |= num > 1.3 * nHitThreshold;
1627 
1628  float xval = 2.;
1629  if(update01){
1630 
1631  if( std::abs(mean01) > 2. || rms01 > 6. || num > 1.3 * num01) xval = 0.;
1632  else xval = 1.;
1633 
1634  }
1635 
1636  meTiming_->setBinContent( ipx, iex, xval );
1637  if ( mask ) UtilsClient::maskBinContent( meTiming_, ipx, iex );
1638 
1639  }
1640 
1641  }
1642 
1643  }
1644  }
1645 
1646  // PN's summaries
1647  for( int i = 1; i <= 10; i++ ) {
1648  for( int j = 1; j <= 5; j++ ) {
1649 
1650  int ichanx;
1651  int ipseudostripx;
1652 
1653  if(ism<=18) {
1654  ichanx = i;
1655  ipseudostripx = j+5*(ism-1);
1656  } else {
1657  ichanx = i+10;
1658  ipseudostripx = j+5*(ism-19);
1659  }
1660 
1661  if ( ebic ) {
1662 
1663  me_04 = ebic->meg02_[ism-1];
1664  h2 = ebic->hmem_[ism-1];
1665 
1666  if( me_04 ) {
1667 
1668  float xval = me_04->getBinContent(i,j);
1669  if(meIntegrityPN_) meIntegrityPN_->setBinContent( ipseudostripx, ichanx, xval );
1670 
1671  }
1672 
1673  if ( h2 ) {
1674 
1675  float xval = h2->GetBinContent(i,1);
1676  if(meOccupancyPN_) meOccupancyPN_->setBinContent( ipseudostripx, ichanx, xval );
1677 
1678  }
1679 
1680  }
1681 
1682  if ( ebpc ) {
1683 
1684  me_04 = ebpc->meg04_[ism-1];
1685  me_05 = ebpc->meg05_[ism-1];
1686 
1687  if( me_04 ) {
1688  float val_04=me_04->getBinContent(i,1);
1689  mePedestalPNG01_->setBinContent( ipseudostripx, ichanx, val_04 );
1690  }
1691  if( me_05 ) {
1692  float val_05=me_05->getBinContent(i,1);
1693  mePedestalPNG16_->setBinContent( ipseudostripx, ichanx, val_05 );
1694  }
1695 
1696  }
1697 
1698  if ( ebtpc ) {
1699 
1700  me_04 = ebtpc->meg04_[ism-1];
1701  me_05 = ebtpc->meg05_[ism-1];
1702 
1703  if( me_04 ) {
1704  float val_04=me_04->getBinContent(i,1);
1705  meTestPulsePNG01_->setBinContent( ipseudostripx, ichanx, val_04 );
1706  }
1707  if( me_05 ) {
1708  float val_05=me_05->getBinContent(i,1);
1709  meTestPulsePNG16_->setBinContent( ipseudostripx, ichanx, val_05 );
1710  }
1711 
1712  }
1713 
1714  if ( eblc ) {
1715 
1716  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 1) != laserWavelengths_.end() ) {
1717 
1718  me = eblc->meg09_[ism-1];
1719 
1720  if( me ) {
1721 
1722  float xval = me->getBinContent(i,1);
1723 
1724  if ( me->getEntries() != 0 && me->getEntries() != 0 ) {
1725  meLaserL1PN_->setBinContent( ipseudostripx, ichanx, xval );
1726  if ( xval == 0 ) meLaserL1PNErr_->Fill( ism );
1727  }
1728 
1729  }
1730 
1731  }
1732 
1733  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 2) != laserWavelengths_.end() ) {
1734 
1735  me = eblc->meg10_[ism-1];
1736 
1737  if( me ) {
1738 
1739  float xval = me->getBinContent(i,1);
1740 
1741  if ( me->getEntries() != 0 && me->getEntries() != 0 ) {
1742  meLaserL2PN_->setBinContent( ipseudostripx, ichanx, xval );
1743  if ( xval == 0 ) meLaserL2PNErr_->Fill( ism );
1744  }
1745 
1746  }
1747 
1748  }
1749 
1750  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 3) != laserWavelengths_.end() ) {
1751 
1752  me = eblc->meg11_[ism-1];
1753 
1754  if( me ) {
1755 
1756  float xval = me->getBinContent(i,1);
1757 
1758  if ( me->getEntries() != 0 && me->getEntries() != 0 ) {
1759  meLaserL3PN_->setBinContent( ipseudostripx, ichanx, xval );
1760  if ( xval == 0 ) meLaserL3PNErr_->Fill( ism );
1761  }
1762 
1763  }
1764 
1765  }
1766 
1767  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 4) != laserWavelengths_.end() ) {
1768 
1769  me = eblc->meg12_[ism-1];
1770 
1771  if( me ) {
1772 
1773  float xval = me->getBinContent(i,1);
1774 
1775  if ( me->getEntries() != 0 && me->getEntries() != 0 ) {
1776  meLaserL4PN_->setBinContent( ipseudostripx, ichanx, xval );
1777  if ( xval == 0 ) meLaserL4PNErr_->Fill( ism );
1778  }
1779 
1780  }
1781 
1782  }
1783 
1784  }
1785 
1786  }
1787  }
1788 
1789  for(int chan=0; chan<1700; chan++) {
1790 
1791  int ie = (chan)/20 + 1;
1792  int ip = (chan)%20 + 1;
1793 
1794  // laser 1D summaries
1795  if ( eblc ) {
1796 
1797  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 1) != laserWavelengths_.end() ) {
1798 
1799  MonitorElement *meg = eblc->meg01_[ism-1];
1800 
1801  float xval = 2;
1802  if ( meg ) xval = meg->getBinContent( ie, ip );
1803 
1804  // exclude channels without laser data (yellow in the quality map)
1805  if( xval != 2 && xval != 5 ) {
1806 
1807  MonitorElement* mea01 = eblc->mea01_[ism-1];
1808  MonitorElement* met01 = eblc->met01_[ism-1];
1809  MonitorElement* meaopn01 = eblc->meaopn01_[ism-1];
1810 
1811  if( mea01 && met01 && meaopn01 ) {
1812  meLaserL1Ampl_->Fill( ism, mea01->getBinContent( chan+1 ) );
1813  if( met01->getBinContent( chan+1 ) > 0. ) meLaserL1Timing_->Fill( ism, met01->getBinContent( chan+1 ) );
1814  meLaserL1AmplOverPN_->Fill( ism, meaopn01->getBinContent( chan+1 ) );
1815  }
1816 
1817  }
1818 
1819  }
1820 
1821  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 2) != laserWavelengths_.end() ) {
1822 
1823  MonitorElement *meg = eblc->meg02_[ism-1];
1824 
1825  float xval = 2;
1826  if ( meg ) xval = meg->getBinContent( ie, ip );
1827 
1828  // exclude channels without laser data (yellow in the quality map)
1829  if( xval != 2 && xval != 5 ) {
1830 
1831  MonitorElement* mea02 = eblc->mea02_[ism-1];
1832  MonitorElement* met02 = eblc->met02_[ism-1];
1833  MonitorElement* meaopn02 = eblc->meaopn02_[ism-1];
1834 
1835  if( mea02 && met02 && meaopn02 ) {
1836  meLaserL2Ampl_->Fill( ism, mea02->getBinContent( chan+1 ) );
1837  if( met02->getBinContent( chan+1 ) > 0. ) meLaserL2Timing_->Fill( ism, met02->getBinContent( chan+1 ) );
1838  meLaserL2AmplOverPN_->Fill( ism, meaopn02->getBinContent( chan+1 ) );
1839  }
1840 
1841  }
1842 
1843  }
1844 
1845  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 3) != laserWavelengths_.end() ) {
1846 
1847  MonitorElement *meg = eblc->meg03_[ism-1];
1848 
1849  float xval = 2;
1850  if ( meg ) xval = meg->getBinContent( ie, ip );
1851 
1852  // exclude channels without laser data (yellow in the quality map)
1853  if( xval != 2 && xval != 5 ) {
1854 
1855  MonitorElement* mea03 = eblc->mea03_[ism-1];
1856  MonitorElement* met03 = eblc->met03_[ism-1];
1857  MonitorElement* meaopn03 = eblc->meaopn03_[ism-1];
1858 
1859  if( mea03 && met03 && meaopn03 ) {
1860  meLaserL3Ampl_->Fill( ism, mea03->getBinContent( chan+1 ) );
1861  if( met03->getBinContent( chan+1 ) > 0. ) meLaserL3Timing_->Fill( ism, met03->getBinContent( chan+1 ) );
1862  meLaserL3AmplOverPN_->Fill( ism, meaopn03->getBinContent( chan+1 ) );
1863  }
1864 
1865  }
1866 
1867  }
1868 
1869  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 4) != laserWavelengths_.end() ) {
1870 
1871  MonitorElement *meg = eblc->meg04_[ism-1];
1872 
1873  float xval = 2;
1874  if ( meg ) xval = meg->getBinContent( ie, ip );
1875 
1876  // exclude channels without laser data (yellow in the quality map)
1877  if( xval != 2 && xval != 5 ) {
1878 
1879  MonitorElement* mea04 = eblc->mea04_[ism-1];
1880  MonitorElement* met04 = eblc->met04_[ism-1];
1881  MonitorElement* meaopn04 = eblc->meaopn04_[ism-1];
1882 
1883  if( mea04 && met04 && meaopn04 ) {
1884  meLaserL4Ampl_->Fill( ism, mea04->getBinContent( chan+1 ) );
1885  if( met04->getBinContent( chan+1 ) > 0. ) meLaserL4Timing_->Fill( ism, met04->getBinContent( chan+1 ) );
1886  meLaserL4AmplOverPN_->Fill( ism, meaopn04->getBinContent( chan+1 ) );
1887  }
1888 
1889  }
1890 
1891  }
1892 
1893  }
1894 
1895  if ( ebtpc ) {
1896 
1897  MonitorElement *meg01 = ebtpc->meg01_[ism-1];
1898  MonitorElement *meg02 = ebtpc->meg02_[ism-1];
1899  MonitorElement *meg03 = ebtpc->meg03_[ism-1];
1900 
1901  if ( meg01 ) {
1902 
1903  float xval01 = meg01->getBinContent(ie,ip);
1904 
1905  if ( xval01 != 2 && xval01 != 5 ) {
1906 
1907  me = ebtpc->mea01_[ism-1];
1908 
1909  if ( me ) {
1910 
1911  meTestPulseAmplG01_->Fill( ism, me->getBinContent( chan+1 ) );
1912 
1913  }
1914 
1915  }
1916 
1917  }
1918 
1919  if ( meg02 ) {
1920 
1921  float xval02 = meg02->getBinContent(ie,ip);
1922 
1923  if ( xval02 != 2 && xval02 != 5 ) {
1924 
1925  me = ebtpc->mea02_[ism-1];
1926 
1927  if ( me ) {
1928 
1929  meTestPulseAmplG06_->Fill( ism, me->getBinContent( chan+1 ) );
1930 
1931  }
1932 
1933  }
1934 
1935  }
1936 
1937  if ( meg03 ) {
1938 
1939  float xval03 = meg03->getBinContent(ie,ip);
1940 
1941  if ( xval03 != 2 && xval03 != 5 ) {
1942 
1943  me = ebtpc->mea03_[ism-1];
1944 
1945  if ( me ) {
1946 
1947  meTestPulseAmplG12_->Fill( ism, me->getBinContent( chan+1 ) );
1948 
1949  }
1950 
1951  }
1952 
1953  }
1954 
1955  }
1956 
1957  } // loop on channels
1958 
1959  } // loop on SM
1960 
1961  } // loop on clients
1962 
1963  // The global-summary
1964 
1965  int nGlobalErrors = 0;
1966  int nGlobalErrorsEB[36];
1967  int nValidChannels = 0;
1968  int nValidChannelsEB[36];
1969 
1970  for (int i = 0; i < 36; i++) {
1971  nGlobalErrorsEB[i] = 0;
1972  nValidChannelsEB[i] = 0;
1973  }
1974 
1975  for ( int iex = 1; iex <= 170; iex++ ) {
1976  for ( int ipx = 1; ipx <= 360; ipx++ ) {
1977 
1978  if(meGlobalSummary_) {
1979 
1980  int ism = (ipx-1)/20 + 1 ;
1981  if ( iex>85 ) ism+=18;
1982 
1983  int iet = (iex-1)/5 + 1;
1984  int ipt = (ipx-1)/5 + 1;
1985 
1986  float xval = 6;
1987  float val_in = meIntegrity_->getBinContent(ipx,iex);
1988  float val_po = mePedestalOnline_->getBinContent(ipx,iex);
1989  float val_tm = reducedReports_ ? 1. : meTiming_->getBinContent(ipt,iet);
1990  float val_sf = meStatusFlags_->getBinContent((ipx-1)/5+1,(iex-1)/5+1);
1991  float val_ee = reducedReports_ ? 1. : meTriggerTowerEmulError_->getBinContent((ipx-1)/5+1,(iex-1)/5+1); // removed from the global summary temporarily
1992  // float val_ee = 1;
1993 
1994  // combine all the available wavelenghts in unique laser status
1995  // for each laser turn dark color and yellow into bright green
1996  float val_ls_1=2, val_ls_2=2, val_ls_3=2, val_ls_4=2;
1997  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 1) != laserWavelengths_.end() ) {
1998  if ( meLaserL1_ ) val_ls_1 = meLaserL1_->getBinContent(ipx,iex);
1999  if(val_ls_1==2 || val_ls_1==3 || val_ls_1==4 || val_ls_1==5) val_ls_1=1;
2000  }
2001  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 2) != laserWavelengths_.end() ) {
2002  if ( meLaserL2_ ) val_ls_2 = meLaserL2_->getBinContent(ipx,iex);
2003  if(val_ls_2==2 || val_ls_2==3 || val_ls_2==4 || val_ls_2==5) val_ls_2=1;
2004  }
2005  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 3) != laserWavelengths_.end() ) {
2006  if ( meLaserL3_ ) val_ls_3 = meLaserL3_->getBinContent(ipx,iex);
2007  if(val_ls_3==2 || val_ls_3==3 || val_ls_3==4 || val_ls_3==5) val_ls_3=1;
2008  }
2009  if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 4) != laserWavelengths_.end() ) {
2010  if ( meLaserL4_ ) val_ls_4 = meLaserL4_->getBinContent(ipx,iex);
2011  if(val_ls_4==2 || val_ls_4==3 || val_ls_4==4 || val_ls_4==5) val_ls_4=1;
2012  }
2013 
2014  float val_ls = 1;
2015  if (val_ls_1 == 0 || val_ls_2==0 || val_ls_3==0 || val_ls_4==0) val_ls=0;
2016 
2017  // DO NOT CONSIDER CALIBRATION EVENTS IN THE REPORT SUMMARY UNTIL LHC COLLISIONS
2018  val_ls = 1;
2019 
2020  // turn each dark color (masked channel) to bright green
2021  // for laser & timing & trigger turn also yellow into bright green
2022  // for pedestal online too because is not computed in calibration events
2023 
2024  // 0/3 = red/dark red
2025  // 1/4 = green/dark green
2026  // 2/5 = yellow/dark yellow
2027  // 6 = unknown
2028 
2029  if( val_in==3 || val_in==4 || val_in==5) val_in=1;
2030  if(val_po==2 || val_po==3 || val_po==4 || val_po==5) val_po=1;
2031  if(val_tm==2 || val_tm==3 || val_tm==4 || val_tm==5) val_tm=1;
2032  if( val_sf==3 || val_sf==4 || val_sf==5) val_sf=1;
2033  if(val_ee==2 || val_ee==3 || val_ee==4 || val_ee==5) val_ee=1;
2034 
2035  if(val_in==6) xval=6;
2036  else if(val_in==0) xval=0;
2037  else if(val_po==0 || val_ls==0 || val_tm==0 || val_sf==0 || val_ee==0) xval=0;
2038  else if(val_po==2 || val_ls==2 || val_tm==2 || val_sf==2 || val_ee==2) xval=2;
2039  else xval=1;
2040 
2041  // if the SM is entirely not read, the masked channels
2042  // are reverted back to yellow
2043  float iEntries=0;
2044 
2045  if(norm01_ && synch01_) {
2046  float frac_synch_errors = 0.;
2047  float norm = norm01_->GetBinContent(ism);
2048  if(norm > 0) frac_synch_errors = float(synch01_->GetBinContent(ism))/float(norm);
2049  if(frac_synch_errors > synchErrorThreshold_){
2050  xval = 0;
2051  if(oosTrend && oosTrend->GetBinContent(oosTrend->GetNbinsX()) - oosTrend->GetBinContent(1) < 1.) xval += 3.;
2052  }
2053  }
2054 
2055  std::vector<int>::iterator iter = find(superModules_.begin(), superModules_.end(), ism);
2056  if (iter != superModules_.end()) {
2057  for ( unsigned int i=0; i<clients_.size(); i++ ) {
2058  EBIntegrityClient* ebic = dynamic_cast<EBIntegrityClient*>(clients_[i]);
2059  if ( ebic ) {
2060  TH2F* h2 = ebic->h_[ism-1];
2061  if ( h2 ) {
2062  iEntries = h2->GetEntries();
2063  }
2064  }
2065  }
2066  }
2067 
2068  if ( iEntries==0 ) {
2069  xval=2;
2070  }
2071 
2072  meGlobalSummary_->setBinContent( ipx, iex, xval );
2073 
2074  if ( xval >= 0 && xval <= 5 ) {
2075  if ( xval != 2 && xval != 5 ) ++nValidChannels;
2076  if ( iex <= 85 ) {
2077  if ( xval != 2 && xval != 5 ) ++nValidChannelsEB[(ipx-1)/20];
2078  } else {
2079  if ( xval != 2 && xval != 5 ) ++nValidChannelsEB[18+(ipx-1)/20];
2080  }
2081  if ( xval == 0 ) ++nGlobalErrors;
2082  if ( iex <= 85 ) {
2083  if ( xval == 0 ) ++nGlobalErrorsEB[(ipx-1)/20];
2084  } else {
2085  if ( xval == 0 ) ++nGlobalErrorsEB[18+(ipx-1)/20];
2086  }
2087  }
2088 
2089  }
2090 
2091  }
2092  }
2093 
2094  if(meSummaryErr_)
2095  meSummaryErr_->setBinContent(1, double(nGlobalErrors) / double(nValidChannels));
2096 
2097  float reportSummary = -1.0;
2098  if ( nValidChannels != 0 )
2099  reportSummary = 1.0 - float(nGlobalErrors)/float(nValidChannels);
2100  me = dqmStore_->get(prefixME_ + "/EventInfo/reportSummary");
2101  if ( me )
2102  me->Fill(reportSummary);
2103 
2104  for (int i = 0; i < 36; i++) {
2105  float reportSummaryEB = -1.0;
2106  if ( nValidChannelsEB[i] != 0 )
2107  reportSummaryEB = 1.0 - float(nGlobalErrorsEB[i])/float(nValidChannelsEB[i]);
2108  me = dqmStore_->get(prefixME_ + "/EventInfo/reportSummaryContents/EcalBarrel_" + Numbers::sEB(i+1));
2109  if ( me ) me->Fill(reportSummaryEB);
2110  }
2111 
2112  if(meGlobalSummary_){
2113 
2114  me = dqmStore_->get(prefixME_ + "/EventInfo/reportSummaryMap");
2115  if ( me ) {
2116 
2117  int nValidChannelsTT[72][34];
2118  int nGlobalErrorsTT[72][34];
2119  for ( int iettx = 0; iettx < 34; iettx++ ) {
2120  for ( int ipttx = 0; ipttx < 72; ipttx++ ) {
2121  nValidChannelsTT[ipttx][iettx] = 0;
2122  nGlobalErrorsTT[ipttx][iettx] = 0;
2123  }
2124  }
2125 
2126  for ( int iex = 1; iex <= 170; iex++ ) {
2127  for ( int ipx = 1; ipx <= 360; ipx++ ) {
2128 
2129  int iettx = (iex-1)/5+1;
2130  int ipttx = (ipx-1)/5+1;
2131 
2132  float xval = meGlobalSummary_->getBinContent( ipx, iex );
2133 
2134  if ( xval >= 0 && xval <= 5 ) {
2135  if ( xval != 2 && xval != 5 ) ++nValidChannelsTT[ipttx-1][iettx-1];
2136  if ( xval == 0 ) ++nGlobalErrorsTT[ipttx-1][iettx-1];
2137  }
2138 
2139  }
2140  }
2141 
2142  // Countermeasure to partial TR failure
2143  // make the whole SM red if more than 2 towers within a 2x2 matrix fails
2144 
2145  for(int jeta(1); jeta <= 33; jeta++){
2146  for(int jphi(1); jphi <= 71; jphi++){
2147  int nErr(0);
2148  if(nValidChannelsTT[jphi - 1][jeta - 1] > 0 && nGlobalErrorsTT[jphi - 1][jeta - 1] == nValidChannelsTT[jphi - 1][jeta - 1]) nErr += 1;
2149  if(nValidChannelsTT[jphi][jeta - 1] > 0 && nGlobalErrorsTT[jphi][jeta - 1] == nValidChannelsTT[jphi][jeta - 1]) nErr += 1;
2150  if(nValidChannelsTT[jphi - 1][jeta] > 0 && nGlobalErrorsTT[jphi - 1][jeta] == nValidChannelsTT[jphi - 1][jeta]) nErr += 1;
2151  if(nValidChannelsTT[jphi][jeta] > 0 && nGlobalErrorsTT[jphi][jeta] == nValidChannelsTT[jphi][jeta]) nErr += 1;
2152  if(nErr > 2){
2153  int jphi0(((jphi - 1) / 4) * 4);
2154  int jeta0(((jeta - 1) / 17) * 17);
2155  for(int jjphi(jphi0); jjphi < jphi0 + 4; jjphi++){
2156  for(int jjeta(jeta0); jjeta < jeta0 + 17; jjeta++){
2157  nGlobalErrorsTT[jjphi][jjeta] = nValidChannelsTT[jjphi][jjeta];
2158  }
2159  }
2160  }
2161  }
2162  }
2163 
2164  for ( int iettx = 0; iettx < 34; iettx++ ) {
2165  for ( int ipttx = 0; ipttx < 72; ipttx++ ) {
2166 
2167  float xval = -1.0;
2168  if ( nValidChannelsTT[ipttx][iettx] != 0 )
2169  xval = 1.0 - float(nGlobalErrorsTT[ipttx][iettx])/float(nValidChannelsTT[ipttx][iettx]);
2170 
2171  me->setBinContent( ipttx+1, iettx+1, xval );
2172  }
2173  }
2174 
2175  }
2176 
2177  }
2178 
2179 }
2180 
MonitorElement * mea02_[36]
MonitorElement * meg12_[36]
MonitorElement * mePedestalOnlineRMS_
MonitorElement * meLaserL4PNErr_
T getUntrackedParameter(std::string const &, T const &) const
const std::string & getName(void) const
get name of ME
int i
Definition: DBlmapReader.cc:9
MonitorElement * meOccupancyPN_
MonitorElement * meRecHitEnergy_
MonitorElement * meg09_[36]
MonitorElement * meTriggerTowerEt_
void setBinContent(int binx, double content)
set content of bin (1-D)
virtual ~EBSummaryClient()
Destructor.
static bool maskChannel(int ism, int i1, int i2, uint32_t bits, const EcalSubdetector subdet)
Definition: Masks.cc:60
MonitorElement * meLaserL3_
void cleanup(void)
Cleanup.
MonitorElement * meTestPulseAmplG01_
MonitorElement * meg03_[36]
MonitorElement * me_o02_[36]
TProfile2D * hot01_[36]
MonitorElement * meg02_[36]
TProfile2D * httt01_[36]
MonitorElement * meg05_[36]
MonitorElement * meTestPulseG12_
static const int PHYSICS_BAD_CHANNEL_WARNING
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:722
MonitorElement * meLaserL4AmplOverPN_
MonitorElement * meg04_[36]
static T getHisto(const MonitorElement *me, bool clone=false, T ret=0)
Returns the histogram contained by the Monitor Element.
Definition: UtilsClient.h:91
MonitorElement * mePedestalPNG01_
MonitorElement * met02_[36]
MonitorElement * meLaserL1Timing_
MonitorElement * meTimingMean_
Some &quot;id&quot; conversions.
static std::string sEB(const unsigned ism)
Definition: Numbers.cc:94
MonitorElement * meStatusFlagsErr_
MonitorElement * meLaserL1_
MonitorElement * meg02_[36]
MonitorElement * meg03_[36]
void endRun(void)
EndRun.
MonitorElement * mea01_[36]
MonitorElement * meIntegrity_
MonitorElement * meg02_[36]
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)
#define abs(x)
Definition: mlp_lapack.h:159
MonitorElement * meg01_[36]
MonitorElement * mePedestalOnlineErr_
MonitorElement * mePedestalG06_
MonitorElement * meOccupancy_
MonitorElement * meTestPulseAmplG12_
MonitorElement * meLaserL3Timing_
std::vector< int > superModules_
std::vector< int > laserWavelengths_
double getEntries(void) const
get # of entries
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
static void maskBinContent(const MonitorElement *me, const int ix, const int iy)
Mask the bin content.
Definition: UtilsClient.cc:231
MonitorElement * mea03_[36]
MonitorElement * met04_[36]
MonitorElement * meLaserL2Err_
MonitorElement * meLaserL2_
MonitorElement * meg04_[36]
void Fill(long long x)
MonitorElement * meLaserL3Ampl_
MonitorElement * meTestPulsePNG16_
MonitorElement * mea02_[36]
MonitorElement * mePedestalG01_
MonitorElement * meg10_[36]
MonitorElement * meIntegrityErr_
void beginJob(void)
BeginJob.
MonitorElement * meSummaryErr_
MonitorElement * meLaserL3PNErr_
MonitorElement * meg01_[36]
MonitorElement * meLaserL2PN_
MonitorElement * meTestPulsePNG01_
MonitorElement * meLaserL4Timing_
MonitorElement * meLaserL2AmplOverPN_
void removeElement(const std::string &name)
Definition: DQMStore.cc:2577
MonitorElement * meTimingRMS_
channel masking
std::string prefixME_
EBSummaryClient(const edm::ParameterSet &ps)
Constructor.
MonitorElement * meIntegrityPN_
int j
Definition: DBlmapReader.cc:9
void setup(void)
Setup.
MonitorElement * mea04_[36]
TProfile2D * hpot01_[36]
MonitorElement * meLaserL3Err_
MonitorElement * meLaserL4Err_
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
Definition: DQMStore.cc:1036
MonitorElement * meh01_[36]
MonitorElement * meg04_[36]
MonitorElement * meTimingRMS1D_
MonitorElement * meOccupancy1D_
void setEntries(double nentries)
set # of entries
MonitorElement * meTriggerTowerEmulError_
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1473
MonitorElement * met03_[36]
MonitorElement * meTriggerTowerTiming_
Ecal Monitor Utils for Client.
static bool getBinStatistics(TH1 *histo, const int ix, const int iy, float &num, float &mean, float &rms, float minEntries=1.)
Returns true if the bin contains good statistical data.
Definition: UtilsClient.cc:74
DQMStore * dqmStore_
MonitorElement * meLaserL3PN_
MonitorElement * meLaserL3AmplOverPN_
MonitorElement * meaopn04_[36]
MonitorElement * meLaserL4PN_
MonitorElement * meLaserL2Timing_
MonitorElement * meaopn01_[36]
MonitorElement * meTimingMean1D_
MonitorElement * me_o01_[36]
MonitorElement * meTiming_
double getBinError(int binx) const
get uncertainty on content of bin (1-D) - See TH1::GetBinError for details
MonitorElement * meg03_[36]
long long int num
Definition: procUtils.cc:71
MonitorElement * meLaserL1AmplOverPN_
MonitorElement * mePedestalOnlineRMSMap_
MonitorElement * meg11_[36]
MonitorElement * meLaserL4Ampl_
MonitorElement * meLaserL1Err_
MonitorElement * mea01_[36]
MonitorElement * mea03_[36]
MonitorElement * meLaserL4_
MonitorElement * meg01_[36]
MonitorElement * meTestPulseAmplG06_
double getBinContent(int binx) const
get content of bin (1-D)
MonitorElement * mePedestalOnline_
MonitorElement * meGlobalSummary_
void endJob(void)
EndJob.
std::vector< int > MGPAGainsPN_
MonitorElement * meStatusFlags_
MonitorElement * meLaserL1PN_
MonitorElement * meLaserL2PNErr_
MonitorElement * meTestPulseG06_
MonitorElement * meTestPulseG01_
tuple cout
Definition: gather_cfg.py:121
MonitorElement * meLaserL1Ampl_
MonitorElement * meg05_[36]
float synchErrorThreshold_
MonitorElement * meLaserL1PNErr_
MonitorElement * meg02_[36]
MonitorElement * meg03_[36]
tuple status
Definition: ntuplemaker.py:245
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:850
MonitorElement * meg01_[36]
std::vector< int > MGPAGains_
Definition: RunIOV.h:13
MonitorElement * meaopn02_[36]
int ism(int ieta, int iphi)
Definition: EcalPyUtils.cc:56
MonitorElement * meaopn03_[36]
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void Reset(void)
reset ME (ie. contents, errors, etc)
MonitorElement * meLaserL2Ampl_
std::vector< EBClient * > clients_
void analyze(void)
Analyze.
void beginRun(void)
BeginRun.
MonitorElement * mePedestalG12_
TProfile2D * htmt01_[36]
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434
MonitorElement * met01_[36]
std::string subfolder_
MonitorElement * meTriggerTowerNonSingleTiming_
MonitorElement * mePedestalOnlineMean_
MonitorElement * mePedestalPNG16_