CMS 3D CMS Logo

EEIntegrityClient Class Reference

#include <DQM/EcalEndcapMonitorClient/interface/EEIntegrityClient.h>

Inheritance diagram for EEIntegrityClient:

EEClient

List of all members.

Public Member Functions

void analyze (void)
 Analyze.
void beginJob (DQMStore *dqmStore)
 BeginJob.
void beginRun (void)
 BeginRun.
void cleanup (void)
 Cleanup.
 EEIntegrityClient (const edm::ParameterSet &ps)
 Constructor.
void endJob (void)
 EndJob.
void endRun (void)
 EndRun.
int getEvtPerJob ()
 Get Functions.
int getEvtPerRun ()
 Returns the number of processed events in this Run.
void htmlOutput (int run, std::string &htmlDir, std::string &htmlName)
 HtmlOutput.
void setup (void)
 Setup.
void softReset (bool flag)
 SoftReset.
bool writeDb (EcalCondDBInterface *econn, RunIOV *runiov, MonRunIOV *moniov, bool &status, bool flag)
 WriteDB.
virtual ~EEIntegrityClient ()
 Destructor.

Private Attributes

bool cloneME_
bool debug_
DQMStoredqmStore_
bool enableCleanup_
TH1F * h00_
TH2F * h01_ [18]
TH2F * h02_ [18]
TH2F * h03_ [18]
TH2F * h04_ [18]
TH2F * h05_ [18]
TH2F * h06_ [18]
TH2F * h07_ [18]
TH2F * h08_ [18]
TH2F * h09_ [18]
TH2F * h_ [18]
TH2F * hmem_ [18]
int ievt_
int jevt_
MonitorElementmeg01_ [18]
MonitorElementmeg02_ [18]
std::string prefixME_
std::vector< intsuperModules_
float threshCry_
bool verbose_

Static Private Attributes

static const int chNum [5][5]

Friends

class EESummaryClient


Detailed Description

Definition at line 31 of file EEIntegrityClient.h.


Constructor & Destructor Documentation

EEIntegrityClient::EEIntegrityClient ( const edm::ParameterSet ps  ) 

Constructor.

Definition at line 51 of file EEIntegrityClient.cc.

References cloneME_, debug_, enableCleanup_, edm::ParameterSet::getUntrackedParameter(), h00_, h01_, h02_, h03_, h04_, h05_, h06_, h07_, h08_, h09_, h_, hmem_, i, meg01_, meg02_, prefixME_, superModules_, threshCry_, and verbose_.

00051                                                            {
00052 
00053   // cloneME switch
00054   cloneME_ = ps.getUntrackedParameter<bool>("cloneME", true);
00055 
00056   // verbose switch
00057   verbose_ = ps.getUntrackedParameter<bool>("verbose", true);
00058 
00059   // debug switch
00060   debug_ = ps.getUntrackedParameter<bool>("debug", false);
00061 
00062   // prefixME path
00063   prefixME_ = ps.getUntrackedParameter<string>("prefixME", "");
00064 
00065   // enableCleanup_ switch
00066   enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
00067 
00068   // vector of selected Super Modules (Defaults to all 18).
00069   superModules_.reserve(18);
00070   for ( unsigned int i = 1; i <= 18; i++ ) superModules_.push_back(i);
00071   superModules_ = ps.getUntrackedParameter<vector<int> >("superModules", superModules_);
00072 
00073   h00_ = 0;
00074 
00075   for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00076 
00077     int ism = superModules_[i];
00078 
00079     h_[ism-1] = 0;
00080     hmem_[ism-1] = 0;
00081 
00082     h01_[ism-1] = 0;
00083     h02_[ism-1] = 0;
00084     h03_[ism-1] = 0;
00085     h04_[ism-1] = 0;
00086     h05_[ism-1] = 0;
00087     h06_[ism-1] = 0;
00088     h07_[ism-1] = 0;
00089     h08_[ism-1] = 0;
00090     h09_[ism-1] = 0;
00091 
00092   }
00093 
00094   for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00095 
00096     int ism = superModules_[i];
00097 
00098     // integrity summary histograms
00099     meg01_[ism-1] = 0;
00100     meg02_[ism-1] = 0;
00101 
00102   }
00103 
00104   threshCry_ = 0.;
00105 
00106 }

EEIntegrityClient::~EEIntegrityClient (  )  [virtual]

Destructor.

Definition at line 108 of file EEIntegrityClient.cc.

00108                                       {
00109 
00110 }


Member Function Documentation

void EEIntegrityClient::analyze ( void   )  [virtual]

Analyze.

Implements EEClient.

Definition at line 690 of file EEIntegrityClient.cc.

References chNum, cloneME_, GenMuonPlsPt100GeV_cfg::cout, debug_, dqmStore_, EcalEndcap, lat::endl(), EcalErrorMask::fetchDataSet(), DQMStore::get(), LogicID::getEcalLogicID(), EcalLogicID::getLogicID(), EcalErrorDictionary::getMask(), h00_, h01_, h02_, h03_, h04_, h05_, h06_, h07_, h08_, h09_, h_, histo, hmem_, i, ievt_, Numbers::indexEE(), Numbers::iSM(), Numbers::iTT(), Numbers::ix0EE(), Numbers::iy0EE(), jevt_, m, UtilsClient::maskBinContent(), me, meg01_, meg02_, prefixME_, MonitorElement::Reset(), Numbers::sEE(), MonitorElement::setBinContent(), superModules_, threshCry_, and Numbers::validEE().

