00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #include "CondTools/Ecal/interface/EcalLaserHandler.h"
00044
00045 #include "CondTools/Ecal/interface/EcalChannelStatusHandler.h"
00046
00047 #include "FWCore/ParameterSet/interface/ParameterSetfwd.h"
00048
00049 #include "TProfile2D.h"
00050 #include "TTree.h"
00051 #include "TFile.h"
00052 #include "TLine.h"
00053 #include "TStyle.h"
00054 #include "TCanvas.h"
00055 #include "TGaxis.h"
00056 #include "TColor.h"
00057
00058
00059 popcon::EcalChannelStatusHandler::EcalChannelStatusHandler(const edm::ParameterSet & ps) {
00060
00061 std::cout << "EcalChannelStatus Source handler constructor\n" << std::endl;
00062
00063 m_firstRun = static_cast<unsigned int>(atoi( ps.getParameter<std::string>("firstRun").c_str()));
00064 m_lastRun = static_cast<unsigned int>(atoi( ps.getParameter<std::string>("lastRun").c_str()));
00065 m_sid = ps.getParameter<std::string>("OnlineDBSID");
00066 m_user = ps.getParameter<std::string>("OnlineDBUser");
00067 m_pass = ps.getParameter<std::string>("OnlineDBPassword");
00068 m_locationsource = ps.getParameter<std::string>("LocationSource");
00069 m_location = ps.getParameter<std::string>("Location");
00070 m_gentag = ps.getParameter<std::string>("GenTag");
00071 m_runtype = ps.getParameter<std::string>("RunType");
00072 m_name = ps.getUntrackedParameter<std::string>("name","EcalChannelStatusHandler");
00073
00074 std::cout << m_sid << "/" << m_user << "/" << m_pass << "/" << m_location << "/" << m_gentag << std::endl;
00075 }
00076
00077
00078 popcon::EcalChannelStatusHandler::~EcalChannelStatusHandler() { }
00079
00080
00081
00082
00083
00084
00085
00086
00087 float popcon::EcalChannelStatusHandler::checkPedestalValueGain12( EcalPedestals::Item* item ) {
00088 float result = item->mean_x12;
00089 return result;
00090 }
00091
00092
00093 float popcon::EcalChannelStatusHandler::checkPedestalValueGain6( EcalPedestals::Item* item ) {
00094 float result = item->mean_x6;
00095 return result;
00096 }
00097
00098
00099 float popcon::EcalChannelStatusHandler::checkPedestalValueGain1( EcalPedestals::Item* item ) {
00100 float result = item->mean_x1;
00101 return result;
00102 }
00103
00104
00105 float popcon::EcalChannelStatusHandler::checkPedestalRMSGain12( EcalPedestals::Item* item ) {
00106 float result = item->rms_x12;
00107 return result;
00108 }
00109
00110
00111 float popcon::EcalChannelStatusHandler::checkPedestalRMSGain6( EcalPedestals::Item* item ) {
00112 float result = item->rms_x6;
00113 return result;
00114 }
00115
00116
00117 float popcon::EcalChannelStatusHandler::checkPedestalRMSGain1( EcalPedestals::Item* item ) {
00118 float result = item->rms_x1;
00119 return result;
00120 }
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130 void popcon::EcalChannelStatusHandler::nBadLaserModules( std::map<EcalLogicID, MonLaserBlueDat> dataset_mon ) {
00131
00132
00133
00134
00135
00136
00137
00138 for (int theSm=0; theSm<36; theSm++){
00139 for (int theLM=0; theLM<2; theLM++){
00140 isEBRef1[theSm][theLM] = false;
00141 isEBRef2[theSm][theLM] = false;
00142 isGoodLaserEBSm[theSm][theLM] = false;
00143 }}
00144
00145
00146
00147
00148 for (int theSector=0; theSector<18; theSector++){
00149 for (int theLM=0; theLM<2; theLM++){
00150 isEERef1[theSector][theLM] = false;
00151 isEERef2[theSector][theLM] = false;
00152 isGoodLaserEESm[theSector][theLM] = false;
00153 }}
00154
00155
00156 typedef std::map<EcalLogicID, MonLaserBlueDat>::const_iterator CImon;
00157 EcalLogicID ecid_xt;
00158 MonLaserBlueDat rd_blue;
00159
00160 for (CImon p = dataset_mon.begin(); p != dataset_mon.end(); p++) {
00161
00162 ecid_xt = p->first;
00163 int sm_num = ecid_xt.getID1();
00164 int xt_num = ecid_xt.getID2();
00165 int yt_num = ecid_xt.getID3();
00166
00167
00168 int theFed =-100;
00169 int theTT =-100;
00170 int theIx =-100;
00171 if(ecid_xt.getName()=="EB_crystal_number") {
00172 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
00173 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(ebdetid);
00174 theFed = 600+elecId.dccId();
00175 theTT = elecId.towerId();
00176 }
00177 if(ecid_xt.getName()=="EE_crystal_number") {
00178 if(EEDetId::validDetId(xt_num,yt_num,sm_num)){
00179 EEDetId eedetid(xt_num,yt_num,sm_num);
00180 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(eedetid);
00181 theFed = 600+elecId.dccId();
00182 theIx = eedetid.ix();
00183 }
00184 }
00185
00186
00187
00188
00189
00190 int thisFed=-100;
00191 if (ecid_xt.getName()=="EE_crystal_number") {
00192 if (theFed>600 && theFed<610) thisFed = theFed -601;
00193 if (theFed>645 && theFed<655) thisFed = theFed -646 + 9;
00194 }
00195 if (ecid_xt.getName()=="EB_crystal_number") { thisFed = theFed - 610; }
00196
00197
00198
00199 int theTTieta=-100;
00200 int theTTiphi=-100;
00201 int theLM=-100;
00202 if(ecid_xt.getName()=="EB_crystal_number") {
00203 theTTieta = (theTT-1)/4 +1;
00204 theTTiphi = (theTT-1)%4 +1;
00205 if (theTTieta==1 || theTTiphi==3 || theTTiphi==4) theLM=0;
00206 if (theTTieta>1 && (theTTiphi==1 || theTTiphi==2)) theLM=1;
00207 }
00208 if( (ecid_xt.getName()=="EE_crystal_number") && (thisFed==7 || thisFed==16) ) {
00209 if (theIx<=50) theLM=0;
00210 if (theIx>50) theLM=1;
00211 }
00212
00213
00214
00215 rd_blue = p->second;
00216 float myApdMean = rd_blue.getAPDMean();
00217
00218
00219 if (ecid_xt.getName()=="EB_crystal_number") {
00220 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
00221 if ( !isEBRef1[thisFed][theLM] && !isEBRef2[thisFed][theLM] && myApdMean>100 ) isEBRef1[thisFed][theLM] = true;
00222 if ( isEBRef1[thisFed][theLM] && !isEBRef2[thisFed][theLM] && myApdMean>100 ) isEBRef2[thisFed][theLM] = true;
00223 }
00224
00225
00226 if (ecid_xt.getName()=="EE_crystal_number") {
00227 EEDetId eedetid(xt_num,yt_num,sm_num);
00228
00229
00230 if (thisFed!=7 && thisFed!=16) {
00231 if ( !isEERef1[thisFed][0] && !isEERef2[thisFed][0] && myApdMean>100 ) { isEERef1[thisFed][0] = true; isEERef1[thisFed][1] = true; }
00232 if ( isEERef1[thisFed][0] && !isEERef2[thisFed][0] && myApdMean>100 ) { isEERef2[thisFed][0] = true; isEERef2[thisFed][1] = true; }
00233 }
00234
00235
00236 if (thisFed==7 || thisFed==16) {
00237 if ( !isEERef1[thisFed][theLM] && !isEERef2[thisFed][theLM] && myApdMean>100 ) isEERef1[thisFed][theLM] = true;
00238 if ( isEERef1[thisFed][theLM] && !isEERef2[thisFed][theLM] && myApdMean>100 ) isEERef2[thisFed][theLM] = true;
00239 }
00240 }
00241 }
00242
00243
00244 for (int theSm=0; theSm<36; theSm++){
00245 for (int theLM=0; theLM<2; theLM++){
00246 if (isEBRef1[theSm][theLM] && isEBRef2[theSm][theLM]) isGoodLaserEBSm[theSm][theLM] = true;
00247
00248 }}
00249
00250 for (int theSector=0; theSector<18; theSector++){
00251 for (int theLM=0; theLM<2; theLM++){
00252 if (isEERef1[theSector][theLM] && isEERef2[theSector][theLM]) isGoodLaserEESm[theSector][theLM] = true;
00253
00254 }}
00255 }
00256
00257
00258
00259
00260
00261 void popcon::EcalChannelStatusHandler::pedOnlineMasking() {
00262
00263 uint64_t bits03 = 0;
00264 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_ONLINE_HIGH_GAIN_MEAN_WARNING");
00265 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_ONLINE_HIGH_GAIN_RMS_WARNING");
00266 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_ONLINE_HIGH_GAIN_MEAN_ERROR");
00267 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_ONLINE_HIGH_GAIN_RMS_ERROR");
00268
00269 std::map<EcalLogicID, RunCrystalErrorsDat> theMask;
00270 EcalErrorMask::fetchDataSet(&theMask);
00271
00272 if ( theMask.size()!=0 ) {
00273
00274 std::map<EcalLogicID, RunCrystalErrorsDat>::const_iterator m;
00275 for (m=theMask.begin(); m!=theMask.end(); m++) {
00276
00277 EcalLogicID ecid_xt = m->first;
00278 int sm_num = ecid_xt.getID1();
00279 int xt_num = ecid_xt.getID2();
00280 int yt_num = ecid_xt.getID3();
00281
00282 if ( (m->second).getErrorBits() & bits03 ) {
00283
00284 if(ecid_xt.getName()=="EB_crystal_number") {
00285 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
00286 maskedOnlinePedEB.insert(std::pair<DetId, float>(ebdetid, 9999.));
00287 } else {
00288 if(EEDetId::validDetId(xt_num,yt_num,sm_num)){
00289 EEDetId eedetid(xt_num,yt_num,sm_num);
00290 maskedOnlinePedEE.insert(std::pair<DetId, float>(eedetid, 9999.));
00291 }}}
00292 }
00293 }
00294 }
00295
00296
00297 void popcon::EcalChannelStatusHandler::pedMasking() {
00298
00299 uint64_t bits03 = 0;
00300 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_LOW_GAIN_MEAN_WARNING");
00301 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_MIDDLE_GAIN_MEAN_WARNING");
00302 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_HIGH_GAIN_MEAN_WARNING");
00303 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_LOW_GAIN_MEAN_ERROR");
00304 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_MIDDLE_GAIN_MEAN_ERROR");
00305 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_HIGH_GAIN_MEAN_ERROR");
00306 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_LOW_GAIN_RMS_WARNING");
00307 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_MIDDLE_GAIN_RMS_WARNING");
00308 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_HIGH_GAIN_RMS_WARNING");
00309 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_LOW_GAIN_RMS_ERROR");
00310 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_MIDDLE_GAIN_RMS_ERROR");
00311 bits03 |= EcalErrorDictionary::getMask("PEDESTAL_HIGH_GAIN_RMS_ERROR");
00312
00313 std::map<EcalLogicID, RunCrystalErrorsDat> theMask;
00314 EcalErrorMask::fetchDataSet(&theMask);
00315
00316 if ( theMask.size()!=0 ) {
00317
00318 std::map<EcalLogicID, RunCrystalErrorsDat>::const_iterator m;
00319 for (m=theMask.begin(); m!=theMask.end(); m++) {
00320
00321 EcalLogicID ecid_xt = m->first;
00322 int sm_num = ecid_xt.getID1();
00323 int xt_num = ecid_xt.getID2();
00324 int yt_num = ecid_xt.getID3();
00325
00326 if ( (m->second).getErrorBits() & bits03 ) {
00327
00328 if(ecid_xt.getName()=="EB_crystal_number") {
00329 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
00330 maskedPedEB.insert(std::pair<DetId, float>(ebdetid, 9999.));
00331 } else {
00332 if(EEDetId::validDetId(xt_num,yt_num,sm_num)){
00333 EEDetId eedetid(xt_num,yt_num,sm_num);
00334 maskedPedEE.insert(std::pair<DetId, float>(eedetid, 9999.));
00335 }}}
00336 }
00337 }
00338 }
00339
00340
00341 void popcon::EcalChannelStatusHandler::laserMasking() {
00342
00343 uint64_t bits03 = 0;
00344 bits03 |= EcalErrorDictionary::getMask("LASER_MEAN_WARNING");
00345 bits03 |= EcalErrorDictionary::getMask("LASER_RMS_WARNING");
00346 bits03 |= EcalErrorDictionary::getMask("LASER_MEAN_OVER_PN_WARNING");
00347 bits03 |= EcalErrorDictionary::getMask("LASER_RMS_OVER_PN_WARNING");
00348 bits03 |= EcalErrorDictionary::getMask("LASER_MEAN_TIMING_WARNING");
00349 bits03 |= EcalErrorDictionary::getMask("LASER_RMS_TIMING_WARNING");
00350
00351 std::map<EcalLogicID, RunCrystalErrorsDat> theMask;
00352 EcalErrorMask::fetchDataSet(&theMask);
00353
00354 if ( theMask.size()!=0 ) {
00355
00356 std::map<EcalLogicID, RunCrystalErrorsDat>::const_iterator m;
00357 for (m=theMask.begin(); m!=theMask.end(); m++) {
00358
00359 EcalLogicID ecid_xt = m->first;
00360 int sm_num = ecid_xt.getID1();
00361 int xt_num = ecid_xt.getID2();
00362 int yt_num = ecid_xt.getID3();
00363
00364 if ( (m->second).getErrorBits() & bits03 ) {
00365
00366 if(ecid_xt.getName()=="EB_crystal_number") {
00367 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
00368 maskedLaserEB.insert(std::pair<DetId, float>(ebdetid, 9999.));
00369 } else {
00370 if(EEDetId::validDetId(xt_num,yt_num,sm_num)){
00371 EEDetId eedetid(xt_num,yt_num,sm_num);
00372 maskedLaserEE.insert(std::pair<DetId, float>(eedetid, 9999.));
00373 }}}
00374 }
00375 }
00376 }
00377
00378
00379 void popcon::EcalChannelStatusHandler::physicsMasking() {
00380
00381 uint64_t bits03 = 0;
00382 bits03 |= EcalErrorDictionary::getMask("PHYSICS_BAD_CHANNEL_WARNING");
00383 bits03 |= EcalErrorDictionary::getMask("PHYSICS_BAD_CHANNEL_ERROR");
00384
00385 std::map<EcalLogicID, RunCrystalErrorsDat> theMask;
00386 EcalErrorMask::fetchDataSet(&theMask);
00387
00388 if ( theMask.size()!=0 ) {
00389
00390 std::map<EcalLogicID, RunCrystalErrorsDat>::const_iterator m;
00391 for (m=theMask.begin(); m!=theMask.end(); m++) {
00392
00393 EcalLogicID ecid_xt = m->first;
00394 int sm_num = ecid_xt.getID1();
00395 int xt_num = ecid_xt.getID2();
00396 int yt_num = ecid_xt.getID3();
00397
00398 if ( (m->second).getErrorBits() & bits03 ) {
00399
00400 if(ecid_xt.getName()=="EB_crystal_number") {
00401 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
00402 maskedPhysicsEB.insert(std::pair<DetId, float>(ebdetid, 9999.));
00403 } else {
00404 if(EEDetId::validDetId(xt_num,yt_num,sm_num)){
00405 EEDetId eedetid(xt_num,yt_num,sm_num);
00406 maskedPhysicsEE.insert(std::pair<DetId, float>(eedetid, 9999.));
00407 }}}
00408 }
00409 }
00410 }
00411
00412
00413
00414
00415 void popcon::EcalChannelStatusHandler::daqOut(RunIOV myRun) {
00416
00417 std::map<EcalLogicID, RunFEConfigDat> feconfig;
00418 econn->fetchDataSet(&feconfig, &myRun);
00419
00420 typedef std::map<EcalLogicID, RunFEConfigDat>::const_iterator feConfIter;
00421 EcalLogicID ecid_xt;
00422 RunFEConfigDat rd_fe;
00423
00424 int fe_conf_id=0;
00425 for (feConfIter p=feconfig.begin(); p!=feconfig.end(); p++) {
00426 ecid_xt = p->first;
00427 rd_fe = p->second;
00428 fe_conf_id=rd_fe.getConfigId();
00429 }
00430
00431
00432 ODFEDAQConfig myconfig;
00433 myconfig.setId(fe_conf_id);
00434 econn->fetchConfigSet(&myconfig);
00435
00436
00437 int myTT=myconfig.getBadTTId();
00438 ODBadTTInfo mybadTT;
00439 mybadTT.setId(myTT);
00440 econn->fetchConfigSet(&mybadTT);
00441
00442 std::vector< ODBadTTDat > badTT_dat;
00443 econn->fetchConfigDataSet(&badTT_dat, &mybadTT);
00444
00445 for(size_t iTT=0; iTT<badTT_dat.size(); iTT++){
00446 int fed_id = badTT_dat[iTT].getFedId();
00447 int tt_id = badTT_dat[iTT].getTTId();
00448 if (tt_id<69) *daqFile << fed_id << " " << tt_id << std::endl;
00449
00450
00451 if((fed_id<=609 || fed_id>=646) && tt_id<69) {
00452
00453
00454 int db_fedId = -999;
00455 if (fed_id>=604 && fed_id<=609) db_fedId = fed_id - 603 + 9;
00456 if (fed_id>=601 && fed_id<=603) db_fedId = fed_id - 600 + 15;
00457 if (fed_id>=649 && fed_id<=654) db_fedId = fed_id - 648;
00458 if (fed_id>=646 && fed_id<=648) db_fedId = fed_id - 645 + 6;
00459
00460
00461 std::vector<EcalLogicID> badCrystals;
00462 badCrystals=econn->getEcalLogicIDSet("EE_readout_tower",fed_id, fed_id, tt_id, tt_id, EcalLogicID::NULLID,EcalLogicID::NULLID, "EE_crystal_number");
00463
00464 for(size_t mycrys=0; mycrys<badCrystals.size(); mycrys++){
00465 EcalLogicID ecid_xt = badCrystals[mycrys];
00466 int zSide = 999;
00467 int log_id = ecid_xt.getLogicID();
00468 int yt2 = log_id%1000;
00469 int xt2 = (log_id%1000000)/1000;
00470 int zt2 = (log_id/1000000)%10;
00471 if (zt2==0) zSide = -1;
00472 if (zt2==2) zSide = 1;
00473 *daqFile2 << xt2 << " " << yt2 << " " << zSide << std::endl;
00474 }
00475 }
00476
00477 if(fed_id>=610 && fed_id<=645 && tt_id<69) {
00478
00479
00480 int db_fedId = -999;
00481 if (fed_id>=610 && fed_id<=627) db_fedId = fed_id - 609 + 18;
00482 if (fed_id>=628 && fed_id<=645) db_fedId = fed_id - 627;
00483
00484 std::vector<EcalLogicID> badCrystals;
00485 badCrystals=econn->getEcalLogicIDSet("EB_trigger_tower",db_fedId, db_fedId, tt_id, tt_id, EcalLogicID::NULLID, EcalLogicID::NULLID, "EB_crystal_number");
00486
00487 for(size_t mycrys=0; mycrys<badCrystals.size(); mycrys++){
00488 EcalLogicID ecid_xt = badCrystals[mycrys];
00489 int sm_num = ecid_xt.getID1();
00490 int log_id = ecid_xt.getLogicID();
00491 int xt2_num = log_id%10000;
00492 EBDetId ebdetid(sm_num,xt2_num,EBDetId::SMCRYSTALMODE);
00493 *daqFile2 << ebdetid.hashedIndex() << std::endl;
00494 }
00495 }
00496 }
00497 }
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510 void popcon::EcalChannelStatusHandler::pedAnalysis( std::map<EcalLogicID, MonPedestalsDat> dataset_mon, std::map<EcalLogicID, MonCrystalConsistencyDat> wrongGain_mon ) {
00511
00512
00513 pedMasking();
00514
00515
00516 std::map<DetId,float>::const_iterator theIter;
00517
00518
00519 EcalLogicID ecid_xt;
00520
00521
00522 typedef std::map<EcalLogicID, MonPedestalsDat>::const_iterator CImon;
00523 MonPedestalsDat rd_ped;
00524
00525 for (CImon p = dataset_mon.begin(); p != dataset_mon.end(); p++) {
00526
00527 uint16_t status_now = 0;
00528 ecid_xt = p->first;
00529 rd_ped = p->second;
00530 int sm_num = ecid_xt.getID1();
00531 int xt_num = ecid_xt.getID2();
00532 int yt_num = ecid_xt.getID3();
00533
00534 EcalPedestals::Item ped_item;
00535 ped_item.mean_x1 = rd_ped.getPedMeanG1() ;
00536 ped_item.mean_x6 = rd_ped.getPedMeanG6();
00537 ped_item.mean_x12 = rd_ped.getPedMeanG12();
00538 ped_item.rms_x1 = rd_ped.getPedRMSG1();
00539 ped_item.rms_x6 = rd_ped.getPedRMSG6() ;
00540 ped_item.rms_x12 = rd_ped.getPedRMSG12();
00541
00542
00543 float lowerCut = 999.;
00544 if(ecid_xt.getName()=="EB_crystal_number") { lowerCut = 2.0; }
00545 if(ecid_xt.getName()=="EE_crystal_number") { lowerCut = 2.5; }
00546 if ( (checkPedestalRMSGain12(&ped_item)>lowerCut) || (checkPedestalRMSGain6(&ped_item)>lowerCut) || (checkPedestalRMSGain1(&ped_item)>lowerCut) ) status_now = 3;
00547
00548
00549 if (
00550 ( checkPedestalValueGain12(&ped_item)>300 || checkPedestalValueGain12(&ped_item)<100 ) ||
00551 ( checkPedestalValueGain6(&ped_item)>300 || checkPedestalValueGain6(&ped_item)<100 ) ||
00552 ( checkPedestalValueGain1(&ped_item)>300 || checkPedestalValueGain1(&ped_item)<100 )
00553 ) status_now = 1;
00554
00555
00556 if ( checkPedestalRMSGain12(&ped_item)==0 || checkPedestalRMSGain6(&ped_item)==0 || checkPedestalRMSGain1(&ped_item)==0 ) status_now = 11;
00557
00558
00559 if ( checkPedestalValueGain12(&ped_item)<0 && checkPedestalValueGain6(&ped_item)<0 && checkPedestalValueGain1(&ped_item)>0 ) status_now = 9;
00560
00561
00562 if ( checkPedestalValueGain12(&ped_item)<0 && checkPedestalValueGain6(&ped_item)>0 && checkPedestalValueGain1(&ped_item)<0 ) status_now = 8;
00563
00564
00565 if ( checkPedestalValueGain12(&ped_item)<0 && checkPedestalValueGain6(&ped_item)>0 && checkPedestalValueGain1(&ped_item)>0 ) status_now = 8;
00566
00567
00568
00569 if(status_now>0) {
00570 if(ecid_xt.getName()=="EB_crystal_number") {
00571 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
00572 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(ebdetid);
00573 int thisFed = 600+elecId.dccId();
00574
00575 *ResFileEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
00576 << ped_item.mean_x12 << "\t\t" << ped_item.rms_x12 << "\t\t"
00577 << ped_item.mean_x6 << "\t\t" << ped_item.rms_x6 << "\t\t"
00578 << ped_item.mean_x1 << "\t\t" << ped_item.rms_x1 << std::endl;
00579
00580
00581
00582 bool isOld=false;
00583 for(theIter=maskedPedEB.begin(); theIter!=maskedPedEB.end(); ++theIter) {
00584 if ((*theIter).first==ebdetid) isOld=true;
00585 }
00586 if (!isOld) {
00587 *ResFileNewEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
00588 << ped_item.mean_x12 << "\t\t" << ped_item.rms_x12 << "\t\t"
00589 << ped_item.mean_x6 << "\t\t" << ped_item.rms_x6 << "\t\t"
00590 << ped_item.mean_x1 << "\t\t" << ped_item.rms_x1 << std::endl;
00591 }
00592
00593 } else {
00594 if(EEDetId::validDetId(xt_num,yt_num,sm_num)){
00595 EEDetId eedetid(xt_num,yt_num,sm_num);
00596 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(eedetid);
00597 int thisFed = 600+elecId.dccId();
00598 *ResFileEE << thisFed << "\t\t"
00599 << eedetid.ix() << "\t\t" << eedetid.iy() << "\t\t"
00600 << eedetid.zside() << "\t\t" << eedetid.hashedIndex() << "\t\t"
00601 << ped_item.mean_x12 << "\t\t" << ped_item.rms_x12 << "\t\t"
00602 << ped_item.mean_x6 << "\t\t" << ped_item.rms_x6 << "\t\t"
00603 << ped_item.mean_x1 << "\t\t" << ped_item.rms_x1 << std::endl;
00604
00605 bool isOld=false;
00606 for(theIter=maskedPedEE.begin(); theIter!=maskedPedEE.end(); ++theIter) {
00607 if ((*theIter).first==eedetid) isOld=true;
00608 }
00609 if (!isOld) {
00610 *ResFileNewEE << thisFed << "\t\t"
00611 << eedetid.ix() << "\t\t" << eedetid.iy() << "\t\t"
00612 << eedetid.zside() << "\t\t" << eedetid.hashedIndex() << "\t\t"
00613 << ped_item.mean_x12 << "\t\t" << ped_item.rms_x12 << "\t\t"
00614 << ped_item.mean_x6 << "\t\t" << ped_item.rms_x6 << "\t\t"
00615 << ped_item.mean_x1 << "\t\t" << ped_item.rms_x1 << std::endl;
00616 }
00617 }
00618 }
00619 }
00620 }
00621
00622
00623
00624
00625 typedef std::map<EcalLogicID, MonCrystalConsistencyDat>::const_iterator WGmonIter;
00626 MonCrystalConsistencyDat rd_wgain;
00627
00628 for (WGmonIter p = wrongGain_mon.begin(); p != wrongGain_mon.end(); p++) {
00629 ecid_xt = p->first;
00630 rd_wgain = p->second;
00631 int sm_num = ecid_xt.getID1();
00632 int xt_num = ecid_xt.getID2();
00633 int yt_num = ecid_xt.getID3();
00634
00635
00636 if (rd_wgain.getProblemsGainZero() > 1000) {
00637 if(ecid_xt.getName()=="EB_crystal_number") {
00638 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
00639 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(ebdetid);
00640 int thisFed = 600+elecId.dccId();
00641 *ResFileEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t" << "at gain zero" << std::endl;
00642
00643
00644 bool isOld=false;
00645 for(theIter=maskedPedEB.begin(); theIter!=maskedPedEB.end(); ++theIter) {
00646 if ((*theIter).first==ebdetid) isOld=true;
00647 }
00648 if (!isOld) {
00649 *ResFileNewEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t" << "at gain zero" << std::endl;
00650 }
00651
00652 } else {
00653 if(EEDetId::validDetId(xt_num,yt_num,sm_num)){
00654 EEDetId eedetid(xt_num,yt_num,sm_num);
00655 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(eedetid);
00656 int thisFed = 600+elecId.dccId();
00657 *ResFileEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
00658 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
00659 << eedetid.hashedIndex() << "\t\t"
00660 << "at gain zero" << std::endl;
00661
00662 bool isOld=false;
00663 for(theIter=maskedPedEE.begin(); theIter!=maskedPedEE.end(); ++theIter) {
00664 if ((*theIter).first==eedetid) isOld=true;
00665 }
00666 if (!isOld) {
00667 *ResFileNewEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
00668 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
00669 << eedetid.hashedIndex() << "\t\t"
00670 << "at gain zero" << std::endl;
00671 }
00672 }
00673 }
00674 }
00675 }
00676
00677 }
00678
00679
00680
00681
00682
00683
00684 void popcon::EcalChannelStatusHandler::laserAnalysis( std::map<EcalLogicID, MonLaserBlueDat> dataset_mon ) {
00685
00686
00687 laserMasking();
00688
00689
00690 std::map<DetId,float>::const_iterator theIter;
00691
00692 typedef std::map<EcalLogicID, MonLaserBlueDat>::const_iterator CImon;
00693 EcalLogicID ecid_xt;
00694 MonLaserBlueDat rd_blue;
00695
00696 for (CImon p = dataset_mon.begin(); p != dataset_mon.end(); p++) {
00697 ecid_xt = p->first;
00698 int sm_num = ecid_xt.getID1();
00699 int xt_num = ecid_xt.getID2();
00700 int yt_num = ecid_xt.getID3();
00701
00702
00703 int theFed = -100;
00704 int theTT = -100;
00705 int theIx = -100;
00706 if(ecid_xt.getName()=="EB_crystal_number") {
00707 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
00708 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(ebdetid);
00709 theFed = 600+elecId.dccId();
00710 theTT = elecId.towerId();
00711 }
00712 if(ecid_xt.getName()=="EE_crystal_number") {
00713 if(EEDetId::validDetId(xt_num,yt_num,sm_num)){
00714 EEDetId eedetid(xt_num,yt_num,sm_num);
00715 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(eedetid);
00716 theFed = 600+elecId.dccId();
00717 theIx = eedetid.ix();
00718 }
00719 }
00720
00721
00722 int thisFed=-100;
00723 if (ecid_xt.getName()=="EE_crystal_number") {
00724 if (theFed>600 && theFed<610) thisFed = theFed -601;
00725 if (theFed>645 && theFed<655) thisFed = theFed -646 + 9;
00726 }
00727 if (ecid_xt.getName()=="EB_crystal_number") { thisFed = theFed - 610; }
00728
00729
00730 int theTTieta =-100;
00731 int theTTiphi =-100;
00732 int theLM =-100;
00733 if(ecid_xt.getName()=="EB_crystal_number") {
00734 theTTieta = (theTT-1)/4 +1;
00735 theTTiphi = (theTT-1)%4 +1;
00736 if (theTTieta==1 || theTTiphi==3 || theTTiphi==4) theLM=0;
00737 if (theTTieta>1 && (theTTiphi==1 || theTTiphi==2)) theLM=1;
00738 }
00739 if( (ecid_xt.getName()=="EE_crystal_number") && (thisFed==7 || thisFed==16) ) {
00740 if (theIx<=50) theLM=0;
00741 if (theIx>50) theLM=1;
00742 }
00743
00744
00745 uint16_t status_now = 0;
00746 rd_blue = p->second;
00747 float myApdMean = rd_blue.getAPDMean();
00748
00749 if(ecid_xt.getName()=="EB_crystal_number") {
00750 if ( (myApdMean < 400) && isGoodLaserEBSm[thisFed][theLM] ) status_now = 2;
00751 }
00752
00753 if(ecid_xt.getName()=="EE_crystal_number") {
00754 if ( myApdMean<100 ) {
00755 if ( thisFed!=7 && thisFed!=16 && isGoodLaserEESm[thisFed][0] ) status_now = 2;
00756 if ( (thisFed==7 || thisFed==16) && isGoodLaserEESm[thisFed][theLM] ) status_now = 2;
00757 }
00758 }
00759
00760
00761 if (status_now>0) {
00762 if(ecid_xt.getName()=="EB_crystal_number") {
00763 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
00764 *ResFileEB << theFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t" << myApdMean << std::endl;
00765
00766
00767 bool isOld=false;
00768 for(theIter=maskedLaserEB.begin(); theIter!=maskedLaserEB.end(); ++theIter) {
00769 if ((*theIter).first==ebdetid) isOld=true;
00770 }
00771 if (!isOld) { *ResFileNewEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t" << myApdMean << std::endl; }
00772
00773 } else {
00774 if(EEDetId::validDetId(xt_num,yt_num,sm_num)){
00775 EEDetId eedetid(xt_num,yt_num,sm_num);
00776 *ResFileEE << theFed << "\t\t" << eedetid.ix() << "\t\t"
00777 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
00778 << eedetid.hashedIndex() << "\t\t" << myApdMean << std::endl;
00779
00780
00781 bool isOld=false;
00782 for(theIter=maskedLaserEE.begin(); theIter!=maskedLaserEE.end(); ++theIter) {
00783 if ((*theIter).first==eedetid) isOld=true;
00784 }
00785 if (!isOld) {
00786 *ResFileEE << theFed << "\t\t" << eedetid.ix() << "\t\t"
00787 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
00788 << eedetid.hashedIndex() << "\t\t" << myApdMean << std::endl;
00789 }
00790 }
00791 }
00792 }
00793 }
00794 }
00795
00796
00797
00798
00799
00800
00801
00802 void popcon::EcalChannelStatusHandler::cosmicsAnalysis( std::map<EcalLogicID, MonPedestalsOnlineDat> pedestalO_mon,
00803 std::map<EcalLogicID, MonCrystalConsistencyDat> wrongGain_mon,
00804 std::map<EcalLogicID, MonLaserBlueDat> laser_mon,
00805 std::map<EcalLogicID, MonOccupancyDat> occupancy_mon ) {
00806
00807
00808 pedOnlineMasking();
00809 laserMasking();
00810 physicsMasking();
00811
00812 std::map<DetId,float>::const_iterator theIter;
00813 std::map<DetId, float> badPedOnEB, badPedOnEE;
00814 std::map<DetId, float> badPedOnRmsEB, badPedOnRmsEE;
00815 std::map<DetId, float> badGainEB, badGainEE;
00816 std::map<DetId, float> badLaserEB, badLaserEE;
00817 std::map<DetId, float> badOccHighEB, badOccHighEE;
00818
00819 typedef std::map<EcalLogicID, MonPedestalsOnlineDat>::const_iterator CImonPedO;
00820 typedef std::map<EcalLogicID, MonCrystalConsistencyDat>::const_iterator CImonCons;
00821 typedef std::map<EcalLogicID, MonOccupancyDat>::const_iterator CImonOcc;
00822 typedef std::map<EcalLogicID, MonLaserBlueDat>::const_iterator CImonLaser;
00823 MonPedestalsOnlineDat rd_ped0;
00824 MonCrystalConsistencyDat rd_wgain;
00825 MonOccupancyDat rd_occ;
00826 MonLaserBlueDat rd_blue;
00827
00828
00829 EcalLogicID ecid_xt;
00830
00831
00832 float totEntriesAboveHighThrEB=0.;
00833 float totEntriesAboveHighThrEE=0.;
00834 for (CImonOcc p=occupancy_mon.begin(); p!=occupancy_mon.end(); p++) {
00835 ecid_xt = p->first;
00836 rd_occ = p->second;
00837 float highOcc=rd_occ.getEventsOverHighThreshold();
00838 if (ecid_xt.getName()=="EB_crystal_number" && highOcc>-1) totEntriesAboveHighThrEB = totEntriesAboveHighThrEB + highOcc;
00839 if (ecid_xt.getName()=="EE_crystal_number" && highOcc>-1) totEntriesAboveHighThrEE = totEntriesAboveHighThrEE + highOcc;
00840 }
00841
00842
00843
00844 for (CImonPedO p = pedestalO_mon.begin(); p != pedestalO_mon.end(); p++) {
00845
00846 bool isWrong = false;
00847 ecid_xt = p->first;
00848 rd_ped0 = p->second;
00849 int sm_num=ecid_xt.getID1();
00850 int xt_num=ecid_xt.getID2();
00851 int yt_num=ecid_xt.getID3();
00852
00853 EcalPedestals::Item ped_item;
00854 ped_item.mean_x12 = rd_ped0.getADCMeanG12();
00855 ped_item.rms_x12 = rd_ped0.getADCRMSG12();
00856
00857 float lowerCut=999.;
00858 if(ecid_xt.getName()=="EB_crystal_number") { lowerCut = 2.0; }
00859 if(ecid_xt.getName()=="EE_crystal_number") { lowerCut = 2.5; }
00860 if ( checkPedestalRMSGain12(&ped_item)>lowerCut ) isWrong = true;
00861 if ( checkPedestalValueGain12(&ped_item)>300 ) isWrong = true;
00862 if ( checkPedestalValueGain12(&ped_item)<100 ) isWrong = true;
00863 if ( checkPedestalRMSGain12(&ped_item)==0 ) isWrong = true;
00864
00865
00866 if (isWrong) {
00867 if(ecid_xt.getName()=="EB_crystal_number") {
00868 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
00869 theIter = badPedOnEB.find(ebdetid);
00870 if (theIter==badPedOnEB.end()) {
00871 badPedOnEB.insert (std::pair<DetId, float>(ebdetid, rd_ped0.getADCMeanG12()));
00872 badPedOnRmsEB.insert(std::pair<DetId, float>(ebdetid, rd_ped0.getADCRMSG12()));
00873 }
00874 } else {
00875 if(EEDetId::validDetId(xt_num,yt_num,sm_num)){
00876 EEDetId eedetid(xt_num,yt_num,sm_num);
00877 theIter = badPedOnEE.find(eedetid);
00878 if (theIter==badPedOnEE.end()) {
00879 badPedOnEE.insert (std::pair<DetId, float>(eedetid, rd_ped0.getADCMeanG12()));
00880 badPedOnRmsEE.insert(std::pair<DetId, float>(eedetid, rd_ped0.getADCRMSG12()));
00881 }
00882 }
00883 }
00884 }
00885 }
00886
00887
00888
00889 for (CImonCons p = wrongGain_mon.begin(); p != wrongGain_mon.end(); p++) {
00890
00891 bool isWrong = false;
00892 ecid_xt = p->first;
00893 rd_wgain = p->second;
00894 int sm_num = ecid_xt.getID1();
00895 int xt_num = ecid_xt.getID2();
00896 int yt_num = ecid_xt.getID3();
00897
00898 if (rd_wgain.getProblemsGainZero() > 1000) {isWrong = true; }
00899
00900 if (isWrong) {
00901 if(ecid_xt.getName()=="EB_crystal_number") {
00902 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
00903 theIter = badGainEB.find(ebdetid);
00904 if (theIter==badGainEB.end()) badGainEB.insert(std::pair<DetId, float>(ebdetid, 999.));
00905 } else {
00906 if(EEDetId::validDetId(xt_num,yt_num,sm_num)){
00907 EEDetId eedetid(xt_num,yt_num,sm_num);
00908 theIter = badGainEE.find(eedetid);
00909 if (theIter==badGainEE.end()) badGainEE.insert(std::pair<DetId, float>(eedetid, 999.));
00910 }
00911 }
00912 }
00913 }
00914
00915
00916
00917 for (CImonOcc p=occupancy_mon.begin(); p!=occupancy_mon.end(); p++) {
00918
00919
00920 ecid_xt = p->first;
00921 int sm_num = ecid_xt.getID1();
00922 int xt_num = ecid_xt.getID2();
00923 int yt_num = ecid_xt.getID3();
00924
00925
00926 rd_occ = p->second;
00927
00928 bool isWrong = false;
00929 float occAvg = -999.;
00930 if ( ecid_xt.getName()=="EB_crystal_number" ) {
00931 occAvg = rd_occ.getEventsOverHighThreshold()/totEntriesAboveHighThrEB;
00932 if (occAvg>0.001) isWrong=true;
00933 }
00934 if ( ecid_xt.getName()=="EE_crystal_number" ) {
00935 occAvg = rd_occ.getEventsOverHighThreshold()/totEntriesAboveHighThrEE;
00936 if (occAvg>0.001) isWrong=true;
00937 }
00938
00939 if (isWrong) {
00940 if(ecid_xt.getName()=="EB_crystal_number") {
00941 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
00942 theIter = badOccHighEB.find(ebdetid);
00943 if (theIter==badOccHighEB.end()) badOccHighEB.insert(std::pair<DetId, float>(ebdetid, occAvg));
00944 } else {
00945 if(EEDetId::validDetId(xt_num,yt_num,sm_num)){
00946 EEDetId eedetid(xt_num,yt_num,sm_num);
00947 theIter = badOccHighEE.find(eedetid);
00948 if (theIter==badOccHighEE.end()) badOccHighEE.insert(std::pair<DetId, float>(eedetid, occAvg));
00949 }
00950 }
00951 }
00952 }
00953
00954
00955
00956 for (CImonLaser p=laser_mon.begin(); p!=laser_mon.end(); p++) {
00957
00958
00959 ecid_xt = p->first;
00960 int sm_num = ecid_xt.getID1();
00961 int xt_num = ecid_xt.getID2();
00962 int yt_num = ecid_xt.getID3();
00963
00964
00965 int theFed = -100;
00966 int theTT = -100;
00967 int theIx = -100;
00968 if(ecid_xt.getName()=="EB_crystal_number") {
00969 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
00970 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(ebdetid);
00971 theFed = 600+elecId.dccId();
00972 theTT = elecId.towerId();
00973 }
00974 if(ecid_xt.getName()=="EE_crystal_number") {
00975 if(EEDetId::validDetId(xt_num,yt_num,sm_num)){
00976 EEDetId eedetid(xt_num,yt_num,sm_num);
00977 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(eedetid);
00978 theFed = 600+elecId.dccId();
00979 theIx = eedetid.ix();
00980 }
00981 }
00982
00983
00984 int thisFed=-100;
00985 if (ecid_xt.getName()=="EE_crystal_number") {
00986 if (theFed>600 && theFed<610) thisFed = theFed -601;
00987 if (theFed>645 && theFed<655) thisFed = theFed -646 + 9;
00988 }
00989 if (ecid_xt.getName()=="EB_crystal_number") { thisFed = theFed - 610; }
00990
00991
00992 int theTTieta =-100;
00993 int theTTiphi =-100;
00994 int theLM =-100;
00995 if(ecid_xt.getName()=="EB_crystal_number") {
00996 theTTieta = (theTT-1)/4 +1;
00997 theTTiphi = (theTT-1)%4 +1;
00998 if (theTTieta==1 || theTTiphi==3 || theTTiphi==4) theLM=0;
00999 if (theTTieta>1 && (theTTiphi==1 || theTTiphi==2)) theLM=1;
01000 }
01001 if( (ecid_xt.getName()=="EE_crystal_number") && (thisFed==7 || thisFed==16) ) {
01002 if (theIx<=50) theLM=0;
01003 if (theIx>50) theLM=1;
01004 }
01005
01006
01007 rd_blue = p->second;
01008 float myApdMean = rd_blue.getAPDMean();
01009
01010 bool isWrong = false;
01011 if(ecid_xt.getName()=="EB_crystal_number") {
01012 if ( (myApdMean < 400) && isGoodLaserEBSm[thisFed][theLM] ) isWrong=true;
01013 }
01014 if(ecid_xt.getName()=="EE_crystal_number") {
01015 if ( myApdMean<100 ) {
01016 if ( thisFed!=7 && thisFed!=16 && isGoodLaserEESm[thisFed][0] ) isWrong=true;
01017 if ( (thisFed==7 || thisFed==16) && isGoodLaserEESm[thisFed][theLM] ) isWrong=true;
01018 }
01019 }
01020
01021 if (isWrong) {
01022 if(ecid_xt.getName()=="EB_crystal_number") {
01023 EBDetId ebdetid(sm_num,xt_num,EBDetId::SMCRYSTALMODE);
01024 theIter = badLaserEB.find(ebdetid);
01025 if (theIter==badLaserEB.end()) badLaserEB.insert(std::pair<DetId, float>(ebdetid, myApdMean));
01026 } else {
01027 if(EEDetId::validDetId(xt_num,yt_num,sm_num)){
01028 EEDetId eedetid(xt_num,yt_num,sm_num);
01029 theIter = badLaserEE.find(eedetid);
01030 if (theIter==badLaserEE.end()) badLaserEE.insert(std::pair<DetId, float>(eedetid, myApdMean));
01031 }
01032 }
01033 }
01034 }
01035
01036
01037
01038 std::map<DetId, float>::const_iterator theIterPedOn;
01039 std::map<DetId, float>::const_iterator theIterPedOnRms;
01040 std::map<DetId, float>::const_iterator theIterGain;
01041 std::map<DetId, float>::const_iterator theIterLaser;
01042 std::map<DetId, float>::const_iterator theIterOccHigh;
01043
01044
01045
01046 for(theIterPedOn=badPedOnEB.begin(); theIterPedOn!=badPedOnEB.end(); ++theIterPedOn) {
01047 float thePedOn = (*theIterPedOn).second;
01048 float thePedOnRms = 9999.;
01049 float theGain = 9999.;
01050 float theLaser = 9999.;
01051 float theOccHigh = 9999.;
01052
01053 theIterPedOnRms = badPedOnRmsEB.find((*theIterPedOn).first);
01054 theIterGain = badGainEB.find ((*theIterPedOn).first);
01055 theIterLaser = badLaserEB.find ((*theIterPedOn).first);
01056 theIterOccHigh = badOccHighEB.find ((*theIterPedOn).first);
01057
01058 if (theIterPedOnRms!=badPedOnRmsEB.end()) thePedOnRms = (*theIterPedOnRms).second;
01059 if (theIterLaser!=badLaserEB.end()) theLaser = (*theIterLaser).second;
01060 if (theIterOccHigh!=badOccHighEB.end()) theOccHigh = (*theIterOccHigh).second;
01061
01062 int thisFed=-100;
01063 EBDetId ebdetid((*theIterPedOn).first);
01064 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(ebdetid);
01065 thisFed = 600+elecId.dccId();
01066
01067
01068 bool isNew=false;
01069 bool isNewPed=true;
01070 bool isNewLaser=true;
01071 bool isNewPhysics=true;
01072 for(theIter=maskedOnlinePedEB.begin(); theIter!=maskedOnlinePedEB.end(); ++theIter) { if ((*theIter).first==ebdetid) isNewPed=false; }
01073
01074 for(theIter=maskedLaserEB.begin(); theIter!=maskedLaserEB.end(); ++theIter) { if ((*theIter).first==ebdetid) isNewLaser=false; }
01075
01076 for(theIter=maskedPhysicsEB.begin(); theIter!=maskedPhysicsEB.end(); ++theIter) { if ((*theIter).first==ebdetid) isNewPhysics=false; }
01077
01078 if ( isNewPed || (theLaser!=9999 && isNewLaser) || (theOccHigh!=9999 && isNewPhysics) ) isNew=true;
01079
01080 if (theIterGain!=badGainEB.end()) {
01081 *ResFileEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
01082 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01083 << "gainZero" << "\t\t" << theLaser << "\t\t"
01084 << theOccHigh << std::endl;
01085
01086 if (isNew) {
01087 *ResFileNewEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
01088 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01089 << "gainZero" << "\t\t" << theLaser << "\t\t"
01090 << theOccHigh << std::endl;
01091
01092 float thisEtaFill=float(0);
01093 if (ebdetid.ieta()>0) thisEtaFill = ebdetid.ieta() - 0.5;
01094 if (ebdetid.ieta()<0) thisEtaFill = ebdetid.ieta();
01095 newBadEB_ -> Fill( (ebdetid.iphi()-0.5), thisEtaFill, 2);
01096 }
01097 } else {
01098 *ResFileEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
01099 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01100 << theGain << "\t\t" << theLaser << "\t\t"
01101 << theOccHigh << std::endl;
01102
01103 if (isNew) {
01104 *ResFileNewEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
01105 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01106 << theGain << "\t\t" << theLaser << "\t\t"
01107 << theOccHigh << std::endl;
01108
01109 float thisEtaFill=float(0);
01110 if (ebdetid.ieta()>0) thisEtaFill = ebdetid.ieta() - 0.5;
01111 if (ebdetid.ieta()<0) thisEtaFill = ebdetid.ieta();
01112 newBadEB_ -> Fill( (ebdetid.iphi()-0.5), thisEtaFill, 2);
01113 }
01114 }
01115 }
01116
01117
01118
01119
01120 for(theIterLaser=badLaserEB.begin(); theIterLaser!=badLaserEB.end(); ++theIterLaser) {
01121
01122
01123 theIterPedOnRms = badPedOnRmsEB.find((*theIterLaser).first);
01124 if (theIterPedOnRms!=badPedOnRmsEB.end()) continue;
01125
01126 float thePedOn = 9999.;
01127 float thePedOnRms = 9999.;
01128 float theGain = 9999.;
01129 float theLaser = (*theIterLaser).second;
01130 float theOccHigh = 9999.;
01131
01132 theIterGain = badGainEB.find ((*theIterLaser).first);
01133 theIterOccHigh = badOccHighEB.find ((*theIterLaser).first);
01134 if (theIterOccHigh!=badOccHighEB.end()) theOccHigh = (*theIterOccHigh).second;
01135
01136 int thisFed=-100;
01137 EBDetId ebdetid((*theIterLaser).first);
01138 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(ebdetid);
01139 thisFed = 600+elecId.dccId();
01140
01141
01142 bool isNew=false;
01143 bool isNewPed=true;
01144 bool isNewLaser=true;
01145 bool isNewPhysics=true;
01146 for(theIter=maskedOnlinePedEB.begin(); theIter!=maskedOnlinePedEB.end(); ++theIter) { if ((*theIter).first==ebdetid) isNewPed=false; }
01147
01148 for(theIter=maskedLaserEB.begin(); theIter!=maskedLaserEB.end(); ++theIter) { if ((*theIter).first==ebdetid) isNewLaser=false; }
01149
01150 for(theIter=maskedPhysicsEB.begin(); theIter!=maskedPhysicsEB.end(); ++theIter) { if ((*theIter).first==ebdetid) isNewPhysics=false; }
01151
01152 if ( (isNewPed && theIterGain!=badGainEB.end() ) || (isNewLaser) || (theOccHigh!=9999 && isNewPhysics) ) isNew=true;
01153
01154 if (theIterGain!=badGainEB.end()) {
01155 *ResFileEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
01156 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01157 << "gainZero" << "\t\t" << theLaser << "\t\t"
01158 << theOccHigh << std::endl;
01159
01160 if (isNew) {
01161 *ResFileNewEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
01162 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01163 << "gainZero" << "\t\t" << theLaser << "\t\t"
01164 << theOccHigh << std::endl;
01165
01166 float thisEtaFill=float(0);
01167 if (ebdetid.ieta()>0) thisEtaFill = ebdetid.ieta() - 0.5;
01168 if (ebdetid.ieta()<0) thisEtaFill = ebdetid.ieta();
01169 newBadEB_ -> Fill( (ebdetid.iphi()-0.5), thisEtaFill, 2);
01170 }
01171 } else {
01172 *ResFileEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
01173 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01174 << theGain << "\t\t" << theLaser << "\t\t"
01175 << theOccHigh << std::endl;
01176
01177 if (isNew) {
01178 *ResFileNewEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
01179 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01180 << theGain << "\t\t" << theLaser << "\t\t"
01181 << theOccHigh << std::endl;
01182
01183 float thisEtaFill=float(0);
01184 if (ebdetid.ieta()>0) thisEtaFill = ebdetid.ieta() - 0.5;
01185 if (ebdetid.ieta()<0) thisEtaFill = ebdetid.ieta();
01186 newBadEB_ -> Fill( (ebdetid.iphi()-0.5), thisEtaFill, 2);
01187 }
01188 }
01189 }
01190
01191
01192
01193 for(theIterOccHigh = badOccHighEB.begin(); theIterOccHigh != badOccHighEB.end(); ++theIterOccHigh) {
01194
01195
01196 theIterPedOnRms = badPedOnRmsEB.find((*theIterOccHigh).first);
01197 theIterLaser = badLaserEB.find ((*theIterOccHigh).first);
01198 if (theIterPedOnRms!=badPedOnRmsEB.end()) continue;
01199 if (theIterLaser!=badLaserEB.end()) continue;
01200
01201 float thePedOn = 9999.;
01202 float thePedOnRms = 9999.;
01203 float theGain = 9999.;
01204 float theLaser = 9999.;
01205 float theOccHigh = (*theIterOccHigh).second;
01206 theIterGain = badGainEB.find ((*theIterOccHigh).first);
01207
01208 int thisFed=-100;
01209 EBDetId ebdetid((*theIterOccHigh).first);
01210 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(ebdetid);
01211 thisFed = 600+elecId.dccId();
01212
01213
01214 bool isNew=false;
01215 bool isNewPed=true;
01216 bool isNewPhysics=true;
01217 for(theIter=maskedOnlinePedEB.begin(); theIter!=maskedOnlinePedEB.end(); ++theIter) { if ((*theIter).first==ebdetid) isNewPed=false; }
01218
01219 for(theIter=maskedPhysicsEB.begin(); theIter!=maskedPhysicsEB.end(); ++theIter) { if ((*theIter).first==ebdetid) isNewPhysics=false; }
01220
01221 if ( (isNewPed && theIterGain!=badGainEB.end() ) || (isNewPhysics) ) isNew=true;
01222
01223 if (theIterGain!=badGainEB.end()) {
01224 *ResFileEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
01225 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01226 << "gainZero" << "\t\t" << theLaser << "\t\t"
01227 << theOccHigh << std::endl;
01228
01229 if (isNew) {
01230 *ResFileNewEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
01231 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01232 << "gainZero" << "\t\t" << theLaser << "\t\t"
01233 << theOccHigh << std::endl;
01234
01235 float thisEtaFill=float(0);
01236 if (ebdetid.ieta()>0) thisEtaFill = ebdetid.ieta() - 0.5;
01237 if (ebdetid.ieta()<0) thisEtaFill = ebdetid.ieta();
01238 newBadEB_ -> Fill( (ebdetid.iphi()-0.5), thisEtaFill, 2);
01239 }
01240 } else {
01241 *ResFileEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
01242 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01243 << theGain << "\t\t" << theLaser << "\t\t"
01244 << theOccHigh << std::endl;
01245
01246 if (isNew) {
01247 *ResFileNewEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
01248 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01249 << theGain << "\t\t" << theLaser << "\t\t"
01250 << theOccHigh << std::endl;
01251
01252 float thisEtaFill=float(0);
01253 if (ebdetid.ieta()>0) thisEtaFill = ebdetid.ieta() - 0.5;
01254 if (ebdetid.ieta()<0) thisEtaFill = ebdetid.ieta();
01255 newBadEB_ -> Fill( (ebdetid.iphi()-0.5), thisEtaFill, 2);
01256 }
01257 }
01258 }
01259
01260
01261 for(theIterGain = badGainEB.begin(); theIterGain != badGainEB.end(); ++theIterGain) {
01262
01263
01264 theIterPedOnRms = badPedOnRmsEB.find((*theIterGain).first);
01265 theIterLaser = badLaserEB.find ((*theIterGain).first);
01266 theIterOccHigh = badOccHighEB.find ((*theIterGain).first);
01267 if (theIterPedOnRms!=badPedOnRmsEB.end()) continue;
01268 if (theIterLaser!=badLaserEB.end()) continue;
01269 if (theIterOccHigh!=badOccHighEB.end()) continue;
01270
01271 float thePedOn = 9999.;
01272 float thePedOnRms = 9999.;
01273 float theLaser = 9999.;
01274 float theOccHigh = 9999.;
01275
01276 int thisFed=-100;
01277 EBDetId ebdetid((*theIterGain).first);
01278 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(ebdetid);
01279 thisFed = 600+elecId.dccId();
01280
01281
01282 bool isNew=false;
01283 bool isNewPed=true;
01284 for(theIter=maskedOnlinePedEB.begin(); theIter!=maskedOnlinePedEB.end(); ++theIter) { if ((*theIter).first==ebdetid) isNewPed=false; }
01285
01286 if ( isNewPed && theIterGain!=badGainEB.end() ) isNew=true;
01287
01288 *ResFileEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
01289 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01290 << "gainZero" << "\t\t" << theLaser << "\t\t"
01291 << theOccHigh << std::endl;
01292
01293 if (isNew) {
01294 *ResFileNewEB << thisFed << "\t\t" << ebdetid.ic() << "\t\t" << ebdetid.hashedIndex() << "\t\t"
01295 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01296 << "gainZero" << "\t\t" << theLaser << "\t\t"
01297 << theOccHigh << std::endl;
01298
01299 float thisEtaFill=float(0);
01300 if (ebdetid.ieta()>0) thisEtaFill = ebdetid.ieta() - 0.5;
01301 if (ebdetid.ieta()<0) thisEtaFill = ebdetid.ieta();
01302 newBadEB_ -> Fill( (ebdetid.iphi()-0.5), thisEtaFill, 2);
01303 }
01304 }
01305
01306
01307
01308 for(theIterPedOn = badPedOnEE.begin(); theIterPedOn != badPedOnEE.end(); ++theIterPedOn) {
01309
01310 float thePedOn = (*theIterPedOn).second;
01311 float thePedOnRms = 9999.;
01312 float theGain = 9999.;
01313 float theLaser = 9999.;
01314 float theOccHigh = 9999.;
01315
01316 theIterPedOnRms = badPedOnRmsEE.find((*theIterPedOn).first);
01317 theIterGain = badGainEE.find ((*theIterPedOn).first);
01318 theIterLaser = badLaserEE.find ((*theIterPedOn).first);
01319 theIterOccHigh = badOccHighEE.find ((*theIterPedOn).first);
01320
01321 if (theIterPedOnRms!=badPedOnRmsEE.end()) thePedOnRms = (*theIterPedOnRms).second;
01322 if (theIterLaser !=badLaserEE.end()) theLaser = (*theIterLaser).second;
01323 if (theIterOccHigh !=badOccHighEE.end()) theOccHigh = (*theIterOccHigh).second;
01324
01325 int thisFed=-100;
01326 EEDetId eedetid((*theIterPedOn).first);
01327 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(eedetid);
01328 thisFed = 600+elecId.dccId();
01329
01330
01331 bool isNew=false;
01332 bool isNewPed=true;
01333 bool isNewLaser=true;
01334 bool isNewPhysics=true;
01335 for(theIter=maskedOnlinePedEE.begin(); theIter!=maskedOnlinePedEE.end(); ++theIter) { if ((*theIter).first==eedetid) isNewPed=false; }
01336
01337 for(theIter=maskedLaserEE.begin(); theIter!=maskedLaserEE.end(); ++theIter) { if ((*theIter).first==eedetid) isNewLaser=false; }
01338
01339 for(theIter=maskedPhysicsEE.begin(); theIter!=maskedPhysicsEE.end(); ++theIter) { if ((*theIter).first==eedetid) isNewPhysics=false; }
01340
01341 if ( isNewPed || (theLaser!=9999 && isNewLaser) || (theOccHigh!=9999 && isNewPhysics) ) isNew=true;
01342
01343 if (theIterGain!=badGainEE.end()) {
01344 *ResFileEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
01345 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
01346 << eedetid.hashedIndex() << "\t\t"
01347 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01348 << "gainZero" << "\t\t" << theLaser << "\t\t"
01349 << theOccHigh << std::endl;
01350
01351 if (isNew) {
01352 *ResFileNewEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
01353 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
01354 << eedetid.hashedIndex() << "\t\t"
01355 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01356 << "gainZero" << "\t\t" << theLaser << "\t\t"
01357 << theOccHigh << std::endl;
01358
01359 if (eedetid.zside()>0) newBadEEP_ -> Fill( (eedetid.ix()-0.5), (eedetid.iy()-0.5), 4);
01360 if (eedetid.zside()<0) newBadEEM_ -> Fill( (eedetid.ix()-0.5), (eedetid.iy()-0.5), 4);
01361 }
01362 } else {
01363 *ResFileEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
01364 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
01365 << eedetid.hashedIndex() << "\t\t"
01366 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01367 << theGain << "\t\t" << theLaser << "\t\t"
01368 << theOccHigh << std::endl;
01369
01370 if (isNew) {
01371 *ResFileNewEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
01372 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
01373 << eedetid.hashedIndex() << "\t\t"
01374 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01375 << theGain << "\t\t" << theLaser << "\t\t"
01376 << theOccHigh << std::endl;
01377
01378 if (eedetid.zside()>0) newBadEEP_ -> Fill( (eedetid.ix()-0.5), (eedetid.iy()-0.5), 4);
01379 if (eedetid.zside()<0) newBadEEM_ -> Fill( (eedetid.ix()-0.5), (eedetid.iy()-0.5), 4);
01380 }
01381 }
01382 }
01383
01384
01385
01386 for(theIterLaser = badLaserEE.begin(); theIterLaser != badLaserEE.end(); ++theIterLaser) {
01387
01388
01389 theIterPedOnRms = badPedOnRmsEE.find((*theIterLaser).first);
01390 if (theIterPedOnRms!=badPedOnRmsEE.end()) continue;
01391
01392 float thePedOn = 9999.;
01393 float thePedOnRms = 9999.;
01394 float theGain = 9999.;
01395 float theLaser = (*theIterLaser).second;
01396 float theOccHigh = 9999.;
01397
01398 theIterGain = badGainEE.find ((*theIterLaser).first);
01399 theIterOccHigh = badOccHighEE.find ((*theIterLaser).first);
01400 if (theIterOccHigh!=badOccHighEE.end()) theOccHigh = (*theIterOccHigh).second;
01401
01402 int thisFed=-100;
01403 EEDetId eedetid((*theIterLaser).first);
01404 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(eedetid);
01405 thisFed = 600+elecId.dccId();
01406
01407
01408 bool isNew=false;
01409 bool isNewPed=true;
01410 bool isNewLaser=true;
01411 bool isNewPhysics=true;
01412 for(theIter=maskedOnlinePedEE.begin(); theIter!=maskedOnlinePedEE.end(); ++theIter) { if ((*theIter).first==eedetid) isNewPed=false; }
01413
01414 for(theIter=maskedLaserEE.begin(); theIter!=maskedLaserEE.end(); ++theIter) { if ((*theIter).first==eedetid) isNewLaser=false; }
01415
01416 for(theIter=maskedPhysicsEE.begin(); theIter!=maskedPhysicsEE.end(); ++theIter) { if ((*theIter).first==eedetid) isNewPhysics=false; }
01417
01418 if ( (isNewPed && theIterGain!=badGainEE.end() ) || (isNewLaser) || (theOccHigh!=9999 && isNewPhysics) ) isNew=true;
01419
01420 if (theIterGain!=badGainEE.end()) {
01421 *ResFileEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
01422 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
01423 << eedetid.hashedIndex() << "\t\t"
01424 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01425 << "gainZero" << "\t\t" << theLaser << "\t\t"
01426 << theOccHigh << std::endl;
01427
01428 if (isNew) {
01429 *ResFileNewEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
01430 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
01431 << eedetid.hashedIndex() << "\t\t"
01432 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01433 << "gainZero" << "\t\t" << theLaser << "\t\t"
01434 << theOccHigh << std::endl;
01435
01436 if (eedetid.zside()>0) newBadEEP_ -> Fill( (eedetid.ix()-0.5), (eedetid.iy()-0.5), 4);
01437 if (eedetid.zside()<0) newBadEEM_ -> Fill( (eedetid.ix()-0.5), (eedetid.iy()-0.5), 4);
01438 }
01439 } else {
01440 *ResFileEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
01441 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
01442 << eedetid.hashedIndex() << "\t\t"
01443 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01444 << theGain << "\t\t" << theLaser << "\t\t"
01445 << theOccHigh << std::endl;
01446
01447 if (isNew) {
01448 *ResFileNewEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
01449 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
01450 << eedetid.hashedIndex() << "\t\t"
01451 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01452 << theGain << "\t\t" << theLaser << "\t\t"
01453 << theOccHigh << std::endl;
01454
01455 if (eedetid.zside()>0) newBadEEP_ -> Fill( (eedetid.ix()-0.5), (eedetid.iy()-0.5), 4);
01456 if (eedetid.zside()<0) newBadEEM_ -> Fill( (eedetid.ix()-0.5), (eedetid.iy()-0.5), 4);
01457 }
01458 }
01459 }
01460
01461
01462
01463 for(theIterOccHigh = badOccHighEE.begin(); theIterOccHigh != badOccHighEE.end(); ++theIterOccHigh) {
01464
01465
01466 theIterPedOnRms = badPedOnRmsEE.find((*theIterOccHigh).first);
01467 theIterLaser = badLaserEE.find ((*theIterOccHigh).first);
01468 if (theIterPedOnRms!=badPedOnRmsEE.end()) continue;
01469 if (theIterLaser!=badLaserEE.end()) continue;
01470
01471 float thePedOn = 9999.;
01472 float thePedOnRms = 9999.;
01473 float theGain = 9999.;
01474 float theLaser = 9999.;
01475 float theOccHigh = (*theIterOccHigh).second;
01476 theIterGain = badGainEE.find ((*theIterOccHigh).first);
01477
01478 int thisFed=-100;
01479 EEDetId eedetid((*theIterOccHigh).first);
01480 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(eedetid);
01481 thisFed = 600+elecId.dccId();
01482
01483
01484 bool isNew=false;
01485 bool isNewPed=true;
01486 bool isNewPhysics=true;
01487 for(theIter=maskedOnlinePedEE.begin(); theIter!=maskedOnlinePedEE.end(); ++theIter) { if ((*theIter).first==eedetid) isNewPed=false; }
01488
01489 for(theIter=maskedPhysicsEE.begin(); theIter!=maskedPhysicsEE.end(); ++theIter) { if ((*theIter).first==eedetid) isNewPhysics=false; }
01490
01491 if ( (isNewPed && theIterGain!=badGainEE.end() ) || (isNewPhysics) ) isNew=true;
01492
01493 if (theIterGain!=badGainEE.end()) {
01494 *ResFileEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
01495 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
01496 << eedetid.hashedIndex() << "\t\t"
01497 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01498 << "gainZero" << "\t\t" << theLaser << "\t\t"
01499 << theOccHigh << std::endl;
01500
01501 if (isNew) {
01502 *ResFileNewEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
01503 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
01504 << eedetid.hashedIndex() << "\t\t"
01505 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01506 << "gainZero" << "\t\t" << theLaser << "\t\t"
01507 << theOccHigh << std::endl;
01508
01509 if (eedetid.zside()>0) newBadEEP_ -> Fill( (eedetid.ix()-0.5), (eedetid.iy()-0.5), 4);
01510 if (eedetid.zside()<0) newBadEEM_ -> Fill( (eedetid.ix()-0.5), (eedetid.iy()-0.5), 4);
01511 }
01512 } else {
01513 *ResFileEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
01514 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
01515 << eedetid.hashedIndex() << "\t\t"
01516 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01517 << theGain << "\t\t" << theLaser << "\t\t"
01518 << theOccHigh << std::endl;
01519
01520 if (isNew) {
01521 *ResFileNewEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
01522 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
01523 << eedetid.hashedIndex() << "\t\t"
01524 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01525 << theGain << "\t\t" << theLaser << "\t\t"
01526 << theOccHigh << std::endl;
01527
01528 if (eedetid.zside()>0) newBadEEP_ -> Fill( (eedetid.ix()-0.5), (eedetid.iy()-0.5), 4);
01529 if (eedetid.zside()<0) newBadEEM_ -> Fill( (eedetid.ix()-0.5), (eedetid.iy()-0.5), 4);
01530 }
01531 }
01532 }
01533
01534
01535 for(theIterGain = badGainEE.begin(); theIterGain != badGainEE.end(); ++theIterGain) {
01536
01537
01538 theIterPedOnRms = badPedOnRmsEE.find((*theIterGain).first);
01539 theIterLaser = badLaserEE.find ((*theIterGain).first);
01540 theIterOccHigh = badOccHighEE.find ((*theIterGain).first);
01541 if (theIterPedOnRms!=badPedOnRmsEE.end()) continue;
01542 if (theIterLaser!=badLaserEE.end()) continue;
01543 if (theIterOccHigh!=badOccHighEE.end()) continue;
01544 float thePedOn = 9999.;
01545 float thePedOnRms = 9999.;
01546 float theLaser = 9999.;
01547 float theOccHigh = 9999.;
01548
01549 int thisFed=-100;
01550 EEDetId eedetid((*theIterGain).first);
01551 EcalElectronicsId elecId = ecalElectronicsMap_.getElectronicsId(eedetid);
01552 thisFed = 600+elecId.dccId();
01553
01554
01555 bool isNew=false;
01556 bool isNewPed=true;
01557 for(theIter=maskedOnlinePedEE.begin(); theIter!=maskedOnlinePedEE.end(); ++theIter) { if ((*theIter).first==eedetid) isNewPed=false; }
01558
01559 if ( isNewPed && theIterGain!=badGainEE.end() ) isNew=true;
01560
01561 *ResFileEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
01562 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
01563 << eedetid.hashedIndex() << "\t\t"
01564 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01565 << "gainZero" << "\t\t" << theLaser << "\t\t"
01566 << theOccHigh << std::endl;
01567
01568 if (isNew) {
01569 *ResFileNewEE << thisFed << "\t\t" << eedetid.ix() << "\t\t"
01570 << eedetid.iy() << "\t\t" << eedetid.zside() << "\t\t"
01571 << eedetid.hashedIndex() << "\t\t"
01572 << thePedOn << "\t\t" << thePedOnRms << "\t\t"
01573 << "gainZero" << "\t\t" << theLaser << "\t\t"
01574 << theOccHigh << std::endl;
01575
01576 if (eedetid.zside()>0) newBadEEP_ -> Fill( (eedetid.ix()-0.5), (eedetid.iy()-0.5), 4);
01577 if (eedetid.zside()<0) newBadEEM_ -> Fill( (eedetid.ix()-0.5), (eedetid.iy()-0.5), 4);
01578 }
01579 }
01580 }
01581
01582
01583
01584
01585
01586 void popcon::EcalChannelStatusHandler::getNewObjects() {
01587
01588 std::ostringstream ss;
01589 ss << "ECAL ";
01590
01591
01592 unsigned int max_since=0;
01593 max_since=static_cast<unsigned int>(tagInfo().lastInterval.first);
01594 std::cout << "max_since : " << max_since << std::endl;
01595
01596 std::cout << "Retrieving run list from ONLINE DB ... " << std::endl;
01597 econn = new EcalCondDBInterface( m_sid, m_user, m_pass );
01598 std::cout << "Connection done" << std::endl;
01599
01600 if (!econn) {
01601 std::cout << " Problem with OMDS: connection parameters " << m_sid << "/" << m_user << "/" << m_pass << std::endl;
01602 throw cms::Exception("OMDS not available");
01603 }
01604
01605
01606 newBadEB_ = new TProfile2D("newBadEB_", "new bad channels, EB", 360, 0., 360., 170, -85., 85.);
01607 newBadEEP_ = new TProfile2D("newBad_EEP_","new bad channels, EE+", 100, 0., 100., 100, 0., 100.);
01608 newBadEEM_ = new TProfile2D("newBad_EEM_","new bad channels, EE-", 100, 0., 100., 100, 0., 100.);
01609
01610
01611 RunList my_runlist ;
01612 RunTag my_runtag;
01613 LocationDef my_locdef;
01614 RunTypeDef my_rundef;
01615 my_locdef.setLocation(m_location);
01616 my_rundef.setRunType(m_runtype);
01617 my_runtag.setLocationDef(my_locdef);
01618 my_runtag.setRunTypeDef(my_rundef);
01619 my_runtag.setGeneralTag(m_gentag);
01620
01621
01622
01623 unsigned int min_run=0;
01624 if(m_firstRun<max_since) {
01625 min_run=max_since+1;
01626 } else { min_run=m_firstRun; }
01627 unsigned int max_run=m_lastRun;
01628
01629
01630
01631 MonVersionDef monverdef;
01632 monverdef.setMonitoringVersion("test01");
01633 MonRunTag mon_tag;
01634 if (m_runtype=="PEDESTAL") mon_tag.setGeneralTag("CMSSW");
01635 if (m_runtype=="LASER") mon_tag.setGeneralTag("CMSSW");
01636 if (m_runtype=="COSMIC" || m_runtype=="BEAM" || m_runtype=="PHYSICS" || m_runtype=="HALO" || m_runtype=="GLOBAL_COSMICS" ) mon_tag.setGeneralTag("CMSSW-online");
01637 mon_tag.setMonVersionDef(monverdef);
01638 MonRunList mon_list;
01639 mon_list.setMonRunTag(mon_tag);
01640 mon_list.setRunTag(my_runtag);
01641 mon_list = econn->fetchMonRunList(my_runtag, mon_tag, min_run, max_run );
01642
01643
01644
01645
01646
01647 char outfile[800];
01648 sprintf(outfile,"BadChannelsEB_run%d.txt",min_run);
01649 ResFileEB = new ofstream(outfile,std::ios::out);
01650 sprintf(outfile,"BadChannelsEE_run%d.txt",min_run);
01651 ResFileEE = new ofstream(outfile,std::ios::out);
01652 sprintf(outfile,"BadNewChannelsEB_run%d.txt",min_run);
01653 ResFileNewEB = new ofstream(outfile,std::ios::out);
01654 sprintf(outfile,"BadNewChannelsEE_run%d.txt",min_run);
01655 ResFileNewEE = new ofstream(outfile,std::ios::out);
01656 sprintf(outfile,"DaqConfig_run%d.txt",min_run);
01657 daqFile = new ofstream(outfile,std::ios::out);
01658 sprintf(outfile,"DaqConfig_channels_run%d.txt",min_run);
01659 daqFile2 = new ofstream(outfile,std::ios::out);
01660
01661 *daqFile << "fed" << "\t\t" << "tower" << std::endl;
01662
01663 if (m_runtype=="PEDESTAL") {
01664 *ResFileEB << "Fed" << "\t\t" << "Ic" << "\t\t" << "hIndex" << "\t\t"
01665 << "MeanG12" << "\t\t" << "RmsG12" << "\t\t"
01666 << "MeanG6" << "\t\t" << "RmsG6" << "\t\t"
01667 << "MeanG1" << "\t\t" << "RmsG1" << std::endl;
01668
01669 *ResFileEE << "Fed" << "\t\t" << "Ix" << "\t\t"
01670 << "Iy" << "\t\t" << "Iz" << "\t\t" << "hIndex" << "\t\t"
01671 << "MeanG12" << "\t\t" << "RmsG12" << "\t\t"
01672 << "MeanG6" << "\t\t" << "RmsG6" << "\t\t"
01673 << "MeanG1" << "\t\t" << "RmsG1" << std::endl;
01674
01675 *ResFileNewEB << "Fed" << "\t\t" << "Ic" << "\t\t" << "hIndex" << "\t\t"
01676 << "MeanG12" << "\t\t" << "RmsG12" << "\t\t"
01677 << "MeanG6" << "\t\t" << "RmsG6" << "\t\t"
01678 << "MeanG1" << "\t\t" << "RmsG1" << std::endl;
01679
01680 *ResFileNewEE << "Fed" << "\t\t" << "Ix" << "\t\t"
01681 << "Iy" << "\t\t" << "Iz" << "\t\t" << "hIndex" << "\t\t"
01682 << "MeanG12" << "\t\t" << "RmsG12" << "\t\t"
01683 << "MeanG6" << "\t\t" << "RmsG6" << "\t\t"
01684 << "MeanG1" << "\t\t" << "RmsG1" << std::endl;
01685 }
01686
01687
01688 if (m_runtype=="LASER") {
01689 *ResFileEB << "Fed" << "\t\t" << "Ic" << "\t\t" << "hIndex" << "\t\t" << "apd" << std::endl;
01690 *ResFileEE << "Fed" << "\t\t" << "Ix" << "\t\t" << "Iy" << "\t\t" << "Iz" << "\t\t" << "hIndex" << "\t\t" << "apd" << std::endl;
01691 *ResFileNewEB << "Fed" << "\t\t" << "Ic" << "\t\t" << "hIndex" << "\t\t" << "apd" << std::endl;
01692 *ResFileNewEE << "Fed" << "\t\t" << "Ix" << "\t\t" << "Iy" << "\t\t" << "Iz" << "\t\t" << "hIndex" << "\t\t" << "apd" << std::endl;
01693 }
01694
01695
01696 if (m_runtype=="COSMIC" || m_runtype=="BEAM" || m_runtype=="PHYSICS" || m_runtype=="HALO" || m_runtype=="GLOBAL_COSMICS" ) {
01697
01698 *ResFileEB << "Fed" << "\t\t" << "Ic" << "\t\t" << "hIndex" << "\t\t"
01699 << "pedOnline" << "\t\t" << "pedOnlineRMS " << "\t\t"
01700 << "gain0" << "\t\t" << "apd" << "\t\t"
01701 << "highThrOcc" << "\t\t" << std::endl;
01702
01703 *ResFileEE << "Fed" << "\t\t" << "Ix"
01704 << "Iy" << "\t\t" << "Iz" << "\t\t" << "hIndex" << "\t\t"
01705 << "pedOnline" << "\t\t" << "pedOnlineRMS " << "\t\t"
01706 << "gain0" << "\t\t" << "apd" << "\t\t"
01707 << "highThrOcc" << "\t\t" << std::endl;
01708
01709 *ResFileNewEB << "Fed" << "\t\t" << "Ic" << "\t\t" << "hIndex" << "\t\t"
01710 << "pedOnline" << "\t\t" << "pedOnlineRMS " << "\t\t"
01711 << "gain0" << "\t\t" << "apd" << "\t\t"
01712 << "highThrOcc" << "\t\t" << std::endl;
01713
01714 *ResFileNewEE << "Fed" << "\t\t" << "Ix"
01715 << "Iy" << "\t\t" << "Iz" << "\t\t" << "hIndex" << "\t\t"
01716 << "pedOnline" << "\t\t" << "pedOnlineRMS " << "\t\t"
01717 << "gain0" << "\t\t" << "apd" << "\t\t"
01718 << "highThrOcc" << "\t\t" << std::endl;
01719 }
01720
01721
01722
01723
01724
01725
01726
01727 std::vector<MonRunIOV> mon_run_vec = mon_list.getRuns();
01728 int mon_runs = mon_run_vec.size();
01729 std::cout << "number of Mon runs is " << mon_runs << std::endl;
01730 if(mon_runs==0) std::cout << "PROBLEM! 0 runs analyzed by DQM" << std::endl;
01731 if(mon_runs==0) ss << "PROBLEM! 0 runs analyzed by DQM" << std::endl;
01732
01733
01734 maskedOnlinePedEB.clear();
01735 maskedOnlinePedEE.clear();
01736 maskedPedEB.clear();
01737 maskedPedEE.clear();
01738 maskedLaserEB.clear();
01739 maskedLaserEE.clear();
01740 maskedPhysicsEB.clear();
01741 maskedPhysicsEE.clear();
01742
01743
01744 std::map<DetId,float>::const_iterator theIter;
01745
01746
01747 if(mon_runs>0){
01748
01749 for(int dqmRun=0; dqmRun<mon_runs; dqmRun++){
01750
01751 unsigned long iDqmRun=(unsigned long) mon_run_vec[dqmRun].getRunIOV().getRunNumber();
01752
01753 std::cout << "retrieve the DQM data for run number: " << iDqmRun << ", subrun number: " << mon_run_vec[dqmRun].getSubRunNumber() << std::endl;
01754
01755
01756 if (mon_run_vec[dqmRun].getSubRunNumber()==mon_runs){
01757
01758
01759 RunIOV myRun;
01760 myRun=mon_run_vec[dqmRun].getRunIOV();
01761 daqOut(myRun);
01762
01763
01764
01765 RunIOV runiov_prime = mon_run_vec[dqmRun].getRunIOV();
01766
01767
01768
01769 std::cout << "Fetching masked channels from DB" << std::endl;
01770 EcalErrorMask::readDB(econn, &runiov_prime);
01771
01772
01773
01774
01775
01776
01777
01778
01779
01780 if (m_runtype=="PEDESTAL") {
01781
01782
01783 std::map<EcalLogicID, MonPedestalsDat> dataset_mon;
01784 econn->fetchDataSet(&dataset_mon, &mon_run_vec[dqmRun]);
01785 std::cout << "running pedestal analysis" << std::endl;
01786 std::cout << "OMDS record for pedestals, run " << iDqmRun << " is made of " << dataset_mon.size() << " entries" << std::endl;
01787
01788
01789 std::map<EcalLogicID, MonCrystalConsistencyDat> wrongGain_mon;
01790 econn->fetchDataSet(&wrongGain_mon, &mon_run_vec[dqmRun]);
01791 std::cout << "OMDS record for consistency, run " << iDqmRun << " is made of " << wrongGain_mon.size() << " entries" << std::endl;
01792
01793
01794 if (dataset_mon.size()>0) {
01795 pedAnalysis( dataset_mon, wrongGain_mon );
01796 } else {
01797 std::cout << "Not enought data for pedestal analysis" << std::endl;
01798 ss << "Not enought data for pedestal analysis" << std::endl;
01799 }
01800 }
01801
01802
01803
01804
01805 if (m_runtype=="LASER") {
01806
01807
01808 std::map<EcalLogicID, MonLaserBlueDat > dataset_mon;
01809 econn->fetchDataSet(&dataset_mon, &mon_run_vec[dqmRun]);
01810 std::cout << "running the laser analysis based on DQM data" << std::endl;
01811 std::cout << "OMDS record for run " << iDqmRun << " is made of " << dataset_mon.size() << " records" << std::endl;
01812
01813
01814 if (dataset_mon.size()>0) {
01815 nBadLaserModules( dataset_mon );
01816 laserAnalysis( dataset_mon );
01817 } else {
01818 std::cout << "Not enought data for dqm-based laser analysis" << std::endl;
01819 ss << "Not enought data for dqm-based laser analysis" << std::endl;
01820 }
01821 }
01822
01823
01824
01825
01826 if (m_runtype=="COSMIC" || m_runtype=="BEAM" || m_runtype=="PHYSICS" || m_runtype=="HALO" || m_runtype=="GLOBAL_COSMICS" ) {
01827
01828
01829 std::map<EcalLogicID, MonPedestalsOnlineDat> pedonline_mon;
01830 econn->fetchDataSet(&pedonline_mon, &mon_run_vec[dqmRun]);
01831 std::cout << "running pedestal online analysis" << std::endl;
01832 std::cout << "OMDS record for pedestals, run " << iDqmRun << " is made of " << pedonline_mon.size() << std::endl;
01833
01834
01835 std::map<EcalLogicID, MonCrystalConsistencyDat> wrongGain_mon;
01836 econn->fetchDataSet(&wrongGain_mon, &mon_run_vec[dqmRun]);
01837 std::cout << "OMDS record for consistency, run " << iDqmRun << " is made of " << wrongGain_mon.size() << " entries" << std::endl;
01838
01839
01840 std::map<EcalLogicID, MonOccupancyDat> occupancy_mon;
01841 econn->fetchDataSet(&occupancy_mon, &mon_run_vec[dqmRun]);
01842 std::cout << "OMDS record for occupancy, run " << iDqmRun << " is made of " << occupancy_mon.size() << std::endl;
01843
01844
01845 std::map<EcalLogicID, MonLaserBlueDat > laser_mon;
01846 econn->fetchDataSet(&laser_mon, &mon_run_vec[dqmRun]);
01847 std::cout << "running laser analysis" << std::endl;
01848 std::cout << "OMDS record for laser, run " << iDqmRun << " is made of " << laser_mon.size() << " records" << std::endl;
01849
01850
01851
01852 if (pedonline_mon.size()<=0) {
01853 std::cout << "Not enought data for pedestal online analysis" << std::endl;
01854 ss << "Not enought data for pedestal online analysis" << std::endl;
01855 }
01856 if (occupancy_mon.size()<=0) {
01857 std::cout << "Not enought data for occupancy analysis" << std::endl;
01858 ss << "Not enought data for occupancy analysis" << std::endl;
01859 }
01860 if (laser_mon.size()<=0) {
01861 std::cout << "Not enought data for laser analysis" << std::endl;
01862 ss << "Not enought data for laser analysis" << std::endl;
01863 }
01864 if ( pedonline_mon.size()>0 || occupancy_mon.size()>0 || wrongGain_mon.size()>0 || laser_mon.size()>0 ) {
01865 nBadLaserModules( laser_mon );
01866 cosmicsAnalysis( pedonline_mon, wrongGain_mon, laser_mon, occupancy_mon );
01867 }
01868
01869
01870
01871 int iLineEB=0;
01872 TLine lEB;
01873 gStyle->SetPalette(1);
01874 gStyle->SetOptStat(0);
01875 TCanvas c("c","c",1);
01876 newBadEB_ -> SetMaximum(11);
01877 newBadEB_ -> Draw("colz");
01878 iLineEB=0;
01879 lEB.DrawLine(0,0,360,0);
01880 while (iLineEB<18) { lEB.DrawLine (iLineEB*20, -85, iLineEB*20, 85); iLineEB++; }
01881 c.SaveAs("newBadEB_.png");
01882
01883 TLine lEE;
01884 lEE.SetLineWidth(1);
01885 int ixSectorsEE[202] = {61, 61, 60, 60, 59, 59, 58, 58, 57, 57, 55, 55, 45, 45, 43, 43, 42, 42, 41, 41, 40, 40, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 55, 55, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 0,100,100, 97, 97, 95, 95, 92, 92, 87, 87, 85, 85, 80, 80, 75, 75, 65, 65, 60, 60, 40, 40, 35, 35, 25, 25, 20, 20, 15, 15, 13, 13, 8, 8, 5, 5, 3, 3, 0, 0, 3, 3, 5, 5, 8, 8, 13, 13, 15, 15, 20, 20, 25, 25, 35, 35, 40, 40, 60, 60, 65, 65, 75, 75, 80, 80, 85, 85, 87, 87, 92, 92, 95, 95, 97, 97,100,100, 0, 61, 65, 65, 70, 70, 80, 80, 90, 90, 92, 0, 61, 65, 65, 90, 90, 97, 0, 57, 60, 60, 65, 65, 70, 70, 75, 75, 80, 80, 0, 50, 50, 0, 43, 40, 40, 35, 35, 30, 30, 25, 25, 20, 20, 0, 39, 35, 35, 10, 10, 3, 0, 39, 35, 35, 30, 30, 20, 20, 10, 10, 8, 0, 45, 45, 40, 40, 35, 35, 0, 55, 55, 60, 60, 65, 65};
01886 int iySectorsEE[202] = {50, 55, 55, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 60, 60, 59, 59, 58, 58, 57, 57, 55, 55, 45, 45, 43, 43, 42, 42, 41, 41, 40, 40, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 50, 0, 50, 60, 60, 65, 65, 75, 75, 80, 80, 85, 85, 87, 87, 92, 92, 95, 95, 97, 97,100,100, 97, 97, 95, 95, 92, 92, 87, 87, 85, 85, 80, 80, 75, 75, 65, 65, 60, 60, 40, 40, 35, 35, 25, 25, 20, 20, 15, 15, 13, 13, 8, 8, 5, 5, 3, 3, 0, 0, 3, 3, 5, 5, 8, 8, 13, 13, 15, 15, 20, 20, 25, 25, 35, 35, 40, 40, 50, 0, 45, 45, 40, 40, 35, 35, 30, 30, 25, 25, 0, 50, 50, 55, 55, 60, 60, 0, 60, 60, 65, 65, 70, 70, 75, 75, 85, 85, 87, 0, 61,100, 0, 60, 60, 65, 65, 70, 70, 75, 75, 85, 85, 87, 0, 50, 50, 55, 55, 60, 60, 0, 45, 45, 40, 40, 35, 35, 30, 30, 25, 25, 0, 39, 30, 30, 15, 15, 5, 0, 39, 30, 30, 15, 15, 5};
01887
01888 newBadEEP_ -> SetMaximum(11);
01889 newBadEEP_ -> Draw("colz");
01890 for ( int iLineEEP=0; iLineEEP<201; iLineEEP=iLineEEP+1 ) {
01891 if ( (ixSectorsEE[iLineEEP]!=0 || iySectorsEE[iLineEEP]!=0) && (ixSectorsEE[iLineEEP+1]!=0 || iySectorsEE[iLineEEP+1]!=0) ) {
01892 lEE.DrawLine(ixSectorsEE[iLineEEP], iySectorsEE[iLineEEP], ixSectorsEE[iLineEEP+1], iySectorsEE[iLineEEP+1]);
01893 }}
01894 c.SaveAs("newBadEEP_.png");
01895
01896 newBadEEM_ -> SetMaximum(11);
01897 newBadEEM_ -> Draw("colz");
01898 for ( int iLineEEP=0; iLineEEP<201; iLineEEP=iLineEEP+1 ) {
01899 if ( (ixSectorsEE[iLineEEP]!=0 || iySectorsEE[iLineEEP]!=0) && (ixSectorsEE[iLineEEP+1]!=0 || iySectorsEE[iLineEEP+1]!=0) ) {
01900 lEE.DrawLine(ixSectorsEE[iLineEEP], iySectorsEE[iLineEEP], ixSectorsEE[iLineEEP+1], iySectorsEE[iLineEEP+1]);
01901 }}
01902 c.SaveAs("newBadEEM_.png");
01903
01904 }
01905
01906 }
01907 }
01908 }
01909
01910 delete econn;
01911 std::cout << "Ecal - > end of getNewObjects -----------\n";
01912 }
01913
01914
01915 void popcon::EcalChannelStatusHandler::setElectronicsMap(const EcalElectronicsMapping* theEcalElectronicsMap) {
01916
01917 ecalElectronicsMap_ = (*theEcalElectronicsMap);
01918 }
01919
01920