CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Private Attributes | Static Private Attributes

EEIntegrityTask Class Reference

#include <EEIntegrityTask.h>

Inheritance diagram for EEIntegrityTask:
edm::EDAnalyzer

List of all members.

Public Member Functions

 EEIntegrityTask (const edm::ParameterSet &ps)
 Constructor.
virtual ~EEIntegrityTask ()
 Destructor.

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c)
 Analyze.
void beginJob (void)
 BeginJob.
void beginLuminosityBlock (const edm::LuminosityBlock &lumiBlock, const edm::EventSetup &iSetup)
 BeginLuminosityBlock.
void beginRun (const edm::Run &r, const edm::EventSetup &c)
 BeginRun.
void cleanup (void)
 Cleanup.
void endJob (void)
 EndJob.
void endLuminosityBlock (const edm::LuminosityBlock &lumiBlock, const edm::EventSetup &iSetup)
 EndLuminosityBlock.
void endRun (const edm::Run &r, const edm::EventSetup &c)
 EndRun.
void reset (void)
 Reset.
void setup (void)
 Setup.

Private Attributes

DQMStoredqmStore_
edm::InputTag EcalElectronicsIdCollection1_
edm::InputTag EcalElectronicsIdCollection2_
edm::InputTag EcalElectronicsIdCollection3_
edm::InputTag EcalElectronicsIdCollection4_
edm::InputTag EcalElectronicsIdCollection5_
edm::InputTag EcalElectronicsIdCollection6_
edm::InputTag EEDetIdCollection0_
edm::InputTag EEDetIdCollection1_
edm::InputTag EEDetIdCollection2_
edm::InputTag EEDetIdCollection3_
edm::InputTag EEDetIdCollection4_
bool enableCleanup_
int ievt_
bool init_
MonitorElementmeIntegrityChId [18]
MonitorElementmeIntegrityDCCSize
MonitorElementmeIntegrityErrorsByLumi
MonitorElementmeIntegrityGain [18]
MonitorElementmeIntegrityGainSwitch [18]
MonitorElementmeIntegrityMemChId [18]
MonitorElementmeIntegrityMemGain [18]
MonitorElementmeIntegrityMemTTBlockSize [18]
MonitorElementmeIntegrityMemTTId [18]
MonitorElementmeIntegrityTTBlockSize [18]
MonitorElementmeIntegrityTTId [18]
bool mergeRuns_
std::string prefixME_
std::string subfolder_

Static Private Attributes

static const int chMemAbscissa [25]
static const int chMemOrdinate [25]

Detailed Description

Definition at line 21 of file EEIntegrityTask.h.


Constructor & Destructor Documentation

EEIntegrityTask::EEIntegrityTask ( const edm::ParameterSet ps)

Constructor.

Definition at line 29 of file EEIntegrityTask.cc.

References dqmStore_, EcalElectronicsIdCollection1_, EcalElectronicsIdCollection2_, EcalElectronicsIdCollection3_, EcalElectronicsIdCollection4_, EcalElectronicsIdCollection5_, EcalElectronicsIdCollection6_, EEDetIdCollection0_, EEDetIdCollection1_, EEDetIdCollection2_, EEDetIdCollection3_, enableCleanup_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), i, init_, meIntegrityChId, meIntegrityDCCSize, meIntegrityErrorsByLumi, meIntegrityGain, meIntegrityGainSwitch, meIntegrityMemChId, meIntegrityMemGain, meIntegrityMemTTBlockSize, meIntegrityMemTTId, meIntegrityTTBlockSize, meIntegrityTTId, mergeRuns_, cppFunctionSkipper::operator, prefixME_, and subfolder_.

                                                         {

  init_ = false;

  dqmStore_ = edm::Service<DQMStore>().operator->();

  prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");

  subfolder_ = ps.getUntrackedParameter<std::string>("subfolder", "");

  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);

  mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false);

  EEDetIdCollection0_ =  ps.getParameter<edm::InputTag>("EEDetIdCollection0");
  EEDetIdCollection1_ =  ps.getParameter<edm::InputTag>("EEDetIdCollection1");
  EEDetIdCollection2_ =  ps.getParameter<edm::InputTag>("EEDetIdCollection2");
  EEDetIdCollection3_ =  ps.getParameter<edm::InputTag>("EEDetIdCollection3");
  EcalElectronicsIdCollection1_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection1");
  EcalElectronicsIdCollection2_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection2");
  EcalElectronicsIdCollection3_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection3");
  EcalElectronicsIdCollection4_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection4");
  EcalElectronicsIdCollection5_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection5");
  EcalElectronicsIdCollection6_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection6");

  meIntegrityDCCSize = 0;
  for (int i = 0; i < 18; i++) {
    meIntegrityGain[i] = 0;
    meIntegrityChId[i] = 0;
    meIntegrityGainSwitch[i] = 0;
    meIntegrityTTId[i] = 0;
    meIntegrityTTBlockSize[i] = 0;
    meIntegrityMemChId[i] = 0;
    meIntegrityMemGain[i] = 0;
    meIntegrityMemTTId[i] = 0;
    meIntegrityMemTTBlockSize[i] = 0;
  }
  meIntegrityErrorsByLumi = 0;
}
EEIntegrityTask::~EEIntegrityTask ( ) [virtual]