00690                                     {
00691 
00692   ievt_++;
00693   jevt_++;
00694   if ( ievt_ % 10 == 0 ) {
00695     if ( debug_ ) cout << "EEIntegrityClient: ievt/jevt = " << ievt_ << "/" << jevt_ << endl;
00696   }
00697 
00698   uint64_t bits01 = 0;
00699   bits01 |= EcalErrorDictionary::getMask("CH_ID_WARNING");
00700   bits01 |= EcalErrorDictionary::getMask("CH_GAIN_ZERO_WARNING");
00701   bits01 |= EcalErrorDictionary::getMask("CH_GAIN_SWITCH_WARNING");
00702   bits01 |= EcalErrorDictionary::getMask("CH_ID_ERROR");
00703   bits01 |= EcalErrorDictionary::getMask("CH_GAIN_ZERO_ERROR");
00704   bits01 |= EcalErrorDictionary::getMask("CH_GAIN_SWITCH_ERROR");
00705 
00706   uint64_t bits02 = 0;
00707   bits02 |= EcalErrorDictionary::getMask("TT_ID_WARNING");
00708   bits02 |= EcalErrorDictionary::getMask("TT_SIZE_WARNING");
00709   bits02 |= EcalErrorDictionary::getMask("TT_LV1_WARNING");
00710   bits02 |= EcalErrorDictionary::getMask("TT_BUNCH_X_WARNING");
00711   bits02 |= EcalErrorDictionary::getMask("TT_ID_ERROR");
00712   bits02 |= EcalErrorDictionary::getMask("TT_SIZE_ERROR");
00713   bits02 |= EcalErrorDictionary::getMask("TT_LV1_ERROR");
00714   bits02 |= EcalErrorDictionary::getMask("TT_BUNCH_X_ERROR");
00715 
00716   map<EcalLogicID, RunCrystalErrorsDat> mask1;
00717   map<EcalLogicID, RunTTErrorsDat> mask2;
00718   map<EcalLogicID, RunMemChErrorsDat> mask3;
00719   map<EcalLogicID, RunMemTTErrorsDat> mask4;
00720 
00721   EcalErrorMask::fetchDataSet(&mask1);
00722   EcalErrorMask::fetchDataSet(&mask2);
00723   EcalErrorMask::fetchDataSet(&mask3);
00724   EcalErrorMask::fetchDataSet(&mask4);
00725 
00726   char histo[200];
00727 
00728   MonitorElement* me;
00729 
00730   sprintf(histo, (prefixME_ + "/EEIntegrityTask/EEIT DCC size error").c_str());
00731   me = dqmStore_->get(histo);
00732   h00_ = UtilsClient::getHisto<TH1F*>( me, cloneME_, h00_ );
00733 
00734   for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00735 
00736     int ism = superModules_[i];
00737 
00738     sprintf(histo, (prefixME_ + "/EEOccupancyTask/EEOT digi occupancy %s").c_str(), Numbers::sEE(ism).c_str());
00739     me = dqmStore_->get(histo);
00740     h_[ism-1] = UtilsClient::getHisto<TH2F*>( me, cloneME_, h_[ism-1] );
00741 
00742     sprintf(histo, (prefixME_ + "/EEOccupancyTask/EEOT MEM digi occupancy %s").c_str(), Numbers::sEE(ism).c_str());
00743     me = dqmStore_->get(histo);
00744     hmem_[ism-1] = UtilsClient::getHisto<TH2F*>( me, cloneME_, hmem_[ism-1] );
00745 
00746     sprintf(histo, (prefixME_ + "/EEIntegrityTask/Gain/EEIT gain %s").c_str(), Numbers::sEE(ism).c_str());
00747     me = dqmStore_->get(histo);
00748     h01_[ism-1] = UtilsClient::getHisto<TH2F*>( me, cloneME_, h01_[ism-1] );
00749 
00750     sprintf(histo, (prefixME_ + "/EEIntegrityTask/ChId/EEIT ChId %s").c_str(), Numbers::sEE(ism).c_str());
00751     me = dqmStore_->get(histo);
00752     h02_[ism-1] = UtilsClient::getHisto<TH2F*>( me, cloneME_, h02_[ism-1] );
00753 
00754     sprintf(histo, (prefixME_ + "/EEIntegrityTask/GainSwitch/EEIT gain switch %s").c_str(), Numbers::sEE(ism).c_str());
00755     me = dqmStore_->get(histo);
00756     h03_[ism-1] = UtilsClient::getHisto<TH2F*>( me, cloneME_, h03_[ism-1] );
00757 
00758     sprintf(histo, (prefixME_ + "/EEIntegrityTask/TTId/EEIT TTId %s").c_str(), Numbers::sEE(ism).c_str());
00759     me = dqmStore_->get(histo);
00760     h04_[ism-1] = UtilsClient::getHisto<TH2F*>( me, cloneME_, h04_[ism-1] );
00761 
00762     sprintf(histo, (prefixME_ + "/EEIntegrityTask/TTBlockSize/EEIT TTBlockSize %s").c_str(), Numbers::sEE(ism).c_str());
00763     me = dqmStore_->get(histo);
00764     h05_[ism-1] = UtilsClient::getHisto<TH2F*>( me, cloneME_, h05_[ism-1] );
00765 
00766     sprintf(histo, (prefixME_ + "/EEIntegrityTask/MemChId/EEIT MemChId %s").c_str(), Numbers::sEE(ism).c_str());
00767     me = dqmStore_->get(histo);
00768     h06_[ism-1] = UtilsClient::getHisto<TH2F*>( me, cloneME_, h06_[ism-1] );
00769 
00770     sprintf(histo, (prefixME_ + "/EEIntegrityTask/MemGain/EEIT MemGain %s").c_str(), Numbers::sEE(ism).c_str());
00771     me = dqmStore_->get(histo);
00772     h07_[ism-1] = UtilsClient::getHisto<TH2F*>( me, cloneME_, h07_[ism-1] );
00773 
00774     sprintf(histo, (prefixME_ + "/EEIntegrityTask/MemTTId/EEIT MemTTId %s").c_str(), Numbers::sEE(ism).c_str());
00775     me = dqmStore_->get(histo);
00776     h08_[ism-1] = UtilsClient::getHisto<TH2F*>( me, cloneME_, h08_[ism-1] );
00777 
00778     sprintf(histo, (prefixME_ + "/EEIntegrityTask/MemSize/EEIT MemSize %s").c_str(), Numbers::sEE(ism).c_str());
00779     me = dqmStore_->get(histo);
00780     h09_[ism-1] = UtilsClient::getHisto<TH2F*>( me, cloneME_, h09_[ism-1] );
00781 
00782     float num00;
00783 
00784     // integrity summary histograms
00785     if ( meg01_[ism-1] ) meg01_[ism-1]->Reset();
00786     if ( meg01_[ism-1] ) meg02_[ism-1]->Reset();
00787 
00788     num00 = 0.;
00789 
00790     bool update0 = false;
00791 
00792     // dcc size errors
00793     if ( h00_ ) {
00794       num00  = h00_->GetBinContent(ism);
00795       update0 = true;
00796     }
00797 
00798     float num01, num02, num03, num04, num05;
00799 
00800     for ( int ix = 1; ix <= 50; ix++ ) {
00801       for ( int iy = 1; iy <= 50; iy++ ) {
00802 
00803         num01 = num02 = num03 = num04 = num05 = 0.;
00804 
00805         if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent( ix, iy, 6. );
00806 
00807         bool update1 = false;
00808         bool update2 = false;
00809 
00810         float numTot = -1.;
00811 
00812         if ( h_[ism-1] ) numTot = h_[ism-1]->GetBinContent(ix, iy);
00813 
00814         if ( h01_[ism-1] ) {
00815           num01  = h01_[ism-1]->GetBinContent(ix, iy);
00816           update1 = true;
00817         }
00818 
00819         if ( h02_[ism-1] ) {
00820           num02  = h02_[ism-1]->GetBinContent(ix, iy);
00821           update1 = true;
00822         }
00823 
00824         if ( h03_[ism-1] ) {
00825           num03  = h03_[ism-1]->GetBinContent(ix, iy);
00826           update1 = true;
00827         }
00828 
00829         if ( h04_[ism-1] ) {
00830           num04  = h04_[ism-1]->GetBinContent(ix, iy);
00831           update2 = true;
00832         }
00833 
00834         if ( h05_[ism-1] ) {
00835           num05  = h05_[ism-1]->GetBinContent(ix, iy);
00836           update2 = true;
00837         }
00838 
00839         if ( update0 || update1 || update2 ) {
00840 
00841           float val;
00842 
00843           val = 1.;
00844           // number of events on a channel
00845           if ( numTot > 0 ) {
00846             float errorRate1 =  num00 / numTot;
00847             if ( errorRate1 > threshCry_ )
00848               val = 0.;
00849             errorRate1 = ( num01 + num02 + num03 ) / numTot / 4.;
00850             if ( errorRate1 > threshCry_ )
00851               val = 0.;
00852             float errorRate2 = ( num04 + num05 ) / numTot / 2.;
00853             if ( errorRate2 > threshCry_ )
00854               val = 0.;
00855           } else {
00856             val = 2.;
00857             if ( num00 > 0 )
00858               val = 0.;
00859             if ( ( num01 + num02 + num03 ) > 0 )
00860               val = 0.;
00861             if ( ( num04 + num05 ) > 0 )
00862               val = 0.;
00863           }
00864 
00865           int jx = ix + Numbers::ix0EE(ism);
00866           int jy = iy + Numbers::iy0EE(ism);
00867 
00868           if ( ism >= 1 && ism <= 9 ) jx = 101 - jx;
00869 
00870           // filling the summary for SM channels
00871           if ( Numbers::validEE(ism, jx, jy) ) {
00872             if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent( ix, iy, val );
00873           }
00874 
00875         }
00876 
00877         // masking
00878 
00879         if ( mask1.size() != 0 ) {
00880           map<EcalLogicID, RunCrystalErrorsDat>::const_iterator m;
00881           for (m = mask1.begin(); m != mask1.end(); m++) {
00882 
00883             int jx = ix + Numbers::ix0EE(ism);
00884             int jy = iy + Numbers::iy0EE(ism);
00885 
00886             if ( ism >= 1 && ism <= 9 ) jx = 101 - jx;
00887 
00888             if ( ! Numbers::validEE(ism, jx, jy) ) continue;
00889 
00890             int ic = Numbers::indexEE(ism, jx, jy);
00891 
00892             if ( ic == -1 ) continue;
00893 
00894             EcalLogicID ecid = m->first;
00895 
00896             if ( ecid.getLogicID() == LogicID::getEcalLogicID("EE_crystal_number", Numbers::iSM(ism, EcalEndcap), ic).getLogicID() ) {
00897               if ( (m->second).getErrorBits() & bits01 ) {
00898                 UtilsClient::maskBinContent( meg01_[ism-1], ix, iy );
00899               }
00900             }
00901 
00902           }
00903         }
00904 
00905         if ( mask2.size() != 0 ) {
00906           map<EcalLogicID, RunTTErrorsDat>::const_iterator m;
00907           for (m = mask2.begin(); m != mask2.end(); m++) {
00908 
00909             EcalLogicID ecid = m->first;
00910 
00911             int itt = Numbers::iTT(ism, EcalEndcap, ix, iy);
00912 
00913             if ( ecid.getLogicID() == LogicID::getEcalLogicID("EE_readout_tower", Numbers::iSM(ism, EcalEndcap), itt).getLogicID() ) {
00914               if ( (m->second).getErrorBits() & bits02 ) {
00915                 UtilsClient::maskBinContent( meg01_[ism-1], ix, iy );
00916               }
00917             }
00918 
00919           }
00920         }
00921 
00922       }
00923     }// end of loop on crystals to fill summary plot
00924 
00925     // summaries for mem channels
00926     float num06, num07, num08, num09;
00927 
00928     for ( int ie = 1; ie <= 10; ie++ ) {
00929       for ( int ip = 1; ip <= 5; ip++ ) {
00930 
00931         num06 = num07 = num08 = num09 = 0.;
00932 
00933         // initialize summary histo for mem
00934         if ( meg02_[ism-1] ) meg02_[ism-1]->setBinContent( ie, ip, 2. );
00935 
00936         bool update1 = false;
00937         bool update2 = false;
00938 
00939         float numTotmem = -1.;
00940 
00941         if ( hmem_[ism-1] ) numTotmem = hmem_[ism-1]->GetBinContent(ie, ip);
00942 
00943         if ( h06_[ism-1] ) {
00944           num06  = h06_[ism-1]->GetBinContent(ie, ip);
00945           update1 = true;
00946         }
00947 
00948         if ( h07_[ism-1] ) {
00949           num07  = h07_[ism-1]->GetBinContent(ie, ip);
00950           update1 = true;
00951         }
00952 
00953         int iet = 1 + ((ie-1)/5);
00954         int ipt = 1;
00955 
00956         if ( h08_[ism-1] ) {
00957           num08  = h08_[ism-1]->GetBinContent(iet, ipt);
00958           update2 = true;
00959         }
00960 
00961         if ( h09_[ism-1] ) {
00962           num09  = h09_[ism-1]->GetBinContent(iet, ipt);
00963           update2 = true;
00964         }
00965 
00966 
00967         if ( update0 || update1 || update2 ) {
00968 
00969           float val;
00970 
00971           val = 1.;
00972           // number of events on a channel
00973           if ( numTotmem > 0 ) {
00974             float errorRate1 = ( num06 + num06 ) / numTotmem / 2.;
00975             if ( errorRate1 > threshCry_ )
00976               val = 0.;
00977             float errorRate2 = ( num08 + num09 ) / numTotmem / 2.;
00978             if ( errorRate2 > threshCry_ )
00979               val = 0.;
00980           } else {
00981             val = 2.;
00982             if ( ( num06 + num07 ) > 0 )
00983               val = 0.;
00984             if ( ( num08 + num09 ) > 0 )
00985               val = 0.;
00986           }
00987 
00988           // filling summary for mem channels
00989           if ( meg02_[ism-1] ) meg02_[ism-1]->setBinContent( ie, ip, val );
00990 
00991         }
00992 
00993         // masking
00994 
00995         if ( mask3.size() != 0 ) {
00996           map<EcalLogicID, RunMemChErrorsDat>::const_iterator m;
00997           for (m = mask3.begin(); m != mask3.end(); m++) {
00998 
00999             EcalLogicID ecid = m->first;
01000 
01001             int ic = EEIntegrityClient::chNum[ (ie-1)%5 ][ (ip-1) ] + (ie-1)/5 * 25;
01002 
01003             if ( ecid.getLogicID() == LogicID::getEcalLogicID("EE_mem_channel", Numbers::iSM(ism, EcalEndcap), ic).getLogicID() ) {
01004               if ( (m->second).getErrorBits() & bits01 ) {
01005                 UtilsClient::maskBinContent( meg02_[ism-1], ie, ip );
01006               }
01007             }
01008           }
01009         }
01010 
01011         if ( mask4.size() != 0 ) {
01012           map<EcalLogicID, RunMemTTErrorsDat>::const_iterator m;
01013           for (m = mask4.begin(); m != mask4.end(); m++) {
01014 
01015             EcalLogicID ecid = m->first;
01016 
01017             int iet = 1 + ((ie-1)/5);
01018             int itt = 68 + iet;
01019 
01020             if ( ecid.getLogicID() == LogicID::getEcalLogicID("EE_mem_TT", Numbers::iSM(ism, EcalEndcap), itt).getLogicID() ) {
01021               if ( (m->second).getErrorBits() & bits02 ) {
01022                 UtilsClient::maskBinContent( meg02_[ism-1], ie, ip );
01023               }
01024             }
01025           }
01026         }
01027 
01028       }
01029     }  // end loop on mem channels
01030 
01031   }// end loop on supermodules
01032 
01033 }

