CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/DQM/EcalBarrelMonitorClient/src/EBSummaryClient.cc

Go to the documentation of this file.
00001 /*
00002  * \file EBSummaryClient.cc
00003  *
00004  * $Date: 2012/03/18 17:46:03 $
00005  * $Revision: 1.223.2.6 $
00006  * \author G. Della Ricca
00007  *
00008 */
00009 
00010 #include <memory>
00011 #include <iostream>
00012 #include <fstream>
00013 #include <iomanip>
00014 
00015 #include "FWCore/ServiceRegistry/interface/Service.h"
00016 
00017 #include "DQMServices/Core/interface/DQMStore.h"
00018 #include "DQMServices/Core/interface/MonitorElement.h"
00019 
00020 #ifdef WITH_ECAL_COND_DB
00021 #include "OnlineDB/EcalCondDB/interface/RunTag.h"
00022 #include "OnlineDB/EcalCondDB/interface/RunIOV.h"
00023 #endif
00024 
00025 #include "DQM/EcalCommon/interface/UtilsClient.h"
00026 #include "DQM/EcalCommon/interface/Numbers.h"
00027 #include "DQM/EcalCommon/interface/Masks.h"
00028 
00029 #include "DQM/EcalBarrelMonitorClient/interface/EBStatusFlagsClient.h"
00030 #include "DQM/EcalBarrelMonitorClient/interface/EBIntegrityClient.h"
00031 #include "DQM/EcalBarrelMonitorClient/interface/EBOccupancyClient.h"
00032 #include "DQM/EcalBarrelMonitorClient/interface/EBLaserClient.h"
00033 #include "DQM/EcalBarrelMonitorClient/interface/EBPedestalClient.h"
00034 #include "DQM/EcalBarrelMonitorClient/interface/EBPedestalOnlineClient.h"
00035 #include "DQM/EcalBarrelMonitorClient/interface/EBTestPulseClient.h"
00036 #include "DQM/EcalBarrelMonitorClient/interface/EBBeamCaloClient.h"
00037 #include "DQM/EcalBarrelMonitorClient/interface/EBBeamHodoClient.h"
00038 #include "DQM/EcalBarrelMonitorClient/interface/EBTriggerTowerClient.h"
00039 #include "DQM/EcalBarrelMonitorClient/interface/EBClusterClient.h"
00040 #include "DQM/EcalBarrelMonitorClient/interface/EBTimingClient.h"
00041 
00042 #include "DQM/EcalBarrelMonitorClient/interface/EBSummaryClient.h"
00043 
00044 EBSummaryClient::EBSummaryClient(const edm::ParameterSet& ps) {
00045 
00046   // cloneME switch
00047   cloneME_ = ps.getUntrackedParameter<bool>("cloneME", true);
00048 
00049   // verbose switch
00050   verbose_ = ps.getUntrackedParameter<bool>("verbose", true);
00051 
00052   // debug switch
00053   debug_ = ps.getUntrackedParameter<bool>("debug", false);
00054 
00055   // prefixME path
00056   prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");
00057 
00058   // enableCleanup_ switch
00059   enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
00060 
00061   produceReports_ = ps.getUntrackedParameter<bool>("produceReports", true);
00062 
00063   // vector of selected Super Modules (Defaults to all 36).
00064   superModules_.reserve(36);
00065   for ( unsigned int i = 1; i <= 36; i++ ) superModules_.push_back(i);
00066   superModules_ = ps.getUntrackedParameter<std::vector<int> >("superModules", superModules_);
00067 
00068   laserWavelengths_.reserve(4);
00069   for ( unsigned int i = 1; i <= 4; i++ ) laserWavelengths_.push_back(i);
00070   laserWavelengths_ = ps.getUntrackedParameter<std::vector<int> >("laserWavelengths", laserWavelengths_);
00071 
00072   MGPAGains_.reserve(3);
00073   for ( unsigned int i = 1; i <= 3; i++ ) MGPAGains_.push_back(i);
00074   MGPAGains_ = ps.getUntrackedParameter<std::vector<int> >("MGPAGains", MGPAGains_);
00075 
00076   MGPAGainsPN_.reserve(2);
00077   for ( unsigned int i = 1; i <= 3; i++ ) MGPAGainsPN_.push_back(i);
00078   MGPAGainsPN_ = ps.getUntrackedParameter<std::vector<int> >("MGPAGainsPN", MGPAGainsPN_);
00079 
00080   // summary maps
00081   meIntegrity_            = 0;
00082   meIntegrityPN_          = 0;
00083   meOccupancy_            = 0;
00084   meOccupancyPN_          = 0;
00085   meStatusFlags_          = 0;
00086   mePedestalOnline_       = 0;
00087   mePedestalOnlineRMSMap_ = 0;
00088   mePedestalOnlineMean_   = 0;
00089   mePedestalOnlineRMS_    = 0;
00090 
00091   meLaserL1_              = 0;
00092   meLaserL1PN_            = 0;
00093   meLaserL1Ampl_          = 0;
00094   meLaserL1Timing_        = 0;
00095   meLaserL1AmplOverPN_    = 0;
00096 
00097   meLaserL2_              = 0;
00098   meLaserL2PN_            = 0;
00099   meLaserL2Ampl_          = 0;
00100   meLaserL2Timing_        = 0;
00101   meLaserL2AmplOverPN_    = 0;
00102 
00103   meLaserL3_              = 0;
00104   meLaserL3PN_            = 0;
00105   meLaserL3Ampl_          = 0;
00106   meLaserL3Timing_        = 0;
00107   meLaserL3AmplOverPN_    = 0;
00108 
00109   meLaserL4_              = 0;
00110   meLaserL4PN_            = 0;
00111   meLaserL4Ampl_          = 0;
00112   meLaserL4Timing_        = 0;
00113   meLaserL4AmplOverPN_    = 0;
00114 
00115   mePedestalG01_          = 0;
00116   mePedestalG06_          = 0;
00117   mePedestalG12_          = 0;
00118   mePedestalPNG01_        = 0;
00119   mePedestalPNG16_        = 0;
00120   meTestPulseG01_         = 0;
00121   meTestPulseG06_         = 0;
00122   meTestPulseG12_         = 0;
00123   meTestPulsePNG01_       = 0;
00124   meTestPulsePNG16_       = 0;
00125   meTestPulseAmplG01_     = 0;
00126   meTestPulseAmplG06_     = 0;
00127   meTestPulseAmplG12_     = 0;
00128   meGlobalSummary_        = 0;
00129 
00130   meRecHitEnergy_         = 0;
00131   meTiming_         = 0;
00132   meTimingMean1D_   = 0;
00133   meTimingRMS1D_    = 0;
00134   meTimingMean_     = 0;
00135   meTimingRMS_      = 0;
00136   meTriggerTowerEt_        = 0;
00137   meTriggerTowerEmulError_ = 0;
00138   meTriggerTowerTiming_ = 0;
00139   meTriggerTowerNonSingleTiming_ = 0;
00140 
00141   // summary errors
00142   meIntegrityErr_       = 0;
00143   meOccupancy1D_        = 0;
00144   meStatusFlagsErr_     = 0;
00145   mePedestalOnlineErr_  = 0;
00146   meLaserL1Err_         = 0;
00147   meLaserL1PNErr_       = 0;
00148   meLaserL2Err_         = 0;
00149   meLaserL2PNErr_       = 0;
00150   meLaserL3Err_         = 0;
00151   meLaserL3PNErr_       = 0;
00152   meLaserL4Err_         = 0;
00153   meLaserL4PNErr_       = 0;
00154 
00155   // additional histograms from tasks
00156   for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00157 
00158     int ism = superModules_[i];
00159 
00160     hpot01_[ism-1] = 0;
00161     httt01_[ism-1] = 0;
00162     htmt01_[ism-1] = 0;
00163 
00164   }
00165 
00166   synchErrorThreshold_ = 0.0;
00167 
00168 }
00169 
00170 EBSummaryClient::~EBSummaryClient() {
00171 
00172 }
00173 
00174 void EBSummaryClient::beginJob(void) {
00175 
00176   dqmStore_ = edm::Service<DQMStore>().operator->();
00177 
00178   if ( debug_ ) std::cout << "EBSummaryClient: beginJob" << std::endl;
00179 
00180   ievt_ = 0;
00181   jevt_ = 0;
00182 
00183 }
00184 
00185 void EBSummaryClient::beginRun(void) {
00186 
00187   if ( debug_ ) std::cout << "EBSummaryClient: beginRun" << std::endl;
00188 
00189   jevt_ = 0;
00190 
00191   this->setup();
00192 
00193 }
00194 
00195 void EBSummaryClient::endJob(void) {
00196 
00197   if ( debug_ ) std::cout << "EBSummaryClient: endJob, ievt = " << ievt_ << std::endl;
00198 
00199   this->cleanup();
00200 
00201 }
00202 
00203 void EBSummaryClient::endRun(void) {
00204 
00205   if ( debug_ ) std::cout << "EBSummaryClient: endRun, jevt = " << jevt_ << std::endl;
00206 
00207   this->cleanup();
00208 
00209 }
00210 
00211 void EBSummaryClient::setup(void) {
00212 
00213   bool integrityClient(false);
00214   bool occupancyClient(false);
00215   bool statusFlagsClient(false);
00216   bool pedestalOnlineClient(false);
00217   bool laserClient(false);
00218   bool pedestalClient(false);
00219   bool testPulseClient(false);
00220   bool timingClient(false);
00221   bool triggerTowerClient(false);
00222 
00223   for(unsigned i = 0; i < clients_.size(); i++){
00224 
00225     if(dynamic_cast<EBIntegrityClient*>(clients_[i])) integrityClient = true;
00226     if(dynamic_cast<EBOccupancyClient*>(clients_[i])) occupancyClient = true;
00227     if(dynamic_cast<EBStatusFlagsClient*>(clients_[i])) statusFlagsClient = true;
00228     if(dynamic_cast<EBPedestalOnlineClient*>(clients_[i])) pedestalOnlineClient = true;
00229     if(dynamic_cast<EBLaserClient*>(clients_[i])) laserClient = true;
00230     if(dynamic_cast<EBPedestalClient*>(clients_[i])) pedestalClient = true;
00231     if(dynamic_cast<EBTestPulseClient*>(clients_[i])) testPulseClient = true;
00232     if(dynamic_cast<EBTimingClient*>(clients_[i])) timingClient = true;
00233     if(dynamic_cast<EBTriggerTowerClient*>(clients_[i])) triggerTowerClient = true;
00234 
00235   }
00236 
00237   std::string name;
00238 
00239   dqmStore_->setCurrentFolder( prefixME_ + "/EBSummaryClient" );
00240 
00241   if(integrityClient){
00242     if(produceReports_){
00243       if ( meIntegrity_ ) dqmStore_->removeElement( meIntegrity_->getName() );
00244       name = "EBIT integrity quality summary";
00245       meIntegrity_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00246       meIntegrity_->setAxisTitle("jphi", 1);
00247       meIntegrity_->setAxisTitle("jeta", 2);
00248 
00249       if ( meIntegrityErr_ ) dqmStore_->removeElement( meIntegrityErr_->getName() );
00250       name = "EBIT integrity quality errors summary";
00251       meIntegrityErr_ = dqmStore_->book1D(name, name, 36, 1, 37);
00252       for (int i = 0; i < 36; i++) {
00253         meIntegrityErr_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00254       }
00255     }
00256     else{
00257       if ( meIntegrityPN_ ) dqmStore_->removeElement( meIntegrityPN_->getName() );
00258       name = "EBIT PN integrity quality summary";
00259       meIntegrityPN_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
00260       meIntegrityPN_->setAxisTitle("jchannel", 1);
00261       meIntegrityPN_->setAxisTitle("jpseudo-strip", 2);
00262     }
00263   }
00264 
00265   if(occupancyClient){
00266     if(produceReports_){
00267       if ( meOccupancy_ ) dqmStore_->removeElement( meOccupancy_->getName() );
00268       name = "EBOT digi occupancy summary";
00269       meOccupancy_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00270       meOccupancy_->setAxisTitle("jphi", 1);
00271       meOccupancy_->setAxisTitle("jeta", 2);
00272 
00273       if ( meOccupancy1D_ ) dqmStore_->removeElement( meOccupancy1D_->getName() );
00274       name = "EBOT digi occupancy summary 1D";
00275       meOccupancy1D_ = dqmStore_->book1D(name, name, 36, 1, 37);
00276       for (int i = 0; i < 36; i++) {
00277         meOccupancy1D_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00278       }
00279 
00280       if( meRecHitEnergy_ ) dqmStore_->removeElement( meRecHitEnergy_->getName() );
00281       name = "EBOT energy summary";
00282       meRecHitEnergy_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00283       meRecHitEnergy_->setAxisTitle("jphi", 1);
00284       meRecHitEnergy_->setAxisTitle("jeta", 2);
00285     }
00286     else{
00287       if ( meOccupancyPN_ ) dqmStore_->removeElement( meOccupancyPN_->getName() );
00288       name = "EBOT PN digi occupancy summary";
00289       meOccupancyPN_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
00290       meOccupancyPN_->setAxisTitle("jchannel", 1);
00291       meOccupancyPN_->setAxisTitle("jpseudo-strip", 2);
00292     }
00293 
00294   }
00295 
00296   if(statusFlagsClient){
00297     if ( meStatusFlags_ ) dqmStore_->removeElement( meStatusFlags_->getName() );
00298     name = "EBSFT front-end status summary";
00299     meStatusFlags_ = dqmStore_->book2D(name, name, 72, 0., 72., 34, -17., 17.);
00300     meStatusFlags_->setAxisTitle("jphi'", 1);
00301     meStatusFlags_->setAxisTitle("jeta'", 2);
00302 
00303     if ( meStatusFlagsErr_ ) dqmStore_->removeElement( meStatusFlagsErr_->getName() );
00304     name = "EBSFT front-end status errors summary";
00305     meStatusFlagsErr_ = dqmStore_->book1D(name, name, 36, 1, 37);
00306     for (int i = 0; i < 36; i++) {
00307       meStatusFlagsErr_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00308     }
00309   }
00310 
00311   if(pedestalOnlineClient){
00312     if ( mePedestalOnline_ ) dqmStore_->removeElement( mePedestalOnline_->getName() );
00313     name = "EBPOT pedestal quality summary G12";
00314     mePedestalOnline_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00315     mePedestalOnline_->setAxisTitle("jphi", 1);
00316     mePedestalOnline_->setAxisTitle("jeta", 2);
00317 
00318     if ( mePedestalOnlineErr_ ) dqmStore_->removeElement( mePedestalOnlineErr_->getName() );
00319     name = "EBPOT pedestal quality errors summary G12";
00320     mePedestalOnlineErr_ = dqmStore_->book1D(name, name, 36, 1, 37);
00321     for (int i = 0; i < 36; i++) {
00322       mePedestalOnlineErr_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00323     }
00324 
00325     if ( mePedestalOnlineRMSMap_ ) dqmStore_->removeElement( mePedestalOnlineRMSMap_->getName() );
00326     name = "EBPOT pedestal G12 RMS map";
00327     mePedestalOnlineRMSMap_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00328     mePedestalOnlineRMSMap_->setAxisTitle("jphi", 1);
00329     mePedestalOnlineRMSMap_->setAxisTitle("jeta", 2);
00330 
00331     if ( mePedestalOnlineMean_ ) dqmStore_->removeElement( mePedestalOnlineMean_->getName() );
00332     name = "EBPOT pedestal G12 mean";
00333     mePedestalOnlineMean_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 100, 150., 250.);
00334     for (int i = 0; i < 36; i++) {
00335       mePedestalOnlineMean_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00336     }
00337 
00338     if ( mePedestalOnlineRMS_ ) dqmStore_->removeElement( mePedestalOnlineRMS_->getName() );
00339     name = "EBPOT pedestal G12 rms";
00340     mePedestalOnlineRMS_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 100, 0., 10.);
00341     for (int i = 0; i < 36; i++) {
00342       mePedestalOnlineRMS_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00343     }
00344   }
00345 
00346   if(laserClient){
00347 
00348     if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 1) != laserWavelengths_.end() ) {
00349 
00350       if ( meLaserL1_ ) dqmStore_->removeElement( meLaserL1_->getName() );
00351       name = "EBLT laser quality summary L1";
00352       meLaserL1_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00353       meLaserL1_->setAxisTitle("jphi", 1);
00354       meLaserL1_->setAxisTitle("jeta", 2);
00355 
00356       if ( meLaserL1Err_ ) dqmStore_->removeElement( meLaserL1Err_->getName() );
00357       name = "EBLT laser quality errors summary L1";
00358       meLaserL1Err_ = dqmStore_->book1D(name, name, 36, 1, 37);
00359       for (int i = 0; i < 36; i++) {
00360         meLaserL1Err_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00361       }
00362 
00363       if ( meLaserL1PN_ ) dqmStore_->removeElement( meLaserL1PN_->getName() );
00364       name = "EBLT PN laser quality summary L1";
00365       meLaserL1PN_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
00366       meLaserL1PN_->setAxisTitle("jchannel", 1);
00367       meLaserL1PN_->setAxisTitle("jpseudo-strip", 2);
00368 
00369       if ( meLaserL1PNErr_ ) dqmStore_->removeElement( meLaserL1PNErr_->getName() );
00370       name = "EBLT PN laser quality errors summary L1";
00371       meLaserL1PNErr_ = dqmStore_->book1D(name, name, 36, 1, 37);
00372       for (int i = 0; i < 36; i++) {
00373         meLaserL1PNErr_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00374       }
00375 
00376       if ( meLaserL1Ampl_ ) dqmStore_->removeElement( meLaserL1Ampl_->getName() );
00377       name = "EBLT laser L1 amplitude summary";
00378       meLaserL1Ampl_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096., "s");
00379       for (int i = 0; i < 36; i++) {
00380         meLaserL1Ampl_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00381       }
00382 
00383       if ( meLaserL1Timing_ ) dqmStore_->removeElement( meLaserL1Timing_->getName() );
00384       name = "EBLT laser L1 timing summary";
00385       meLaserL1Timing_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 100, 0., 10., "s");
00386       for (int i = 0; i < 36; i++) {
00387         meLaserL1Timing_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00388       }
00389 
00390       if ( meLaserL1AmplOverPN_ ) dqmStore_->removeElement( meLaserL1AmplOverPN_->getName() );
00391       name = "EBLT laser L1 amplitude over PN summary";
00392       meLaserL1AmplOverPN_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096.*12., "s");
00393       for (int i = 0; i < 36; i++) {
00394         meLaserL1AmplOverPN_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00395       }
00396 
00397     }
00398 
00399     if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 2) != laserWavelengths_.end() ) {
00400 
00401       if ( meLaserL2_ ) dqmStore_->removeElement( meLaserL2_->getName() );
00402       name = "EBLT laser quality summary L2";
00403       meLaserL2_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00404       meLaserL2_->setAxisTitle("jphi", 1);
00405       meLaserL2_->setAxisTitle("jeta", 2);
00406 
00407       if ( meLaserL2Err_ ) dqmStore_->removeElement( meLaserL2Err_->getName() );
00408       name = "EBLT laser quality errors summary L2";
00409       meLaserL2Err_ = dqmStore_->book1D(name, name, 36, 1, 37);
00410       for (int i = 0; i < 36; i++) {
00411         meLaserL2Err_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00412       }
00413 
00414       if ( meLaserL2PN_ ) dqmStore_->removeElement( meLaserL2PN_->getName() );
00415       name = "EBLT PN laser quality summary L2";
00416       meLaserL2PN_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
00417       meLaserL2PN_->setAxisTitle("jchannel", 1);
00418       meLaserL2PN_->setAxisTitle("jpseudo-strip", 2);
00419 
00420       if ( meLaserL2PNErr_ ) dqmStore_->removeElement( meLaserL2PNErr_->getName() );
00421       name = "EBLT PN laser quality errors summary L2";
00422       meLaserL2PNErr_ = dqmStore_->book1D(name, name, 36, 1, 37);
00423       for (int i = 0; i < 36; i++) {
00424         meLaserL2PNErr_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00425       }
00426 
00427       if ( meLaserL2Ampl_ ) dqmStore_->removeElement( meLaserL2Ampl_->getName() );
00428       name = "EBLT laser L2 amplitude summary";
00429       meLaserL2Ampl_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096., "s");
00430       for (int i = 0; i < 36; i++) {
00431         meLaserL2Ampl_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00432       }
00433 
00434       if ( meLaserL2Timing_ ) dqmStore_->removeElement( meLaserL2Timing_->getName() );
00435       name = "EBLT laser L2 timing summary";
00436       meLaserL2Timing_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 100, 0., 10., "s");
00437       for (int i = 0; i < 36; i++) {
00438         meLaserL2Timing_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00439       }
00440 
00441       if ( meLaserL2AmplOverPN_ ) dqmStore_->removeElement( meLaserL2AmplOverPN_->getName() );
00442       name = "EBLT laser L2 amplitude over PN summary";
00443       meLaserL2AmplOverPN_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096.*12., "s");
00444       for (int i = 0; i < 36; i++) {
00445         meLaserL2AmplOverPN_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00446       }
00447 
00448     }
00449 
00450     if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 3) != laserWavelengths_.end() ) {
00451 
00452       if ( meLaserL3_ ) dqmStore_->removeElement( meLaserL3_->getName() );
00453       name = "EBLT laser quality summary L3";
00454       meLaserL3_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00455       meLaserL3_->setAxisTitle("jphi", 1);
00456       meLaserL3_->setAxisTitle("jeta", 2);
00457 
00458       if ( meLaserL3Err_ ) dqmStore_->removeElement( meLaserL3Err_->getName() );
00459       name = "EBLT laser quality errors summary L3";
00460       meLaserL3Err_ = dqmStore_->book1D(name, name, 36, 1, 37);
00461       for (int i = 0; i < 36; i++) {
00462         meLaserL3Err_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00463       }
00464 
00465       if ( meLaserL3PN_ ) dqmStore_->removeElement( meLaserL3PN_->getName() );
00466       name = "EBLT PN laser quality summary L3";
00467       meLaserL3PN_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
00468       meLaserL3PN_->setAxisTitle("jchannel", 1);
00469       meLaserL3PN_->setAxisTitle("jpseudo-strip", 2);
00470 
00471       if ( meLaserL3PNErr_ ) dqmStore_->removeElement( meLaserL3PNErr_->getName() );
00472       name = "EBLT PN laser quality errors summary L3";
00473       meLaserL3PNErr_ = dqmStore_->book1D(name, name, 36, 1, 37);
00474       for (int i = 0; i < 36; i++) {
00475         meLaserL3PNErr_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00476       }
00477 
00478       if ( meLaserL3Ampl_ ) dqmStore_->removeElement( meLaserL3Ampl_->getName() );
00479       name = "EBLT laser L3 amplitude summary";
00480       meLaserL3Ampl_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096., "s");
00481       for (int i = 0; i < 36; i++) {
00482         meLaserL3Ampl_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00483       }
00484 
00485       if ( meLaserL3Timing_ ) dqmStore_->removeElement( meLaserL3Timing_->getName() );
00486       name = "EBLT laser L3 timing summary";
00487       meLaserL3Timing_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 100, 0., 10., "s");
00488       for (int i = 0; i < 36; i++) {
00489         meLaserL3Timing_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00490       }
00491 
00492       if ( meLaserL3AmplOverPN_ ) dqmStore_->removeElement( meLaserL3AmplOverPN_->getName() );
00493       name = "EBLT laser L3 amplitude over PN summary";
00494       meLaserL3AmplOverPN_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096.*12., "s");
00495       for (int i = 0; i < 36; i++) {
00496         meLaserL3AmplOverPN_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00497       }
00498 
00499     }
00500 
00501     if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 4) != laserWavelengths_.end() ) {
00502 
00503       if ( meLaserL4_ ) dqmStore_->removeElement( meLaserL4_->getName() );
00504       name = "EBLT laser quality summary L4";
00505       meLaserL4_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00506       meLaserL4_->setAxisTitle("jphi", 1);
00507       meLaserL4_->setAxisTitle("jeta", 2);
00508 
00509       if ( meLaserL4Err_ ) dqmStore_->removeElement( meLaserL4Err_->getName() );
00510       name = "EBLT laser quality errors summary L4";
00511       meLaserL4Err_ = dqmStore_->book1D(name, name, 36, 1, 37);
00512       for (int i = 0; i < 36; i++) {
00513         meLaserL4Err_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00514       }
00515 
00516       if ( meLaserL4PN_ ) dqmStore_->removeElement( meLaserL4PN_->getName() );
00517       name = "EBLT PN laser quality summary L4";
00518       meLaserL4PN_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
00519       meLaserL4PN_->setAxisTitle("jchannel", 1);
00520       meLaserL4PN_->setAxisTitle("jpseudo-strip", 2);
00521 
00522       if ( meLaserL4PNErr_ ) dqmStore_->removeElement( meLaserL4PNErr_->getName() );
00523       name = "EBLT PN laser quality errors summary L4";
00524       meLaserL4PNErr_ = dqmStore_->book1D(name, name, 36, 1, 37);
00525       for (int i = 0; i < 36; i++) {
00526         meLaserL4PNErr_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00527       }
00528 
00529       if ( meLaserL4Ampl_ ) dqmStore_->removeElement( meLaserL4Ampl_->getName() );
00530       name = "EBLT laser L4 amplitude summary";
00531       meLaserL4Ampl_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096., "s");
00532       for (int i = 0; i < 36; i++) {
00533         meLaserL4Ampl_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00534       }
00535 
00536       if ( meLaserL4Timing_ ) dqmStore_->removeElement( meLaserL4Timing_->getName() );
00537       name = "EBLT laser L4 timing summary";
00538       meLaserL4Timing_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 100, 0., 10., "s");
00539       for (int i = 0; i < 36; i++) {
00540         meLaserL4Timing_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00541       }
00542 
00543       if ( meLaserL4AmplOverPN_ ) dqmStore_->removeElement( meLaserL4AmplOverPN_->getName() );
00544       name = "EBLT laser L4 amplitude over PN summary";
00545       meLaserL4AmplOverPN_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096.*12., "s");
00546       for (int i = 0; i < 36; i++) {
00547         meLaserL4AmplOverPN_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00548       }
00549 
00550     }
00551   }
00552 
00553   if(pedestalClient){
00554     if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
00555 
00556       if( mePedestalG01_ ) dqmStore_->removeElement( mePedestalG01_->getName() );
00557       name = "EBPT pedestal quality G01 summary";
00558       mePedestalG01_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00559       mePedestalG01_->setAxisTitle("jphi", 1);
00560       mePedestalG01_->setAxisTitle("jeta", 2);
00561 
00562     }
00563 
00564     if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
00565 
00566       if( mePedestalG06_ ) dqmStore_->removeElement( mePedestalG06_->getName() );
00567       name = "EBPT pedestal quality G06 summary";
00568       mePedestalG06_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00569       mePedestalG06_->setAxisTitle("jphi", 1);
00570       mePedestalG06_->setAxisTitle("jeta", 2);
00571 
00572     }
00573 
00574     if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
00575 
00576       if( mePedestalG12_ ) dqmStore_->removeElement( mePedestalG12_->getName() );
00577       name = "EBPT pedestal quality G12 summary";
00578       mePedestalG12_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00579       mePedestalG12_->setAxisTitle("jphi", 1);
00580       mePedestalG12_->setAxisTitle("jeta", 2);
00581 
00582     }
00583 
00584     if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 1) != MGPAGainsPN_.end() ) {
00585 
00586       if( mePedestalPNG01_ ) dqmStore_->removeElement( mePedestalPNG01_->getName() );
00587       name = "EBPT PN pedestal quality G01 summary";
00588       mePedestalPNG01_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10, 10.);
00589       mePedestalPNG01_->setAxisTitle("jchannel", 1);
00590       mePedestalPNG01_->setAxisTitle("jpseudo-strip", 2);
00591 
00592     }
00593 
00594     if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 16) != MGPAGainsPN_.end() ) {
00595 
00596       if( mePedestalPNG16_ ) dqmStore_->removeElement( mePedestalPNG16_->getName() );
00597       name = "EBPT PN pedestal quality G16 summary";
00598       mePedestalPNG16_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10, 10.);
00599       mePedestalPNG16_->setAxisTitle("jchannel", 1);
00600       mePedestalPNG16_->setAxisTitle("jpseudo-strip", 2);
00601 
00602     }
00603   }
00604 
00605   if(testPulseClient){
00606     if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
00607 
00608       if( meTestPulseG01_ ) dqmStore_->removeElement( meTestPulseG01_->getName() );
00609       name = "EBTPT test pulse quality G01 summary";
00610       meTestPulseG01_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00611       meTestPulseG01_->setAxisTitle("jphi", 1);
00612       meTestPulseG01_->setAxisTitle("jeta", 2);
00613 
00614     }
00615 
00616     if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
00617 
00618       if( meTestPulseG06_ ) dqmStore_->removeElement( meTestPulseG06_->getName() );
00619       name = "EBTPT test pulse quality G06 summary";
00620       meTestPulseG06_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00621       meTestPulseG06_->setAxisTitle("jphi", 1);
00622       meTestPulseG06_->setAxisTitle("jeta", 2);
00623 
00624     }
00625 
00626     if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
00627 
00628       if( meTestPulseG12_ ) dqmStore_->removeElement( meTestPulseG12_->getName() );
00629       name = "EBTPT test pulse quality G12 summary";
00630       meTestPulseG12_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00631       meTestPulseG12_->setAxisTitle("jphi", 1);
00632       meTestPulseG12_->setAxisTitle("jeta", 2);
00633 
00634     }
00635 
00636     if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 1) != MGPAGainsPN_.end() ) {
00637 
00638       if( meTestPulsePNG01_ ) dqmStore_->removeElement( meTestPulsePNG01_->getName() );
00639       name = "EBTPT PN test pulse quality G01 summary";
00640       meTestPulsePNG01_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
00641       meTestPulsePNG01_->setAxisTitle("jchannel", 1);
00642       meTestPulsePNG01_->setAxisTitle("jpseudo-strip", 2);
00643 
00644     }
00645 
00646     if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 16) != MGPAGainsPN_.end() ) {
00647 
00648       if( meTestPulsePNG16_ ) dqmStore_->removeElement( meTestPulsePNG16_->getName() );
00649       name = "EBTPT PN test pulse quality G16 summary";
00650       meTestPulsePNG16_ = dqmStore_->book2D(name, name, 90, 0., 90., 20, -10., 10.);
00651       meTestPulsePNG16_->setAxisTitle("jchannel", 1);
00652       meTestPulsePNG16_->setAxisTitle("jpseudo-strip", 2);
00653 
00654     }
00655 
00656     if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
00657 
00658       if( meTestPulseAmplG01_ ) dqmStore_->removeElement( meTestPulseAmplG01_->getName() );
00659       name = "EBTPT test pulse amplitude G01 summary";
00660       meTestPulseAmplG01_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096.*12., "s");
00661       for (int i = 0; i < 36; i++) {
00662         meTestPulseAmplG01_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00663       }
00664 
00665     }
00666 
00667     if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
00668 
00669       if( meTestPulseAmplG06_ ) dqmStore_->removeElement( meTestPulseAmplG06_->getName() );
00670       name = "EBTPT test pulse amplitude G06 summary";
00671       meTestPulseAmplG06_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096.*12., "s");
00672       for (int i = 0; i < 36; i++) {
00673         meTestPulseAmplG06_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00674       }
00675 
00676     }
00677 
00678     if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
00679 
00680       if( meTestPulseAmplG12_ ) dqmStore_->removeElement( meTestPulseAmplG12_->getName() );
00681       name = "EBTPT test pulse amplitude G12 summary";
00682       meTestPulseAmplG12_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 4096, 0., 4096.*12., "s");
00683       for (int i = 0; i < 36; i++) {
00684         meTestPulseAmplG12_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00685       }
00686 
00687     }
00688   }
00689 
00690   if(timingClient){
00691     if( meTiming_ ) dqmStore_->removeElement( meTiming_->getName() );
00692     name = "EBTMT timing quality summary";
00693     meTiming_ = dqmStore_->book2D(name, name, 72, 0., 360., 34, -85., 85.);
00694     meTiming_->setAxisTitle("jphi", 1);
00695     meTiming_->setAxisTitle("jeta", 2);
00696 
00697     if( meTimingMean1D_ ) dqmStore_->removeElement( meTimingMean1D_->getName() );
00698     name = "EBTMT timing mean 1D summary";
00699     meTimingMean1D_ = dqmStore_->book1D(name, name, 100, -25., 25.);
00700     meTimingMean1D_->setAxisTitle("mean (ns)", 1);
00701 
00702     if( meTimingRMS1D_ ) dqmStore_->removeElement( meTimingRMS1D_->getName() );
00703     name = "EBTMT timing rms 1D summary";
00704     meTimingRMS1D_ = dqmStore_->book1D(name, name, 100, 0.0, 10.0);
00705     meTimingRMS1D_->setAxisTitle("rms (ns)", 1);
00706 
00707     if ( meTimingMean_ ) dqmStore_->removeElement( meTimingMean_->getName() );
00708     name = "EBTMT timing mean";
00709     meTimingMean_ = dqmStore_->bookProfile(name, name, 36, 1, 37, -20., 20.,"");
00710     for (int i = 0; i < 36; i++) {
00711       meTimingMean_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00712     }
00713     meTimingMean_->setAxisTitle("mean (ns)", 2);
00714 
00715     if ( meTimingRMS_ ) dqmStore_->removeElement( meTimingRMS_->getName() );
00716     name = "EBTMT timing rms";
00717     meTimingRMS_ = dqmStore_->bookProfile(name, name, 36, 1, 37, 100, 0., 10.,"");
00718     for (int i = 0; i < 36; i++) {
00719       meTimingRMS_->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00720     }
00721     meTimingRMS_->setAxisTitle("rms (ns)", 2);
00722   }
00723 
00724   if(triggerTowerClient){
00725     if( meTriggerTowerEt_ ) dqmStore_->removeElement( meTriggerTowerEt_->getName() );
00726     name = "EBTTT Et trigger tower summary";
00727     meTriggerTowerEt_ = dqmStore_->book2D(name, name, 72, 0., 72., 34, -17., 17.);
00728     meTriggerTowerEt_->setAxisTitle("jphi'", 1);
00729     meTriggerTowerEt_->setAxisTitle("jeta'", 2);
00730 
00731     if( meTriggerTowerEmulError_ ) dqmStore_->removeElement( meTriggerTowerEmulError_->getName() );
00732     name = "EBTTT emulator error quality summary";
00733     meTriggerTowerEmulError_ = dqmStore_->book2D(name, name, 72, 0., 72., 34, -17., 17.);
00734     meTriggerTowerEmulError_->setAxisTitle("jphi'", 1);
00735     meTriggerTowerEmulError_->setAxisTitle("jeta'", 2);
00736 
00737     if( meTriggerTowerTiming_ ) dqmStore_->removeElement( meTriggerTowerTiming_->getName() );
00738     name = "EBTTT Trigger Primitives Timing summary";
00739     meTriggerTowerTiming_ = dqmStore_->book2D(name, name, 72, 0., 72., 34, -17., 17.);
00740     meTriggerTowerTiming_->setAxisTitle("jphi'", 1);
00741     meTriggerTowerTiming_->setAxisTitle("jeta'", 2);
00742     meTriggerTowerTiming_->setAxisTitle("TP data matching emulator", 3);
00743 
00744     if( meTriggerTowerNonSingleTiming_ ) dqmStore_->removeElement( meTriggerTowerNonSingleTiming_->getName() );
00745     name = "EBTTT Trigger Primitives Non Single Timing summary";
00746     meTriggerTowerNonSingleTiming_ = dqmStore_->book2D(name, name, 72, 0., 72., 34, -17., 17.);
00747     meTriggerTowerNonSingleTiming_->setAxisTitle("jphi'", 1);
00748     meTriggerTowerNonSingleTiming_->setAxisTitle("jeta'", 2);
00749     meTriggerTowerNonSingleTiming_->setAxisTitle("fraction", 3);
00750   }
00751 
00752   if(meIntegrity_ && mePedestalOnline_ && meTiming_ && meStatusFlags_ && meTriggerTowerEmulError_){
00753     if( meGlobalSummary_ ) dqmStore_->removeElement( meGlobalSummary_->getName() );
00754     name = "EB global summary";
00755     meGlobalSummary_ = dqmStore_->book2D(name, name, 360, 0., 360., 170, -85., 85.);
00756     meGlobalSummary_->setAxisTitle("jphi", 1);
00757     meGlobalSummary_->setAxisTitle("jeta", 2);
00758   }
00759 }
00760 
00761 void EBSummaryClient::cleanup(void) {
00762 
00763   if ( ! enableCleanup_ ) return;
00764 
00765   for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00766 
00767     int ism = superModules_[i];
00768 
00769     if ( cloneME_ ) {
00770       if ( hpot01_[ism-1] ) delete hpot01_[ism-1];
00771       if ( httt01_[ism-1] ) delete httt01_[ism-1];
00772     }
00773 
00774     hpot01_[ism-1] = 0;
00775     httt01_[ism-1] = 0;
00776 
00777   }
00778 
00779   dqmStore_->setCurrentFolder( prefixME_ + "/EBSummaryClient" );
00780 
00781   if ( meIntegrity_ ) dqmStore_->removeElement( meIntegrity_->getName() );
00782   meIntegrity_ = 0;
00783 
00784   if ( meIntegrityErr_ ) dqmStore_->removeElement( meIntegrityErr_->getName() );
00785   meIntegrityErr_ = 0;
00786 
00787   if ( meIntegrityPN_ ) dqmStore_->removeElement( meIntegrityPN_->getName() );
00788   meIntegrityPN_ = 0;
00789 
00790   if ( meOccupancy_ ) dqmStore_->removeElement( meOccupancy_->getName() );
00791   meOccupancy_ = 0;
00792 
00793   if ( meOccupancy1D_ ) dqmStore_->removeElement( meOccupancy1D_->getName() );
00794   meOccupancy1D_ = 0;
00795 
00796   if ( meOccupancyPN_ ) dqmStore_->removeElement( meOccupancyPN_->getName() );
00797   meOccupancyPN_ = 0;
00798 
00799   if ( meStatusFlags_ ) dqmStore_->removeElement( meStatusFlags_->getName() );
00800   meStatusFlags_ = 0;
00801 
00802   if ( meStatusFlagsErr_ ) dqmStore_->removeElement( meStatusFlagsErr_->getName() );
00803   meStatusFlagsErr_ = 0;
00804 
00805   if ( mePedestalOnline_ ) dqmStore_->removeElement( mePedestalOnline_->getName() );
00806   mePedestalOnline_ = 0;
00807 
00808   if ( mePedestalOnlineErr_ ) dqmStore_->removeElement( mePedestalOnlineErr_->getName() );
00809   mePedestalOnlineErr_ = 0;
00810 
00811   if ( mePedestalOnlineMean_ ) dqmStore_->removeElement( mePedestalOnlineMean_->getName() );
00812   mePedestalOnlineMean_ = 0;
00813 
00814   if ( mePedestalOnlineRMS_ ) dqmStore_->removeElement( mePedestalOnlineRMS_->getName() );
00815   mePedestalOnlineRMS_ = 0;
00816 
00817   if ( mePedestalOnlineRMSMap_ ) dqmStore_->removeElement( mePedestalOnlineRMSMap_->getName() );
00818   mePedestalOnlineRMSMap_ = 0;
00819 
00820   if ( meLaserL1_ ) dqmStore_->removeElement( meLaserL1_->getName() );
00821   meLaserL1_ = 0;
00822 
00823   if ( meLaserL1Err_ ) dqmStore_->removeElement( meLaserL1Err_->getName() );
00824   meLaserL1Err_ = 0;
00825 
00826   if ( meLaserL1Ampl_ ) dqmStore_->removeElement( meLaserL1Ampl_->getName() );
00827   meLaserL1Ampl_ = 0;
00828 
00829   if ( meLaserL1Timing_ ) dqmStore_->removeElement( meLaserL1Timing_->getName() );
00830   meLaserL1Timing_ = 0;
00831 
00832   if ( meLaserL1AmplOverPN_ ) dqmStore_->removeElement( meLaserL1AmplOverPN_->getName() );
00833   meLaserL1AmplOverPN_ = 0;
00834 
00835   if ( meLaserL1PN_ ) dqmStore_->removeElement( meLaserL1PN_->getName() );
00836   meLaserL1PN_ = 0;
00837 
00838   if ( meLaserL1PNErr_ ) dqmStore_->removeElement( meLaserL1PNErr_->getName() );
00839   meLaserL1PNErr_ = 0;
00840 
00841   if ( meLaserL2_ ) dqmStore_->removeElement( meLaserL2_->getName() );
00842   meLaserL2_ = 0;
00843 
00844   if ( meLaserL2Err_ ) dqmStore_->removeElement( meLaserL2Err_->getName() );
00845   meLaserL2Err_ = 0;
00846 
00847   if ( meLaserL2Ampl_ ) dqmStore_->removeElement( meLaserL2Ampl_->getName() );
00848   meLaserL2Ampl_ = 0;
00849 
00850   if ( meLaserL2Timing_ ) dqmStore_->removeElement( meLaserL2Timing_->getName() );
00851   meLaserL2Timing_ = 0;
00852 
00853   if ( meLaserL2AmplOverPN_ ) dqmStore_->removeElement( meLaserL2AmplOverPN_->getName() );
00854   meLaserL2AmplOverPN_ = 0;
00855 
00856   if ( meLaserL2PN_ ) dqmStore_->removeElement( meLaserL2PN_->getName() );
00857   meLaserL2PN_ = 0;
00858 
00859   if ( meLaserL2PNErr_ ) dqmStore_->removeElement( meLaserL2PNErr_->getName() );
00860   meLaserL2PNErr_ = 0;
00861 
00862   if ( meLaserL3_ ) dqmStore_->removeElement( meLaserL3_->getName() );
00863   meLaserL3_ = 0;
00864 
00865   if ( meLaserL3Err_ ) dqmStore_->removeElement( meLaserL3Err_->getName() );
00866   meLaserL3Err_ = 0;
00867 
00868   if ( meLaserL3Ampl_ ) dqmStore_->removeElement( meLaserL3Ampl_->getName() );
00869   meLaserL3Ampl_ = 0;
00870 
00871   if ( meLaserL3Timing_ ) dqmStore_->removeElement( meLaserL3Timing_->getName() );
00872   meLaserL3Timing_ = 0;
00873 
00874   if ( meLaserL3AmplOverPN_ ) dqmStore_->removeElement( meLaserL3AmplOverPN_->getName() );
00875   meLaserL3AmplOverPN_ = 0;
00876 
00877   if ( meLaserL3PN_ ) dqmStore_->removeElement( meLaserL3PN_->getName() );
00878   meLaserL3PN_ = 0;
00879 
00880   if ( meLaserL3PNErr_ ) dqmStore_->removeElement( meLaserL3PNErr_->getName() );
00881   meLaserL3PNErr_ = 0;
00882 
00883   if ( meLaserL4_ ) dqmStore_->removeElement( meLaserL4_->getName() );
00884   meLaserL4_ = 0;
00885 
00886   if ( meLaserL4Err_ ) dqmStore_->removeElement( meLaserL4Err_->getName() );
00887   meLaserL4Err_ = 0;
00888 
00889   if ( meLaserL4Ampl_ ) dqmStore_->removeElement( meLaserL4Ampl_->getName() );
00890   meLaserL4Ampl_ = 0;
00891 
00892   if ( meLaserL4Timing_ ) dqmStore_->removeElement( meLaserL4Timing_->getName() );
00893   meLaserL4Timing_ = 0;
00894 
00895   if ( meLaserL4AmplOverPN_ ) dqmStore_->removeElement( meLaserL4AmplOverPN_->getName() );
00896   meLaserL4AmplOverPN_ = 0;
00897 
00898   if ( meLaserL4PN_ ) dqmStore_->removeElement( meLaserL4PN_->getName() );
00899   meLaserL4PN_ = 0;
00900 
00901   if ( meLaserL4PNErr_ ) dqmStore_->removeElement( meLaserL4PNErr_->getName() );
00902   meLaserL4PNErr_ = 0;
00903 
00904   if ( mePedestalG01_ ) dqmStore_->removeElement( mePedestalG01_->getName() );
00905   mePedestalG01_ = 0;
00906 
00907   if ( mePedestalG06_ ) dqmStore_->removeElement( mePedestalG06_->getName() );
00908   mePedestalG06_ = 0;
00909 
00910   if ( mePedestalG12_ ) dqmStore_->removeElement( mePedestalG12_->getName() );
00911   mePedestalG12_ = 0;
00912 
00913   if ( meTestPulseG01_ ) dqmStore_->removeElement( meTestPulseG01_->getName() );
00914   meTestPulseG01_ = 0;
00915 
00916   if ( meTestPulseG06_ ) dqmStore_->removeElement( meTestPulseG06_->getName() );
00917   meTestPulseG06_ = 0;
00918 
00919   if ( meTestPulseG12_ ) dqmStore_->removeElement( meTestPulseG12_->getName() );
00920   meTestPulseG12_ = 0;
00921 
00922   if ( meTestPulseG01_ ) dqmStore_->removeElement( meTestPulseG01_->getName() );
00923   meTestPulseG01_ = 0;
00924 
00925   if ( meTestPulseAmplG01_ ) dqmStore_->removeElement( meTestPulseAmplG01_->getName() );
00926   meTestPulseAmplG01_ = 0;
00927 
00928   if ( meTestPulseAmplG06_ ) dqmStore_->removeElement( meTestPulseAmplG06_->getName() );
00929   meTestPulseAmplG06_ = 0;
00930 
00931   if ( meTestPulseAmplG12_ ) dqmStore_->removeElement( meTestPulseAmplG12_->getName() );
00932   meTestPulseAmplG12_ = 0;
00933 
00934   if ( meRecHitEnergy_ ) dqmStore_->removeElement( meRecHitEnergy_->getName() );
00935   meRecHitEnergy_ = 0;
00936 
00937   if ( meTiming_ ) dqmStore_->removeElement( meTiming_->getName() );
00938   meTiming_ = 0;
00939 
00940   if ( meTimingMean1D_ ) dqmStore_->removeElement( meTimingMean1D_->getName() );
00941   meTimingMean1D_ = 0;
00942 
00943   if ( meTimingRMS1D_ ) dqmStore_->removeElement( meTimingRMS1D_->getName() );
00944   meTimingRMS1D_ = 0;
00945 
00946   if ( meTimingMean_ ) dqmStore_->removeElement( meTimingMean_->getName() );
00947   meTimingMean_ = 0;
00948 
00949   if ( meTimingRMS_ ) dqmStore_->removeElement( meTimingRMS_->getName() );
00950   meTimingRMS_ = 0;
00951 
00952   if ( meTriggerTowerEt_ ) dqmStore_->removeElement( meTriggerTowerEt_->getName() );
00953   meTriggerTowerEt_ = 0;
00954 
00955   if ( meTriggerTowerEmulError_ ) dqmStore_->removeElement( meTriggerTowerEmulError_->getName() );
00956   meTriggerTowerEmulError_ = 0;
00957 
00958   if ( meTriggerTowerTiming_ ) dqmStore_->removeElement( meTriggerTowerTiming_->getName() );
00959   meTriggerTowerTiming_ = 0;
00960 
00961   if ( meTriggerTowerNonSingleTiming_ ) dqmStore_->removeElement( meTriggerTowerNonSingleTiming_->getName() );
00962   meTriggerTowerNonSingleTiming_ = 0;
00963 
00964   if ( meGlobalSummary_ ) dqmStore_->removeElement( meGlobalSummary_->getName() );
00965   meGlobalSummary_ = 0;
00966 
00967 }
00968 
00969 #ifdef WITH_ECAL_COND_DB
00970 bool EBSummaryClient::writeDb(EcalCondDBInterface* econn, RunIOV* runiov, MonRunIOV* moniov, bool& status) {
00971 
00972   status = true;
00973 
00974   return true;
00975 
00976 }
00977 #endif
00978 
00979 void EBSummaryClient::analyze(void) {
00980 
00981   ievt_++;
00982   jevt_++;
00983   if ( ievt_ % 10 == 0 ) {
00984     if ( debug_ ) std::cout << "EBSummaryClient: ievt/jevt = " << ievt_ << "/" << jevt_ << std::endl;
00985   }
00986 
00987   uint32_t chWarnBit = 1 << EcalDQMStatusHelper::PHYSICS_BAD_CHANNEL_WARNING;
00988 
00989   for ( int iex = 1; iex <= 170; iex++ ) {
00990     for ( int ipx = 1; ipx <= 360; ipx++ ) {
00991 
00992       if ( meIntegrity_ ) meIntegrity_->setBinContent( ipx, iex, 6. );
00993       if ( meOccupancy_ ) meOccupancy_->setBinContent( ipx, iex, 0. );
00994       if ( meStatusFlags_ ) meStatusFlags_->setBinContent( ipx, iex, 6. );
00995       if ( mePedestalOnline_ ) mePedestalOnline_->setBinContent( ipx, iex, 6. );
00996       if ( mePedestalOnlineRMSMap_ ) mePedestalOnlineRMSMap_->setBinContent( ipx, iex, -1.);
00997       if ( meLaserL1_ ) meLaserL1_->setBinContent( ipx, iex, 6. );
00998       if ( meLaserL2_ ) meLaserL2_->setBinContent( ipx, iex, 6. );
00999       if ( meLaserL3_ ) meLaserL3_->setBinContent( ipx, iex, 6. );
01000       if ( meLaserL4_ ) meLaserL4_->setBinContent( ipx, iex, 6. );
01001       if ( mePedestalG01_ ) mePedestalG01_->setBinContent( ipx, iex, 6. );
01002       if ( mePedestalG06_ ) mePedestalG06_->setBinContent( ipx, iex, 6. );
01003       if ( mePedestalG12_ ) mePedestalG12_->setBinContent( ipx, iex, 6. );
01004       if ( meTestPulseG01_ ) meTestPulseG01_->setBinContent( ipx, iex, 6. );
01005       if ( meTestPulseG06_ ) meTestPulseG06_->setBinContent( ipx, iex, 6. );
01006       if ( meTestPulseG12_ ) meTestPulseG12_->setBinContent( ipx, iex, 6. );
01007 
01008       if ( meRecHitEnergy_ ) meRecHitEnergy_->setBinContent( ipx, iex, 0. );
01009 
01010       if(meIntegrity_ && mePedestalOnline_ && meTiming_ && meStatusFlags_ && meTriggerTowerEmulError_ && meGlobalSummary_ ) meGlobalSummary_->setBinContent( ipx, iex, 6. );
01011 
01012     }
01013   }
01014 
01015   for ( int iex = 1; iex <= 20; iex++ ) {
01016     for ( int ipx = 1; ipx <= 90; ipx++ ) {
01017 
01018       if ( meIntegrityPN_ ) meIntegrityPN_->setBinContent( ipx, iex, 6. );
01019       if ( meOccupancyPN_ ) meOccupancyPN_->setBinContent( ipx, iex, 0. );
01020       if ( meLaserL1PN_ ) meLaserL1PN_->setBinContent( ipx, iex, 6. );
01021       if ( meLaserL2PN_ ) meLaserL2PN_->setBinContent( ipx, iex, 6. );
01022       if ( meLaserL3PN_ ) meLaserL3PN_->setBinContent( ipx, iex, 6. );
01023       if ( meLaserL4PN_ ) meLaserL4PN_->setBinContent( ipx, iex, 6. );
01024       if ( mePedestalPNG01_ ) mePedestalPNG01_->setBinContent( ipx, iex, 6. );
01025       if ( mePedestalPNG16_ ) mePedestalPNG16_->setBinContent( ipx, iex, 6. );
01026       if ( meTestPulsePNG01_ ) meTestPulsePNG01_->setBinContent( ipx, iex, 6. );
01027       if ( meTestPulsePNG16_ ) meTestPulsePNG16_->setBinContent( ipx, iex, 6. );
01028 
01029     }
01030   }
01031 
01032   for ( int iex = 1; iex <= 34; iex++ ) {
01033     for ( int ipx = 1; ipx <= 72; ipx++ ) {
01034       if ( meTriggerTowerEt_ ) meTriggerTowerEt_->setBinContent( ipx, iex, 0. );
01035       if ( meTriggerTowerEmulError_ ) meTriggerTowerEmulError_->setBinContent( ipx, iex, 6. );
01036       if ( meTriggerTowerTiming_ ) meTriggerTowerTiming_->setBinContent( ipx, iex, 0. );
01037       if ( meTriggerTowerNonSingleTiming_ ) meTriggerTowerNonSingleTiming_->setBinContent( ipx, iex, -1. );
01038       if ( meTiming_ ) meTiming_->setBinContent( ipx, iex, 6. );
01039     }
01040   }
01041 
01042   if ( meIntegrity_ ) meIntegrity_->setEntries( 0 );
01043   if ( meIntegrityErr_ ) meIntegrityErr_->Reset();
01044   if ( meIntegrityPN_ ) meIntegrityPN_->setEntries( 0 );
01045   if ( meOccupancy_ ) meOccupancy_->setEntries( 0 );
01046   if ( meOccupancy1D_ ) meOccupancy1D_->Reset();
01047   if ( meOccupancyPN_ ) meOccupancyPN_->setEntries( 0 );
01048   if ( meStatusFlags_ ) meStatusFlags_->setEntries( 0 );
01049   if ( meStatusFlagsErr_ ) meStatusFlagsErr_->Reset();
01050   if ( mePedestalOnline_ ) mePedestalOnline_->setEntries( 0 );
01051   if ( mePedestalOnlineErr_ ) mePedestalOnlineErr_->Reset();
01052   if ( mePedestalOnlineMean_ ) mePedestalOnlineMean_->Reset();
01053   if ( mePedestalOnlineRMS_ ) mePedestalOnlineRMS_->Reset();
01054   if ( mePedestalOnlineRMSMap_ ) mePedestalOnlineRMSMap_->Reset();
01055 
01056   if ( meLaserL1_ ) meLaserL1_->setEntries( 0 );
01057   if ( meLaserL1Err_ ) meLaserL1Err_->Reset();
01058   if ( meLaserL1Ampl_ ) meLaserL1Ampl_->Reset();
01059   if ( meLaserL1Timing_ ) meLaserL1Timing_->Reset();
01060   if ( meLaserL1AmplOverPN_ ) meLaserL1AmplOverPN_->Reset();
01061   if ( meLaserL1PN_ ) meLaserL1PN_->setEntries( 0 );
01062   if ( meLaserL1PNErr_ ) meLaserL1PNErr_->Reset();
01063 
01064   if ( meLaserL2_ ) meLaserL2_->setEntries( 0 );
01065   if ( meLaserL2Err_ ) meLaserL2Err_->Reset();
01066   if ( meLaserL2Ampl_ ) meLaserL2Ampl_->Reset();
01067   if ( meLaserL2Timing_ ) meLaserL2Timing_->Reset();
01068   if ( meLaserL2AmplOverPN_ ) meLaserL2AmplOverPN_->Reset();
01069   if ( meLaserL2PN_ ) meLaserL2PN_->setEntries( 0 );
01070   if ( meLaserL2PNErr_ ) meLaserL2PNErr_->Reset();
01071 
01072   if ( meLaserL3_ ) meLaserL3_->setEntries( 0 );
01073   if ( meLaserL3Err_ ) meLaserL3Err_->Reset();
01074   if ( meLaserL3Ampl_ ) meLaserL3Ampl_->Reset();
01075   if ( meLaserL3Timing_ ) meLaserL3Timing_->Reset();
01076   if ( meLaserL3AmplOverPN_ ) meLaserL3AmplOverPN_->Reset();
01077   if ( meLaserL3PN_ ) meLaserL3PN_->setEntries( 0 );
01078   if ( meLaserL3PNErr_ ) meLaserL3PNErr_->Reset();
01079 
01080   if ( meLaserL4_ ) meLaserL4_->setEntries( 0 );
01081   if ( meLaserL4Err_ ) meLaserL4Err_->Reset();
01082   if ( meLaserL4Ampl_ ) meLaserL4Ampl_->Reset();
01083   if ( meLaserL4Timing_ ) meLaserL4Timing_->Reset();
01084   if ( meLaserL4AmplOverPN_ ) meLaserL4AmplOverPN_->Reset();
01085   if ( meLaserL4PN_ ) meLaserL4PN_->setEntries( 0 );
01086   if ( meLaserL4PNErr_ ) meLaserL4PNErr_->Reset();
01087 
01088   if ( mePedestalG01_ ) mePedestalG01_->setEntries( 0 );
01089   if ( mePedestalG06_ ) mePedestalG06_->setEntries( 0 );
01090   if ( mePedestalG12_ ) mePedestalG12_->setEntries( 0 );
01091   if ( mePedestalPNG01_ ) mePedestalPNG01_->setEntries( 0 );
01092   if ( mePedestalPNG16_ ) mePedestalPNG16_->setEntries( 0 );
01093   if ( meTestPulseG01_ ) meTestPulseG01_->setEntries( 0 );
01094   if ( meTestPulseG06_ ) meTestPulseG06_->setEntries( 0 );
01095   if ( meTestPulseG12_ ) meTestPulseG12_->setEntries( 0 );
01096   if ( meTestPulsePNG01_ ) meTestPulsePNG01_->setEntries( 0 );
01097   if ( meTestPulsePNG16_ ) meTestPulsePNG16_->setEntries( 0 );
01098   if ( meTestPulseAmplG01_ ) meTestPulseAmplG01_->Reset();
01099   if ( meTestPulseAmplG06_ ) meTestPulseAmplG06_->Reset();
01100   if ( meTestPulseAmplG12_ ) meTestPulseAmplG12_->Reset();
01101 
01102   if ( meRecHitEnergy_ ) meRecHitEnergy_->setEntries( 0 );
01103   if ( meTiming_ ) meTiming_->setEntries( 0 );
01104   if ( meTimingMean1D_ ) meTimingMean1D_->Reset();
01105   if ( meTimingRMS1D_ ) meTimingRMS1D_->Reset();
01106   if ( meTimingMean_ ) meTimingMean_->Reset();
01107   if ( meTimingRMS_ ) meTimingRMS_->Reset();
01108   if ( meTriggerTowerEt_ ) meTriggerTowerEt_->setEntries( 0 );
01109   if ( meTriggerTowerEmulError_ ) meTriggerTowerEmulError_->setEntries( 0 );
01110   if ( meTriggerTowerTiming_ ) meTriggerTowerTiming_->setEntries( 0 );
01111   if ( meTriggerTowerNonSingleTiming_ ) meTriggerTowerNonSingleTiming_->setEntries( 0 );
01112 
01113   if(meIntegrity_ && mePedestalOnline_ && meTiming_ && meStatusFlags_ && meTriggerTowerEmulError_ && meGlobalSummary_ ) meGlobalSummary_->setEntries( 0 );
01114 
01115   for ( unsigned int i=0; i<clients_.size(); i++ ) {
01116 
01117     EBIntegrityClient* ebic = dynamic_cast<EBIntegrityClient*>(clients_[i]);
01118     EBStatusFlagsClient* ebsfc = dynamic_cast<EBStatusFlagsClient*>(clients_[i]);
01119     EBPedestalOnlineClient* ebpoc = dynamic_cast<EBPedestalOnlineClient*>(clients_[i]);
01120 
01121     EBLaserClient* eblc = dynamic_cast<EBLaserClient*>(clients_[i]);
01122     EBPedestalClient* ebpc = dynamic_cast<EBPedestalClient*>(clients_[i]);
01123     EBTestPulseClient* ebtpc = dynamic_cast<EBTestPulseClient*>(clients_[i]);
01124 
01125     EBTimingClient* ebtmc = dynamic_cast<EBTimingClient*>(clients_[i]);
01126     EBTriggerTowerClient* ebtttc = dynamic_cast<EBTriggerTowerClient*>(clients_[i]);
01127 
01128     MonitorElement *me;
01129     MonitorElement *me_01, *me_02, *me_03;
01130     MonitorElement *me_04, *me_05;
01131     //    MonitorElement *me_f[6], *me_fg[2];
01132     TH2F* h2;
01133     TH2F* h3;
01134 
01135     for ( unsigned int i=0; i<superModules_.size(); i++ ) {
01136 
01137       int ism = superModules_[i];
01138 
01139       me = dqmStore_->get( prefixME_ + "/EBOccupancyTask/EBOT rec hit energy " + Numbers::sEB(ism) );
01140       hot01_[ism-1] = UtilsClient::getHisto( me, cloneME_, hot01_[ism-1] );
01141 
01142       me = dqmStore_->get( prefixME_ + "/EBPedestalOnlineTask/Gain12/EBPOT pedestal " + Numbers::sEB(ism) + " G12" );
01143       hpot01_[ism-1] = UtilsClient::getHisto( me, cloneME_, hpot01_[ism-1] );
01144 
01145       me = dqmStore_->get( prefixME_ + "/EBTriggerTowerTask/EBTTT Et map Real Digis " + Numbers::sEB(ism) );
01146       httt01_[ism-1] = UtilsClient::getHisto( me, cloneME_, httt01_[ism-1] );
01147 
01148       me = dqmStore_->get( prefixME_ + "/EBTimingTask/EBTMT timing " + Numbers::sEB(ism) );
01149       htmt01_[ism-1] = UtilsClient::getHisto( me, cloneME_, htmt01_[ism-1] );
01150 
01151       me = dqmStore_->get( prefixME_ + "/EcalInfo/EBMM DCC" );
01152       norm01_ = UtilsClient::getHisto( me, cloneME_, norm01_ );
01153 
01154       me = dqmStore_->get( prefixME_ + "/EBRawDataTask/EBRDT L1A FE errors" );
01155       synch01_ = UtilsClient::getHisto( me, cloneME_, synch01_ );
01156 
01157       for ( int ie = 1; ie <= 85; ie++ ) {
01158         for ( int ip = 1; ip <= 20; ip++ ) {
01159 
01160           if ( ebic ) {
01161 
01162             me = ebic->meg01_[ism-1];
01163 
01164             if ( me ) {
01165 
01166               float xval = me->getBinContent( ie, ip );
01167 
01168               int iex;
01169               int ipx;
01170 
01171               if ( ism <= 18 ) {
01172                 iex = 1+(85-ie);
01173                 ipx = ip+20*(ism-1);
01174               } else {
01175                 iex = 85+ie;
01176                 ipx = 1+(20-ip)+20*(ism-19);
01177               }
01178 
01179               if(meIntegrity_) meIntegrity_->setBinContent( ipx, iex, xval );
01180               if( xval == 0 && meIntegrityErr_) meIntegrityErr_->Fill( ism );
01181 
01182             }
01183 
01184             h2 = ebic->h_[ism-1];
01185 
01186             if ( h2 ) {
01187 
01188               float xval = h2->GetBinContent( ie, ip );
01189 
01190               int iex;
01191               int ipx;
01192 
01193               if ( ism <= 18 ) {
01194                 iex = 1+(85-ie);
01195                 ipx = ip+20*(ism-1);
01196               } else {
01197                 iex = 85+ie;
01198                 ipx = 1+(20-ip)+20*(ism-19);
01199               }
01200 
01201               if(meOccupancy_) meOccupancy_->setBinContent( ipx, iex, xval );
01202               if ( xval != 0 && meOccupancy1D_) meOccupancy1D_->Fill( ism, xval );
01203 
01204             }
01205 
01206           }
01207 
01208           if ( ebpoc ) {
01209 
01210             me = ebpoc->meg03_[ism-1];
01211 
01212             if ( me ) {
01213 
01214               int iex;
01215               int ipx;
01216 
01217               if ( ism <= 18 ) {
01218                 iex = 1+(85-ie);
01219                 ipx = ip+20*(ism-1);
01220               } else {
01221                 iex = 85+ie;
01222                 ipx = 1+(20-ip)+20*(ism-19);
01223               }
01224 
01225               float xval = me->getBinContent( ie, ip );
01226 
01227               mePedestalOnline_->setBinContent( ipx, iex, xval );
01228               if ( xval == 0 ) mePedestalOnlineErr_->Fill( ism );
01229 
01230             }
01231 
01232             float num01, mean01, rms01;
01233             bool update01 = UtilsClient::getBinStatistics(hpot01_[ism-1], ie, ip, num01, mean01, rms01);
01234 
01235             if ( update01 ) {
01236 
01237               int iex;
01238               int ipx;
01239 
01240               if ( ism <= 18 ) {
01241                 iex = 1+(85-ie);
01242                 ipx = ip+20*(ism-1);
01243               } else {
01244                 iex = 85+ie;
01245                 ipx = 1+(20-ip)+20*(ism-19);
01246               }
01247 
01248               mePedestalOnlineRMSMap_->setBinContent( ipx, iex, rms01 );
01249 
01250               mePedestalOnlineRMS_->Fill( ism, rms01 );
01251 
01252               mePedestalOnlineMean_->Fill( ism, mean01 );
01253 
01254             }
01255 
01256           }
01257 
01258           if ( eblc ) {
01259 
01260             int iex;
01261             int ipx;
01262 
01263             if ( ism <= 18 ) {
01264               iex = 1+(85-ie);
01265               ipx = ip+20*(ism-1);
01266             } else {
01267               iex = 85+ie;
01268               ipx = 1+(20-ip)+20*(ism-19);
01269             }
01270 
01271             if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 1) != laserWavelengths_.end() ) {
01272 
01273               me = eblc->meg01_[ism-1];
01274 
01275               if ( me ) {
01276 
01277                 float xval = me->getBinContent( ie, ip );
01278 
01279                 if ( me->getEntries() != 0 ) {
01280                   meLaserL1_->setBinContent( ipx, iex, xval );
01281                   if ( xval == 0 ) meLaserL1Err_->Fill( ism );
01282                 }
01283 
01284               }
01285 
01286             }
01287 
01288             if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 2) != laserWavelengths_.end() ) {
01289 
01290               me = eblc->meg02_[ism-1];
01291 
01292               if ( me ) {
01293 
01294                 float xval = me->getBinContent( ie, ip );
01295 
01296                 if ( me->getEntries() != 0 ) {
01297                   meLaserL2_->setBinContent( ipx, iex, xval );
01298                   if ( xval == 0 ) meLaserL2Err_->Fill( ism );
01299                 }
01300 
01301               }
01302 
01303             }
01304 
01305             if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 3) != laserWavelengths_.end() ) {
01306 
01307               me = eblc->meg03_[ism-1];
01308 
01309               if ( me ) {
01310 
01311                 float xval = me->getBinContent( ie, ip );
01312 
01313                 if ( me->getEntries() != 0 ) {
01314                   meLaserL3_->setBinContent( ipx, iex, xval );
01315                   if ( xval == 0 ) meLaserL3Err_->Fill( ism );
01316                 }
01317 
01318               }
01319 
01320             }
01321 
01322             if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 4) != laserWavelengths_.end() ) {
01323 
01324               me = eblc->meg04_[ism-1];
01325 
01326               if ( me ) {
01327 
01328                 float xval = me->getBinContent( ie, ip );
01329 
01330                 if ( me->getEntries() != 0 ) {
01331                   meLaserL4_->setBinContent( ipx, iex, xval );
01332                   if ( xval == 0 ) meLaserL4Err_->Fill( ism );
01333                 }
01334 
01335               }
01336 
01337             }
01338 
01339           }
01340 
01341           if ( ebpc ) {
01342 
01343             me_01 = ebpc->meg01_[ism-1];
01344             me_02 = ebpc->meg02_[ism-1];
01345             me_03 = ebpc->meg03_[ism-1];
01346 
01347             int iex;
01348             int ipx;
01349 
01350             if ( ism <= 18 ) {
01351               iex = 1+(85-ie);
01352               ipx = ip+20*(ism-1);
01353             } else {
01354               iex = 85+ie;
01355               ipx = 1+(20-ip)+20*(ism-19);
01356             }
01357 
01358             if ( me_01 ) {
01359               float val_01=me_01->getBinContent(ie,ip);
01360               if ( me_01->getEntries() != 0 ) mePedestalG01_->setBinContent( ipx, iex, val_01 );
01361             }
01362             if ( me_02 ) {
01363               float val_02=me_02->getBinContent(ie,ip);
01364               if ( me_02->getEntries() != 0 ) mePedestalG06_->setBinContent( ipx, iex, val_02 );
01365             }
01366             if ( me_03 ) {
01367               float val_03=me_03->getBinContent(ie,ip);
01368               if ( me_03->getEntries() != 0 ) mePedestalG12_->setBinContent( ipx, iex, val_03 );
01369             }
01370 
01371           }
01372 
01373           if ( ebtpc ) {
01374 
01375             me_01 = ebtpc->meg01_[ism-1];
01376             me_02 = ebtpc->meg02_[ism-1];
01377             me_03 = ebtpc->meg03_[ism-1];
01378 
01379             int iex;
01380             int ipx;
01381 
01382             if ( ism <= 18 ) {
01383               iex = 1+(85-ie);
01384               ipx = ip+20*(ism-1);
01385             } else {
01386               iex = 85+ie;
01387               ipx = 1+(20-ip)+20*(ism-19);
01388             }
01389 
01390             if ( me_01 ) {
01391 
01392               float val_01=me_01->getBinContent(ie,ip);
01393 
01394               if ( me_01->getEntries() != 0 ) meTestPulseG01_->setBinContent( ipx, iex, val_01 );
01395 
01396             }
01397             if ( me_02 ) {
01398 
01399               float val_02=me_02->getBinContent(ie,ip);
01400 
01401               if ( me_02->getEntries() != 0 ) meTestPulseG06_->setBinContent( ipx, iex, val_02 );
01402 
01403             }
01404             if ( me_03 ) {
01405 
01406               float val_03=me_03->getBinContent(ie,ip);
01407 
01408               if ( me_03->getEntries() != 0 ) meTestPulseG12_->setBinContent( ipx, iex, val_03 );
01409 
01410             }
01411 
01412 
01413           }
01414 
01415           if ( hot01_[ism-1] ) {
01416 
01417             float xval = hot01_[ism-1]->GetBinContent( ie, ip );
01418 
01419             int iex;
01420             int ipx;
01421 
01422             if ( ism <= 18 ) {
01423               iex = 1+(85-ie);
01424               ipx = ip+20*(ism-1);
01425             } else {
01426               iex = 85+ie;
01427               ipx = 1+(20-ip)+20*(ism-19);
01428             }
01429 
01430             if(meRecHitEnergy_) meRecHitEnergy_->setBinContent( ipx, iex, xval );
01431 
01432           }
01433 
01434           if ( ebtmc ) {
01435 
01436             float num02, mean02, rms02;
01437 
01438             bool update02 = UtilsClient::getBinStatistics(htmt01_[ism-1], ie, ip, num02, mean02, rms02, 3.);
01439 
01440             if ( update02 ) {
01441 
01442               mean02 -= 50.;
01443 
01444               meTimingMean1D_->Fill(mean02);
01445 
01446               meTimingRMS1D_->Fill(rms02);
01447 
01448               meTimingMean_->Fill( ism, mean02 );
01449 
01450               meTimingRMS_->Fill( ism, rms02 );
01451 
01452             }
01453 
01454           }
01455 
01456         }
01457       }
01458 
01459       for (int ie = 1; ie <= 17; ie++ ) {
01460         for (int ip = 1; ip <= 4; ip++ ) {
01461 
01462           int iex;
01463           int ipx;
01464 
01465           if ( ism <= 18 ) {
01466             iex = 1+(17-ie);
01467             ipx = ip+4*(ism-1);
01468           } else {
01469             iex = 17+ie;
01470             ipx = 1+(4-ip)+4*(ism-19);
01471           }
01472 
01473           if ( ebsfc ) {
01474 
01475             me = dqmStore_->get(prefixME_ + "/EcalInfo/EBMM DCC");
01476 
01477             float xval = 6;
01478 
01479             if ( me ) {
01480 
01481               xval = 2;
01482               if ( me->getBinContent( ism ) > 0 ) xval = 1;
01483 
01484             }
01485 
01486             me = ebsfc->meh01_[ism-1];
01487 
01488             if ( me ) {
01489 
01490               if ( me->getBinContent( ie, ip ) > 0 ) xval = 0;
01491 
01492               meStatusFlags_->setBinContent( ipx, iex, xval );
01493 
01494               if ( me->getBinError( ie, ip ) > 0 && me->getBinError( ie, ip ) < 0.1 ) UtilsClient::maskBinContent( meStatusFlags_, ipx, iex );
01495 
01496               if ( xval == 0 ) meStatusFlagsErr_->Fill( ism );
01497 
01498             }
01499 
01500           }
01501 
01502           if ( ebtttc ) {
01503 
01504             float mean01 = 0;
01505             bool hadNonZeroInterest = false;
01506 
01507             if ( httt01_[ism-1] ) {
01508 
01509               mean01 = httt01_[ism-1]->GetBinContent( ie, ip );
01510 
01511               if ( mean01 != 0. ) {
01512                 if ( meTriggerTowerEt_ ) meTriggerTowerEt_->setBinContent( ipx, iex, mean01 );
01513               }
01514 
01515             }
01516 
01517             me = ebtttc->me_o01_[ism-1];
01518 
01519             if ( me ) {
01520 
01521               float xval = me->getBinContent( ie, ip );
01522 
01523               if ( xval != 0. ) {
01524                 meTriggerTowerTiming_->setBinContent( ipx, iex, xval );
01525                 hadNonZeroInterest = true;
01526               }
01527 
01528             }
01529 
01530             me = ebtttc->me_o02_[ism-1];
01531 
01532             if ( me ) {
01533 
01534               float xval = me->getBinContent( ie, ip );
01535 
01536               if ( xval != 0. ) {
01537                 meTriggerTowerNonSingleTiming_->setBinContent( ipx, iex, xval );
01538               }
01539 
01540             }
01541 
01542             float xval = 2;
01543             if( mean01 > 0. ) {
01544 
01545               h2 = ebtttc->l01_[ism-1];
01546               h3 = ebtttc->l02_[ism-1];
01547 
01548               if ( h2 && h3 ) {
01549 
01550                 // float emulErrorVal = h2->GetBinContent( ie, ip ) + h3->GetBinContent( ie, ip );
01551                 float emulErrorVal = h2->GetBinContent( ie, ip );
01552 
01553                 if( emulErrorVal!=0 && hadNonZeroInterest ) xval = 0;
01554 
01555               }
01556 
01557               if ( xval!=0 && hadNonZeroInterest ) xval = 1;
01558 
01559             }
01560 
01561             meTriggerTowerEmulError_->setBinContent( ipx, iex, xval );
01562 
01563           }
01564 
01565           if ( ebtmc ) {
01566 
01567             if( htmt01_[ism-1] ){
01568 
01569               float ent, cont, err;
01570               float num, sum, sumw2;
01571               num = sum = sumw2 = 0.;
01572               bool mask = false;
01573 
01574               for(int ce=1; ce<=5; ce++){
01575                 for(int cp=1; cp<=5; cp++){
01576 
01577                   int scie = (ie - 1) * 5 + ce;
01578                   int scip = (ip - 1) * 5 + cp; 
01579                   int bin = htmt01_[ism-1]->GetBin( scie, scip );
01580 
01581                   // htmt01_ are booked with option "s" -> error = RMS not RMS/sqrt(N)
01582                   ent = htmt01_[ism-1]->GetBinEntries( bin );
01583                   cont = htmt01_[ism-1]->GetBinContent( bin ) - 50.;
01584                   err = htmt01_[ism-1]->GetBinError( bin );
01585 
01586                   num += ent;
01587                   sum += cont * ent;
01588                   sumw2 += (err * err + cont * cont) * ent;
01589 
01590                   if( ent > 3. && (std::abs(cont) > 2. || err > 6.) && Masks::maskChannel(ism, scie, scip, chWarnBit, EcalBarrel) ) mask = true;
01591                 }
01592               }
01593 
01594               float xval = 2.;
01595               if( num > 10. ){
01596 
01597                 float mean = sum / num;
01598                 float rms = std::sqrt( sumw2 / num - mean * mean );
01599 
01600                 if( std::abs(mean) > 2. || rms > 6. ) xval = 0.;
01601                 else xval = 1.;
01602 
01603               }
01604 
01605               meTiming_->setBinContent( ipx, iex, xval );
01606               if ( mask ) UtilsClient::maskBinContent( meTiming_, ipx, iex );
01607 
01608             }
01609 
01610           }
01611 
01612         }
01613       }
01614 
01615       // PN's summaries
01616       for( int i = 1; i <= 10; i++ ) {
01617         for( int j = 1; j <= 5; j++ ) {
01618 
01619           int ichanx;
01620           int ipseudostripx;
01621 
01622           if(ism<=18) {
01623             ichanx = i;
01624             ipseudostripx = j+5*(ism-1);
01625           } else {
01626             ichanx = i+10;
01627             ipseudostripx = j+5*(ism-19);
01628           }
01629 
01630           if ( ebic ) {
01631 
01632             me_04 = ebic->meg02_[ism-1];
01633             h2 = ebic->hmem_[ism-1];
01634 
01635             if( me_04 ) {
01636 
01637               float xval = me_04->getBinContent(i,j);
01638               if(meIntegrityPN_) meIntegrityPN_->setBinContent( ipseudostripx, ichanx, xval );
01639 
01640             }
01641 
01642             if ( h2 ) {
01643 
01644               float xval = h2->GetBinContent(i,1);
01645               if(meOccupancyPN_) meOccupancyPN_->setBinContent( ipseudostripx, ichanx, xval );
01646 
01647             }
01648 
01649           }
01650 
01651           if ( ebpc ) {
01652 
01653             me_04 = ebpc->meg04_[ism-1];
01654             me_05 = ebpc->meg05_[ism-1];
01655 
01656             if( me_04 ) {
01657               float val_04=me_04->getBinContent(i,1);
01658               mePedestalPNG01_->setBinContent( ipseudostripx, ichanx, val_04 );
01659             }
01660             if( me_05 ) {
01661               float val_05=me_05->getBinContent(i,1);
01662               mePedestalPNG16_->setBinContent( ipseudostripx, ichanx, val_05 );
01663             }
01664 
01665           }
01666 
01667           if ( ebtpc ) {
01668 
01669             me_04 = ebtpc->meg04_[ism-1];
01670             me_05 = ebtpc->meg05_[ism-1];
01671 
01672             if( me_04 ) {
01673               float val_04=me_04->getBinContent(i,1);
01674               meTestPulsePNG01_->setBinContent( ipseudostripx, ichanx, val_04 );
01675             }
01676             if( me_05 ) {
01677               float val_05=me_05->getBinContent(i,1);
01678               meTestPulsePNG16_->setBinContent( ipseudostripx, ichanx, val_05 );
01679             }
01680 
01681           }
01682 
01683           if ( eblc ) {
01684 
01685             if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 1) != laserWavelengths_.end() ) {
01686 
01687               me = eblc->meg09_[ism-1];
01688 
01689               if( me ) {
01690 
01691                 float xval = me->getBinContent(i,1);
01692 
01693                 if ( me->getEntries() != 0 && me->getEntries() != 0 ) {
01694                   meLaserL1PN_->setBinContent( ipseudostripx, ichanx, xval );
01695                   if ( xval == 0 ) meLaserL1PNErr_->Fill( ism );
01696                 }
01697 
01698               }
01699 
01700             }
01701 
01702             if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 2) != laserWavelengths_.end() ) {
01703 
01704               me = eblc->meg10_[ism-1];
01705 
01706               if( me ) {
01707 
01708                 float xval = me->getBinContent(i,1);
01709 
01710                 if ( me->getEntries() != 0 && me->getEntries() != 0 ) {
01711                   meLaserL2PN_->setBinContent( ipseudostripx, ichanx, xval );
01712                   if ( xval == 0 ) meLaserL2PNErr_->Fill( ism );
01713                 }
01714 
01715               }
01716 
01717             }
01718 
01719             if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 3) != laserWavelengths_.end() ) {
01720 
01721               me = eblc->meg11_[ism-1];
01722 
01723               if( me ) {
01724 
01725                 float xval = me->getBinContent(i,1);
01726 
01727                 if ( me->getEntries() != 0 && me->getEntries() != 0 ) {
01728                   meLaserL3PN_->setBinContent( ipseudostripx, ichanx, xval );
01729                   if ( xval == 0 ) meLaserL3PNErr_->Fill( ism );
01730                 }
01731 
01732               }
01733 
01734             }
01735 
01736             if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 4) != laserWavelengths_.end() ) {
01737 
01738               me = eblc->meg12_[ism-1];
01739 
01740               if( me ) {
01741 
01742                 float xval = me->getBinContent(i,1);
01743 
01744                 if ( me->getEntries() != 0 && me->getEntries() != 0 ) {
01745                   meLaserL4PN_->setBinContent( ipseudostripx, ichanx, xval );
01746                   if ( xval == 0 ) meLaserL4PNErr_->Fill( ism );
01747                 }
01748 
01749               }
01750 
01751             }
01752 
01753           }
01754 
01755         }
01756       }
01757 
01758       for(int chan=0; chan<1700; chan++) {
01759 
01760         int ie = (chan)/20 + 1;
01761         int ip = (chan)%20 + 1;
01762 
01763         // laser 1D summaries
01764         if ( eblc ) {
01765 
01766           if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 1) != laserWavelengths_.end() ) {
01767 
01768             MonitorElement *meg = eblc->meg01_[ism-1];
01769 
01770             float xval = 2;
01771             if ( meg ) xval = meg->getBinContent( ie, ip );
01772 
01773             // exclude channels without laser data (yellow in the quality map)
01774             if( xval != 2 && xval != 5 ) {
01775 
01776               MonitorElement* mea01 = eblc->mea01_[ism-1];
01777               MonitorElement* met01 = eblc->met01_[ism-1];
01778               MonitorElement* meaopn01 = eblc->meaopn01_[ism-1];
01779 
01780               if( mea01 && met01 && meaopn01 ) {
01781                 meLaserL1Ampl_->Fill( ism, mea01->getBinContent( chan+1 ) );
01782                 if( met01->getBinContent( chan+1 ) > 0. ) meLaserL1Timing_->Fill( ism, met01->getBinContent( chan+1 ) );
01783                 meLaserL1AmplOverPN_->Fill( ism, meaopn01->getBinContent( chan+1 ) );
01784               }
01785 
01786             }
01787 
01788           }
01789 
01790           if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 2) != laserWavelengths_.end() ) {
01791 
01792             MonitorElement *meg = eblc->meg02_[ism-1];
01793 
01794             float xval = 2;
01795             if ( meg ) xval = meg->getBinContent( ie, ip );
01796 
01797             // exclude channels without laser data (yellow in the quality map)
01798             if( xval != 2 && xval != 5 ) {
01799 
01800               MonitorElement* mea02 = eblc->mea02_[ism-1];
01801               MonitorElement* met02 = eblc->met02_[ism-1];
01802               MonitorElement* meaopn02 = eblc->meaopn02_[ism-1];
01803 
01804               if( mea02 && met02 && meaopn02 ) {
01805                 meLaserL2Ampl_->Fill( ism, mea02->getBinContent( chan+1 ) );
01806                 if( met02->getBinContent( chan+1 ) > 0. ) meLaserL2Timing_->Fill( ism, met02->getBinContent( chan+1 ) );
01807                 meLaserL2AmplOverPN_->Fill( ism, meaopn02->getBinContent( chan+1 ) );
01808               }
01809 
01810             }
01811 
01812           }
01813 
01814           if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 3) != laserWavelengths_.end() ) {
01815 
01816             MonitorElement *meg = eblc->meg03_[ism-1];
01817 
01818             float xval = 2;
01819             if ( meg ) xval = meg->getBinContent( ie, ip );
01820 
01821             // exclude channels without laser data (yellow in the quality map)
01822             if( xval != 2 && xval != 5 ) {
01823 
01824               MonitorElement* mea03 = eblc->mea03_[ism-1];
01825               MonitorElement* met03 = eblc->met03_[ism-1];
01826               MonitorElement* meaopn03 = eblc->meaopn03_[ism-1];
01827 
01828               if( mea03 && met03 && meaopn03 ) {
01829                 meLaserL3Ampl_->Fill( ism, mea03->getBinContent( chan+1 ) );
01830                 if( met03->getBinContent( chan+1 ) > 0. ) meLaserL3Timing_->Fill( ism, met03->getBinContent( chan+1 ) );
01831                 meLaserL3AmplOverPN_->Fill( ism, meaopn03->getBinContent( chan+1 ) );
01832               }
01833 
01834             }
01835 
01836           }
01837 
01838           if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 4) != laserWavelengths_.end() ) {
01839 
01840             MonitorElement *meg = eblc->meg04_[ism-1];
01841 
01842             float xval = 2;
01843             if ( meg ) xval = meg->getBinContent( ie, ip );
01844 
01845             // exclude channels without laser data (yellow in the quality map)
01846             if( xval != 2 && xval != 5 ) {
01847 
01848               MonitorElement* mea04 = eblc->mea04_[ism-1];
01849               MonitorElement* met04 = eblc->met04_[ism-1];
01850               MonitorElement* meaopn04 = eblc->meaopn04_[ism-1];
01851 
01852               if( mea04 && met04 && meaopn04 ) {
01853                 meLaserL4Ampl_->Fill( ism, mea04->getBinContent( chan+1 ) );
01854                 if( met04->getBinContent( chan+1 ) > 0. ) meLaserL4Timing_->Fill( ism, met04->getBinContent( chan+1 ) );
01855                 meLaserL4AmplOverPN_->Fill( ism, meaopn04->getBinContent( chan+1 ) );
01856               }
01857 
01858             }
01859 
01860           }
01861 
01862         }
01863 
01864         if ( ebtpc ) {
01865 
01866           MonitorElement *meg01 = ebtpc->meg01_[ism-1];
01867           MonitorElement *meg02 = ebtpc->meg02_[ism-1];
01868           MonitorElement *meg03 = ebtpc->meg03_[ism-1];
01869 
01870           if ( meg01 ) {
01871 
01872             float xval01 = meg01->getBinContent(ie,ip);
01873 
01874             if ( xval01 != 2 && xval01 != 5 ) {
01875 
01876               me = ebtpc->mea01_[ism-1];
01877 
01878               if ( me ) {
01879 
01880                 meTestPulseAmplG01_->Fill( ism, me->getBinContent( chan+1 ) );
01881 
01882               }
01883 
01884             }
01885 
01886           }
01887 
01888           if ( meg02 ) {
01889 
01890             float xval02 = meg02->getBinContent(ie,ip);
01891 
01892             if ( xval02 != 2 && xval02 != 5 ) {
01893 
01894               me = ebtpc->mea02_[ism-1];
01895 
01896               if ( me ) {
01897 
01898                 meTestPulseAmplG06_->Fill( ism, me->getBinContent( chan+1 ) );
01899 
01900               }
01901 
01902             }
01903 
01904           }
01905 
01906           if ( meg03 ) {
01907 
01908             float xval03 = meg03->getBinContent(ie,ip);
01909 
01910             if ( xval03 != 2 && xval03 != 5 ) {
01911 
01912               me = ebtpc->mea03_[ism-1];
01913 
01914               if ( me ) {
01915 
01916                 meTestPulseAmplG12_->Fill( ism, me->getBinContent( chan+1 ) );
01917 
01918               }
01919 
01920             }
01921 
01922           }
01923 
01924         }
01925 
01926       }  // loop on channels
01927 
01928     } // loop on SM
01929 
01930   } // loop on clients
01931 
01932   // The global-summary
01933 
01934   int nGlobalErrors = 0;
01935   int nGlobalErrorsEB[36];
01936   int nValidChannels = 0;
01937   int nValidChannelsEB[36];
01938 
01939   for (int i = 0; i < 36; i++) {
01940     nGlobalErrorsEB[i] = 0;
01941     nValidChannelsEB[i] = 0;
01942   }
01943 
01944   for ( int iex = 1; iex <= 170; iex++ ) {
01945     for ( int ipx = 1; ipx <= 360; ipx++ ) {
01946 
01947       if(meIntegrity_ && mePedestalOnline_ && meTiming_ && meStatusFlags_ && meTriggerTowerEmulError_ && meGlobalSummary_) {
01948 
01949         int ism = (ipx-1)/20 + 1 ;
01950         if ( iex>85 ) ism+=18;
01951 
01952         int iet = (iex-1)/5 + 1;
01953         int ipt = (ipx-1)/5 + 1;
01954 
01955         float xval = 6;
01956         float val_in = meIntegrity_->getBinContent(ipx,iex);
01957         float val_po = mePedestalOnline_->getBinContent(ipx,iex);
01958         float val_tm = meTiming_->getBinContent(ipt,iet);
01959         float val_sf = meStatusFlags_->getBinContent((ipx-1)/5+1,(iex-1)/5+1);
01960         // float val_ee = meTriggerTowerEmulError_->getBinContent((ipx-1)/5+1,(iex-1)/5+1); // removed from the global summary temporarily
01961         float val_ee = 1;
01962 
01963         // combine all the available wavelenghts in unique laser status
01964         // for each laser turn dark color and yellow into bright green
01965         float val_ls_1=2, val_ls_2=2, val_ls_3=2, val_ls_4=2;
01966         if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 1) != laserWavelengths_.end() ) {
01967           if ( meLaserL1_ ) val_ls_1 = meLaserL1_->getBinContent(ipx,iex);
01968           if(val_ls_1==2 || val_ls_1==3 || val_ls_1==4 || val_ls_1==5) val_ls_1=1;
01969         }
01970         if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 2) != laserWavelengths_.end() ) {
01971           if ( meLaserL2_ ) val_ls_2 = meLaserL2_->getBinContent(ipx,iex);
01972           if(val_ls_2==2 || val_ls_2==3 || val_ls_2==4 || val_ls_2==5) val_ls_2=1;
01973         }
01974         if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 3) != laserWavelengths_.end() ) {
01975           if ( meLaserL3_ ) val_ls_3 = meLaserL3_->getBinContent(ipx,iex);
01976           if(val_ls_3==2 || val_ls_3==3 || val_ls_3==4 || val_ls_3==5) val_ls_3=1;
01977         }
01978         if ( find(laserWavelengths_.begin(), laserWavelengths_.end(), 4) != laserWavelengths_.end() ) {
01979           if ( meLaserL4_ ) val_ls_4 = meLaserL4_->getBinContent(ipx,iex);
01980           if(val_ls_4==2 || val_ls_4==3 || val_ls_4==4 || val_ls_4==5) val_ls_4=1;
01981         }
01982 
01983         float val_ls = 1;
01984         if (val_ls_1 == 0 || val_ls_2==0 || val_ls_3==0 || val_ls_4==0) val_ls=0;
01985 
01986         // DO NOT CONSIDER CALIBRATION EVENTS IN THE REPORT SUMMARY UNTIL LHC COLLISIONS
01987         val_ls = 1;
01988 
01989         // turn each dark color (masked channel) to bright green
01990         // for laser & timing & trigger turn also yellow into bright green
01991         // for pedestal online too because is not computed in calibration events
01992 
01993         //  0/3 = red/dark red
01994         //  1/4 = green/dark green
01995         //  2/5 = yellow/dark yellow
01996         //  6   = unknown
01997 
01998         if(             val_in==3 || val_in==4 || val_in==5) val_in=1;
01999         if(val_po==2 || val_po==3 || val_po==4 || val_po==5) val_po=1;
02000         if(val_tm==2 || val_tm==3 || val_tm==4 || val_tm==5) val_tm=1;
02001         if(             val_sf==3 || val_sf==4 || val_sf==5) val_sf=1;
02002         if(val_ee==2 || val_ee==3 || val_ee==4 || val_ee==5) val_ee=1;
02003 
02004         if(val_in==6) xval=6;
02005         else if(val_in==0) xval=0;
02006         else if(val_po==0 || val_ls==0 || val_tm==0 || val_sf==0 || val_ee==0) xval=0;
02007         else if(val_po==2 || val_ls==2 || val_tm==2 || val_sf==2 || val_ee==2) xval=2;
02008         else xval=1;
02009 
02010         // if the SM is entirely not read, the masked channels
02011         // are reverted back to yellow
02012         float iEntries=0;
02013 
02014         if(norm01_ && synch01_) {
02015           float frac_synch_errors = 0.;
02016           float norm = norm01_->GetBinContent(ism);
02017           if(norm > 0) frac_synch_errors = float(synch01_->GetBinContent(ism))/float(norm);
02018           float val_sy = (frac_synch_errors <= synchErrorThreshold_);
02019           if(val_sy==0) xval=0;
02020         }
02021 
02022         std::vector<int>::iterator iter = find(superModules_.begin(), superModules_.end(), ism);
02023         if (iter != superModules_.end()) {
02024           for ( unsigned int i=0; i<clients_.size(); i++ ) {
02025             EBIntegrityClient* ebic = dynamic_cast<EBIntegrityClient*>(clients_[i]);
02026             if ( ebic ) {
02027               TH2F* h2 = ebic->h_[ism-1];
02028               if ( h2 ) {
02029                 iEntries = h2->GetEntries();
02030               }
02031             }
02032           }
02033         }
02034 
02035         if ( iEntries==0 ) {
02036           xval=2;
02037         }
02038 
02039         meGlobalSummary_->setBinContent( ipx, iex, xval );
02040 
02041         if ( xval >= 0 && xval <= 5 ) {
02042           if ( xval != 2 && xval != 5 ) ++nValidChannels;
02043           if ( iex <= 85 ) {
02044             if ( xval != 2 && xval != 5 ) ++nValidChannelsEB[(ipx-1)/20];
02045           } else {
02046             if ( xval != 2 && xval != 5 ) ++nValidChannelsEB[18+(ipx-1)/20];
02047           }
02048           if ( xval == 0 ) ++nGlobalErrors;
02049           if ( iex <= 85 ) {
02050             if ( xval == 0 ) ++nGlobalErrorsEB[(ipx-1)/20];
02051           } else {
02052             if ( xval == 0 ) ++nGlobalErrorsEB[18+(ipx-1)/20];
02053           }
02054         }
02055 
02056       }
02057 
02058     }
02059   }
02060 
02061   MonitorElement* me;
02062 
02063   float reportSummary = -1.0;
02064   if ( nValidChannels != 0 )
02065     reportSummary = 1.0 - float(nGlobalErrors)/float(nValidChannels);
02066   me = dqmStore_->get(prefixME_ + "/EventInfo/reportSummary");
02067   if ( me )
02068     me->Fill(reportSummary);
02069 
02070   for (int i = 0; i < 36; i++) {
02071     float reportSummaryEB = -1.0;
02072     if ( nValidChannelsEB[i] != 0 )
02073       reportSummaryEB = 1.0 - float(nGlobalErrorsEB[i])/float(nValidChannelsEB[i]);
02074     me = dqmStore_->get(prefixME_ + "/EventInfo/reportSummaryContents/EcalBarrel_" + Numbers::sEB(i+1));
02075     if ( me ) me->Fill(reportSummaryEB);
02076   }
02077 
02078   if(meGlobalSummary_){
02079 
02080     me = dqmStore_->get(prefixME_ + "/EventInfo/reportSummaryMap");
02081     if ( me ) {
02082 
02083       int nValidChannelsTT[72][34];
02084       int nGlobalErrorsTT[72][34];
02085       for ( int iettx = 0; iettx < 34; iettx++ ) {
02086         for ( int ipttx = 0; ipttx < 72; ipttx++ ) {
02087           nValidChannelsTT[ipttx][iettx] = 0;
02088           nGlobalErrorsTT[ipttx][iettx] = 0;
02089         }
02090       }
02091 
02092       for ( int iex = 1; iex <= 170; iex++ ) {
02093         for ( int ipx = 1; ipx <= 360; ipx++ ) {
02094 
02095           int iettx = (iex-1)/5+1;
02096           int ipttx = (ipx-1)/5+1;
02097 
02098           float xval = meGlobalSummary_->getBinContent( ipx, iex );
02099 
02100           if ( xval >= 0 && xval <= 5 ) {
02101             if ( xval != 2 && xval != 5 ) ++nValidChannelsTT[ipttx-1][iettx-1];
02102             if ( xval == 0 ) ++nGlobalErrorsTT[ipttx-1][iettx-1];
02103           }
02104 
02105         }
02106       }
02107 
02108       for ( int iettx = 0; iettx < 34; iettx++ ) {
02109         for ( int ipttx = 0; ipttx < 72; ipttx++ ) {
02110 
02111           float xval = -1.0;
02112           if ( nValidChannelsTT[ipttx][iettx] != 0 )
02113             xval = 1.0 - float(nGlobalErrorsTT[ipttx][iettx])/float(nValidChannelsTT[ipttx][iettx]);
02114 
02115           me->setBinContent( ipttx+1, iettx+1, xval );
02116         }
02117       }
02118 
02119     }
02120 
02121   }
02122 
02123 }
02124