Destructor.

Definition at line 70 of file EEIntegrityTask.cc.

                                 {

}

Member Function Documentation

void EEIntegrityTask::analyze ( const edm::Event e,
const edm::EventSetup c 
) [protected, virtual]

Analyze.

Implements edm::EDAnalyzer.

Definition at line 348 of file EEIntegrityTask.cc.

References chMemAbscissa, chMemOrdinate, Numbers::crystals(), EcalElectronicsIdCollection1_, EcalElectronicsIdCollection2_, EcalElectronicsIdCollection3_, EcalElectronicsIdCollection4_, EcalElectronicsIdCollection5_, EcalElectronicsIdCollection6_, EcalEndcap, EEDetIdCollection0_, EEDetIdCollection1_, EEDetIdCollection2_, EEDetIdCollection3_, MonitorElement::Fill(), edm::Event::getByLabel(), i, ievt_, init_, Numbers::iSM(), ecalpyutils::ism(), EEDetId::ix(), meIntegrityChId, meIntegrityDCCSize, meIntegrityErrorsByLumi, meIntegrityGain, meIntegrityGainSwitch, meIntegrityMemChId, meIntegrityMemGain, meIntegrityMemTTBlockSize, meIntegrityMemTTId, meIntegrityTTBlockSize, meIntegrityTTId, setup(), and Numbers::subDet().

                                                                      {

  if ( ! init_ ) this->setup();

  ievt_++;

  // fill bin 0 with number of events in the lumi
  if ( meIntegrityErrorsByLumi ) meIntegrityErrorsByLumi->Fill(0.);

  edm::Handle<EEDetIdCollection> ids0;

  if ( e.getByLabel(EEDetIdCollection0_, ids0) ) {

    for ( EEDetIdCollection::const_iterator idItr = ids0->begin(); idItr != ids0->end(); ++idItr ) {

      int ism = Numbers::iSM( *idItr );

      float xism = ism + 0.5;

      if ( meIntegrityDCCSize ) meIntegrityDCCSize->Fill(xism);

    }

  } else {

//    edm::LogWarning("EEIntegrityTask") << EEDetIdCollection0_ << " not available";

  }

  edm::Handle<EEDetIdCollection> ids1;

  if ( e.getByLabel(EEDetIdCollection1_, ids1) ) {

    for ( EEDetIdCollection::const_iterator idItr = ids1->begin(); idItr != ids1->end(); ++idItr ) {

      EEDetId id = (*idItr);

      int ix = id.ix();
      int iy = id.iy();

      int ism = Numbers::iSM( id );
      float xism = ism + 0.5;

      if ( ism >= 1 && ism <= 9 ) ix = 101 - ix;

      float xix = ix - 0.5;
      float xiy = iy - 0.5;

      if ( meIntegrityGain[ism-1] ) meIntegrityGain[ism-1]->Fill(xix, xiy);
      if ( meIntegrityErrorsByLumi ) meIntegrityErrorsByLumi->Fill(xism, 1./850.);

    }

  } else {

    edm::LogWarning("EEIntegrityTask") << EEDetIdCollection1_ << " not available";

  }

  edm::Handle<EEDetIdCollection> ids2;

  if ( e.getByLabel(EEDetIdCollection2_, ids2) ) {

    for ( EEDetIdCollection::const_iterator idItr = ids2->begin(); idItr != ids2->end(); ++idItr ) {

      EEDetId id = (*idItr);

      int ix = id.ix();
      int iy = id.iy();

      int ism = Numbers::iSM( id );
      float xism = ism + 0.5;

      if ( ism >= 1 && ism <= 9 ) ix = 101 - ix;

      float xix = ix - 0.5;
      float xiy = iy - 0.5;

      if ( meIntegrityChId[ism-1] ) meIntegrityChId[ism-1]->Fill(xix, xiy);
      if ( meIntegrityErrorsByLumi ) meIntegrityErrorsByLumi->Fill(xism, 1./850.);

    }

  } else {

    edm::LogWarning("EEIntegrityTask") << EEDetIdCollection2_ << " not available";

  }

  edm::Handle<EEDetIdCollection> ids3;

  if ( e.getByLabel(EEDetIdCollection3_, ids3) ) {

    for ( EEDetIdCollection::const_iterator idItr = ids3->begin(); idItr != ids3->end(); ++idItr ) {

      EEDetId id = (*idItr);

      int ix = id.ix();
      int iy = id.iy();

      int ism = Numbers::iSM( id );
      float xism = ism + 0.5;

      if ( ism >= 1 && ism <= 9 ) ix = 101 - ix;

      float xix = ix - 0.5;
      float xiy = iy - 0.5;

      if ( meIntegrityGainSwitch[ism-1] ) meIntegrityGainSwitch[ism-1]->Fill(xix, xiy);
      if ( meIntegrityErrorsByLumi ) meIntegrityErrorsByLumi->Fill(xism, 1./850.);

    }

  } else {

    edm::LogWarning("EEIntegrityTask") << EEDetIdCollection3_ << " not available";

  }

  edm::Handle<EcalElectronicsIdCollection> ids4;

  if ( e.getByLabel(EcalElectronicsIdCollection1_, ids4) ) {

    for ( EcalElectronicsIdCollection::const_iterator idItr = ids4->begin(); idItr != ids4->end(); ++idItr ) {

      if ( Numbers::subDet( *idItr ) != EcalEndcap ) continue;

      int ism = Numbers::iSM( *idItr );
      float xism = ism + 0.5;

      std::vector<DetId>* crystals = Numbers::crystals( *idItr );

      for ( unsigned int i=0; i<crystals->size(); i++ ) {

      EEDetId id = (*crystals)[i];

      int ix = id.ix();
      int iy = id.iy();

      if ( ism >= 1 && ism <= 9 ) ix = 101 - ix;

      float xix = ix - 0.5;
      float xiy = iy - 0.5;

      if ( meIntegrityTTId[ism-1] ) meIntegrityTTId[ism-1]->Fill(xix, xiy);
      if ( meIntegrityErrorsByLumi ) meIntegrityErrorsByLumi->Fill(xism, 1./34./crystals->size());

      }

    }

  } else {

    edm::LogWarning("EEIntegrityTask") << EcalElectronicsIdCollection1_ << " not available";

  }

  edm::Handle<EcalElectronicsIdCollection> ids5;

  if ( e.getByLabel(EcalElectronicsIdCollection2_, ids5) ) {

    for ( EcalElectronicsIdCollection::const_iterator idItr = ids5->begin(); idItr != ids5->end(); ++idItr ) {

      if ( Numbers::subDet( *idItr ) != EcalEndcap ) continue;

      int ism = Numbers::iSM( *idItr );
      float xism = ism + 0.5;

      std::vector<DetId>* crystals = Numbers::crystals( *idItr );

      for ( unsigned int i=0; i<crystals->size(); i++ ) {

      EEDetId id = (*crystals)[i];

      int ix = id.ix();
      int iy = id.iy();

      if ( ism >= 1 && ism <= 9 ) ix = 101 - ix;

      float xix = ix - 0.5;
      float xiy = iy - 0.5;

      if ( meIntegrityTTBlockSize[ism-1] ) meIntegrityTTBlockSize[ism-1]->Fill(xix, xiy);
      if ( meIntegrityErrorsByLumi ) meIntegrityErrorsByLumi->Fill(xism, 1./34./crystals->size());

      }

    }

  } else {

    edm::LogWarning("EEIntegrityTask") << EcalElectronicsIdCollection2_ << " not available";

  }

  edm::Handle<EcalElectronicsIdCollection> ids6;

  if ( e.getByLabel(EcalElectronicsIdCollection3_, ids6) ) {

    for ( EcalElectronicsIdCollection::const_iterator idItr = ids6->begin(); idItr != ids6->end(); ++idItr ) {

      if ( Numbers::subDet( *idItr ) != EcalEndcap ) continue;

      int ism = Numbers::iSM( *idItr );

      int itt   = idItr->towerId();
      float iTt = itt + 0.5 - 69;

      if ( meIntegrityMemTTId[ism-1] ) meIntegrityMemTTId[ism-1]->Fill(iTt,0);

    }

  } else {

    edm::LogWarning("EEIntegrityTask") << EcalElectronicsIdCollection3_ << " not available";

  }

  edm::Handle<EcalElectronicsIdCollection> ids7;

  if ( e.getByLabel(EcalElectronicsIdCollection4_, ids7) ) {

    for ( EcalElectronicsIdCollection::const_iterator idItr = ids7->begin(); idItr != ids7->end(); ++idItr ) {

      if ( Numbers::subDet( *idItr ) != EcalEndcap ) continue;

      int ism = Numbers::iSM( *idItr );

      int itt   = idItr->towerId();
      float iTt = itt + 0.5 - 69;

      if ( meIntegrityMemTTBlockSize[ism-1] ) meIntegrityMemTTBlockSize[ism-1]->Fill(iTt,0);

    }

  } else {

    edm::LogWarning("EEIntegrityTask") << EcalElectronicsIdCollection4_ << " not available";

  }

  edm::Handle<EcalElectronicsIdCollection> ids8;

  if (  e.getByLabel(EcalElectronicsIdCollection5_, ids8) ) {

    for ( EcalElectronicsIdCollection::const_iterator idItr = ids8->begin(); idItr != ids8->end(); ++idItr ) {

      if ( Numbers::subDet( *idItr ) != EcalEndcap ) continue;

      int ism = Numbers::iSM( *idItr );

      int chid = idItr->channelId();
      int ie = EEIntegrityTask::chMemAbscissa[chid-1];
      int ip = EEIntegrityTask::chMemOrdinate[chid-1];

      int itt = idItr->towerId();
      ie += (itt-69)*5;

      float xix = ie - 0.5;
      float xiy = ip - 0.5;

      if ( meIntegrityMemChId[ism-1] ) meIntegrityMemChId[ism-1]->Fill(xix,xiy);

    }

  } else {

    edm::LogWarning("EEIntegrityTask") << EcalElectronicsIdCollection5_ << " not available";

  }

  edm::Handle<EcalElectronicsIdCollection> ids9;

  if ( e.getByLabel(EcalElectronicsIdCollection6_, ids9) ) {

    for ( EcalElectronicsIdCollection::const_iterator idItr = ids9->begin(); idItr != ids9->end(); ++idItr ) {

      if ( Numbers::subDet( *idItr ) != EcalEndcap ) continue;

      int ism = Numbers::iSM( *idItr );

      int chid = idItr->channelId();
      int ie = EEIntegrityTask::chMemAbscissa[chid-1];
      int ip = EEIntegrityTask::chMemOrdinate[chid-1];

      int itt = idItr->towerId();
      ie += (itt-69)*5;

      float xix = ie - 0.5;
      float xiy = ip - 0.5;

      if ( meIntegrityMemGain[ism-1] ) meIntegrityMemGain[ism-1]->Fill(xix,xiy);

    }

  } else {

    edm::LogWarning("EEIntegrityTask") << EcalElectronicsIdCollection6_ << " not available";

  }

}//  end analyze
void EEIntegrityTask::beginJob ( void  ) [protected, virtual]

BeginJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 74 of file EEIntegrityTask.cc.

References dqmStore_, ievt_, prefixME_, DQMStore::rmdir(), DQMStore::setCurrentFolder(), and subfolder_.

                                  {

  ievt_ = 0;

  if ( dqmStore_ ) {
    dqmStore_->setCurrentFolder(prefixME_ + "/EEIntegrityTask");
    if(subfolder_.size())
      dqmStore_->setCurrentFolder(prefixME_ + "/EEIntegrityTask/" + subfolder_);
    dqmStore_->rmdir(prefixME_ + "/EEIntegrityTask");
  }

}
void EEIntegrityTask::beginLuminosityBlock ( const edm::LuminosityBlock lumiBlock,
const edm::EventSetup iSetup 
) [protected, virtual]

BeginLuminosityBlock.

Reimplemented from edm::EDAnalyzer.

Definition at line 87 of file EEIntegrityTask.cc.

References meIntegrityErrorsByLumi, and MonitorElement::Reset().

void EEIntegrityTask::beginRun ( const edm::Run r,
const edm::EventSetup c 
) [protected, virtual]

BeginRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 96 of file EEIntegrityTask.cc.

References Numbers::initGeometry(), mergeRuns_, and reset().

                                                                      {

  Numbers::initGeometry(c, false);

  if ( ! mergeRuns_ ) this->reset();

}
void EEIntegrityTask::cleanup ( void  ) [protected]