void EEIntegrityClient::beginJob ( DQMStore dqmStore  )  [virtual]

BeginJob.

Implements EEClient.

Definition at line 112 of file EEIntegrityClient.cc.

References GenMuonPlsPt100GeV_cfg::cout, debug_, dqmStore_, lat::endl(), ievt_, and jevt_.

00112                                                    {
00113 
00114   dqmStore_ = dqmStore;
00115 
00116   if ( debug_ ) cout << "EEIntegrityClient: beginJob" << endl;
00117 
00118   ievt_ = 0;
00119   jevt_ = 0;
00120 
00121 }

void EEIntegrityClient::beginRun ( void   )  [virtual]

BeginRun.

Implements EEClient.

Definition at line 123 of file EEIntegrityClient.cc.

References GenMuonPlsPt100GeV_cfg::cout, debug_, lat::endl(), jevt_, and setup().

00123                                      {
00124 
00125   if ( debug_ ) cout << "EEIntegrityClient: beginRun" << endl;
00126 
00127   jevt_ = 0;
00128 
00129   this->setup();
00130 
00131 }

void EEIntegrityClient::cleanup ( void   )  [virtual]

Cleanup.

Implements EEClient.

Definition at line 209 of file EEIntegrityClient.cc.

References cloneME_, dqmStore_, enableCleanup_, edm::getName(), h00_, h01_, h02_, h03_, h04_, h05_, h06_, h07_, h08_, h09_, h_, hmem_, i, meg01_, meg02_, prefixME_, DQMStore::removeElement(), DQMStore::setCurrentFolder(), and superModules_.

