CMS 3D CMS Logo

EBIntegrityTask.cc

Go to the documentation of this file.
00001 /*
00002  * \file EBIntegrityTask.cc
00003  *
00004  * $Date: 2008/12/03 12:55:49 $
00005  * $Revision: 1.74 $
00006  * \author G. Della Ricca
00007  *
00008  */
00009 
00010 #include <iostream>
00011 #include <fstream>
00012 #include <vector>
00013 
00014 #include "FWCore/ServiceRegistry/interface/Service.h"
00015 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00016 
00017 #include "DQMServices/Core/interface/MonitorElement.h"
00018 
00019 #include "DQMServices/Core/interface/DQMStore.h"
00020 
00021 #include "DataFormats/EcalDetId/interface/EBDetId.h"
00022 
00023 #include "DataFormats/EcalRawData/interface/EcalRawDataCollections.h"
00024 #include "DataFormats/EcalDetId/interface/EcalDetIdCollections.h"
00025 
00026 #include <DQM/EcalCommon/interface/Numbers.h>
00027 
00028 #include <DQM/EcalBarrelMonitorTasks/interface/EBIntegrityTask.h>
00029 
00030 using namespace cms;
00031 using namespace edm;
00032 using namespace std;
00033 
00034 EBIntegrityTask::EBIntegrityTask(const ParameterSet& ps){
00035 
00036   init_ = false;
00037 
00038   dqmStore_ = Service<DQMStore>().operator->();
00039 
00040   prefixME_ = ps.getUntrackedParameter<string>("prefixME", "");
00041 
00042   enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
00043 
00044   mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false);
00045 
00046   EBDetIdCollection0_ =  ps.getParameter<edm::InputTag>("EBDetIdCollection0");
00047   EBDetIdCollection1_ =  ps.getParameter<edm::InputTag>("EBDetIdCollection1");
00048   EBDetIdCollection2_ =  ps.getParameter<edm::InputTag>("EBDetIdCollection2");
00049   EBDetIdCollection3_ =  ps.getParameter<edm::InputTag>("EBDetIdCollection3");
00050   EcalElectronicsIdCollection1_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection1");
00051   EcalElectronicsIdCollection2_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection2");
00052   EcalElectronicsIdCollection3_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection3");
00053   EcalElectronicsIdCollection4_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection4");
00054   EcalElectronicsIdCollection5_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection5");
00055   EcalElectronicsIdCollection6_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection6");
00056 
00057   meIntegrityDCCSize = 0;
00058   for (int i = 0; i < 36; i++) {
00059     meIntegrityGain[i] = 0;
00060     meIntegrityChId[i] = 0;
00061     meIntegrityGainSwitch[i] = 0;
00062     meIntegrityTTId[i] = 0;
00063     meIntegrityTTBlockSize[i] = 0;
00064     meIntegrityMemChId[i] = 0;
00065     meIntegrityMemGain[i] = 0;
00066     meIntegrityMemTTId[i] = 0;
00067     meIntegrityMemTTBlockSize[i] = 0;
00068   }
00069 
00070 }
00071 
00072 
00073 EBIntegrityTask::~EBIntegrityTask(){
00074 
00075 }
00076 
00077 void EBIntegrityTask::beginJob(const EventSetup& c){
00078 
00079   ievt_ = 0;
00080 
00081   if ( dqmStore_ ) {
00082     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask");
00083     dqmStore_->rmdir(prefixME_ + "/EBIntegrityTask");
00084   }
00085 
00086   Numbers::initGeometry(c, false);
00087 
00088 }
00089 
00090 void EBIntegrityTask::beginRun(const Run& r, const EventSetup& c) {
00091 
00092   if ( ! mergeRuns_ ) this->reset();
00093 
00094 }
00095 
00096 void EBIntegrityTask::endRun(const Run& r, const EventSetup& c) {
00097 
00098 }
00099 
00100 void EBIntegrityTask::reset(void) {
00101 
00102   if ( meIntegrityDCCSize ) meIntegrityDCCSize->Reset();
00103   for (int i = 0; i < 36; i++) {
00104     if ( meIntegrityGain[i] ) meIntegrityGain[i]->Reset();
00105     if ( meIntegrityChId[i] ) meIntegrityChId[i]->Reset();
00106     if ( meIntegrityGainSwitch[i] ) meIntegrityGainSwitch[i]->Reset();
00107     if ( meIntegrityTTId[i] ) meIntegrityTTId[i]->Reset();
00108     if ( meIntegrityTTBlockSize[i] ) meIntegrityTTBlockSize[i]->Reset();
00109     if ( meIntegrityMemChId[i] ) meIntegrityMemChId[i]->Reset();
00110     if ( meIntegrityMemGain[i] ) meIntegrityMemGain[i]->Reset();
00111     if ( meIntegrityMemTTId[i] ) meIntegrityMemTTId[i]->Reset();
00112     if ( meIntegrityMemTTBlockSize[i] ) meIntegrityMemTTBlockSize[i]->Reset();
00113   }
00114 
00115 }
00116 
00117 void EBIntegrityTask::setup(void){
00118 
00119   init_ = true;
00120 
00121   char histo[200];
00122 
00123   if ( dqmStore_ ) {
00124     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask");
00125 
00126     // checking when number of towers in data different than expected from header
00127     sprintf(histo, "EBIT DCC size error");
00128     meIntegrityDCCSize = dqmStore_->book1D(histo, histo, 36, 1, 37.);
00129     for (int i = 0; i < 36; i++) {
00130       meIntegrityDCCSize->setBinLabel(i+1, Numbers::sEB(i+1).c_str(), 1);
00131     }
00132 
00133     // checking when the gain is 0
00134     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/Gain");
00135     for (int i = 0; i < 36; i++) {
00136       sprintf(histo, "EBIT gain %s", Numbers::sEB(i+1).c_str());
00137       meIntegrityGain[i] = dqmStore_->book2D(histo, histo, 85, 0., 85., 20, 0., 20.);
00138       meIntegrityGain[i]->setAxisTitle("ieta", 1);
00139       meIntegrityGain[i]->setAxisTitle("iphi", 2);
00140       dqmStore_->tag(meIntegrityGain[i], i+1);
00141     }
00142 
00143     // checking when channel has unexpected or invalid ID
00144     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/ChId");
00145     for (int i = 0; i < 36; i++) {
00146       sprintf(histo, "EBIT ChId %s", Numbers::sEB(i+1).c_str());
00147       meIntegrityChId[i] = dqmStore_->book2D(histo, histo, 85, 0., 85., 20, 0., 20.);
00148       meIntegrityChId[i]->setAxisTitle("ieta", 1);
00149       meIntegrityChId[i]->setAxisTitle("iphi", 2);
00150       dqmStore_->tag(meIntegrityChId[i], i+1);
00151     }
00152 
00153     // checking when channel has unexpected or invalid ID
00154     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/GainSwitch");
00155     for (int i = 0; i < 36; i++) {
00156       sprintf(histo, "EBIT gain switch %s", Numbers::sEB(i+1).c_str());
00157       meIntegrityGainSwitch[i] = dqmStore_->book2D(histo, histo, 85, 0., 85., 20, 0., 20.);
00158       meIntegrityGainSwitch[i]->setAxisTitle("ieta", 1);
00159       meIntegrityGainSwitch[i]->setAxisTitle("iphi", 2);
00160       dqmStore_->tag(meIntegrityGainSwitch[i], i+1);
00161     }
00162 
00163     // checking when trigger tower has unexpected or invalid ID
00164     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/TTId");
00165     for (int i = 0; i < 36; i++) {
00166       sprintf(histo, "EBIT TTId %s", Numbers::sEB(i+1).c_str());
00167       meIntegrityTTId[i] = dqmStore_->book2D(histo, histo, 17, 0., 17., 4, 0., 4.);
00168       meIntegrityTTId[i]->setAxisTitle("ieta'", 1);
00169       meIntegrityTTId[i]->setAxisTitle("iphi'", 2);
00170       dqmStore_->tag(meIntegrityTTId[i], i+1);
00171     }
00172 
00173     // checking when trigger tower has unexpected or invalid size
00174     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/TTBlockSize");
00175     for (int i = 0; i < 36; i++) {
00176       sprintf(histo, "EBIT TTBlockSize %s", Numbers::sEB(i+1).c_str());
00177       meIntegrityTTBlockSize[i] = dqmStore_->book2D(histo, histo, 17, 0., 17., 4, 0., 4.);
00178       meIntegrityTTBlockSize[i]->setAxisTitle("ieta'", 1);
00179       meIntegrityTTBlockSize[i]->setAxisTitle("iphi'", 2);
00180       dqmStore_->tag(meIntegrityTTBlockSize[i], i+1);
00181     }
00182 
00183     // checking when mem channels have unexpected ID
00184     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/MemChId");
00185     for (int i = 0; i < 36; i++) {
00186       sprintf(histo, "EBIT MemChId %s", Numbers::sEB(i+1).c_str());
00187       meIntegrityMemChId[i] = dqmStore_->book2D(histo, histo, 10, 0., 10., 5, 0., 5.);
00188       meIntegrityMemChId[i]->setAxisTitle("pseudo-strip", 1);
00189       meIntegrityMemChId[i]->setAxisTitle("channel", 2);
00190       dqmStore_->tag(meIntegrityMemChId[i], i+1);
00191     }
00192 
00193     // checking when mem samples have second bit encoding the gain different from 0
00194     // note: strictly speaking, this does not corrupt the mem sample gain value (since only first bit is considered)
00195     // but indicates that data are not completely correct
00196     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/MemGain");
00197     for (int i = 0; i < 36; i++) {
00198       sprintf(histo, "EBIT MemGain %s", Numbers::sEB(i+1).c_str());
00199       meIntegrityMemGain[i] = dqmStore_->book2D(histo, histo, 10, 0., 10., 5, 0., 5.);
00200       meIntegrityMemGain[i]->setAxisTitle("pseudo-strip", 1);
00201       meIntegrityMemGain[i]->setAxisTitle("channel", 2);
00202       dqmStore_->tag(meIntegrityMemGain[i], i+1);
00203     }
00204 
00205     // checking when mem tower block has unexpected ID
00206     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/MemTTId");
00207     for (int i = 0; i < 36; i++) {
00208       sprintf(histo, "EBIT MemTTId %s", Numbers::sEB(i+1).c_str());
00209       meIntegrityMemTTId[i] = dqmStore_->book2D(histo, histo, 2, 0., 2., 1, 0., 1.);
00210       meIntegrityMemTTId[i]->setAxisTitle("pseudo-strip", 1);
00211       meIntegrityMemTTId[i]->setAxisTitle("channel", 2);
00212       dqmStore_->tag(meIntegrityMemTTId[i], i+1);
00213     }
00214 
00215     // checking when mem tower block has invalid size
00216     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/MemSize");
00217     for (int i = 0; i < 36; i++) {
00218       sprintf(histo, "EBIT MemSize %s", Numbers::sEB(i+1).c_str());
00219       meIntegrityMemTTBlockSize[i] = dqmStore_->book2D(histo, histo, 2, 0., 2., 1, 0., 1.);
00220       meIntegrityMemTTBlockSize[i]->setAxisTitle("pseudo-strip", 1);
00221       meIntegrityMemTTId[i]->setAxisTitle("pseudo-strip", 1);
00222       meIntegrityMemTTId[i]->setAxisTitle("channel", 2);
00223       dqmStore_->tag(meIntegrityMemTTBlockSize[i], i+1);
00224     }
00225 
00226   }
00227 
00228 }
00229 
00230 void EBIntegrityTask::cleanup(void){
00231 
00232   if ( ! init_ ) return;
00233 
00234   if ( dqmStore_ ) {
00235     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask");
00236 
00237     if ( meIntegrityDCCSize ) dqmStore_->removeElement( meIntegrityDCCSize->getName() );
00238     meIntegrityDCCSize = 0;
00239 
00240     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/Gain");
00241     for (int i = 0; i < 36; i++) {
00242       if ( meIntegrityGain[i] ) dqmStore_->removeElement( meIntegrityGain[i]->getName() );
00243       meIntegrityGain[i] = 0;
00244     }
00245 
00246     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/ChId");
00247     for (int i = 0; i < 36; i++) {
00248       if ( meIntegrityChId[i] ) dqmStore_->removeElement( meIntegrityChId[i]->getName() );
00249       meIntegrityChId[i] = 0;
00250     }
00251 
00252     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/GainSwitch");
00253     for (int i = 0; i < 36; i++) {
00254       if ( meIntegrityGainSwitch[i] ) dqmStore_->removeElement( meIntegrityGainSwitch[i]->getName() );
00255       meIntegrityGainSwitch[i] = 0;
00256     }
00257 
00258     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/TTId");
00259     for (int i = 0; i < 36; i++) {
00260       if ( meIntegrityTTId[i] ) dqmStore_->removeElement( meIntegrityTTId[i]->getName() );
00261       meIntegrityTTId[i] = 0;
00262     }
00263 
00264     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/TTBlockSize");
00265     for (int i = 0; i < 36; i++) {
00266       if ( meIntegrityTTBlockSize[i] ) dqmStore_->removeElement( meIntegrityTTBlockSize[i]->getName() );
00267       meIntegrityTTBlockSize[i] = 0;
00268     }
00269 
00270     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/MemChId");
00271     for (int i = 0; i < 36; i++) {
00272       if ( meIntegrityMemChId[i] ) dqmStore_->removeElement( meIntegrityMemChId[i]->getName() );
00273       meIntegrityMemChId[i] = 0;
00274     }
00275 
00276     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/MemGain");
00277     for (int i = 0; i < 36; i++) {
00278       if ( meIntegrityMemGain[i] ) dqmStore_->removeElement( meIntegrityMemGain[i]->getName() );
00279       meIntegrityMemGain[i] = 0;
00280     }
00281 
00282     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/MemTTId");
00283     for (int i = 0; i < 36; i++) {
00284       if ( meIntegrityMemTTId[i] ) dqmStore_->removeElement( meIntegrityMemTTId[i]->getName() );
00285       meIntegrityMemTTId[i] = 0;
00286     }
00287 
00288     dqmStore_->setCurrentFolder(prefixME_ + "/EBIntegrityTask/MemSize");
00289     for (int i = 0; i < 36; i++) {
00290       if ( meIntegrityMemTTBlockSize[i] ) dqmStore_->removeElement( meIntegrityMemTTBlockSize[i]->getName() );
00291       meIntegrityMemTTBlockSize[i] = 0;
00292     }
00293 
00294   }
00295 
00296   init_ = false;
00297 
00298 }
00299 
00300 void EBIntegrityTask::endJob(void){
00301 
00302   LogInfo("EBIntegrityTask") << "analyzed " << ievt_ << " events";
00303 
00304   if ( enableCleanup_ ) this->cleanup();
00305 
00306 }
00307 
00308 void EBIntegrityTask::analyze(const Event& e, const EventSetup& c){
00309 
00310   if ( ! init_ ) this->setup();
00311 
00312   ievt_++;
00313 
00314   Handle<EBDetIdCollection> ids0;
00315 
00316   if ( e.getByLabel(EBDetIdCollection0_, ids0) ) {
00317 
00318     for ( EBDetIdCollection::const_iterator idItr = ids0->begin(); idItr != ids0->end(); ++idItr ) {
00319 
00320       int ism = Numbers::iSM( *idItr );
00321 
00322       float xism = ism - 0.5;
00323 
00324       if ( meIntegrityDCCSize ) meIntegrityDCCSize->Fill(xism);
00325 
00326     }
00327 
00328   } else {
00329 
00330 //    LogWarning("EBIntegrityTask") << EBDetIdCollection0_ << " not available";
00331 
00332   }
00333 
00334   Handle<EBDetIdCollection> ids1;
00335 
00336   if ( e.getByLabel(EBDetIdCollection1_, ids1) ) {
00337 
00338     for ( EBDetIdCollection::const_iterator idItr = ids1->begin(); idItr != ids1->end(); ++idItr ) {
00339 
00340       EBDetId id = (*idItr);
00341 
00342       int ic = id.ic();
00343       int ie = (ic-1)/20 + 1;
00344       int ip = (ic-1)%20 + 1;
00345 
00346       int ism = Numbers::iSM( id );
00347 
00348       float xie = ie - 0.5;
00349       float xip = ip - 0.5;
00350 
00351       if ( meIntegrityGain[ism-1] ) meIntegrityGain[ism-1]->Fill(xie, xip);
00352 
00353     }
00354 
00355   } else {
00356 
00357     LogWarning("EBIntegrityTask") << EBDetIdCollection1_ << " not available";
00358 
00359   }
00360 
00361   Handle<EBDetIdCollection> ids2;
00362 
00363   if ( e.getByLabel(EBDetIdCollection2_, ids2) ) {
00364 
00365     for ( EBDetIdCollection::const_iterator idItr = ids2->begin(); idItr != ids2->end(); ++idItr ) {
00366 
00367       EBDetId id = (*idItr);
00368 
00369       int ic = id.ic();
00370       int ie = (ic-1)/20 + 1;
00371       int ip = (ic-1)%20 + 1;
00372 
00373       int ism = Numbers::iSM( id );
00374 
00375       float xie = ie - 0.5;
00376       float xip = ip - 0.5;
00377 
00378       if ( meIntegrityChId[ism-1] ) meIntegrityChId[ism-1]->Fill(xie, xip);
00379 
00380     }
00381 
00382   } else {
00383 
00384     LogWarning("EBIntegrityTask") << EBDetIdCollection2_ << " not available";
00385 
00386   }
00387 
00388   Handle<EBDetIdCollection> ids3;
00389 
00390   if ( e.getByLabel(EBDetIdCollection3_, ids3) ) {
00391 
00392     for ( EBDetIdCollection::const_iterator idItr = ids3->begin(); idItr != ids3->end(); ++idItr ) {
00393 
00394       EBDetId id = (*idItr);
00395 
00396       int ic = id.ic();
00397       int ie = (ic-1)/20 + 1;
00398       int ip = (ic-1)%20 + 1;
00399 
00400       int ism = Numbers::iSM( id );
00401 
00402       float xie = ie - 0.5;
00403       float xip = ip - 0.5;
00404 
00405       if ( meIntegrityGainSwitch[ism-1] ) meIntegrityGainSwitch[ism-1]->Fill(xie, xip);
00406 
00407     }
00408 
00409   } else {
00410 
00411     LogWarning("EBIntegrityTask") << EBDetIdCollection3_ << " not available";
00412 
00413   }
00414 
00415   Handle<EcalElectronicsIdCollection> ids4;
00416 
00417   if ( e.getByLabel(EcalElectronicsIdCollection1_, ids4) ) {
00418 
00419     for ( EcalElectronicsIdCollection::const_iterator idItr = ids4->begin(); idItr != ids4->end(); ++idItr ) {
00420 
00421       if ( Numbers::subDet( *idItr ) != EcalBarrel ) continue;
00422 
00423       int itt = idItr->towerId();
00424 
00425       int iet = (itt-1)/4 + 1;
00426       int ipt = (itt-1)%4 + 1;
00427 
00428       int ismt = Numbers::iSM( *idItr );
00429 
00430       float xiet = iet - 0.5;
00431       float xipt = ipt - 0.5;
00432 
00433       if ( meIntegrityTTId[ismt-1] ) meIntegrityTTId[ismt-1]->Fill(xiet, xipt);
00434 
00435     }
00436 
00437   } else {
00438 
00439     LogWarning("EBIntegrityTask") << EcalElectronicsIdCollection1_ << " not available";
00440 
00441   }
00442 
00443   Handle<EcalElectronicsIdCollection> ids5;
00444 
00445   if ( e.getByLabel(EcalElectronicsIdCollection2_, ids5) ) {
00446 
00447     for ( EcalElectronicsIdCollection::const_iterator idItr = ids5->begin(); idItr != ids5->end(); ++idItr ) {
00448 
00449       if ( Numbers::subDet( *idItr ) != EcalBarrel ) continue;
00450 
00451       int itt = idItr->towerId();
00452 
00453       int iet = (itt-1)/4 + 1;
00454       int ipt = (itt-1)%4 + 1;
00455 
00456       int ismt = Numbers::iSM( *idItr );
00457 
00458       float xiet = iet - 0.5;
00459       float xipt = ipt - 0.5;
00460 
00461       if ( meIntegrityTTBlockSize[ismt-1] ) meIntegrityTTBlockSize[ismt-1]->Fill(xiet, xipt);
00462 
00463     }
00464 
00465   } else {
00466 
00467     LogWarning("EBIntegrityTask") << EcalElectronicsIdCollection2_ << " not available";
00468 
00469   }
00470 
00471   Handle<EcalElectronicsIdCollection> ids6;
00472 
00473   if ( e.getByLabel(EcalElectronicsIdCollection3_, ids6) ) {
00474 
00475     for ( EcalElectronicsIdCollection::const_iterator idItr = ids6->begin(); idItr != ids6->end(); ++idItr ) {
00476 
00477       if ( Numbers::subDet( *idItr ) != EcalBarrel ) continue;
00478 
00479       int ism = Numbers::iSM( *idItr );
00480 
00481       int itt   = idItr->towerId();
00482       float iTt = itt + 0.5 - 69;
00483 
00484       if ( meIntegrityMemTTId[ism-1] ) meIntegrityMemTTId[ism-1]->Fill(iTt,0);
00485 
00486     }
00487 
00488   } else {
00489 
00490     LogWarning("EBIntegrityTask") << EcalElectronicsIdCollection3_ << " not available";
00491 
00492   }
00493 
00494   Handle<EcalElectronicsIdCollection> ids7;
00495 
00496   if ( e.getByLabel(EcalElectronicsIdCollection4_, ids7) ) {
00497 
00498     for ( EcalElectronicsIdCollection::const_iterator idItr = ids7->begin(); idItr != ids7->end(); ++idItr ) {
00499 
00500       if ( Numbers::subDet( *idItr ) != EcalBarrel ) continue;
00501 
00502       int ism = Numbers::iSM( *idItr );
00503 
00504       int itt   = idItr->towerId();
00505       float iTt = itt + 0.5 - 69;
00506 
00507       if ( meIntegrityMemTTBlockSize[ism-1] ) meIntegrityMemTTBlockSize[ism-1]->Fill(iTt,0);
00508 
00509     }
00510 
00511   } else {
00512 
00513     LogWarning("EBIntegrityTask") << EcalElectronicsIdCollection4_ << " not available";
00514 
00515   }
00516 
00517   Handle<EcalElectronicsIdCollection> ids8;
00518 
00519   if ( e.getByLabel(EcalElectronicsIdCollection5_, ids8) ) {
00520 
00521     for ( EcalElectronicsIdCollection::const_iterator idItr = ids8->begin(); idItr != ids8->end(); ++idItr ) {
00522 
00523       if ( Numbers::subDet( *idItr ) != EcalBarrel ) continue;
00524 
00525       int ism = Numbers::iSM( *idItr );
00526 
00527       int chid = idItr->channelId();
00528       int ie = EBIntegrityTask::chMemAbscissa[chid-1];
00529       int ip = EBIntegrityTask::chMemOrdinate[chid-1];
00530 
00531       int itt = idItr->towerId();
00532       ie += (itt-69)*5;
00533 
00534       float xie = ie - 0.5;
00535       float xip = ip - 0.5;
00536 
00537       if ( meIntegrityMemChId[ism-1] ) meIntegrityMemChId[ism-1]->Fill(xie,xip);
00538 
00539     }
00540 
00541   } else {
00542 
00543     LogWarning("EBIntegrityTask") << EcalElectronicsIdCollection5_ << " not available";
00544 
00545   }
00546 
00547   Handle<EcalElectronicsIdCollection> ids9;
00548 
00549   if ( e.getByLabel(EcalElectronicsIdCollection6_, ids9) ) {
00550 
00551     for ( EcalElectronicsIdCollection::const_iterator idItr = ids9->begin(); idItr != ids9->end(); ++idItr ) {
00552 
00553       if ( Numbers::subDet( *idItr ) != EcalBarrel ) continue;
00554 
00555       int ism = Numbers::iSM( *idItr );
00556 
00557       int chid = idItr->channelId();
00558       int ie = EBIntegrityTask::chMemAbscissa[chid-1];
00559       int ip = EBIntegrityTask::chMemOrdinate[chid-1];
00560 
00561       int itt = idItr->towerId();
00562       ie += (itt-69)*5;
00563 
00564       float xie = ie - 0.5;
00565       float xip = ip - 0.5;
00566 
00567       if ( meIntegrityMemGain[ism-1] ) meIntegrityMemGain[ism-1]->Fill(xie,xip);
00568 
00569     }
00570 
00571   } else {
00572 
00573     LogWarning("EBIntegrityTask") << EcalElectronicsIdCollection6_ << " not available";
00574 
00575   }
00576 
00577 }//  end analyze
00578 
00579 const int  EBIntegrityTask::chMemAbscissa [25] = {
00580     1, 1, 1, 1, 1,
00581     2, 2, 2, 2, 2,
00582     3, 3, 3, 3, 3,
00583     4, 4, 4, 4, 4,
00584     5, 5, 5, 5, 5
00585 };
00586 
00587 const int  EBIntegrityTask::chMemOrdinate [25] = {
00588     1, 2, 3, 4, 5,
00589     5, 4, 3, 2, 1,
00590     1, 2, 3, 4, 5,
00591     5, 4, 3, 2, 1,
00592     1, 2, 3, 4, 5
00593 };
00594 

Generated on Tue Jun 9 17:32:46 2009 for CMSSW by  doxygen 1.5.4