Cleanup.

Definition at line 260 of file EEIntegrityTask.cc.

References dir, dqmStore_, edm::getName(), MonitorElement::getName(), i, init_, meIntegrityChId, meIntegrityDCCSize, meIntegrityErrorsByLumi, meIntegrityGain, meIntegrityGainSwitch, meIntegrityMemChId, meIntegrityMemGain, meIntegrityMemTTBlockSize, meIntegrityMemTTId, meIntegrityTTBlockSize, meIntegrityTTId, prefixME_, DQMStore::removeElement(), DQMStore::setCurrentFolder(), and subfolder_.

Referenced by endJob().

                                 {

  if ( ! init_ ) return;

  if ( dqmStore_ ) {

    std::string dir;

    dir = prefixME_ + "/EEIntegrityTask";
    if(subfolder_.size())
      dir += "/" + subfolder_;

    dqmStore_->setCurrentFolder(dir + "");

    if ( meIntegrityDCCSize ) dqmStore_->removeElement( meIntegrityDCCSize->getName() );
    meIntegrityDCCSize = 0;

    if ( meIntegrityErrorsByLumi ) dqmStore_->removeElement( meIntegrityErrorsByLumi->getName() );
    meIntegrityErrorsByLumi = 0;

    dqmStore_->setCurrentFolder(dir + "/Gain");
    for (int i = 0; i < 18; i++) {
      if ( meIntegrityGain[i] ) dqmStore_->removeElement( meIntegrityGain[i]->getName() );
      meIntegrityGain[i] = 0;
    }

    dqmStore_->setCurrentFolder(dir + "/ChId");
    for (int i = 0; i < 18; i++) {
      if ( meIntegrityChId[i] ) dqmStore_->removeElement( meIntegrityChId[i]->getName() );
      meIntegrityChId[i] = 0;
    }

    dqmStore_->setCurrentFolder(dir + "/GainSwitch");
    for (int i = 0; i < 18; i++) {
      if ( meIntegrityGainSwitch[i] ) dqmStore_->removeElement( meIntegrityGainSwitch[i]->getName() );
      meIntegrityGainSwitch[i] = 0;
    }

    dqmStore_->setCurrentFolder(dir + "/TTId");
    for (int i = 0; i < 18; i++) {
      if ( meIntegrityTTId[i] ) dqmStore_->removeElement( meIntegrityTTId[i]->getName() );
      meIntegrityTTId[i] = 0;
    }

    dqmStore_->setCurrentFolder(dir + "/TTBlockSize");
    for (int i = 0; i < 18; i++) {
      if ( meIntegrityTTBlockSize[i] ) dqmStore_->removeElement( meIntegrityTTBlockSize[i]->getName() );
      meIntegrityTTBlockSize[i] = 0;
    }

    dqmStore_->setCurrentFolder(dir + "/MemChId");
    for (int i = 0; i < 18; i++) {
      if ( meIntegrityMemChId[i] ) dqmStore_->removeElement( meIntegrityMemChId[i]->getName() );
      meIntegrityMemChId[i] = 0;
    }

    dqmStore_->setCurrentFolder(dir + "/MemGain");
    for (int i = 0; i < 18; i++) {
      if ( meIntegrityMemGain[i] ) dqmStore_->removeElement( meIntegrityMemGain[i]->getName() );
      meIntegrityMemGain[i] = 0;
    }

    dqmStore_->setCurrentFolder(dir + "/MemTTId");
    for (int i = 0; i < 18; i++) {
      if ( meIntegrityMemTTId[i] ) dqmStore_->removeElement( meIntegrityMemTTId[i]->getName() );
      meIntegrityMemTTId[i] = 0;
    }

    dqmStore_->setCurrentFolder(dir + "/MemSize");
    for (int i = 0; i < 18; i++) {
      if ( meIntegrityMemTTBlockSize[i] ) dqmStore_->removeElement( meIntegrityMemTTBlockSize[i]->getName() );
      meIntegrityMemTTBlockSize[i] = 0;
    }

  }

  init_ = false;

}
void EEIntegrityTask::endJob ( void  ) [protected, virtual]

EndJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 340 of file EEIntegrityTask.cc.

References cleanup(), enableCleanup_, and ievt_.

                                {

  edm::LogInfo("EEIntegrityTask") << "analyzed " << ievt_ << " events";

  if ( enableCleanup_ ) this->cleanup();

}
void EEIntegrityTask::endLuminosityBlock ( const edm::LuminosityBlock lumiBlock,
const edm::EventSetup iSetup 
) [protected, virtual]

EndLuminosityBlock.

Reimplemented from edm::EDAnalyzer.

Definition at line 93 of file EEIntegrityTask.cc.

                                                                                                           {
}
void EEIntegrityTask::endRun ( const edm::Run r,
const edm::EventSetup c 
) [protected, virtual]

EndRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 104 of file EEIntegrityTask.cc.

                                                                    {

}
void EEIntegrityTask::reset ( void  ) [protected]
void EEIntegrityTask::setup ( void  ) [protected]

Setup.

Definition at line 126 of file EEIntegrityTask.cc.

References DQMStore::book1D(), DQMStore::book2D(), dir, dqmStore_, i, init_, Numbers::ix0EE(), Numbers::iy0EE(), meIntegrityChId, meIntegrityDCCSize, meIntegrityErrorsByLumi, meIntegrityGain, meIntegrityGainSwitch, meIntegrityMemChId, meIntegrityMemGain, meIntegrityMemTTBlockSize, meIntegrityMemTTId, meIntegrityTTBlockSize, meIntegrityTTId, mergeVDriftHistosByStation::name, prefixME_, Numbers::sEE(), MonitorElement::setAxisTitle(), MonitorElement::setBinLabel(), DQMStore::setCurrentFolder(), MonitorElement::setLumiFlag(), subfolder_, and DQMStore::tag().