Referenced by endJob(), and endRun().

00209                                     {
00210 
00211   if ( ! enableCleanup_ ) return;
00212 
00213   if ( cloneME_ ) {
00214     if ( h00_ ) delete h00_;
00215   }
00216 
00217   h00_ = 0;
00218 
00219   for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00220 
00221     int ism = superModules_[i];
00222 
00223     if ( cloneME_ ) {
00224       if ( h_[ism-1] )    delete h_[ism-1];
00225       if ( hmem_[ism-1] ) delete hmem_[ism-1];
00226 
00227       if ( h01_[ism-1] ) delete h01_[ism-1];
00228       if ( h02_[ism-1] ) delete h02_[ism-1];
00229       if ( h03_[ism-1] ) delete h03_[ism-1];
00230       if ( h04_[ism-1] ) delete h04_[ism-1];
00231       if ( h05_[ism-1] ) delete h05_[ism-1];
00232       if ( h06_[ism-1] ) delete h06_[ism-1];
00233       if ( h07_[ism-1] ) delete h07_[ism-1];
00234       if ( h08_[ism-1] ) delete h08_[ism-1];
00235       if ( h09_[ism-1] ) delete h09_[ism-1];
00236     }
00237 
00238     h_[ism-1] = 0;
00239     hmem_[ism-1] = 0;
00240 
00241     h01_[ism-1] = 0;
00242     h02_[ism-1] = 0;
00243     h03_[ism-1] = 0;
00244     h04_[ism-1] = 0;
00245     h05_[ism-1] = 0;
00246     h06_[ism-1] = 0;
00247     h07_[ism-1] = 0;
00248     h08_[ism-1] = 0;
00249     h09_[ism-1] = 0;
00250 
00251   }
00252 
00253   dqmStore_->setCurrentFolder( prefixME_ + "/EEIntegrityClient" );
00254 
00255   for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00256 
00257     int ism = superModules_[i];
00258 
00259     if ( meg01_[ism-1] ) dqmStore_->removeElement( meg01_[ism-1]->getName() );
00260     meg01_[ism-1] = 0;
00261 
00262     if ( meg02_[ism-1] ) dqmStore_->removeElement( meg02_[ism-1]->getName() );
00263     meg02_[ism-1] = 0;
00264 
00265   }
00266 
00267 }

void EEIntegrityClient::endJob ( void   )  [virtual]

EndJob.

Implements EEClient.

Definition at line 133 of file EEIntegrityClient.cc.

References cleanup(), GenMuonPlsPt100GeV_cfg::cout, debug_, lat::endl(), and ievt_.

00133                                    {
00134 
00135   if ( debug_ ) cout << "EEIntegrityClient: endJob, ievt = " << ievt_ << endl;
00136 
00137   this->cleanup();
00138 
00139 }

void EEIntegrityClient::endRun ( void   )  [virtual]

EndRun.

Implements EEClient.

Definition at line 141 of file EEIntegrityClient.cc.

References cleanup(), GenMuonPlsPt100GeV_cfg::cout, debug_, lat::endl(), and jevt_.

00141                                    {
00142 
00143   if ( debug_ ) cout << "EEIntegrityClient: endRun, jevt = " << jevt_ << endl;
00144 
00145   this->cleanup();
00146 
00147 }

int EEIntegrityClient::getEvtPerJob ( void   )  [inline, virtual]

Get Functions.

Implements EEClient.

Definition at line 74 of file EEIntegrityClient.h.

References ievt_.

00074 { return ievt_; }

int EEIntegrityClient::getEvtPerRun ( void   )  [inline, virtual]

Returns the number of processed events in this Run.

Implements EEClient.

Definition at line 75 of file EEIntegrityClient.h.

References jevt_.

00075 { return jevt_; }

void EEIntegrityClient::htmlOutput ( int  run,
std::string &  htmlDir,
std::string &  htmlName 
) [virtual]

HtmlOutput.

Implements EEClient.

void EEIntegrityClient::setup ( void   )  [virtual]

Setup.

Implements EEClient.

Definition at line 149 of file EEIntegrityClient.cc.

References DQMStore::book2D(), dqmStore_, edm::getName(), histo, i, Numbers::ix0EE(), Numbers::iy0EE(), meg01_, meg02_, prefixME_, DQMStore::removeElement(), MonitorElement::Reset(), Numbers::sEE(), MonitorElement::setAxisTitle(), MonitorElement::setBinContent(), DQMStore::setCurrentFolder(), superModules_, and Numbers::validEE().

Referenced by beginRun().

00149                                   {
00150 
00151   char histo[200];
00152 
00153   dqmStore_->setCurrentFolder( prefixME_ + "/EEIntegrityClient" );
00154 
00155   for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00156 
00157     int ism = superModules_[i];
00158 
00159     if ( meg01_[ism-1] ) dqmStore_->removeElement( meg01_[ism-1]->getName() );
00160     sprintf(histo, "EEIT data integrity quality %s", Numbers::sEE(ism).c_str());
00161     meg01_[ism-1] = dqmStore_->book2D(histo, histo, 50, Numbers::ix0EE(ism)+0., Numbers::ix0EE(ism)+50., 50, Numbers::iy0EE(ism)+0., Numbers::iy0EE(ism)+50.);
00162     meg01_[ism-1]->setAxisTitle("jx", 1);
00163     meg01_[ism-1]->setAxisTitle("jy", 2);
00164 
00165     if ( meg02_[ism-1] ) dqmStore_->removeElement( meg02_[ism-1]->getName() );
00166     sprintf(histo, "EEIT data integrity quality MEM %s", Numbers::sEE(ism).c_str());
00167     meg02_[ism-1] = dqmStore_->book2D(histo, histo, 10, 0., 10., 5, 0.,5.);
00168     meg02_[ism-1]->setAxisTitle("pseudo-strip", 1);
00169     meg02_[ism-1]->setAxisTitle("channel", 2);
00170 
00171   }
00172 
00173   for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00174 
00175     int ism = superModules_[i];
00176 
00177     if ( meg01_[ism-1] ) meg01_[ism-1]->Reset();
00178     if ( meg02_[ism-1] ) meg02_[ism-1]->Reset();
00179 
00180     for ( int ix = 1; ix <= 50; ix++ ) {
00181       for ( int iy = 1; iy <= 50; iy++ ) {
00182 
00183         if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent( ix, iy, 6. );
00184 
00185         int jx = ix + Numbers::ix0EE(ism);
00186         int jy = iy + Numbers::iy0EE(ism);
00187 
00188         if ( ism >= 1 && ism <= 9 ) jx = 101 - jx;
00189 
00190         if ( Numbers::validEE(ism, jx, jy) ) {
00191           if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent( ix, iy, 2. );
00192         }
00193 
00194       }
00195     }
00196 
00197     for ( int ie = 1; ie <= 10; ie++ ) {
00198       for ( int ip = 1; ip <= 5; ip++ ) {
00199 
00200         if ( meg02_[ism-1] ) meg02_[ism-1]->setBinContent( ie, ip, 2. );
00201 
00202       }
00203     }
00204 
00205   }
00206 
00207 }

