#include <ESFEDIntegrityTask.h>
Public Member Functions | |
ESFEDIntegrityTask (const edm::ParameterSet &ps) | |
virtual | ~ESFEDIntegrityTask () |
Protected Member Functions | |
void | analyze (const edm::Event &e, const edm::EventSetup &c) |
Analyze. | |
void | beginJob (void) |
BeginJob. | |
void | beginRun (const edm::Run &r, const edm::EventSetup &c) |
BeginRun. | |
void | cleanup (void) |
Cleanup. | |
void | endJob (void) |
EndJob. | |
void | endRun (const edm::Run &r, const edm::EventSetup &c) |
EndRun. | |
void | reset (void) |
Reset. | |
void | setup (void) |
Setup. | |
Private Attributes | |
edm::InputTag | dccCollections_ |
bool | debug_ |
DQMStore * | dqmStore_ |
bool | enableCleanup_ |
std::string | fedDirName_ |
edm::InputTag | FEDRawDataCollection_ |
int | ievt_ |
bool | init_ |
edm::InputTag | kchipCollections_ |
MonitorElement * | meESFedsEntries_ |
MonitorElement * | meESFedsFatal_ |
MonitorElement * | meESFedsNonFatal_ |
bool | mergeRuns_ |
std::string | prefixME_ |
Definition at line 12 of file ESFEDIntegrityTask.h.
ESFEDIntegrityTask::ESFEDIntegrityTask | ( | const edm::ParameterSet & | ps | ) |
Definition at line 29 of file ESFEDIntegrityTask.cc.
References edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), and cmsCodeRules::cppFunctionSkipper::operator.
{ init_ = false; dqmStore_ = Service<DQMStore>().operator->(); prefixME_ = ps.getUntrackedParameter<string>("prefixME", ""); fedDirName_ = ps.getUntrackedParameter<string>("FEDDirName", "FEDIntegrity"); enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false); mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false); debug_ = ps.getUntrackedParameter<bool>("debug", false); dccCollections_ = ps.getParameter<InputTag>("ESDCCCollections"); kchipCollections_ = ps.getParameter<InputTag>("ESKChipCollections"); FEDRawDataCollection_ = ps.getParameter<edm::InputTag>("FEDRawDataCollection"); meESFedsEntries_ = 0; meESFedsFatal_ = 0; meESFedsNonFatal_ = 0; }
ESFEDIntegrityTask::~ESFEDIntegrityTask | ( | ) | [virtual] |
Definition at line 51 of file ESFEDIntegrityTask.cc.
{ }
void ESFEDIntegrityTask::analyze | ( | const edm::Event & | e, |
const edm::EventSetup & | c | ||
) | [protected, virtual] |
Analyze.
Implements edm::EDAnalyzer.
Definition at line 135 of file ESFEDIntegrityTask.cc.
References edm::EventBase::bunchCrossing(), gather_cfg::cout, FEDRawData::data(), ESDCCHeaderBlock::fedId(), ESDCCHeaderBlock::getBX(), edm::Event::getByLabel(), ESDCCHeaderBlock::getDCCErrors(), ESDCCHeaderBlock::getFEChannelStatus(), ESDCCHeaderBlock::getLV1(), ESDCCHeaderBlock::getOptoRX0(), ESDCCHeaderBlock::getOptoRX1(), ESDCCHeaderBlock::getOptoRX2(), ESDCCHeaderBlock::getOrbitNumber(), i, FEDHeader::lvl1ID(), edm::EventBase::orbitNumber(), and FEDRawData::size().
{ if ( ! init_ ) this->setup(); ievt_++; int gt_L1A = 0, gt_OrbitNumber = 0, gt_BX = 0; int esDCC_L1A_MostFreqCounts = 0; int esDCC_BX_MostFreqCounts = 0; int esDCC_OrbitNumber_MostFreqCounts = 0; int gtFedDataSize = 0; Handle<ESRawDataCollection> dccs; Handle<FEDRawDataCollection> allFedRawData; if ( e.getByLabel(FEDRawDataCollection_, allFedRawData) ) { // ES FEDs for (int esFED=520; esFED<=575; ++esFED) { const FEDRawData& fedData = allFedRawData->FEDData(esFED); int length = fedData.size()/sizeof(uint64_t); if ( length > 0 ) if ( meESFedsEntries_ ) meESFedsEntries_->Fill(esFED); } // GT FED data const FEDRawData& gtFedData = allFedRawData->FEDData(812); gtFedDataSize = gtFedData.size()/sizeof(uint64_t); if ( gtFedDataSize > 0 ) { FEDHeader header(gtFedData.data()); gt_L1A = header.lvl1ID(); gt_OrbitNumber = e.orbitNumber(); gt_BX = e.bunchCrossing(); } else { map<int, int> esDCC_L1A_FreqMap; map<int, int> esDCC_BX_FreqMap; map<int, int> esDCC_OrbitNumber_FreqMap; if ( e.getByLabel(dccCollections_, dccs) ) { for (ESRawDataCollection::const_iterator dccItr = dccs->begin(); dccItr != dccs->end(); ++dccItr) { ESDCCHeaderBlock esdcc = (*dccItr); esDCC_L1A_FreqMap[esdcc.getLV1()]++; esDCC_BX_FreqMap[esdcc.getBX()]++; esDCC_OrbitNumber_FreqMap[esdcc.getOrbitNumber()]++; if (esDCC_L1A_FreqMap[esdcc.getLV1()] > esDCC_L1A_MostFreqCounts) { esDCC_L1A_MostFreqCounts = esDCC_L1A_FreqMap[esdcc.getLV1()]; gt_L1A = esdcc.getLV1(); } if (esDCC_BX_FreqMap[esdcc.getBX()] > esDCC_BX_MostFreqCounts) { esDCC_BX_MostFreqCounts = esDCC_BX_FreqMap[esdcc.getBX()]; gt_BX = esdcc.getBX(); } if (esDCC_OrbitNumber_FreqMap[esdcc.getOrbitNumber()] > esDCC_OrbitNumber_MostFreqCounts) { esDCC_OrbitNumber_MostFreqCounts = esDCC_OrbitNumber_FreqMap[esdcc.getOrbitNumber()]; gt_OrbitNumber = esdcc.getOrbitNumber(); } } } else { LogWarning("ESFEDIntegrityTask") << dccCollections_ << " not available"; } } } else { LogWarning("ESFEDIntegrityTask") << FEDRawDataCollection_ << " not available"; } vector<int> fiberStatus; if ( e.getByLabel(dccCollections_, dccs) ) { for (ESRawDataCollection::const_iterator dccItr = dccs->begin(); dccItr != dccs->end(); ++dccItr) { ESDCCHeaderBlock dcc = (*dccItr); if (dcc.getDCCErrors() > 0) { if ( meESFedsFatal_ ) meESFedsFatal_->Fill(dcc.fedId()); } else { if (debug_) cout<<dcc.fedId()<<" "<<dcc.getOptoRX0()<<" "<<dcc.getOptoRX1()<<" "<<dcc.getOptoRX2()<<endl; fiberStatus = dcc.getFEChannelStatus(); if (dcc.getOptoRX0() == 128) { meESFedsNonFatal_->Fill(dcc.fedId(), 1./3.); } else if (dcc.getOptoRX0() == 129) { for (unsigned int i=0; i<12; ++i) { if (fiberStatus[i]==8 || fiberStatus[i]==10 || fiberStatus[i]==11 || fiberStatus[i]==12) if ( meESFedsNonFatal_ ) meESFedsNonFatal_->Fill(dcc.fedId(), 1./12.); } } if (dcc.getOptoRX1() == 128) { meESFedsNonFatal_->Fill(dcc.fedId(), 1./3.); } else if (dcc.getOptoRX1() == 129) { for (unsigned int i=12; i<24; ++i) { if (fiberStatus[i]==8 || fiberStatus[i]==10 || fiberStatus[i]==11 || fiberStatus[i]==12) if ( meESFedsNonFatal_ ) meESFedsNonFatal_->Fill(dcc.fedId(), 1./12.); } } if (dcc.getOptoRX2() == 128) { meESFedsNonFatal_->Fill(dcc.fedId(), 1./3.); } else if (dcc.getOptoRX2() == 129){ for (unsigned int i=24; i<36; ++i) { if (fiberStatus[i]==8 || fiberStatus[i]==10 || fiberStatus[i]==11 || fiberStatus[i]==12) if ( meESFedsNonFatal_ ) meESFedsNonFatal_->Fill(dcc.fedId(), 1./12.); } } } if (dcc.getLV1() != gt_L1A) meESFedsNonFatal_->Fill(dcc.fedId()); //if (dcc.getBX() != gt_BX) meESFedsNonFatal_->Fill(dcc.fedId()); //if (dcc.getOrbitNumber() != gt_OrbitNumber) meESFedsNonFatal_->Fill(dcc.fedId()); } } //for (ESLocalRawDataCollection::const_iterator kItr = kchips->begin(); kItr != kchips->end(); ++kItr) { //ESKCHIPBlock kchip = (*kItr); //Int_t nErr = 0; //if (kchip.getFlag1() > 0) nErr++; //if (kchip.getFlag2() > 0) nErr++; //if (kchip.getBC() != kchip.getOptoBC()) nErr++; //if (kchip.getEC() != kchip.getOptoEC()) nErr++; //if (nErr>0) meESFedsNonFatal_->Fill(dcc.fedId()); //} }
void ESFEDIntegrityTask::beginJob | ( | void | ) | [protected, virtual] |
BeginJob.
Reimplemented from edm::EDAnalyzer.
Definition at line 55 of file ESFEDIntegrityTask.cc.
{ ievt_ = 0; if ( dqmStore_ ) { dqmStore_->setCurrentFolder(prefixME_ + "/" + fedDirName_); dqmStore_->rmdir(prefixME_ + "/" + fedDirName_); } }
void ESFEDIntegrityTask::beginRun | ( | const edm::Run & | r, |
const edm::EventSetup & | c | ||
) | [protected, virtual] |
BeginRun.
Reimplemented from edm::EDAnalyzer.
Definition at line 66 of file ESFEDIntegrityTask.cc.
References reset().
{ if ( ! mergeRuns_ ) this->reset(); }
void ESFEDIntegrityTask::cleanup | ( | void | ) | [protected] |
Cleanup.
Definition at line 105 of file ESFEDIntegrityTask.cc.
{ if ( ! init_ ) return; if ( dqmStore_ ) { dqmStore_->setCurrentFolder(prefixME_ + "/" + fedDirName_); if ( meESFedsEntries_ ) dqmStore_->removeElement( meESFedsEntries_->getName() ); meESFedsEntries_ = 0; if ( meESFedsFatal_ ) dqmStore_->removeElement( meESFedsFatal_->getName() ); meESFedsFatal_ = 0; if ( meESFedsNonFatal_ ) dqmStore_->removeElement( meESFedsNonFatal_->getName() ); meESFedsNonFatal_ = 0; } init_ = false; }
void ESFEDIntegrityTask::endJob | ( | void | ) | [protected, virtual] |
EndJob.
Reimplemented from edm::EDAnalyzer.
Definition at line 127 of file ESFEDIntegrityTask.cc.
References edm::cleanup().
{ LogInfo("ESFEDIntegrityTask") << "analyzed " << ievt_ << " events"; if ( enableCleanup_ ) this->cleanup(); }
void ESFEDIntegrityTask::endRun | ( | const edm::Run & | r, |
const edm::EventSetup & | c | ||
) | [protected, virtual] |
EndRun.
Reimplemented from edm::EDAnalyzer.
Definition at line 72 of file ESFEDIntegrityTask.cc.
{ }
void ESFEDIntegrityTask::reset | ( | void | ) | [protected] |
Reset.
Definition at line 76 of file ESFEDIntegrityTask.cc.
{ if ( meESFedsEntries_ ) meESFedsEntries_->Reset(); if ( meESFedsFatal_ ) meESFedsFatal_->Reset(); if ( meESFedsNonFatal_ ) meESFedsNonFatal_->Reset(); }
void ESFEDIntegrityTask::setup | ( | void | ) | [protected] |
Setup.
Definition at line 84 of file ESFEDIntegrityTask.cc.
References trackerHits::histo.
{ init_ = true; char histo[200]; if ( dqmStore_ ) { dqmStore_->setCurrentFolder(prefixME_ + "/" + fedDirName_); sprintf(histo, "FEDEntries"); meESFedsEntries_ = dqmStore_->book1D(histo, histo, 56, 520, 576); sprintf(histo, "FEDFatal"); meESFedsFatal_ = dqmStore_->book1D(histo, histo, 56, 520, 576); sprintf(histo, "FEDNonFatal"); meESFedsNonFatal_ = dqmStore_->book1D(histo, histo, 56, 520, 576); } }
Definition at line 57 of file ESFEDIntegrityTask.h.
bool ESFEDIntegrityTask::debug_ [private] |
Definition at line 55 of file ESFEDIntegrityTask.h.
DQMStore* ESFEDIntegrityTask::dqmStore_ [private] |
Definition at line 49 of file ESFEDIntegrityTask.h.
bool ESFEDIntegrityTask::enableCleanup_ [private] |
Definition at line 53 of file ESFEDIntegrityTask.h.
std::string ESFEDIntegrityTask::fedDirName_ [private] |
Definition at line 52 of file ESFEDIntegrityTask.h.
Definition at line 59 of file ESFEDIntegrityTask.h.
int ESFEDIntegrityTask::ievt_ [private] |
Definition at line 47 of file ESFEDIntegrityTask.h.
bool ESFEDIntegrityTask::init_ [private] |
Definition at line 65 of file ESFEDIntegrityTask.h.
Definition at line 58 of file ESFEDIntegrityTask.h.
Definition at line 61 of file ESFEDIntegrityTask.h.
MonitorElement* ESFEDIntegrityTask::meESFedsFatal_ [private] |
Definition at line 62 of file ESFEDIntegrityTask.h.
Definition at line 63 of file ESFEDIntegrityTask.h.
bool ESFEDIntegrityTask::mergeRuns_ [private] |
Definition at line 54 of file ESFEDIntegrityTask.h.
std::string ESFEDIntegrityTask::prefixME_ [private] |
Definition at line 51 of file ESFEDIntegrityTask.h.