Referenced by analyze().

                               {

  init_ = true;

  std::string name;
  std::string dir;

  if ( dqmStore_ ) {

    dir = prefixME_ + "/EEIntegrityTask";
    if(subfolder_.size())
      dir += "/" + subfolder_;

    dqmStore_->setCurrentFolder(dir);

    // checking when number of towers in data different than expected from header
    name = "EEIT DCC size error";
    meIntegrityDCCSize = dqmStore_->book1D(name, name, 18, 1., 19.);
    for (int i = 0; i < 18; i++) {
      meIntegrityDCCSize->setBinLabel(i+1, Numbers::sEE(i+1).c_str(), 1);
    }

    // checking the number of integrity errors in each DCC for each lumi
    // crystal integrity error is weighted by 1/850
    // tower integrity error is weighted by 1/34
    // bin 0 contains the number of processed events in the lumi (for normalization)
    name = "EEIT weighted integrity errors by lumi";
    meIntegrityErrorsByLumi = dqmStore_->book1D(name, name, 18, 1., 19.);
    meIntegrityErrorsByLumi->setLumiFlag();
    for (int i = 0; i < 18; i++) {
      meIntegrityErrorsByLumi->setBinLabel(i+1, Numbers::sEE(i+1).c_str(), 1);
    }

    // checking when the gain is 0
    dqmStore_->setCurrentFolder(dir + "/Gain");
    for (int i = 0; i < 18; i++) {
      name = "EEIT gain " + Numbers::sEE(i+1);
      meIntegrityGain[i] = dqmStore_->book2D(name, name, 50, Numbers::ix0EE(i+1)+0., Numbers::ix0EE(i+1)+50., 50, Numbers::iy0EE(i+1)+0., Numbers::iy0EE(i+1)+50.);
      meIntegrityGain[i]->setAxisTitle("ix", 1);
      if ( i+1 >= 1 && i+1 <= 9 ) meIntegrityGain[i]->setAxisTitle("101-ix", 1);
      meIntegrityGain[i]->setAxisTitle("iy", 2);
      dqmStore_->tag(meIntegrityGain[i], i+1);
    }

    // checking when channel has unexpected or invalid ID
    dqmStore_->setCurrentFolder(dir + "/ChId");
    for (int i = 0; i < 18; i++) {
      name = "EEIT ChId " + Numbers::sEE(i+1);
      meIntegrityChId[i] = dqmStore_->book2D(name, name, 50, Numbers::ix0EE(i+1)+0., Numbers::ix0EE(i+1)+50., 50, Numbers::iy0EE(i+1)+0., Numbers::iy0EE(i+1)+50.);
      meIntegrityChId[i]->setAxisTitle("ix", 1);
      if ( i+1 >= 1 && i+1 <= 9 ) meIntegrityChId[i]->setAxisTitle("101-ix", 1);
      meIntegrityChId[i]->setAxisTitle("iy", 2);
      dqmStore_->tag(meIntegrityChId[i], i+1);
    }

    // checking when channel has unexpected or invalid ID
    dqmStore_->setCurrentFolder(dir + "/GainSwitch");
    for (int i = 0; i < 18; i++) {
      name = "EEIT gain switch " + Numbers::sEE(i+1);
      meIntegrityGainSwitch[i] = dqmStore_->book2D(name, name, 50, Numbers::ix0EE(i+1)+0., Numbers::ix0EE(i+1)+50., 50, Numbers::iy0EE(i+1)+0., Numbers::iy0EE(i+1)+50.);
      meIntegrityGainSwitch[i]->setAxisTitle("ix", 1);
      if ( i+1 >= 1 && i+1 <= 9 ) meIntegrityGainSwitch[i]->setAxisTitle("101-ix", 1);
      meIntegrityGainSwitch[i]->setAxisTitle("iy", 2);
      dqmStore_->tag(meIntegrityGainSwitch[i], i+1);
    }

    // checking when trigger tower has unexpected or invalid ID
    dqmStore_->setCurrentFolder(dir + "/TTId");
    for (int i = 0; i < 18; i++) {
      name = "EEIT TTId " + Numbers::sEE(i+1);
      meIntegrityTTId[i] = dqmStore_->book2D(name, name, 50, Numbers::ix0EE(i+1)+0., Numbers::ix0EE(i+1)+50., 50, Numbers::iy0EE(i+1)+0., Numbers::iy0EE(i+1)+50.);
      meIntegrityTTId[i]->setAxisTitle("ix", 1);
      if ( i+1 >= 1 && i+1 <= 9 ) meIntegrityTTId[i]->setAxisTitle("101-ix", 1);
      meIntegrityTTId[i]->setAxisTitle("iy", 2);
      dqmStore_->tag(meIntegrityTTId[i], i+1);
    }

    // checking when trigger tower has unexpected or invalid size
    dqmStore_->setCurrentFolder(dir + "/TTBlockSize");
    for (int i = 0; i < 18; i++) {
      name = "EEIT TTBlockSize " + Numbers::sEE(i+1);
      meIntegrityTTBlockSize[i] = dqmStore_->book2D(name, name, 50, Numbers::ix0EE(i+1)+0., Numbers::ix0EE(i+1)+50., 50, Numbers::iy0EE(i+1)+0., Numbers::iy0EE(i+1)+50.);
      meIntegrityTTBlockSize[i]->setAxisTitle("ix", 1);
      if ( i+1 >= 1 && i+1 <= 9 ) meIntegrityTTBlockSize[i]->setAxisTitle("101-ix", 1);
      meIntegrityTTBlockSize[i]->setAxisTitle("iy", 2);
      dqmStore_->tag(meIntegrityTTBlockSize[i], i+1);
    }

    // checking when mem channels have unexpected ID
    dqmStore_->setCurrentFolder(dir + "/MemChId");
    for (int i = 0; i < 18; i++) {
      name = "EEIT MemChId " + Numbers::sEE(i+1);
      meIntegrityMemChId[i] = dqmStore_->book2D(name, name, 10, 0., 10., 5, 0., 5.);
      meIntegrityMemChId[i]->setAxisTitle("pseudo-strip", 1);
      meIntegrityMemChId[i]->setAxisTitle("channel", 2);
      dqmStore_->tag(meIntegrityMemChId[i], i+1);
    }

    // checking when mem samples have second bit encoding the gain different from 0
    // note: strictly speaking, this does not corrupt the mem sample gain value (since only first bit is considered)
    // but indicates that data are not completely correct
    dqmStore_->setCurrentFolder(dir + "/MemGain");
    for (int i = 0; i < 18; i++) {
      name = "EEIT MemGain " + Numbers::sEE(i+1);
      meIntegrityMemGain[i] = dqmStore_->book2D(name, name, 10, 0., 10., 5, 0., 5.);
      meIntegrityMemGain[i]->setAxisTitle("pseudo-strip", 1);
      meIntegrityMemGain[i]->setAxisTitle("channel", 2);
      dqmStore_->tag(meIntegrityMemGain[i], i+1);
    }

    // checking when mem tower block has unexpected ID
    dqmStore_->setCurrentFolder(dir + "/MemTTId");
    for (int i = 0; i < 18; i++) {
      name = "EEIT MemTTId " + Numbers::sEE(i+1);
      meIntegrityMemTTId[i] = dqmStore_->book2D(name, name, 2, 0., 2., 1, 0., 1.);
      meIntegrityMemTTId[i]->setAxisTitle("pseudo-strip", 1);
      meIntegrityMemTTId[i]->setAxisTitle("channel", 2);
      dqmStore_->tag(meIntegrityMemTTId[i], i+1);
    }

    // checking when mem tower block has invalid size
    dqmStore_->setCurrentFolder(dir + "/MemSize");
    for (int i = 0; i < 18; i++) {
      name = "EEIT MemSize " + Numbers::sEE(i+1);
      meIntegrityMemTTBlockSize[i] = dqmStore_->book2D(name, name, 2, 0., 2., 1, 0., 1.);
      meIntegrityMemTTBlockSize[i]->setAxisTitle("pseudo-strip", 1);
      meIntegrityMemTTBlockSize[i]->setAxisTitle("channel", 2);
      dqmStore_->tag(meIntegrityMemTTBlockSize[i], i+1);
    }

  }

}