void EEIntegrityClient::softReset ( bool  flag  )  [virtual]

SoftReset.

Implements EEClient.

Definition at line 1035 of file EEIntegrityClient.cc.

References dqmStore_, DQMStore::get(), histo, i, me, prefixME_, Numbers::sEE(), DQMStore::softReset(), and superModules_.

Referenced by writeDb().

01035                                            {
01036 
01037   char histo[200];
01038 
01039   MonitorElement* me;
01040 
01041   sprintf(histo, (prefixME_ + "/EEIntegrityTask/EEIT DCC size error").c_str());
01042   me = dqmStore_->get(histo);
01043   if ( flag ) {
01044     if ( me ) dqmStore_->softReset( me );
01045   } else {
01046     //      if ( me ) dqmStore_->disableSoftReset( me );
01047   }
01048 
01049   for ( unsigned int i=0; i<superModules_.size(); i++ ) {
01050 
01051     int ism = superModules_[i];
01052 
01053     sprintf(histo, (prefixME_ + "/EEOccupancyTask/EEOT digi occupancy %s").c_str(), Numbers::sEE(ism).c_str());
01054     me = dqmStore_->get(histo);
01055     if ( flag ) {
01056       if ( me ) dqmStore_->softReset( me );
01057     } else {
01058 //      if ( me ) dqmStore_->disableSoftReset( me );
01059     }
01060 
01061     sprintf(histo, (prefixME_ + "/EEOccupancyTask/EEOT MEM digi occupancy %s").c_str(), Numbers::sEE(ism).c_str());
01062     me = dqmStore_->get(histo);
01063     if ( flag ) {
01064       if ( me ) dqmStore_->softReset( me );
01065     } else {
01066 //      if ( me ) dqmStore_->disableSoftReset( me );
01067     }
01068 
01069     sprintf(histo, (prefixME_ + "/EEIntegrityTask/Gain/EEIT gain %s").c_str(), Numbers::sEE(ism).c_str());
01070     me = dqmStore_->get(histo);
01071     if ( flag ) {
01072       if ( me ) dqmStore_->softReset( me );
01073     } else {
01074 //      if ( me ) dqmStore_->disableSoftReset( me );
01075     }
01076 
01077     sprintf(histo, (prefixME_ + "/EEIntegrityTask/ChId/EEIT ChId %s").c_str(), Numbers::sEE(ism).c_str());
01078     me = dqmStore_->get(histo);
01079     if ( flag ) {
01080       if ( me ) dqmStore_->softReset( me );
01081     } else {
01082 //      if ( me ) dqmStore_->disableSoftReset( me );
01083     }
01084 
01085     sprintf(histo, (prefixME_ + "/EEIntegrityTask/GainSwitch/EEIT gain switch %s").c_str(), Numbers::sEE(ism).c_str());
01086     me = dqmStore_->get(histo);
01087     if ( flag ) {
01088       if ( me ) dqmStore_->softReset( me );
01089     } else {
01090 //      if ( me ) dqmStore_->disableSoftReset( me );
01091     }
01092 
01093     sprintf(histo, (prefixME_ + "/EEIntegrityTask/TTId/EEIT TTId %s").c_str(), Numbers::sEE(ism).c_str());
01094     me = dqmStore_->get(histo);
01095     if ( flag ) {
01096       if ( me ) dqmStore_->softReset( me );
01097     } else {
01098 //      if ( me ) dqmStore_->disableSoftReset( me );
01099     }
01100 
01101     sprintf(histo, (prefixME_ + "/EEIntegrityTask/TTBlockSize/EEIT TTBlockSize %s").c_str(), Numbers::sEE(ism).c_str());
01102     me = dqmStore_->get(histo);
01103     if ( flag ) {
01104       if ( me ) dqmStore_->softReset( me );
01105     } else {
01106 //      if ( me ) dqmStore_->disableSoftReset( me );
01107     }
01108 
01109     sprintf(histo, (prefixME_ + "/EEIntegrityTask/MemChId/EEIT MemChId %s").c_str(), Numbers::sEE(ism).c_str());
01110     me = dqmStore_->get(histo);
01111     if ( flag ) {
01112       if ( me ) dqmStore_->softReset( me );
01113     } else {
01114 //      if ( me ) dqmStore_->disableSoftReset( me );
01115     }
01116 
01117     sprintf(histo, (prefixME_ + "/EEIntegrityTask/MemGain/EEIT MemGain %s").c_str(), Numbers::sEE(ism).c_str());
01118     me = dqmStore_->get(histo);
01119     if ( flag ) {
01120       if ( me ) dqmStore_->softReset( me );
01121     } else {
01122 //      if ( me ) dqmStore_->disableSoftReset( me );
01123     }
01124 
01125     sprintf(histo, (prefixME_ + "/EEIntegrityTask/MemTTId/EEIT MemTTId %s").c_str(), Numbers::sEE(ism).c_str());
01126     me = dqmStore_->get(histo);
01127     if ( flag ) {
01128       if ( me ) dqmStore_->softReset( me );
01129     } else {
01130 //      if ( me ) dqmStore_->disableSoftReset( me );
01131     }
01132 
01133     sprintf(histo, (prefixME_ + "/EEIntegrityTask/MemSize/EEIT MemSize %s").c_str(), Numbers::sEE(ism).c_str());
01134     me = dqmStore_->get(histo);
01135     if ( flag ) {
01136       if ( me ) dqmStore_->softReset( me );
01137     } else {
01138 //      if ( me ) dqmStore_->disableSoftReset( me );
01139     }
01140 
01141   }
01142 
01143 }

bool EEIntegrityClient::writeDb ( EcalCondDBInterface econn,
RunIOV runiov,
MonRunIOV moniov,
bool status,
bool  flag 
) [virtual]

WriteDB.

Implements EEClient.

Definition at line 269 of file EEIntegrityClient.cc.

