00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include <memory>
00012 #include <iostream>
00013 #include <fstream>
00014 #include <iomanip>
00015 #include <math.h>
00016
00017 #include "FWCore/ServiceRegistry/interface/Service.h"
00018
00019 #include "DQMServices/Core/interface/DQMStore.h"
00020
00021 #ifdef WITH_ECAL_COND_DB
00022 #include "OnlineDB/EcalCondDB/interface/MonTestPulseDat.h"
00023 #include "OnlineDB/EcalCondDB/interface/MonPulseShapeDat.h"
00024 #include "OnlineDB/EcalCondDB/interface/MonPNMGPADat.h"
00025 #include "OnlineDB/EcalCondDB/interface/RunCrystalErrorsDat.h"
00026 #include "OnlineDB/EcalCondDB/interface/RunTTErrorsDat.h"
00027 #include "OnlineDB/EcalCondDB/interface/RunPNErrorsDat.h"
00028 #include "OnlineDB/EcalCondDB/interface/EcalCondDBInterface.h"
00029 #include "DQM/EcalCommon/interface/LogicID.h"
00030 #endif
00031
00032 #include "DQM/EcalCommon/interface/Masks.h"
00033
00034 #include "DQM/EcalCommon/interface/UtilsClient.h"
00035 #include "DQM/EcalCommon/interface/Numbers.h"
00036
00037 #include "DQM/EcalBarrelMonitorClient/interface/EBTestPulseClient.h"
00038
00039 EBTestPulseClient::EBTestPulseClient(const edm::ParameterSet& ps) {
00040
00041
00042 cloneME_ = ps.getUntrackedParameter<bool>("cloneME", true);
00043
00044
00045 verbose_ = ps.getUntrackedParameter<bool>("verbose", true);
00046
00047
00048 debug_ = ps.getUntrackedParameter<bool>("debug", false);
00049
00050
00051 prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");
00052
00053
00054 enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
00055
00056
00057 superModules_.reserve(36);
00058 for ( unsigned int i = 1; i <= 36; i++ ) superModules_.push_back(i);
00059 superModules_ = ps.getUntrackedParameter<std::vector<int> >("superModules", superModules_);
00060
00061 MGPAGains_.reserve(3);
00062 for ( unsigned int i = 1; i <= 3; i++ ) MGPAGains_.push_back(i);
00063 MGPAGains_ = ps.getUntrackedParameter<std::vector<int> >("MGPAGains", MGPAGains_);
00064
00065 MGPAGainsPN_.reserve(2);
00066 for ( unsigned int i = 1; i <= 3; i++ ) MGPAGainsPN_.push_back(i);
00067 MGPAGainsPN_ = ps.getUntrackedParameter<std::vector<int> >("MGPAGainsPN", MGPAGainsPN_);
00068
00069 for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00070
00071 int ism = superModules_[i];
00072
00073 ha01_[ism-1] = 0;
00074 ha02_[ism-1] = 0;
00075 ha03_[ism-1] = 0;
00076
00077 hs01_[ism-1] = 0;
00078 hs02_[ism-1] = 0;
00079 hs03_[ism-1] = 0;
00080
00081 i01_[ism-1] = 0;
00082 i02_[ism-1] = 0;
00083 i03_[ism-1] = 0;
00084 i04_[ism-1] = 0;
00085
00086 }
00087
00088 for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00089
00090 int ism = superModules_[i];
00091
00092 meg01_[ism-1] = 0;
00093 meg02_[ism-1] = 0;
00094 meg03_[ism-1] = 0;
00095
00096 meg04_[ism-1] = 0;
00097 meg05_[ism-1] = 0;
00098
00099 mea01_[ism-1] = 0;
00100 mea02_[ism-1] = 0;
00101 mea03_[ism-1] = 0;
00102
00103 mer04_[ism-1] = 0;
00104 mer05_[ism-1] = 0;
00105
00106 me_hs01_[ism-1] = 0;
00107 me_hs02_[ism-1] = 0;
00108 me_hs03_[ism-1] = 0;
00109
00110 }
00111
00112 percentVariation_ = 0.2;
00113 RMSThreshold_ = 300.0;
00114
00115 amplitudeThreshold_ = 100.;
00116
00117 amplitudeThresholdPnG01_ = 200./16.;
00118 amplitudeThresholdPnG16_ = 200.;
00119
00120 pedPnExpectedMean_[0] = 750.0;
00121 pedPnExpectedMean_[1] = 750.0;
00122
00123 pedPnDiscrepancyMean_[0] = 100.0;
00124 pedPnDiscrepancyMean_[1] = 100.0;
00125
00126 pedPnRMSThreshold_[0] = 999.;
00127 pedPnRMSThreshold_[1] = 999.;
00128
00129 }
00130
00131 EBTestPulseClient::~EBTestPulseClient() {
00132
00133 }
00134
00135 void EBTestPulseClient::beginJob(void) {
00136
00137 dqmStore_ = edm::Service<DQMStore>().operator->();
00138
00139 if ( debug_ ) std::cout << "EBTestPulseClient: beginJob" << std::endl;
00140
00141 ievt_ = 0;
00142 jevt_ = 0;
00143
00144 }
00145
00146 void EBTestPulseClient::beginRun(void) {
00147
00148 if ( debug_ ) std::cout << "EBTestPulseClient: beginRun" << std::endl;
00149
00150 jevt_ = 0;
00151
00152 this->setup();
00153
00154 }
00155
00156 void EBTestPulseClient::endJob(void) {
00157
00158 if ( debug_ ) std::cout << "EBTestPulseClient: std::endlJob, ievt = " << ievt_ << std::endl;
00159
00160 this->cleanup();
00161
00162 }
00163
00164 void EBTestPulseClient::endRun(void) {
00165
00166 if ( debug_ ) std::cout << "EBTestPulseClient: std::endlRun, jevt = " << jevt_ << std::endl;
00167
00168 this->cleanup();
00169
00170 }
00171
00172 void EBTestPulseClient::setup(void) {
00173
00174 char histo[200];
00175
00176 dqmStore_->setCurrentFolder( prefixME_ + "/EBTestPulseClient" );
00177
00178 for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00179
00180 int ism = superModules_[i];
00181
00182 if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
00183 if ( meg01_[ism-1] ) dqmStore_->removeElement( meg01_[ism-1]->getName() );
00184 sprintf(histo, "EBTPT test pulse quality G01 %s", Numbers::sEB(ism).c_str());
00185 meg01_[ism-1] = dqmStore_->book2D(histo, histo, 85, 0., 85., 20, 0., 20.);
00186 meg01_[ism-1]->setAxisTitle("ieta", 1);
00187 meg01_[ism-1]->setAxisTitle("iphi", 2);
00188 }
00189 if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
00190 if ( meg02_[ism-1] ) dqmStore_->removeElement( meg02_[ism-1]->getName() );
00191 sprintf(histo, "EBTPT test pulse quality G06 %s", Numbers::sEB(ism).c_str());
00192 meg02_[ism-1] = dqmStore_->book2D(histo, histo, 85, 0., 85., 20, 0., 20.);
00193 meg02_[ism-1]->setAxisTitle("ieta", 1);
00194 meg02_[ism-1]->setAxisTitle("iphi", 2);
00195 }
00196 if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
00197 if ( meg03_[ism-1] ) dqmStore_->removeElement( meg03_[ism-1]->getName() );
00198 sprintf(histo, "EBTPT test pulse quality G12 %s", Numbers::sEB(ism).c_str());
00199 meg03_[ism-1] = dqmStore_->book2D(histo, histo, 85, 0., 85., 20, 0., 20.);
00200 meg03_[ism-1]->setAxisTitle("ieta", 1);
00201 meg03_[ism-1]->setAxisTitle("iphi", 2);
00202 }
00203
00204 if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 1) != MGPAGainsPN_.end() ) {
00205 if ( meg04_[ism-1] ) dqmStore_->removeElement( meg04_[ism-1]->getName() );
00206 sprintf(histo, "EBTPT test pulse quality PNs G01 %s", Numbers::sEB(ism).c_str());
00207 meg04_[ism-1] = dqmStore_->book2D(histo, histo, 10, 0., 10., 1, 0., 5.);
00208 meg04_[ism-1]->setAxisTitle("pseudo-strip", 1);
00209 meg04_[ism-1]->setAxisTitle("channel", 2);
00210 }
00211 if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 16) != MGPAGainsPN_.end() ) {
00212 if ( meg05_[ism-1] ) dqmStore_->removeElement( meg05_[ism-1]->getName() );
00213 sprintf(histo, "EBTPT test pulse quality PNs G16 %s", Numbers::sEB(ism).c_str());
00214 meg05_[ism-1] = dqmStore_->book2D(histo, histo, 10, 0., 10., 1, 0., 5.);
00215 meg05_[ism-1]->setAxisTitle("pseudo-strip", 1);
00216 meg05_[ism-1]->setAxisTitle("channel", 2);
00217 }
00218
00219 if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
00220 if ( mea01_[ism-1] ) dqmStore_->removeElement( mea01_[ism-1]->getName() );
00221 sprintf(histo, "EBTPT test pulse amplitude G01 %s", Numbers::sEB(ism).c_str());
00222 mea01_[ism-1] = dqmStore_->book1D(histo, histo, 1700, 0., 1700.);
00223 mea01_[ism-1]->setAxisTitle("channel", 1);
00224 mea01_[ism-1]->setAxisTitle("amplitude", 2);
00225 }
00226 if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
00227 if ( mea02_[ism-1] ) dqmStore_->removeElement( mea02_[ism-1]->getName() );
00228 sprintf(histo, "EBTPT test pulse amplitude G06 %s", Numbers::sEB(ism).c_str());
00229 mea02_[ism-1] = dqmStore_->book1D(histo, histo, 1700, 0., 1700.);
00230 mea02_[ism-1]->setAxisTitle("channel", 1);
00231 mea02_[ism-1]->setAxisTitle("amplitude", 2);
00232 }
00233 if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
00234 if ( mea03_[ism-1] ) dqmStore_->removeElement( mea03_[ism-1]->getName() );
00235 sprintf(histo, "EBTPT test pulse amplitude G12 %s", Numbers::sEB(ism).c_str());
00236 mea03_[ism-1] = dqmStore_->book1D(histo, histo, 1700, 0., 1700.);
00237 mea03_[ism-1]->setAxisTitle("channel", 1);
00238 mea03_[ism-1]->setAxisTitle("amplitude", 2);
00239 }
00240
00241 if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 1) != MGPAGainsPN_.end() ) {
00242 if ( mer04_[ism-1] ) dqmStore_->removeElement( mer04_[ism-1]->getName() );
00243 sprintf(histo, "EBTPT PNs pedestal rms %s G01", Numbers::sEB(ism).c_str());
00244 mer04_[ism-1] = dqmStore_->book1D(histo, histo, 100, 0., 10.);
00245 mer04_[ism-1]->setAxisTitle("rms", 1);
00246 }
00247 if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 16) != MGPAGainsPN_.end() ) {
00248 if ( mer05_[ism-1] ) dqmStore_->removeElement( mer05_[ism-1]->getName() );
00249 sprintf(histo, "EBTPT PNs pedestal rms %s G16", Numbers::sEB(ism).c_str());
00250 mer05_[ism-1] = dqmStore_->book1D(histo, histo, 100, 0., 10.);
00251 mer05_[ism-1]->setAxisTitle("rms", 1);
00252 }
00253
00254 if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
00255 if ( me_hs01_[ism-1] ) dqmStore_->removeElement( me_hs01_[ism-1]->getName() );
00256 sprintf(histo, "EBTPT test pulse shape G01 %s", Numbers::sEB(ism).c_str());
00257 me_hs01_[ism-1] = dqmStore_->book1D(histo, histo, 10, 0., 10.);
00258 me_hs01_[ism-1]->setAxisTitle("sample", 1);
00259 me_hs01_[ism-1]->setAxisTitle("amplitude", 2);
00260 }
00261 if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
00262 if ( me_hs02_[ism-1] ) dqmStore_->removeElement( me_hs02_[ism-1]->getName() );
00263 sprintf(histo, "EBTPT test pulse shape G06 %s", Numbers::sEB(ism).c_str());
00264 me_hs02_[ism-1] = dqmStore_->book1D(histo, histo, 10, 0., 10.);
00265 me_hs02_[ism-1]->setAxisTitle("sample", 1);
00266 me_hs02_[ism-1]->setAxisTitle("amplitude", 2);
00267 }
00268 if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
00269 if ( me_hs03_[ism-1] ) dqmStore_->removeElement( me_hs03_[ism-1]->getName() );
00270 sprintf(histo, "EBTPT test pulse shape G12 %s", Numbers::sEB(ism).c_str());
00271 me_hs03_[ism-1] = dqmStore_->book1D(histo, histo, 10, 0., 10.);
00272 me_hs03_[ism-1]->setAxisTitle("sample", 1);
00273 me_hs03_[ism-1]->setAxisTitle("amplitude", 2);
00274 }
00275
00276 }
00277
00278 for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00279
00280 int ism = superModules_[i];
00281
00282 if ( meg01_[ism-1] ) meg01_[ism-1]->Reset();
00283 if ( meg02_[ism-1] ) meg02_[ism-1]->Reset();
00284 if ( meg03_[ism-1] ) meg03_[ism-1]->Reset();
00285
00286 if ( meg04_[ism-1] ) meg04_[ism-1]->Reset();
00287 if ( meg05_[ism-1] ) meg05_[ism-1]->Reset();
00288
00289 for ( int ie = 1; ie <= 85; ie++ ) {
00290 for ( int ip = 1; ip <= 20; ip++ ) {
00291
00292 if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent( ie, ip, 2. );
00293 if ( meg02_[ism-1] ) meg02_[ism-1]->setBinContent( ie, ip, 2. );
00294 if ( meg03_[ism-1] ) meg03_[ism-1]->setBinContent( ie, ip, 2. );
00295
00296 }
00297 }
00298
00299 for ( int i = 1; i <= 10; i++ ) {
00300
00301 if ( meg04_[ism-1] ) meg04_[ism-1]->setBinContent( i, 1, 2. );
00302 if ( meg05_[ism-1] ) meg05_[ism-1]->setBinContent( i, 1, 2. );
00303
00304 }
00305
00306 if ( mea01_[ism-1] ) mea01_[ism-1]->Reset();
00307 if ( mea02_[ism-1] ) mea02_[ism-1]->Reset();
00308 if ( mea03_[ism-1] ) mea03_[ism-1]->Reset();
00309
00310 if ( mer04_[ism-1] ) mer04_[ism-1]->Reset();
00311 if ( mer05_[ism-1] ) mer05_[ism-1]->Reset();
00312
00313 if ( me_hs01_[ism-1] ) me_hs01_[ism-1]->Reset();
00314 if ( me_hs02_[ism-1] ) me_hs02_[ism-1]->Reset();
00315 if ( me_hs03_[ism-1] ) me_hs03_[ism-1]->Reset();
00316
00317 }
00318
00319 }
00320
00321 void EBTestPulseClient::cleanup(void) {
00322
00323 if ( ! enableCleanup_ ) return;
00324
00325 for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00326
00327 int ism = superModules_[i];
00328
00329 if ( cloneME_ ) {
00330 if ( ha01_[ism-1] ) delete ha01_[ism-1];
00331 if ( ha02_[ism-1] ) delete ha02_[ism-1];
00332 if ( ha03_[ism-1] ) delete ha03_[ism-1];
00333
00334 if ( hs01_[ism-1] ) delete hs01_[ism-1];
00335 if ( hs02_[ism-1] ) delete hs02_[ism-1];
00336 if ( hs03_[ism-1] ) delete hs03_[ism-1];
00337
00338 if ( i01_[ism-1] ) delete i01_[ism-1];
00339 if ( i02_[ism-1] ) delete i02_[ism-1];
00340 if ( i03_[ism-1] ) delete i03_[ism-1];
00341 if ( i04_[ism-1] ) delete i04_[ism-1];
00342 }
00343
00344 ha01_[ism-1] = 0;
00345 ha02_[ism-1] = 0;
00346 ha03_[ism-1] = 0;
00347
00348 hs01_[ism-1] = 0;
00349 hs02_[ism-1] = 0;
00350 hs03_[ism-1] = 0;
00351
00352 i01_[ism-1] = 0;
00353 i02_[ism-1] = 0;
00354 i03_[ism-1] = 0;
00355 i04_[ism-1] = 0;
00356
00357 }
00358
00359 for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00360
00361 int ism = superModules_[i];
00362
00363 dqmStore_->setCurrentFolder( prefixME_ + "/EBTestPulseClient" );
00364
00365 if ( meg01_[ism-1] ) dqmStore_->removeElement( meg01_[ism-1]->getName() );
00366 meg01_[ism-1] = 0;
00367 if ( meg02_[ism-1] ) dqmStore_->removeElement( meg02_[ism-1]->getName() );
00368 meg02_[ism-1] = 0;
00369 if ( meg03_[ism-1] ) dqmStore_->removeElement( meg03_[ism-1]->getName() );
00370 meg03_[ism-1] = 0;
00371
00372 if ( meg04_[ism-1] ) dqmStore_->removeElement( meg04_[ism-1]->getName() );
00373 meg04_[ism-1] = 0;
00374 if ( meg05_[ism-1] ) dqmStore_->removeElement( meg05_[ism-1]->getName() );
00375 meg05_[ism-1] = 0;
00376
00377 if ( mea01_[ism-1] ) dqmStore_->removeElement( mea01_[ism-1]->getName() );
00378 mea01_[ism-1] = 0;
00379 if ( mea02_[ism-1] ) dqmStore_->removeElement( mea02_[ism-1]->getName() );
00380 mea02_[ism-1] = 0;
00381 if ( mea03_[ism-1] ) dqmStore_->removeElement( mea03_[ism-1]->getName() );
00382 mea03_[ism-1] = 0;
00383
00384 if ( mer04_[ism-1] ) dqmStore_->removeElement( mer04_[ism-1]->getName() );
00385 mer04_[ism-1] = 0;
00386 if ( mer05_[ism-1] ) dqmStore_->removeElement( mer05_[ism-1]->getName() );
00387 mer05_[ism-1] = 0;
00388
00389 if ( me_hs01_[ism-1] ) dqmStore_->removeElement( me_hs01_[ism-1]->getName() );
00390 me_hs01_[ism-1] = 0;
00391 if ( me_hs02_[ism-1] ) dqmStore_->removeElement( me_hs02_[ism-1]->getName() );
00392 me_hs02_[ism-1] = 0;
00393 if ( me_hs03_[ism-1] ) dqmStore_->removeElement( me_hs03_[ism-1]->getName() );
00394 me_hs03_[ism-1] = 0;
00395
00396 }
00397
00398 }
00399
00400 #ifdef WITH_ECAL_COND_DB
00401 bool EBTestPulseClient::writeDb(EcalCondDBInterface* econn, RunIOV* runiov, MonRunIOV* moniov, bool& status) {
00402
00403 status = true;
00404
00405 EcalLogicID ecid;
00406
00407 MonTestPulseDat adc;
00408 std::map<EcalLogicID, MonTestPulseDat> dataset1;
00409 MonPulseShapeDat shape;
00410 std::map<EcalLogicID, MonPulseShapeDat> dataset2;
00411
00412 for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00413
00414 int ism = superModules_[i];
00415
00416 if ( verbose_ ) {
00417 std::cout << " " << Numbers::sEB(ism) << " (ism=" << ism << ")" << std::endl;
00418 std::cout << std::endl;
00419 if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
00420 UtilsClient::printBadChannels(meg01_[ism-1], ha01_[ism-1]);
00421 }
00422 if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
00423 UtilsClient::printBadChannels(meg02_[ism-1], ha02_[ism-1]);
00424 }
00425 if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
00426 UtilsClient::printBadChannels(meg03_[ism-1], ha03_[ism-1]);
00427 }
00428 }
00429
00430 for ( int ie = 1; ie <= 85; ie++ ) {
00431 for ( int ip = 1; ip <= 20; ip++ ) {
00432
00433 bool update01;
00434 bool update02;
00435 bool update03;
00436
00437 float num01, num02, num03;
00438 float mean01, mean02, mean03;
00439 float rms01, rms02, rms03;
00440
00441 update01 = UtilsClient::getBinStatistics(ha01_[ism-1], ie, ip, num01, mean01, rms01);
00442 update02 = UtilsClient::getBinStatistics(ha02_[ism-1], ie, ip, num02, mean02, rms02);
00443 update03 = UtilsClient::getBinStatistics(ha03_[ism-1], ie, ip, num03, mean03, rms03);
00444
00445 if ( update01 || update02 || update03 ) {
00446
00447 if ( Numbers::icEB(ism, ie, ip) == 1 ) {
00448
00449 if ( verbose_ ) {
00450 std::cout << "Preparing dataset for " << Numbers::sEB(ism) << " (ism=" << ism << ")" << std::endl;
00451 std::cout << "G01 (" << ie << "," << ip << ") " << num01 << " " << mean01 << " " << rms01 << std::endl;
00452 std::cout << "G06 (" << ie << "," << ip << ") " << num02 << " " << mean02 << " " << rms02 << std::endl;
00453 std::cout << "G12 (" << ie << "," << ip << ") " << num03 << " " << mean03 << " " << rms03 << std::endl;
00454 std::cout << std::endl;
00455 }
00456
00457 }
00458
00459 adc.setADCMeanG1(mean01);
00460 adc.setADCRMSG1(rms01);
00461
00462 adc.setADCMeanG6(mean02);
00463 adc.setADCRMSG6(rms02);
00464
00465 adc.setADCMeanG12(mean03);
00466 adc.setADCRMSG12(rms03);
00467
00468 if ( UtilsClient::getBinStatus(meg01_[ism-1], ie, ip) &&
00469 UtilsClient::getBinStatus(meg02_[ism-1], ie, ip) &&
00470 UtilsClient::getBinStatus(meg03_[ism-1], ie, ip) ) {
00471 adc.setTaskStatus(true);
00472 } else {
00473 adc.setTaskStatus(false);
00474 }
00475
00476 status = status && UtilsClient::getBinQuality(meg01_[ism-1], ie, ip) &&
00477 UtilsClient::getBinQuality(meg02_[ism-1], ie, ip) &&
00478 UtilsClient::getBinQuality(meg03_[ism-1], ie, ip);
00479
00480 if ( Numbers::icEB(ism, ie, ip) == 1 ) {
00481
00482 std::vector<float> sample01, sample02, sample03;
00483
00484 sample01.clear();
00485 sample02.clear();
00486 sample03.clear();
00487
00488 if ( me_hs01_[ism-1] ) {
00489 for ( int i = 1; i <= 10; i++ ) {
00490 sample01.push_back(int(me_hs01_[ism-1]->getBinContent(i)));
00491 }
00492 } else {
00493 for ( int i = 1; i <= 10; i++ ) { sample01.push_back(-1.); }
00494 }
00495
00496 if ( me_hs02_[ism-1] ) {
00497 for ( int i = 1; i <= 10; i++ ) {
00498 sample02.push_back(int(me_hs02_[ism-1]->getBinContent(i)));
00499 }
00500 } else {
00501 for ( int i = 1; i <= 10; i++ ) { sample02.push_back(-1.); }
00502 }
00503
00504 if ( me_hs03_[ism-1] ) {
00505 for ( int i = 1; i <= 10; i++ ) {
00506 sample03.push_back(int(me_hs03_[ism-1]->getBinContent(i)));
00507 }
00508 } else {
00509 for ( int i = 1; i <= 10; i++ ) { sample03.push_back(-1.); }
00510 }
00511
00512 if ( verbose_ ) {
00513 std::cout << "sample01 = " << std::flush;
00514 for ( unsigned int i = 0; i < sample01.size(); i++ ) {
00515 std::cout << sample01[i] << " " << std::flush;
00516 }
00517 std::cout << std::endl;
00518
00519 std::cout << "sample02 = " << std::flush;
00520 for ( unsigned int i = 0; i < sample02.size(); i++ ) {
00521 std::cout << sample02[i] << " " << std::flush;
00522 }
00523 std::cout << std::endl;
00524
00525 std::cout << "sample03 = " << std::flush;
00526 for ( unsigned int i = 0; i < sample03.size(); i++ ) {
00527 std::cout << sample03[i] << " " << std::flush;
00528 }
00529 std::cout << std::endl;
00530 }
00531
00532 if ( verbose_ ) std::cout << std::endl;
00533
00534 shape.setSamples(sample01, 1);
00535 shape.setSamples(sample02, 6);
00536 shape.setSamples(sample03, 12);
00537
00538 }
00539
00540 int ic = Numbers::indexEB(ism, ie, ip);
00541
00542 if ( econn ) {
00543 ecid = LogicID::getEcalLogicID("EB_crystal_number", Numbers::iSM(ism, EcalBarrel), ic);
00544 dataset1[ecid] = adc;
00545 if ( Numbers::icEB(ism, ie, ip) == 1 ) dataset2[ecid] = shape;
00546 }
00547
00548 }
00549
00550 }
00551 }
00552
00553 }
00554
00555 if ( econn ) {
00556 try {
00557 if ( verbose_ ) std::cout << "Inserting MonTestPulseDat ..." << std::endl;
00558 if ( dataset1.size() != 0 ) econn->insertDataArraySet(&dataset1, moniov);
00559 if ( dataset2.size() != 0 ) econn->insertDataSet(&dataset2, moniov);
00560 if ( verbose_ ) std::cout << "done." << std::endl;
00561 } catch (std::runtime_error &e) {
00562 std::cerr << e.what() << std::endl;
00563 }
00564 }
00565
00566 if ( verbose_ ) std::cout << std::endl;
00567
00568 MonPNMGPADat pn;
00569 std::map<EcalLogicID, MonPNMGPADat> dataset3;
00570
00571 for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00572
00573 int ism = superModules_[i];
00574
00575 if ( verbose_ ) {
00576 std::cout << " " << Numbers::sEB(ism) << " (ism=" << ism << ")" << std::endl;
00577 std::cout << std::endl;
00578 if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 1) != MGPAGainsPN_.end() ) {
00579 UtilsClient::printBadChannels(meg04_[ism-1], i01_[ism-1]);
00580 UtilsClient::printBadChannels(meg04_[ism-1], i03_[ism-1]);
00581 }
00582 if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 16) != MGPAGainsPN_.end() ) {
00583 UtilsClient::printBadChannels(meg05_[ism-1], i02_[ism-1]);
00584 UtilsClient::printBadChannels(meg05_[ism-1], i04_[ism-1]);
00585 }
00586 }
00587
00588 for ( int i = 1; i <= 10; i++ ) {
00589
00590 bool update01;
00591 bool update02;
00592 bool update03;
00593 bool update04;
00594
00595 float num01, num02, num03, num04;
00596 float mean01, mean02, mean03, mean04;
00597 float rms01, rms02, rms03, rms04;
00598
00599 update01 = UtilsClient::getBinStatistics(i01_[ism-1], i, 0, num01, mean01, rms01);
00600 update02 = UtilsClient::getBinStatistics(i02_[ism-1], i, 0, num02, mean02, rms02);
00601 update03 = UtilsClient::getBinStatistics(i03_[ism-1], i, 1, num03, mean03, rms03);
00602 update04 = UtilsClient::getBinStatistics(i04_[ism-1], i, 1, num04, mean04, rms04);
00603
00604 if ( update01 || update02 || update03 || update04 ) {
00605
00606 if ( i == 1 ) {
00607
00608 if ( verbose_ ) {
00609 std::cout << "Preparing dataset for " << Numbers::sEB(ism) << " (ism=" << ism << ")" << std::endl;
00610 std::cout << "PNs (" << i << ") G01 " << num01 << " " << mean01 << " " << rms01 << " " << num03 << " " << mean03 << " " << rms03 << std::endl;
00611 std::cout << "PNs (" << i << ") G16 " << num02 << " " << mean02 << " " << rms02 << " " << num04 << " " << mean04 << " " << rms04 << std::endl;
00612 std::cout << std::endl;
00613 }
00614
00615 }
00616
00617 pn.setADCMeanG1(mean01);
00618 pn.setADCRMSG1(rms01);
00619
00620 pn.setPedMeanG1(mean03);
00621 pn.setPedRMSG1(rms03);
00622
00623 pn.setADCMeanG16(mean02);
00624 pn.setADCRMSG16(rms02);
00625
00626 pn.setPedMeanG16(mean04);
00627 pn.setPedRMSG16(rms04);
00628
00629 if ( UtilsClient::getBinStatus(meg04_[ism-1], i, 1) &&
00630 UtilsClient::getBinStatus(meg05_[ism-1], i, 1) ) {
00631 pn.setTaskStatus(true);
00632 } else {
00633 pn.setTaskStatus(false);
00634 }
00635
00636 status = status && UtilsClient::getBinQuality(meg04_[ism-1], i, 1) &&
00637 UtilsClient::getBinQuality(meg05_[ism-1], i, 1);
00638
00639 if ( econn ) {
00640 ecid = LogicID::getEcalLogicID("EB_LM_PN", Numbers::iSM(ism, EcalBarrel), i-1);
00641 dataset3[ecid] = pn;
00642 }
00643
00644 }
00645
00646 }
00647
00648 }
00649
00650 if ( econn ) {
00651 try {
00652 if ( verbose_ ) std::cout << "Inserting MonPNMGPADat ..." << std::endl;
00653 if ( dataset3.size() != 0 ) econn->insertDataArraySet(&dataset3, moniov);
00654 if ( verbose_ ) std::cout << "done." << std::endl;
00655 } catch (std::runtime_error &e) {
00656 std::cerr << e.what() << std::endl;
00657 }
00658 }
00659
00660 return true;
00661
00662 }
00663 #endif
00664
00665 void EBTestPulseClient::analyze(void) {
00666
00667 ievt_++;
00668 jevt_++;
00669 if ( ievt_ % 10 == 0 ) {
00670 if ( debug_ ) std::cout << "EBTestPulseClient: ievt/jevt = " << ievt_ << "/" << jevt_ << std::endl;
00671 }
00672
00673 uint32_t bits01 = 0;
00674 bits01 |= 1 << EcalDQMStatusHelper::TESTPULSE_LOW_GAIN_MEAN_ERROR;
00675 bits01 |= 1 << EcalDQMStatusHelper::TESTPULSE_LOW_GAIN_RMS_ERROR;
00676
00677 uint32_t bits02 = 0;
00678 bits02 |= 1 << EcalDQMStatusHelper::TESTPULSE_MIDDLE_GAIN_MEAN_ERROR;
00679 bits02 |= 1 << EcalDQMStatusHelper::TESTPULSE_MIDDLE_GAIN_RMS_ERROR;
00680
00681 uint32_t bits03 = 0;
00682 bits03 |= 1 << EcalDQMStatusHelper::TESTPULSE_HIGH_GAIN_MEAN_ERROR;
00683 bits03 |= 1 << EcalDQMStatusHelper::TESTPULSE_HIGH_GAIN_RMS_ERROR;
00684
00685 uint32_t bits04 = 0;
00686 bits04 |= 1 << EcalDQMStatusHelper::PEDESTAL_LOW_GAIN_MEAN_ERROR;
00687 bits04 |= 1 << EcalDQMStatusHelper::PEDESTAL_LOW_GAIN_RMS_ERROR;
00688
00689 uint32_t bits05 = 0;
00690 bits05 |= 1 << EcalDQMStatusHelper::PEDESTAL_HIGH_GAIN_MEAN_ERROR;
00691 bits05 |= 1 << EcalDQMStatusHelper::PEDESTAL_HIGH_GAIN_RMS_ERROR;
00692
00693 char histo[200];
00694
00695 MonitorElement* me;
00696
00697 for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00698
00699 int ism = superModules_[i];
00700
00701 if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
00702
00703 sprintf(histo, (prefixME_ + "/EBTestPulseTask/Gain01/EBTPT amplitude %s G01").c_str(), Numbers::sEB(ism).c_str());
00704 me = dqmStore_->get(histo);
00705 ha01_[ism-1] = UtilsClient::getHisto<TProfile2D*>( me, cloneME_, ha01_[ism-1] );
00706
00707 }
00708
00709 if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
00710
00711 sprintf(histo, (prefixME_ + "/EBTestPulseTask/Gain06/EBTPT amplitude %s G06").c_str(), Numbers::sEB(ism).c_str());
00712 me = dqmStore_->get(histo);
00713 ha02_[ism-1] = UtilsClient::getHisto<TProfile2D*>( me, cloneME_, ha02_[ism-1] );
00714
00715 }
00716
00717 if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
00718
00719 sprintf(histo, (prefixME_ + "/EBTestPulseTask/Gain12/EBTPT amplitude %s G12").c_str(), Numbers::sEB(ism).c_str());
00720 me = dqmStore_->get(histo);
00721 ha03_[ism-1] = UtilsClient::getHisto<TProfile2D*>( me, cloneME_, ha03_[ism-1] );
00722
00723 }
00724
00725 if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
00726
00727 sprintf(histo, (prefixME_ + "/EBTestPulseTask/Gain01/EBTPT shape %s G01").c_str(), Numbers::sEB(ism).c_str());
00728 me = dqmStore_->get(histo);
00729 hs01_[ism-1] = UtilsClient::getHisto<TProfile2D*>( me, cloneME_, hs01_[ism-1] );
00730
00731 }
00732
00733 if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
00734
00735 sprintf(histo, (prefixME_ + "/EBTestPulseTask/Gain06/EBTPT shape %s G06").c_str(), Numbers::sEB(ism).c_str());
00736 me = dqmStore_->get(histo);
00737 hs02_[ism-1] = UtilsClient::getHisto<TProfile2D*>( me, cloneME_, hs02_[ism-1] );
00738
00739 }
00740
00741 if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
00742
00743 sprintf(histo, (prefixME_ + "/EBTestPulseTask/Gain12/EBTPT shape %s G12").c_str(), Numbers::sEB(ism).c_str());
00744 me = dqmStore_->get(histo);
00745 hs03_[ism-1] = UtilsClient::getHisto<TProfile2D*>( me, cloneME_, hs03_[ism-1] );
00746
00747 }
00748
00749 if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 1) != MGPAGainsPN_.end() ) {
00750
00751 sprintf(histo, (prefixME_ + "/EBTestPulseTask/PN/Gain01/EBTPT PNs amplitude %s G01").c_str(), Numbers::sEB(ism).c_str());
00752 me = dqmStore_->get(histo);
00753 i01_[ism-1] = UtilsClient::getHisto<TProfile*>( me, cloneME_, i01_[ism-1] );
00754
00755 }
00756
00757
00758 if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 16) != MGPAGainsPN_.end() ) {
00759
00760 sprintf(histo, (prefixME_ + "/EBTestPulseTask/PN/Gain16/EBTPT PNs amplitude %s G16").c_str(), Numbers::sEB(ism).c_str());
00761 me = dqmStore_->get(histo);
00762 i02_[ism-1] = UtilsClient::getHisto<TProfile*>( me, cloneME_, i02_[ism-1] );
00763
00764 }
00765
00766 if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 1) != MGPAGainsPN_.end() ) {
00767
00768 sprintf(histo, (prefixME_ + "/EBTestPulseTask/PN/Gain01/EBTPT PNs pedestal %s G01").c_str(), Numbers::sEB(ism).c_str());
00769 me = dqmStore_->get(histo);
00770 i03_[ism-1] = UtilsClient::getHisto<TProfile*>( me, cloneME_, i03_[ism-1] );
00771
00772 }
00773
00774 if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 16) != MGPAGainsPN_.end() ) {
00775
00776 sprintf(histo, (prefixME_ + "/EBTestPulseTask/PN/Gain16/EBTPT PNs pedestal %s G16").c_str(), Numbers::sEB(ism).c_str());
00777 me = dqmStore_->get(histo);
00778 i04_[ism-1] = UtilsClient::getHisto<TProfile*>( me, cloneME_, i04_[ism-1] );
00779
00780 }
00781
00782 if ( meg01_[ism-1] ) meg01_[ism-1]->Reset();
00783 if ( meg02_[ism-1] ) meg02_[ism-1]->Reset();
00784 if ( meg03_[ism-1] ) meg03_[ism-1]->Reset();
00785
00786 if ( meg04_[ism-1] ) meg04_[ism-1]->Reset();
00787 if ( meg05_[ism-1] ) meg05_[ism-1]->Reset();
00788
00789 if ( mea01_[ism-1] ) mea01_[ism-1]->Reset();
00790 if ( mea02_[ism-1] ) mea02_[ism-1]->Reset();
00791 if ( mea03_[ism-1] ) mea03_[ism-1]->Reset();
00792
00793 if ( mer04_[ism-1] ) mer04_[ism-1]->Reset();
00794 if ( mer05_[ism-1] ) mer05_[ism-1]->Reset();
00795
00796 if ( me_hs01_[ism-1] ) me_hs01_[ism-1]->Reset();
00797 if ( me_hs02_[ism-1] ) me_hs02_[ism-1]->Reset();
00798 if ( me_hs03_[ism-1] ) me_hs03_[ism-1]->Reset();
00799
00800 float meanAmpl01, meanAmpl02, meanAmpl03;
00801
00802 int nCry01, nCry02, nCry03;
00803
00804 meanAmpl01 = meanAmpl02 = meanAmpl03 = 0.;
00805
00806 nCry01 = nCry02 = nCry03 = 0;
00807
00808 for ( int ie = 1; ie <= 85; ie++ ) {
00809 for ( int ip = 1; ip <= 20; ip++ ) {
00810
00811 bool update01;
00812 bool update02;
00813 bool update03;
00814
00815 float num01, num02, num03;
00816 float mean01, mean02, mean03;
00817 float rms01, rms02, rms03;
00818
00819 update01 = UtilsClient::getBinStatistics(ha01_[ism-1], ie, ip, num01, mean01, rms01);
00820 update02 = UtilsClient::getBinStatistics(ha02_[ism-1], ie, ip, num02, mean02, rms02);
00821 update03 = UtilsClient::getBinStatistics(ha03_[ism-1], ie, ip, num03, mean03, rms03);
00822
00823 if ( update01 ) {
00824 meanAmpl01 += mean01;
00825 nCry01++;
00826 }
00827
00828 if ( update02 ) {
00829 meanAmpl02 += mean02;
00830 nCry02++;
00831 }
00832
00833 if ( update03 ) {
00834 meanAmpl03 += mean03;
00835 nCry03++;
00836 }
00837
00838 }
00839 }
00840
00841 if ( nCry01 > 0 ) meanAmpl01 /= float (nCry01);
00842 if ( nCry02 > 0 ) meanAmpl02 /= float (nCry02);
00843 if ( nCry03 > 0 ) meanAmpl03 /= float (nCry03);
00844
00845 for ( int ie = 1; ie <= 85; ie++ ) {
00846 for ( int ip = 1; ip <= 20; ip++ ) {
00847
00848 if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent( ie, ip, 2. );
00849 if ( meg02_[ism-1] ) meg02_[ism-1]->setBinContent( ie, ip, 2. );
00850 if ( meg03_[ism-1] ) meg03_[ism-1]->setBinContent( ie, ip, 2. );
00851
00852 float numEventsinCry[3] = {0., 0., 0.};
00853
00854 if ( ha01_[ism-1] ) numEventsinCry[0] = ha01_[ism-1]->GetBinEntries(ha01_[ism-1]->GetBin(ie, ip));
00855 if ( ha02_[ism-1] ) numEventsinCry[1] = ha02_[ism-1]->GetBinEntries(ha02_[ism-1]->GetBin(ie, ip));
00856 if ( ha03_[ism-1] ) numEventsinCry[2] = ha03_[ism-1]->GetBinEntries(ha03_[ism-1]->GetBin(ie, ip));
00857
00858 bool update01;
00859 bool update02;
00860 bool update03;
00861
00862 float num01, num02, num03;
00863 float mean01, mean02, mean03;
00864 float rms01, rms02, rms03;
00865
00866 update01 = UtilsClient::getBinStatistics(ha01_[ism-1], ie, ip, num01, mean01, rms01);
00867 update02 = UtilsClient::getBinStatistics(ha02_[ism-1], ie, ip, num02, mean02, rms02);
00868 update03 = UtilsClient::getBinStatistics(ha03_[ism-1], ie, ip, num03, mean03, rms03);
00869
00870 if ( update01 ) {
00871
00872 float val;
00873
00874 val = 1.;
00875 if ( std::abs(mean01 - meanAmpl01) > std::abs(percentVariation_ * meanAmpl01) || mean01 < amplitudeThreshold_ )
00876 val = 0.;
00877 if ( rms01 > RMSThreshold_ )
00878 val = 0.;
00879 if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent( ie, ip, val );
00880
00881 int ic = Numbers::icEB(ism, ie, ip);
00882
00883 if ( mea01_[ism-1] ) {
00884 if ( mean01 > 0. ) {
00885 mea01_[ism-1]->setBinContent( ic, mean01 );
00886 mea01_[ism-1]->setBinError( ic, rms01 );
00887 } else {
00888 mea01_[ism-1]->setEntries( 1.+mea01_[ism-1]->getEntries() );
00889 }
00890 }
00891
00892 }
00893
00894 if ( update02 ) {
00895
00896 float val;
00897
00898 val = 1.;
00899 if ( std::abs(mean02 - meanAmpl02) > std::abs(percentVariation_ * meanAmpl02) || mean02 < amplitudeThreshold_ )
00900 val = 0.;
00901 if ( rms02 > RMSThreshold_ )
00902 val = 0.;
00903 if ( meg02_[ism-1] ) meg02_[ism-1]->setBinContent( ie, ip, val );
00904
00905 int ic = Numbers::icEB(ism, ie, ip);
00906
00907 if ( mea02_[ism-1] ) {
00908 if ( mean02 > 0. ) {
00909 mea02_[ism-1]->setBinContent( ic, mean02 );
00910 mea02_[ism-1]->setBinError( ic, rms02 );
00911 } else {
00912 mea02_[ism-1]->setEntries( 1.+mea02_[ism-1]->getEntries() );
00913 }
00914 }
00915
00916 }
00917
00918 if ( update03 ) {
00919
00920 float val;
00921
00922 val = 1.;
00923 if ( std::abs(mean03 - meanAmpl03) > std::abs(percentVariation_ * meanAmpl03) || mean03 < amplitudeThreshold_ )
00924 val = 0.;
00925 if ( rms03 > RMSThreshold_ )
00926 val = 0.;
00927 if ( meg03_[ism-1] ) meg03_[ism-1]->setBinContent( ie, ip, val );
00928
00929 int ic = Numbers::icEB(ism, ie, ip);
00930
00931 if ( mea03_[ism-1] ) {
00932 if ( mean03 > 0. ) {
00933 mea03_[ism-1]->setBinContent( ic, mean03 );
00934 mea03_[ism-1]->setBinError( ic, rms03 );
00935 } else {
00936 mea03_[ism-1]->setEntries( 1.+mea03_[ism-1]->getEntries() );
00937 }
00938 }
00939
00940 }
00941
00942 if ( Masks::maskChannel(ism, ie, ip, bits01, EcalBarrel) ) UtilsClient::maskBinContent( meg01_[ism-1], ie, ip );
00943 if ( Masks::maskChannel(ism, ie, ip, bits02, EcalBarrel) ) UtilsClient::maskBinContent( meg02_[ism-1], ie, ip );
00944 if ( Masks::maskChannel(ism, ie, ip, bits03, EcalBarrel) ) UtilsClient::maskBinContent( meg03_[ism-1], ie, ip );
00945
00946 }
00947 }
00948
00949 for ( int i = 1; i <= 10; i++ ) {
00950
00951 if ( meg04_[ism-1] ) meg04_[ism-1]->setBinContent( i, 1, 2. );
00952 if ( meg05_[ism-1] ) meg05_[ism-1]->setBinContent( i, 1, 2. );
00953
00954 bool update01;
00955 bool update02;
00956 bool update03;
00957 bool update04;
00958
00959 float num01, num02, num03, num04;
00960 float mean01, mean02, mean03, mean04;
00961 float rms01, rms02, rms03, rms04;
00962
00963 update01 = UtilsClient::getBinStatistics(i01_[ism-1], i, 0, num01, mean01, rms01);
00964 update02 = UtilsClient::getBinStatistics(i02_[ism-1], i, 0, num02, mean02, rms02);
00965 update03 = UtilsClient::getBinStatistics(i03_[ism-1], i, 0, num03, mean03, rms03);
00966 update04 = UtilsClient::getBinStatistics(i04_[ism-1], i, 0, num04, mean04, rms04);
00967
00968 if ( mer04_[ism-1] ) mer04_[ism-1]->Fill(rms03);
00969 if ( mer05_[ism-1] ) mer05_[ism-1]->Fill(rms04);
00970
00971 if ( update01 && update03 ) {
00972
00973 float val;
00974
00975 val = 1.;
00976 if ( mean01 < amplitudeThresholdPnG01_ )
00977 val = 0.;
00978 if ( mean03 < pedPnExpectedMean_[0] - pedPnDiscrepancyMean_[0] ||
00979 pedPnExpectedMean_[0] + pedPnDiscrepancyMean_[0] < mean03)
00980 val = 0.;
00981 if ( rms03 > pedPnRMSThreshold_[0] )
00982 val = 0.;
00983 if ( meg04_[ism-1] ) meg04_[ism-1]->setBinContent(i, 1, val);
00984
00985 }
00986
00987 if ( update02 && update04 ) {
00988
00989 float val;
00990
00991 val = 1.;
00992 if ( mean02 < amplitudeThresholdPnG16_ )
00993 val = 0.;
00994 if ( mean04 < pedPnExpectedMean_[1] - pedPnDiscrepancyMean_[1] ||
00995 pedPnExpectedMean_[1] + pedPnDiscrepancyMean_[1] < mean04)
00996 val = 0.;
00997 if ( rms04 > pedPnRMSThreshold_[1] )
00998 val = 0.;
00999 if ( meg05_[ism-1] ) meg05_[ism-1]->setBinContent(i, 1, val);
01000
01001 }
01002
01003 if ( Masks::maskPn(ism, i, bits01|bits04, EcalBarrel) ) UtilsClient::maskBinContent( meg04_[ism-1], i, 1 );
01004 if ( Masks::maskPn(ism, i, bits03|bits05, EcalBarrel) ) UtilsClient::maskBinContent( meg05_[ism-1], i, 1 );
01005
01006 }
01007
01008 for ( int i = 1; i <= 10; i++ ) {
01009
01010 if ( hs01_[ism-1] ) {
01011 int ic = UtilsClient::getFirstNonEmptyChannel( hs01_[ism-1] );
01012 if ( me_hs01_[ism-1] ) {
01013 me_hs01_[ism-1]->setBinContent( i, hs01_[ism-1]->GetBinContent(ic, i) );
01014 me_hs01_[ism-1]->setBinError( i, hs01_[ism-1]->GetBinError(ic, i) );
01015 }
01016 }
01017
01018 if ( hs02_[ism-1] ) {
01019 int ic = UtilsClient::getFirstNonEmptyChannel( hs02_[ism-1] );
01020 if ( me_hs02_[ism-1] ) {
01021 me_hs02_[ism-1]->setBinContent( i, hs02_[ism-1]->GetBinContent(ic, i) );
01022 me_hs02_[ism-1]->setBinError( i, hs02_[ism-1]->GetBinError(ic, i) );
01023 }
01024 }
01025
01026 if ( hs03_[ism-1] ) {
01027 int ic = UtilsClient::getFirstNonEmptyChannel( hs03_[ism-1] );
01028 if ( me_hs03_[ism-1] ) {
01029 me_hs03_[ism-1]->setBinContent( i, hs03_[ism-1]->GetBinContent(ic, i) );
01030 me_hs03_[ism-1]->setBinError( i, hs03_[ism-1]->GetBinError(ic, i) );
01031 }
01032 }
01033
01034 }
01035
01036 }
01037
01038 }
01039