Member Data Documentation

const int EEIntegrityTask::chMemAbscissa [static, private]
Initial value:
 {
    1, 1, 1, 1, 1,
    2, 2, 2, 2, 2,
    3, 3, 3, 3, 3,
    4, 4, 4, 4, 4,
    5, 5, 5, 5, 5
}

Definition at line 103 of file EEIntegrityTask.h.

Referenced by analyze().

const int EEIntegrityTask::chMemOrdinate [static, private]
Initial value:
 {
    1, 2, 3, 4, 5,
    5, 4, 3, 2, 1,
    1, 2, 3, 4, 5,
    5, 4, 3, 2, 1,
    1, 2, 3, 4, 5
}

Definition at line 104 of file EEIntegrityTask.h.

Referenced by analyze().

Definition at line 67 of file EEIntegrityTask.h.

Referenced by beginJob(), cleanup(), EEIntegrityTask(), and setup().

Definition at line 82 of file EEIntegrityTask.h.

Referenced by analyze(), and EEIntegrityTask().

Definition at line 83 of file EEIntegrityTask.h.

Referenced by analyze(), and EEIntegrityTask().

Definition at line 84 of file EEIntegrityTask.h.

Referenced by analyze(), and EEIntegrityTask().

Definition at line 85 of file EEIntegrityTask.h.