References c1, c2, c3, c4, TestMuL1L2Filter_cff::cerr, chNum, GenMuonPlsPt100GeV_cfg::cout, e, EcalEndcap, lat::endl(), LogicID::getEcalLogicID(), h00_, h01_, h02_, h03_, h04_, h05_, h06_, h07_, h08_, h09_, h_, hmem_, i, Numbers::icEE(), Numbers::indexEE(), EcalCondDBInterface::insertDataArraySet(), Numbers::iSM(), Numbers::iTT(), Numbers::ix0EE(), Numbers::iy0EE(), meg01_, meg02_, UtilsClient::printBadChannels(), Numbers::sEE(), MonCrystalConsistencyDat::setProblematicEvents(), MonMemTTConsistencyDat::setProblematicEvents(), MonTTConsistencyDat::setProblematicEvents(), MonMemChConsistencyDat::setProblematicEvents(), MonTTConsistencyDat::setProblemsBunchX(), MonCrystalConsistencyDat::setProblemsGainSwitch(), MonMemChConsistencyDat::setProblemsGainZero(), MonCrystalConsistencyDat::setProblemsGainZero(), MonTTConsistencyDat::setProblemsID(), MonMemTTConsistencyDat::setProblemsID(), MonCrystalConsistencyDat::setProblemsID(), MonMemChConsistencyDat::setProblemsID(), MonTTConsistencyDat::setProblemsLV1(), MonTTConsistencyDat::setProblemsSize(), MonMemTTConsistencyDat::setProblemsSize(), MonCrystalConsistencyDat::setProcessedEvents(), MonMemChConsistencyDat::setProcessedEvents(), MonMemTTConsistencyDat::setProcessedEvents(), MonTTConsistencyDat::setProcessedEvents(), MonCrystalConsistencyDat::setTaskStatus(), MonMemTTConsistencyDat::setTaskStatus(), MonTTConsistencyDat::setTaskStatus(), softReset(), superModules_, threshCry_, Numbers::validEE(), and verbose_.

