#include <EBTimingTask.h>
Definition at line 20 of file EBTimingTask.h.
EBTimingTask::EBTimingTask | ( | const edm::ParameterSet & | ps | ) |
Constructor.
Definition at line 35 of file EBTimingTask.cc.
References dqmStore_, EcalRawDataCollection_, EcalRecHitCollection_, enableCleanup_, energyThreshold_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), i, init_, mergeRuns_, meTime_, meTimeAmpli_, meTimeAmpliSummary_, meTimeMap_, meTimeSummary1D_, meTimeSummaryMap_, cmsCodeRules::cppFunctionSkipper::operator, and prefixME_.
{ init_ = false; dqmStore_ = edm::Service<DQMStore>().operator->(); prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", ""); enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false); mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false); energyThreshold_ = ps.getUntrackedParameter<double>("energyTreshold",1.0); EcalRawDataCollection_ = ps.getParameter<edm::InputTag>("EcalRawDataCollection"); EcalRecHitCollection_ = ps.getParameter<edm::InputTag>("EcalRecHitCollection"); for (int i = 0; i < 36; i++) { meTime_[i] = 0; meTimeMap_[i] = 0; meTimeAmpli_[i] = 0; } meTimeAmpliSummary_ = 0; meTimeSummary1D_ = 0; meTimeSummaryMap_ = 0; }
EBTimingTask::~EBTimingTask | ( | ) | [virtual] |
void EBTimingTask::analyze | ( | const edm::Event & | e, |
const edm::EventSetup & | c | ||
) | [protected, virtual] |
Analyze.
Implements edm::EDAnalyzer.
Definition at line 209 of file EBTimingTask.cc.
References EcalDCCHeaderBlock::COSMIC, EcalDCCHeaderBlock::COSMICS_GLOBAL, EcalDCCHeaderBlock::COSMICS_LOCAL, EcalBarrel, EcalRawDataCollection_, EcalRecHitCollection_, energyThreshold_, MonitorElement::Fill(), edm::EventSetup::get(), edm::Event::getByLabel(), i, EBDetId::ic(), ievt_, init_, Numbers::iSM(), ecalpyutils::ism(), EcalRecHit::kGood, EcalRecHit::kOutOfTime, EcalSeverityLevel::kWeird, LogDebug, meTime_, meTimeAmpli_, meTimeAmpliSummary_, meTimeMap_, meTimeSummary1D_, meTimeSummaryMap_, EcalDCCHeaderBlock::MTCC, EcalDCCHeaderBlock::PHYSICS_GLOBAL, EcalDCCHeaderBlock::PHYSICS_LOCAL, setup(), shiftProf2D_, and Numbers::subDet().
{ bool isData = true; bool enable = false; int runType[36]; for (int i=0; i<36; i++) runType[i] = -1; edm::Handle<EcalRawDataCollection> dcchs; if ( e.getByLabel(EcalRawDataCollection_, dcchs) ) { for ( EcalRawDataCollection::const_iterator dcchItr = dcchs->begin(); dcchItr != dcchs->end(); ++dcchItr ) { if ( Numbers::subDet( *dcchItr ) != EcalBarrel ) continue; int ism = Numbers::iSM( *dcchItr, EcalBarrel ); runType[ism-1] = dcchItr->getRunType(); if ( dcchItr->getRunType() == EcalDCCHeaderBlock::COSMIC || dcchItr->getRunType() == EcalDCCHeaderBlock::MTCC || dcchItr->getRunType() == EcalDCCHeaderBlock::COSMICS_GLOBAL || dcchItr->getRunType() == EcalDCCHeaderBlock::PHYSICS_GLOBAL || dcchItr->getRunType() == EcalDCCHeaderBlock::COSMICS_LOCAL || dcchItr->getRunType() == EcalDCCHeaderBlock::PHYSICS_LOCAL ) enable = true; } } else { isData = false; enable = true; edm::LogWarning("EBTimingTask") << EcalRawDataCollection_ << " not available"; } if ( ! enable ) return; if ( ! init_ ) this->setup(); ievt_++; edm::ESHandle<EcalSeverityLevelAlgo> sevlv; c.get<EcalSeverityLevelAlgoRcd>().get(sevlv); edm::Handle<EcalRecHitCollection> hits; if ( e.getByLabel(EcalRecHitCollection_, hits) ) { int neh = hits->size(); LogDebug("EBTimingTask") << "event " << ievt_ << " hits collection size " << neh; for ( EcalRecHitCollection::const_iterator hitItr = hits->begin(); hitItr != hits->end(); ++hitItr ) { EBDetId id = hitItr->id(); int ic = id.ic(); int ie = (ic-1)/20 + 1; int ip = (ic-1)%20 + 1; int ism = Numbers::iSM( id ); float xie = ie - 0.5; float xip = ip - 0.5; if ( isData ) { if ( ! ( runType[ism-1] == EcalDCCHeaderBlock::COSMIC || runType[ism-1] == EcalDCCHeaderBlock::MTCC || runType[ism-1] == EcalDCCHeaderBlock::COSMICS_GLOBAL || runType[ism-1] == EcalDCCHeaderBlock::PHYSICS_GLOBAL || runType[ism-1] == EcalDCCHeaderBlock::COSMICS_LOCAL || runType[ism-1] == EcalDCCHeaderBlock::PHYSICS_LOCAL ) ) continue; } MonitorElement* meTime = 0; MonitorElement* meTimeMap = 0; MonitorElement* meTimeAmpli = 0; meTime = meTime_[ism-1]; meTimeMap = meTimeMap_[ism-1]; meTimeAmpli = meTimeAmpli_[ism-1]; float xval = hitItr->energy(); float yval = hitItr->time(); uint32_t flag = hitItr->recoFlag(); uint32_t sev = sevlv->severityLevel(id, *hits); if ( (flag == EcalRecHit::kGood || flag == EcalRecHit::kOutOfTime) && sev != EcalSeverityLevel::kWeird ) { if ( meTimeAmpli ) meTimeAmpli->Fill(xval, yval); if ( meTimeAmpliSummary_ ) meTimeAmpliSummary_->Fill(xval, yval); if ( xval > energyThreshold_ ) { if ( meTime ) meTime->Fill(yval); if ( meTimeMap ) meTimeMap->Fill(xie, xip, yval+shiftProf2D_); if ( meTimeSummary1D_ ) meTimeSummary1D_->Fill(yval); float xebeta = id.ieta() - 0.5 * id.zside(); float xebphi = id.iphi() - 0.5; if ( meTimeSummaryMap_ ) meTimeSummaryMap_->Fill(xebphi, xebeta, yval+shiftProf2D_); } } } } else { edm::LogWarning("EBTimingTask") << EcalRecHitCollection_ << " not available"; } }
void EBTimingTask::beginJob | ( | void | ) | [protected, virtual] |
BeginJob.
Reimplemented from edm::EDAnalyzer.
Definition at line 68 of file EBTimingTask.cc.
References dqmStore_, ievt_, prefixME_, DQMStore::rmdir(), and DQMStore::setCurrentFolder().
void EBTimingTask::beginRun | ( | const edm::Run & | r, |
const edm::EventSetup & | c | ||
) | [protected, virtual] |
BeginRun.
Reimplemented from edm::EDAnalyzer.
Definition at line 79 of file EBTimingTask.cc.
References Numbers::initGeometry(), mergeRuns_, and reset().
{ Numbers::initGeometry(c, false); if ( ! mergeRuns_ ) this->reset(); }
void EBTimingTask::cleanup | ( | void | ) | [protected] |
Cleanup.
Definition at line 168 of file EBTimingTask.cc.
References dqmStore_, edm::getName(), MonitorElement::getName(), i, init_, meTime_, meTimeAmpli_, meTimeAmpliSummary_, meTimeMap_, meTimeSummary1D_, meTimeSummaryMap_, prefixME_, DQMStore::removeElement(), and DQMStore::setCurrentFolder().
Referenced by endJob().
{ if ( ! init_ ) return; if ( dqmStore_ ) { dqmStore_->setCurrentFolder(prefixME_ + "/EBTimingTask"); for ( int i = 0; i < 36; i++ ) { if ( meTime_[i] ) dqmStore_->removeElement( meTime_[i]->getName() ); meTime_[i] = 0; if ( meTimeMap_[i] ) dqmStore_->removeElement( meTimeMap_[i]->getName() ); meTimeMap_[i] = 0; if ( meTimeAmpli_[i] ) dqmStore_->removeElement( meTimeAmpli_[i]->getName() ); meTimeAmpli_[i] = 0; } if ( meTimeAmpliSummary_ ) dqmStore_->removeElement( meTimeAmpliSummary_->getName() ); meTimeAmpliSummary_ = 0; if ( meTimeSummary1D_ ) dqmStore_->removeElement( meTimeSummary1D_->getName() ); meTimeSummary1D_ = 0; if ( meTimeSummaryMap_ ) dqmStore_->removeElement( meTimeSummaryMap_->getName() ); meTimeSummaryMap_ = 0; } init_ = false; }
void EBTimingTask::endJob | ( | void | ) | [protected, virtual] |
EndJob.
Reimplemented from edm::EDAnalyzer.
Definition at line 201 of file EBTimingTask.cc.
References cleanup(), enableCleanup_, and ievt_.
{ edm::LogInfo("EBTimingTask") << "analyzed " << ievt_ << " events"; if ( enableCleanup_ ) this->cleanup(); }
void EBTimingTask::endRun | ( | const edm::Run & | r, |
const edm::EventSetup & | c | ||
) | [protected, virtual] |
void EBTimingTask::reset | ( | void | ) | [protected] |
Reset.
Definition at line 91 of file EBTimingTask.cc.
References i, meTime_, meTimeAmpli_, meTimeAmpliSummary_, meTimeMap_, meTimeSummary1D_, meTimeSummaryMap_, and MonitorElement::Reset().
Referenced by beginRun().
{ for (int i = 0; i < 36; i++) { if ( meTime_[i] ) meTime_[i]->Reset(); if ( meTimeMap_[i] ) meTimeMap_[i]->Reset(); if ( meTimeAmpli_[i] ) meTimeAmpli_[i]->Reset(); } if ( meTimeAmpliSummary_ ) meTimeAmpliSummary_->Reset(); if ( meTimeSummary1D_ ) meTimeSummary1D_->Reset(); if ( meTimeSummaryMap_ ) meTimeSummaryMap_->Reset(); }
void EBTimingTask::setup | ( | void | ) | [protected] |
Setup.
Definition at line 105 of file EBTimingTask.cc.
References DQMStore::book1D(), DQMStore::book2D(), DQMStore::bookProfile2D(), dqmStore_, i, init_, meTime_, meTimeAmpli_, meTimeAmpliSummary_, meTimeMap_, meTimeSummary1D_, meTimeSummaryMap_, mergeVDriftHistosByStation::name, funct::pow(), prefixME_, Numbers::sEB(), MonitorElement::setAxisTitle(), DQMStore::setCurrentFolder(), shiftProf2D_, and DQMStore::tag().
Referenced by analyze().
{ init_ = true; std::string name; // for timing vs amplitude plots const int nbinsE = 25; const float minlogE = -0.5; const float maxlogE = 2.; float binEdgesE[nbinsE + 1]; for(int i = 0; i <= nbinsE; i++) binEdgesE[i] = std::pow((float)10., minlogE + (maxlogE - minlogE) / nbinsE * i); const int nbinsT = 200; const float minT = -50.; const float maxT = 50.; float binEdgesT[nbinsT + 1]; for(int i = 0; i <= nbinsT; i++) binEdgesT[i] = minT + (maxT - minT) / nbinsT * i; if ( dqmStore_ ) { dqmStore_->setCurrentFolder(prefixME_ + "/EBTimingTask"); for (int i = 0; i < 36; i++) { name = "EBTMT timing 1D " + Numbers::sEB(i+1); meTime_[i] = dqmStore_->book1D(name, name, 50, -25., 25.); meTime_[i]->setAxisTitle("time (ns)", 1); dqmStore_->tag(meTime_[i], i+1); name = "EBTMT timing " + Numbers::sEB(i+1); meTimeMap_[i] = dqmStore_->bookProfile2D(name, name, 85, 0., 85., 20, 0., 20., -20.+shiftProf2D_, 20.+shiftProf2D_, "s"); meTimeMap_[i]->setAxisTitle("ieta", 1); meTimeMap_[i]->setAxisTitle("iphi", 2); meTimeMap_[i]->setAxisTitle("time (ns)", 3); dqmStore_->tag(meTimeMap_[i], i+1); name = "EBTMT timing vs amplitude " + Numbers::sEB(i+1); meTimeAmpli_[i] = dqmStore_->book2D(name, name, nbinsE, binEdgesE, nbinsT, binEdgesT); meTimeAmpli_[i]->setAxisTitle("energy (GeV)", 1); meTimeAmpli_[i]->setAxisTitle("time (ns)", 2); dqmStore_->tag(meTimeAmpli_[i], i+1); } name = "EBTMT timing vs amplitude summary"; meTimeAmpliSummary_ = dqmStore_->book2D(name, name, nbinsE, binEdgesE, nbinsT, binEdgesT); meTimeAmpliSummary_->setAxisTitle("energy (GeV)", 1); meTimeAmpliSummary_->setAxisTitle("time (ns)", 2); name = "EBTMT timing 1D summary"; meTimeSummary1D_ = dqmStore_->book1D(name, name, 50, -25., 25.); meTimeSummary1D_->setAxisTitle("time (ns)", 1); name = "EBTMT timing map"; meTimeSummaryMap_ = dqmStore_->bookProfile2D(name, name, 72, 0., 360., 34, -85, 85, -20.+shiftProf2D_, 20.+shiftProf2D_, "s"); meTimeSummaryMap_->setAxisTitle("jphi", 1); meTimeSummaryMap_->setAxisTitle("jeta", 2); meTimeSummaryMap_->setAxisTitle("time (ns)", 3); } }
DQMStore* EBTimingTask::dqmStore_ [private] |
Definition at line 62 of file EBTimingTask.h.
Referenced by beginJob(), cleanup(), EBTimingTask(), and setup().
Definition at line 72 of file EBTimingTask.h.
Referenced by analyze(), and EBTimingTask().
Definition at line 73 of file EBTimingTask.h.
Referenced by analyze(), and EBTimingTask().
bool EBTimingTask::enableCleanup_ [private] |
Definition at line 66 of file EBTimingTask.h.
Referenced by EBTimingTask(), and endJob().
float EBTimingTask::energyThreshold_ [private] |
Definition at line 70 of file EBTimingTask.h.
Referenced by analyze(), and EBTimingTask().
int EBTimingTask::ievt_ [private] |
Definition at line 60 of file EBTimingTask.h.
Referenced by analyze(), beginJob(), and endJob().
bool EBTimingTask::init_ [private] |
Definition at line 83 of file EBTimingTask.h.
Referenced by analyze(), cleanup(), EBTimingTask(), and setup().
bool EBTimingTask::mergeRuns_ [private] |
Definition at line 68 of file EBTimingTask.h.
Referenced by beginRun(), and EBTimingTask().
MonitorElement* EBTimingTask::meTime_[36] [private] |
Definition at line 75 of file EBTimingTask.h.
Referenced by analyze(), cleanup(), EBTimingTask(), reset(), and setup().
MonitorElement* EBTimingTask::meTimeAmpli_[36] [private] |
Definition at line 77 of file EBTimingTask.h.
Referenced by analyze(), cleanup(), EBTimingTask(), reset(), and setup().
MonitorElement* EBTimingTask::meTimeAmpliSummary_ [private] |
Definition at line 79 of file EBTimingTask.h.
Referenced by analyze(), cleanup(), EBTimingTask(), reset(), and setup().
MonitorElement* EBTimingTask::meTimeMap_[36] [private] |
Definition at line 76 of file EBTimingTask.h.
Referenced by analyze(), cleanup(), EBTimingTask(), reset(), and setup().
MonitorElement* EBTimingTask::meTimeSummary1D_ [private] |
Definition at line 80 of file EBTimingTask.h.
Referenced by analyze(), cleanup(), EBTimingTask(), reset(), and setup().
MonitorElement* EBTimingTask::meTimeSummaryMap_ [private] |
Definition at line 81 of file EBTimingTask.h.
Referenced by analyze(), cleanup(), EBTimingTask(), reset(), and setup().
MonitorElement * EBTimingTask::meTimeSummaryMapProjEta_ [private] |
Definition at line 81 of file EBTimingTask.h.
MonitorElement * EBTimingTask::meTimeSummaryMapProjPhi_ [private] |
Definition at line 81 of file EBTimingTask.h.
std::string EBTimingTask::prefixME_ [private] |
Definition at line 64 of file EBTimingTask.h.
Referenced by beginJob(), cleanup(), EBTimingTask(), and setup().
const float EBTimingTask::shiftProf2D_ = 50. [static] |
Definition at line 30 of file EBTimingTask.h.