Referenced by analyze(), and EEIntegrityTask().

Definition at line 86 of file EEIntegrityTask.h.

Referenced by analyze(), and EEIntegrityTask().

Definition at line 87 of file EEIntegrityTask.h.

Referenced by analyze(), and EEIntegrityTask().

Definition at line 77 of file EEIntegrityTask.h.

Referenced by analyze(), and EEIntegrityTask().

Definition at line 78 of file EEIntegrityTask.h.

Referenced by analyze(), and EEIntegrityTask().

Definition at line 79 of file EEIntegrityTask.h.

Referenced by analyze(), and EEIntegrityTask().

Definition at line 80 of file EEIntegrityTask.h.

Referenced by analyze(), and EEIntegrityTask().

Definition at line 81 of file EEIntegrityTask.h.

Definition at line 73 of file EEIntegrityTask.h.

Referenced by EEIntegrityTask(), and endJob().

int EEIntegrityTask::ievt_ [private]

Definition at line 65 of file EEIntegrityTask.h.

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

bool EEIntegrityTask::init_ [private]

Definition at line 101 of file EEIntegrityTask.h.

Referenced by analyze(), cleanup(), EEIntegrityTask(), and setup().

Definition at line 89 of file EEIntegrityTask.h.

Referenced by analyze(), cleanup(), EEIntegrityTask(), reset(), and setup().

Definition at line 98 of file EEIntegrityTask.h.

Referenced by analyze(), cleanup(), EEIntegrityTask(), reset(), and setup().

Definition at line 99 of file EEIntegrityTask.h.

Referenced by analyze(), beginLuminosityBlock(), cleanup(), EEIntegrityTask(), reset(), and setup().

Definition at line 90 of file EEIntegrityTask.h.

Referenced by analyze(), cleanup(), EEIntegrityTask(), reset(), and setup().

Definition at line 91 of file EEIntegrityTask.h.

Referenced by analyze(), cleanup(), EEIntegrityTask(), reset(), and setup().

Definition at line 94 of file EEIntegrityTask.h.

Referenced by analyze(), cleanup(), EEIntegrityTask(), reset(), and setup().

Definition at line 95 of file EEIntegrityTask.h.

Referenced by analyze(), cleanup(), EEIntegrityTask(), reset(), and setup().

Definition at line 97 of file EEIntegrityTask.h.

Referenced by analyze(), cleanup(), EEIntegrityTask(), reset(), and setup().

Definition at line 96 of file EEIntegrityTask.h.

Referenced by analyze(), cleanup(), EEIntegrityTask(), reset(), and setup().

Definition at line 93 of file EEIntegrityTask.h.

Referenced by analyze(), cleanup(), EEIntegrityTask(), reset(), and setup().

Definition at line 92 of file EEIntegrityTask.h.

Referenced by analyze(), cleanup(), EEIntegrityTask(), reset(), and setup().

Definition at line 75 of file EEIntegrityTask.h.

Referenced by beginRun(), and EEIntegrityTask().

std::string EEIntegrityTask::prefixME_ [private]

Definition at line 69 of file EEIntegrityTask.h.

Referenced by beginJob(), cleanup(), EEIntegrityTask(), and setup().

std::string EEIntegrityTask::subfolder_ [private]

Definition at line 71 of file EEIntegrityTask.h.

Referenced by beginJob(), cleanup(), EEIntegrityTask(), and setup().