00269                                                                                                                       {
00270 
00271   status = true;
00272 
00273   if ( flag ) this->softReset(false);
00274 
00275   EcalLogicID ecid;
00276 
00277   MonCrystalConsistencyDat c1;
00278   map<EcalLogicID, MonCrystalConsistencyDat> dataset1;
00279   MonTTConsistencyDat c2;
00280   map<EcalLogicID, MonTTConsistencyDat> dataset2;
00281   MonMemChConsistencyDat c3;
00282   map<EcalLogicID, MonMemChConsistencyDat> dataset3;
00283   MonMemTTConsistencyDat c4;
00284   map<EcalLogicID, MonMemTTConsistencyDat> dataset4;
00285 
00286   for ( unsigned int i=0; i<superModules_.size(); i++ ) {
00287 
00288     int ism = superModules_[i];
00289 
00290     if ( h00_ && h00_->GetBinContent(ism) != 0 ) {
00291       cerr << endl;
00292       cerr << " DCC failed " << h00_->GetBinContent(ism) << " times" << endl;
00293       cerr << endl;
00294     }
00295 
00296     if ( verbose_ ) {
00297       cout << " " << Numbers::sEE(ism) << " (ism=" << ism << ")" << endl;
00298       cout << endl;
00299       UtilsClient::printBadChannels(meg01_[ism-1], h01_[ism-1], true);
00300       UtilsClient::printBadChannels(meg01_[ism-1], h02_[ism-1], true);
00301       UtilsClient::printBadChannels(meg01_[ism-1], h03_[ism-1], true);
00302       UtilsClient::printBadChannels(meg01_[ism-1], h04_[ism-1], true);
00303       UtilsClient::printBadChannels(meg01_[ism-1], h05_[ism-1], true);
00304 
00305       UtilsClient::printBadChannels(meg02_[ism-1], h06_[ism-1], true);
00306       UtilsClient::printBadChannels(meg02_[ism-1], h07_[ism-1], true);
00307       UtilsClient::printBadChannels(meg02_[ism-1], h08_[ism-1], true);
00308       UtilsClient::printBadChannels(meg02_[ism-1], h09_[ism-1], true);
00309     }
00310 
00311     float num00;
00312 
00313     num00 = 0.;
00314 
00315     bool update0 = false;
00316 
00317     if ( h00_ ) {
00318       num00 = h00_->GetBinContent(ism);
00319       if ( num00 > 0 ) update0 = true;
00320     }
00321 
00322     float num01, num02, num03;
00323 
00324     for ( int ix = 1; ix <= 50; ix++ ) {
00325       for ( int iy = 1; iy <= 50; iy++ ) {
00326 
00327         int jx = ix + Numbers::ix0EE(ism);
00328         int jy = iy + Numbers::iy0EE(ism);
00329 
00330         if ( ism >= 1 && ism <= 9 ) jx = 101 - jx;
00331 
00332         if ( ! Numbers::validEE(ism, jx, jy) ) continue;
00333 
00334         num01 = num02 = num03 = 0.;
00335 
00336         bool update1 = false;
00337 
00338         float numTot = -1.;
00339 
00340         if ( h_[ism-1] ) numTot = h_[ism-1]->GetBinContent(ix, iy);
00341 
00342         if ( h01_[ism-1] ) {
00343           num01  = h01_[ism-1]->GetBinContent(ix, iy);
00344           if ( num01 > 0 ) update1 = true;
00345         }
00346 
00347         if ( h02_[ism-1] ) {
00348           num02  = h02_[ism-1]->GetBinContent(ix, iy);
00349           if ( num02 > 0 ) update1 = true;
00350         }
00351 
00352         if ( h03_[ism-1] ) {
00353           num03  = h03_[ism-1]->GetBinContent(ix, iy);
00354           if ( num03 > 0 ) update1 = true;
00355         }
00356 
00357         if ( update0 || update1 ) {
00358 
00359           if ( Numbers::icEE(ism, jx, jy) == 1 ) {
00360 
00361             if ( verbose_ ) {
00362               cout << "Preparing dataset for " << Numbers::sEE(ism) << " (ism=" << ism << ")" << endl;
00363               cout << "(" << Numbers::ix0EE(i+1)+ix << "," << Numbers::iy0EE(i+1)+iy << ") " << num00 << " " << num01 << " " << num02 << " " << num03 << endl;
00364               cout << endl;
00365             }
00366 
00367           }
00368 
00369           c1.setProcessedEvents(int(numTot));
00370           c1.setProblematicEvents(int(num01+num02+num03));
00371           c1.setProblemsGainZero(int(num01));
00372           c1.setProblemsID(int(num02));
00373           c1.setProblemsGainSwitch(int(num03));
00374 
00375           bool val;
00376 
00377           val = true;
00378           if ( numTot > 0 ) {
00379             float errorRate1 = num00 / numTot;
00380             if ( errorRate1 > threshCry_ )
00381               val = false;
00382             errorRate1 = ( num01 + num02 + num03 ) / numTot / 4.;
00383             if ( errorRate1 > threshCry_ )
00384               val = false;
00385           } else {
00386             if ( num00 > 0 )
00387               val = false;
00388             if ( ( num01 + num02 + num03 ) > 0 )
00389               val = false;
00390           }
00391           c1.setTaskStatus(val);
00392 
00393           int ic = Numbers::indexEE(ism, jx, jy);
00394 
00395           if ( ic == -1 ) continue;
00396 
00397           if ( econn ) {
00398             ecid = LogicID::getEcalLogicID("EE_crystal_number", Numbers::iSM(ism, EcalEndcap), ic);
00399             dataset1[ecid] = c1;
00400           }
00401 
00402           status = status && val;
00403 
00404         }
00405 
00406       }
00407     }
00408 
00409     float num04, num05;
00410 
00411     for ( int ixt = 1; ixt <= 10; ixt++ ) {
00412       for ( int iyt = 1; iyt <= 10; iyt++ ) {
00413 
00414         int jxt = Numbers::ix0EE(ism) + 1 + 5*(ixt-1);
00415         int jyt = Numbers::iy0EE(ism) + 1 + 5*(iyt-1);
00416 
00417         if ( ism >= 1 && ism <= 9 ) jxt = 101 - jxt;
00418 
00419         num04 = num05 = 0.;
00420 
00421         bool update1 = false;
00422 
00423         float numTot = -1.;
00424 
00425         if ( h_[ism-1] ) {
00426           numTot = 0.;
00427           for ( int ix = 1 + 5*(ixt-1); ix <= 5*ixt; ix++ ) {
00428             for ( int iy = 1 + 5*(iyt-1); iy <= 5*iyt; iy++ ) {
00429               int jx = ix + Numbers::ix0EE(ism);
00430               int jy = iy + Numbers::iy0EE(ism);
00431               if ( ism >= 1 && ism <= 9 ) jx = 101 - jx;
00432               if ( ! Numbers::validEE(ism, jx, jy) ) continue;
00433               numTot += h_[ism-1]->GetBinContent(ix, iy);
00434             }
00435           }
00436         }
00437 
00438         if ( h04_[ism-1] ) {
00439           for ( int ix = 1 + 5*(ixt-1); ix <= 5*ixt; ix++ ) {
00440             for ( int iy = 1 + 5*(iyt-1); iy <= 5*iyt; iy++ ) {
00441               int jx = ix + Numbers::ix0EE(ism);
00442               int jy = iy + Numbers::iy0EE(ism);
00443               if ( ism >= 1 && ism <= 9 ) jx = 101 - jx;
00444               if ( ! Numbers::validEE(ism, jx, jy) ) continue;
00445               num04  = h04_[ism-1]->GetBinContent(ix, iy);
00446               if ( num04 > 0 ) update1 = true;
00447             }
00448           }
00449         }
00450 
00451         if ( h05_[ism-1] ) {
00452           for ( int ix = 1 + 5*(ixt-1); ix <= 5*ixt; ix++ ) {
00453             for ( int iy = 1 + 5*(iyt-1); iy <= 5*iyt; iy++ ) {
00454               int jx = ix + Numbers::ix0EE(ism);
00455               int jy = iy + Numbers::iy0EE(ism);
00456               if ( ism >= 1 && ism <= 9 ) jx = 101 - jx;
00457               if ( ! Numbers::validEE(ism, jx, jy) ) continue;
00458               num05  = h05_[ism-1]->GetBinContent(ix, iy);
00459               if ( num05 > 0 ) update1 = true;
00460             }
00461           }
00462         }
00463 
00464         if ( update0 || update1 ) {
00465 
00466           if ( Numbers::iTT(ism, EcalEndcap, jxt, jyt) == 1 ) {
00467 
00468             if ( verbose_ ) {
00469               cout << "Preparing dataset for " << Numbers::sEE(ism) << " (ism=" << ism << ")" << endl;
00470               cout << "(" << 1+(Numbers::ix0EE(ism)+1+5*(ixt-1))/5 << "," << 1+(Numbers::iy0EE(ism)+1+5*(iyt-1))/5 << ") " << num00 << " " << num04 << " " << num05 << endl;
00471               cout << endl;
00472             }
00473 
00474           }
00475 
00476           c2.setProcessedEvents(int(numTot));
00477           c2.setProblematicEvents(int(num04+num05));
00478           c2.setProblemsID(int(num04));
00479           c2.setProblemsSize(int(num05));
00480           c2.setProblemsLV1(int(-1.));
00481           c2.setProblemsBunchX(int(-1.));
00482 
00483           bool val;
00484 
00485           val = true;
00486           if ( numTot > 0 ) {
00487             float errorRate2 = num00 / numTot;
00488             if ( errorRate2 > threshCry_ )
00489               val = false;
00490             errorRate2 = ( num04 + num05 ) / numTot / 2.;
00491             if ( errorRate2 > threshCry_ )
00492               val = false;
00493           } else {
00494             if ( num00 > 0 )
00495               val = false;
00496             if ( ( num04 + num05 ) > 0 )
00497               val = false;
00498           }
00499           c2.setTaskStatus(val);
00500 
00501           int itt = Numbers::iTT(ism, EcalEndcap, jxt, jyt);
00502 
00503           if ( itt == -1 ) continue;
00504 
00505           if ( econn ) {
00506             ecid = LogicID::getEcalLogicID("EE_readout_tower", Numbers::iSM(ism, EcalEndcap), itt);
00507             dataset2[ecid] = c2;
00508           }
00509 
00510           status = status && val;
00511 
00512         }
00513 
00514       }
00515     }
00516 
00517     float num06, num07;
00518 
00519     for ( int ix = 1; ix <= 10; ix++ ) {
00520       for ( int iy = 1; iy <= 5; iy++ ) {
00521 
00522         num06 = num07 = 0.;
00523 
00524         bool update1 = false;
00525 
00526         float numTot = -1.;
00527 
00528         if ( hmem_[ism-1] ) numTot = hmem_[ism-1]->GetBinContent(ix, iy);
00529 
00530         if ( h06_[ism-1] ) {
00531           num06  = h06_[ism-1]->GetBinContent(ix, iy);
00532           if ( num06 > 0 ) update1 = true;
00533         }
00534 
00535         if ( h07_[ism-1] ) {
00536           num07  = h07_[ism-1]->GetBinContent(ix, iy);
00537           if ( num07 > 0 ) update1 = true;
00538         }
00539 
00540         if ( update0 || update1 ) {
00541 
00542           if ( ix ==1 && iy == 1 ) {
00543 
00544             if ( verbose_ ) {
00545               cout << "Preparing dataset for mem of SM=" << ism << endl;
00546               cout << "(" << ix << "," << iy << ") " << num06 << " " << num07 << endl;
00547               cout << endl;
00548             }
00549 
00550           }
00551 
00552           c3.setProcessedEvents( int (numTot));
00553           c3.setProblematicEvents(int (num06+num07));
00554           c3.setProblemsID(int (num06) );
00555           c3.setProblemsGainZero(int (num07));
00556           // c3.setProblemsGainSwitch(int prob);
00557 
00558           bool val;
00559 
00560           val = true;
00561           if ( numTot > 0 ) {
00562             float errorRate1 = num00 / numTot;
00563             if ( errorRate1 > threshCry_ )
00564               val = false;
00565             errorRate1 = ( num06 + num07 ) / numTot / 2.;
00566             if ( errorRate1 > threshCry_ )
00567               val = false;
00568           } else {
00569             if ( num00 > 0 )
00570              val = false;
00571             if ( ( num06 + num07 ) > 0 )
00572               val = false;
00573           }
00574           c3. setTaskStatus(val);
00575 
00576           int ic = EEIntegrityClient::chNum[ (ix-1)%5 ][ (iy-1) ] + (ix-1)/5 * 25;
00577 
00578           if ( econn ) {
00579             ecid = LogicID::getEcalLogicID("EE_mem_channel", Numbers::iSM(ism, EcalEndcap), ic);
00580             dataset3[ecid] = c3;
00581           }
00582 
00583           status = status && val;
00584 
00585         }
00586 
00587       }
00588     }
00589 
00590     float num08, num09;
00591 
00592     for ( int ixt = 1; ixt <= 2; ixt++ ) {
00593 
00594       num08 = num09 = 0.;
00595 
00596       bool update1 = false;
00597 
00598       float numTot = -1.;
00599 
00600       if ( hmem_[ism-1] ) {
00601         numTot = 0.;
00602         for ( int ix = 1 + 5*(ixt-1); ix <= 5*ixt; ix++ ) {
00603           for ( int iy = 1 ; iy <= 5; iy++ ) {
00604             numTot += hmem_[ism-1]->GetBinContent(ix, iy);
00605           }
00606         }
00607       }
00608 
00609       if ( h08_[ism-1] ) {
00610         num08  = h08_[ism-1]->GetBinContent(ixt, 1);
00611         if ( num08 > 0 ) update1 = true;
00612       }
00613 
00614       if ( h09_[ism-1] ) {
00615         num09  = h09_[ism-1]->GetBinContent(ixt, 1);
00616         if ( num09 > 0 ) update1 = true;
00617       }
00618 
00619       if ( update0 || update1 ) {
00620 
00621         if ( ixt == 1 ) {
00622 
00623           if ( verbose_ ) {
00624             cout << "Preparing dataset for " << Numbers::sEE(ism) << " (ism=" << ism << ")" << endl;
00625             cout << "(" << ixt <<  ") " << num08 << " " << num09 << endl;
00626             cout << endl;
00627           }
00628 
00629         }
00630 
00631         c4.setProcessedEvents( int(numTot) );
00632         c4.setProblematicEvents( int(num08 + num09) );
00633         c4.setProblemsID( int(num08) );
00634         c4.setProblemsSize(int (num09) );
00635         // setProblemsLV1(int LV1);
00636         // setProblemsBunchX(int bunchX);
00637 
00638         bool val;
00639 
00640         val = true;
00641         if ( numTot > 0 ) {
00642           float errorRate2 = num00 / numTot;
00643           if ( errorRate2 > threshCry_ )
00644             val = false;
00645           errorRate2 = ( num08 + num09 ) / numTot / 2.;
00646           if ( errorRate2 > threshCry_ )
00647             val = false;
00648         } else {
00649           if ( num00 > 0 )
00650             val = false;
00651           if ( ( num08 + num09 ) > 0 )
00652             val = false;
00653         }
00654         c4.setTaskStatus(val);
00655 
00656         int itt = 68 + ixt;
00657 
00658         if ( econn ) {
00659           ecid = LogicID::getEcalLogicID("EE_mem_TT", Numbers::iSM(ism, EcalEndcap), itt);
00660           dataset4[ecid] = c4;
00661         }
00662 
00663         status = status && val;
00664 
00665       }
00666 
00667     }
00668 
00669   }
00670 
00671   if ( econn ) {
00672     try {
00673       if ( verbose_ ) cout << "Inserting MonConsistencyDat ..." << endl;
00674       if ( dataset1.size() != 0 ) econn->insertDataArraySet(&dataset1, moniov);
00675       if ( dataset2.size() != 0 ) econn->insertDataArraySet(&dataset2, moniov);
00676       if ( dataset3.size() != 0 ) econn->insertDataArraySet(&dataset3, moniov);
00677       if ( dataset4.size() != 0 ) econn->insertDataArraySet(&dataset4, moniov);
00678       if ( verbose_ ) cout << "done." << endl;
00679     } catch (runtime_error &e) {
00680       cerr << e.what() << endl;
00681     }
00682   }
00683 
00684   if ( ! flag ) this->softReset(true);
00685 
00686   return true;
00687 
00688 }


Friends And Related Function Documentation

friend class EESummaryClient [friend]

Definition at line 33 of file EEIntegrityClient.h.


Member Data Documentation

const int EEIntegrityClient::chNum [static, private]

Initial value:

 {
  { 1,  2,  3,  4,  5},
  {10,  9,  8,  7,  6},
  {11, 12, 13, 14, 15},
  {20, 19, 18, 17, 16},
  {21, 22, 23, 24, 25}
}

Definition at line 117 of file EEIntegrityClient.h.

Referenced by analyze(), and writeDb().

bool EEIntegrityClient::cloneME_ [private]

Definition at line 82 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), and EEIntegrityClient().

bool EEIntegrityClient::debug_ [private]

Definition at line 85 of file EEIntegrityClient.h.

Referenced by analyze(), beginJob(), beginRun(), EEIntegrityClient(), endJob(), and endRun().

DQMStore* EEIntegrityClient::dqmStore_ [private]

Definition at line 93 of file EEIntegrityClient.h.

Referenced by analyze(), beginJob(), cleanup(), setup(), and softReset().

bool EEIntegrityClient::enableCleanup_ [private]

Definition at line 89 of file EEIntegrityClient.h.

Referenced by cleanup(), and EEIntegrityClient().

TH1F* EEIntegrityClient::h00_ [private]

Definition at line 95 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), EEIntegrityClient(), and writeDb().

TH2F* EEIntegrityClient::h01_[18] [private]

Definition at line 97 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), EEIntegrityClient(), and writeDb().

TH2F* EEIntegrityClient::h02_[18] [private]

Definition at line 98 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), EEIntegrityClient(), and writeDb().

TH2F* EEIntegrityClient::h03_[18] [private]

Definition at line 99 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), EEIntegrityClient(), and writeDb().

TH2F* EEIntegrityClient::h04_[18] [private]

Definition at line 100 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), EEIntegrityClient(), and writeDb().

TH2F* EEIntegrityClient::h05_[18] [private]

Definition at line 101 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), EEIntegrityClient(), and writeDb().

TH2F* EEIntegrityClient::h06_[18] [private]

Definition at line 102 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), EEIntegrityClient(), and writeDb().

TH2F* EEIntegrityClient::h07_[18] [private]

Definition at line 103 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), EEIntegrityClient(), and writeDb().

TH2F* EEIntegrityClient::h08_[18] [private]

Definition at line 104 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), EEIntegrityClient(), and writeDb().

TH2F* EEIntegrityClient::h09_[18] [private]

Definition at line 105 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), EEIntegrityClient(), and writeDb().

TH2F* EEIntegrityClient::h_[18] [private]

Definition at line 110 of file EEIntegrityClient.h.

Referenced by EESummaryClient::analyze(), analyze(), cleanup(), EEIntegrityClient(), and writeDb().

TH2F* EEIntegrityClient::hmem_[18] [private]

Definition at line 111 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), EEIntegrityClient(), and writeDb().

int EEIntegrityClient::ievt_ [private]

Definition at line 79 of file EEIntegrityClient.h.

Referenced by analyze(), beginJob(), endJob(), and getEvtPerJob().

int EEIntegrityClient::jevt_ [private]

Definition at line 80 of file EEIntegrityClient.h.

Referenced by analyze(), beginJob(), beginRun(), endRun(), and getEvtPerRun().

MonitorElement* EEIntegrityClient::meg01_[18] [private]

Definition at line 107 of file EEIntegrityClient.h.

Referenced by EESummaryClient::analyze(), analyze(), cleanup(), EEIntegrityClient(), setup(), and writeDb().

MonitorElement* EEIntegrityClient::meg02_[18] [private]

Definition at line 108 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), EEIntegrityClient(), setup(), and writeDb().

std::string EEIntegrityClient::prefixME_ [private]

Definition at line 87 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), EEIntegrityClient(), setup(), and softReset().

std::vector<int> EEIntegrityClient::superModules_ [private]

Definition at line 91 of file EEIntegrityClient.h.

Referenced by analyze(), cleanup(), EEIntegrityClient(), setup(), softReset(), and writeDb().

float EEIntegrityClient::threshCry_ [private]

Definition at line 115 of file EEIntegrityClient.h.

Referenced by analyze(), EEIntegrityClient(), and writeDb().

bool EEIntegrityClient::verbose_ [private]

Definition at line 84 of file EEIntegrityClient.h.

Referenced by EEIntegrityClient(), and writeDb().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:20:06 2009 for CMSSW by  doxygen 1.5.4