#include <LaserClient.h>
Public Types | |
enum | Constants { nWL = LaserTask::nWL, nPNGain = LaserTask::nPNGain } |
enum | MESets { kQuality, kAmplitudeMean = kQuality + nWL, kAmplitudeRMS = kAmplitudeMean + nWL, kTimingMean = kAmplitudeRMS + nWL, kTimingRMS = kTimingMean + nWL, kPNAmplitudeMean = kTimingRMS + nWL, kPNAmplitudeRMS = kPNAmplitudeMean + nWL * nPNGain, kQualitySummary = kPNAmplitudeRMS + nWL * nPNGain, kPNQualitySummary = kQualitySummary + nWL, nMESets = kPNQualitySummary + nWL } |
enum | Sources { sAmplitude, sTiming = sAmplitude + nWL, sPNAmplitude = sTiming + nWL, nSources = sPNAmplitude + nWL * nPNGain } |
Public Member Functions | |
void | beginRun (const edm::Run &, const edm::EventSetup &) |
void | bookMEs () |
void | initialize () |
LaserClient (const edm::ParameterSet &, const edm::ParameterSet &) | |
void | producePlots () |
~LaserClient () | |
Static Public Member Functions | |
static void | setMEData (std::vector< MEData > &) |
Protected Attributes | |
std::map< std::pair< unsigned, int >, float > | ampCorrections_ |
std::vector< double > | amplitudeRMSThreshold_ |
std::vector< double > | amplitudeThreshold_ |
std::vector< double > | expectedAmplitude_ |
std::vector< double > | expectedPNAmplitude_ |
std::vector< double > | expectedTiming_ |
std::vector< int > | laserWavelengths_ |
std::vector< int > | MGPAGainsPN_ |
int | minChannelEntries_ |
std::vector< double > | pnAmplitudeRMSThreshold_ |
std::vector< double > | pnAmplitudeThreshold_ |
std::vector< double > | timingRMSThreshold_ |
std::vector< double > | timingThreshold_ |
float | towerThreshold_ |
Definition at line 10 of file LaserClient.h.
Definition at line 23 of file LaserClient.h.
{ nWL = LaserTask::nWL, nPNGain = LaserTask::nPNGain };
kQuality | |
kAmplitudeMean | |
kAmplitudeRMS | |
kTimingMean | |
kTimingRMS | |
kPNAmplitudeMean | |
kPNAmplitudeRMS | |
kQualitySummary | |
kPNQualitySummary | |
nMESets |
Reimplemented from ecaldqm::DQWorker.
Definition at line 28 of file LaserClient.h.
{ kQuality, kAmplitudeMean = kQuality + nWL, kAmplitudeRMS = kAmplitudeMean + nWL, kTimingMean = kAmplitudeRMS + nWL, kTimingRMS = kTimingMean + nWL, kPNAmplitudeMean = kTimingRMS + nWL, kPNAmplitudeRMS = kPNAmplitudeMean + nWL * nPNGain, kQualitySummary = kPNAmplitudeRMS + nWL * nPNGain, kPNQualitySummary = kQualitySummary + nWL, nMESets = kPNQualitySummary + nWL };
Reimplemented from ecaldqm::DQWorkerClient.
Definition at line 43 of file LaserClient.h.
{ sAmplitude, sTiming = sAmplitude + nWL, sPNAmplitude = sTiming + nWL, nSources = sPNAmplitude + nWL * nPNGain };
data refman pasoursint CMSSW_5_3_10 src DQM EcalBarrelMonitorClient src LaserClient cc ecaldqm::LaserClient::LaserClient | ( | const edm::ParameterSet & | _params, |
const edm::ParameterSet & | _paths | ||
) |
Definition at line 12 of file LaserClient.cc.
References Exception, edm::ParameterSet::getUntrackedParameter(), edm::ParameterSet::getUntrackedParameterSet(), ecaldqm::LaserTask::kAmplitude, ecaldqm::LaserTask::kPNAmplitude, ecaldqm::LaserTask::kTiming, and evf::evtn::offset().
{ using namespace std; edm::ParameterSet const& commonParams(_params.getUntrackedParameterSet("Common")); MGPAGainsPN_ = commonParams.getUntrackedParameter<vector<int> >("MGPAGainsPN"); edm::ParameterSet const& taskParams(_params.getUntrackedParameterSet(name_)); laserWavelengths_ = taskParams.getUntrackedParameter<vector<int> >("laserWavelengths"); minChannelEntries_ = taskParams.getUntrackedParameter<int>("minChannelEntries"); expectedAmplitude_ = taskParams.getUntrackedParameter<vector<double> >("expectedAmplitude"); amplitudeThreshold_ = taskParams.getUntrackedParameter<vector<double> >("amplitudeThreshold"); amplitudeRMSThreshold_ = taskParams.getUntrackedParameter<vector<double> >("amplitudeRMSThreshold"); expectedTiming_ = taskParams.getUntrackedParameter<vector<double> >("expectedTiming"); timingThreshold_ = taskParams.getUntrackedParameter<vector<double> >("timingThreshold"); timingRMSThreshold_ = taskParams.getUntrackedParameter<vector<double> >("timingRMSThreshold"); expectedPNAmplitude_ = taskParams.getUntrackedParameter<vector<double> >("expectedPNAmplitude"); pnAmplitudeThreshold_ = taskParams.getUntrackedParameter<vector<double> >("pnAmplitudeThreshold"); pnAmplitudeRMSThreshold_ = taskParams.getUntrackedParameter<vector<double> >("pnAmplitudeRMSThreshold"); towerThreshold_ = taskParams.getUntrackedParameter<double>("towerThreshold"); for(vector<int>::iterator wlItr(laserWavelengths_.begin()); wlItr != laserWavelengths_.end(); ++wlItr) if(*wlItr <= 0 || *wlItr >= 5) throw cms::Exception("InvalidConfiguration") << "Laser Wavelength" << endl; for(vector<int>::iterator gainItr(MGPAGainsPN_.begin()); gainItr != MGPAGainsPN_.end(); ++gainItr) if(*gainItr != 1 && *gainItr != 16) throw cms::Exception("InvalidConfiguration") << "PN diode gain" << endl; if(expectedAmplitude_.size() != nWL || amplitudeThreshold_.size() != nWL || amplitudeRMSThreshold_.size() != nWL || expectedTiming_.size() != nWL || timingThreshold_.size() != nWL || timingRMSThreshold_.size() != nWL || expectedPNAmplitude_.size() != nWL * nPNGain || pnAmplitudeThreshold_.size() != nWL * nPNGain || pnAmplitudeRMSThreshold_.size() != nWL * nPNGain) throw cms::Exception("InvalidConfiguration") << "Size of quality cut parameter vectors" << endl; map<string, string> replacements; stringstream ss; edm::ParameterSet const& sources(_params.getUntrackedParameterSet("sources")); for(vector<int>::iterator wlItr(laserWavelengths_.begin()); wlItr != laserWavelengths_.end(); ++wlItr){ ss.str(""); ss << *wlItr; replacements["wl"] = ss.str(); unsigned offset(*wlItr - 1); source_(sAmplitude + offset, "LaserTask", LaserTask::kAmplitude + offset, sources); source_(sTiming + offset, "LaserTask", LaserTask::kTiming + offset, sources); sources_[sAmplitude + offset]->name(replacements); sources_[sTiming + offset]->name(replacements); for(vector<int>::iterator gainItr(MGPAGainsPN_.begin()); gainItr != MGPAGainsPN_.end(); ++gainItr){ ss.str(""); ss << *gainItr; replacements["pngain"] = ss.str(); offset = (*wlItr - 1) * nPNGain + (*gainItr == 1 ? 0 : 1); source_(sPNAmplitude + offset, "LaserTask", LaserTask::kPNAmplitude, sources); sources_[sPNAmplitude + offset]->name(replacements); } } BinService::AxisSpecs axis; for(vector<int>::iterator wlItr(laserWavelengths_.begin()); wlItr != laserWavelengths_.end(); ++wlItr){ ss.str(""); ss << *wlItr; replacements["wl"] = ss.str(); unsigned offset(*wlItr - 1); MEs_[kQuality + offset]->name(replacements); MEs_[kQualitySummary + offset]->name(replacements); MEs_[kAmplitudeMean + offset]->name(replacements); MEs_[kAmplitudeRMS + offset]->name(replacements); MEs_[kTimingMean + offset]->name(replacements); MEs_[kTimingRMS + offset]->name(replacements); MEs_[kPNQualitySummary + offset]->name(replacements); for(vector<int>::iterator gainItr(MGPAGainsPN_.begin()); gainItr != MGPAGainsPN_.end(); ++gainItr){ ss.str(""); ss << *gainItr; replacements["pngain"] = ss.str(); offset = (*wlItr - 1) * nPNGain + (*gainItr == 1 ? 0 : 1); MEs_[kPNAmplitudeMean + offset]->name(replacements); MEs_[kPNAmplitudeRMS + offset]->name(replacements); } } }
ecaldqm::LaserClient::~LaserClient | ( | ) | [inline] |
Definition at line 13 of file LaserClient.h.
{}
void ecaldqm::LaserClient::beginRun | ( | const edm::Run & | , |
const edm::EventSetup & | |||
) | [virtual] |
Reimplemented from ecaldqm::DQWorker.
Definition at line 165 of file LaserClient.cc.
References kPNQualitySummary, kQuality, kQualitySummary, laserWavelengths_, ecaldqm::DQWorker::MEs_, MGPAGainsPN_, nPNGain, and evf::evtn::offset().
{ for(std::vector<int>::iterator wlItr(laserWavelengths_.begin()); wlItr != laserWavelengths_.end(); ++wlItr){ unsigned offset(*wlItr - 1); MEs_[kQuality + offset]->resetAll(-1.); MEs_[kQualitySummary + offset]->resetAll(-1.); for(std::vector<int>::iterator gainItr(MGPAGainsPN_.begin()); gainItr != MGPAGainsPN_.end(); ++gainItr){ offset = (*wlItr - 1) * nPNGain + (*gainItr == 1 ? 0 : 1); MEs_[kPNQualitySummary + offset]->resetAll(-1.); } } }
void ecaldqm::LaserClient::bookMEs | ( | ) | [virtual] |
Reimplemented from ecaldqm::DQWorker.
Definition at line 142 of file LaserClient.cc.
References kAmplitudeMean, kAmplitudeRMS, kPNAmplitudeMean, kPNAmplitudeRMS, kPNQualitySummary, kQuality, kQualitySummary, kTimingMean, kTimingRMS, laserWavelengths_, ecaldqm::DQWorker::MEs_, MGPAGainsPN_, nPNGain, and evf::evtn::offset().
{ for(std::vector<int>::iterator wlItr(laserWavelengths_.begin()); wlItr != laserWavelengths_.end(); ++wlItr){ unsigned offset(*wlItr - 1); MEs_[kQuality + offset]->book(); MEs_[kQualitySummary + offset]->book(); MEs_[kAmplitudeMean + offset]->book(); MEs_[kAmplitudeRMS + offset]->book(); MEs_[kTimingMean + offset]->book(); MEs_[kTimingRMS + offset]->book(); MEs_[kPNQualitySummary + offset]->book(); for(std::vector<int>::iterator gainItr(MGPAGainsPN_.begin()); gainItr != MGPAGainsPN_.end(); ++gainItr){ offset = (*wlItr - 1) * nPNGain + (*gainItr == 1 ? 0 : 1); MEs_[kPNAmplitudeMean + offset]->book(); MEs_[kPNAmplitudeRMS + offset]->book(); } } }
void ecaldqm::LaserClient::initialize | ( | ) | [virtual] |
Reimplemented from ecaldqm::DQWorkerClient.
Definition at line 123 of file LaserClient.cc.
References ecaldqm::DQWorker::initialized_, laserWavelengths_, MGPAGainsPN_, nPNGain, evf::evtn::offset(), sAmplitude, ecaldqm::DQWorkerClient::sources_, sPNAmplitude, and sTiming.
{ initialized_ = true; for(std::vector<int>::iterator wlItr(laserWavelengths_.begin()); wlItr != laserWavelengths_.end(); ++wlItr){ unsigned offset(*wlItr - 1); initialized_ &= sources_[sAmplitude + offset]->retrieve(); initialized_ &= sources_[sTiming + offset]->retrieve(); for(std::vector<int>::iterator gainItr(MGPAGainsPN_.begin()); gainItr != MGPAGainsPN_.end(); ++gainItr){ offset = (*wlItr - 1) * nPNGain + (*gainItr == 1 ? 0 : 1); initialized_ &= sources_[sPNAmplitude + offset]->retrieve(); } } }
void ecaldqm::LaserClient::producePlots | ( | ) | [virtual] |
Implements ecaldqm::DQWorkerClient.
Definition at line 180 of file LaserClient.cc.
References abs, amplitudeRMSThreshold_, amplitudeThreshold_, cond::ecalcond::bad(), EcalBarrel, EcalEndcap, expectedAmplitude_, expectedPNAmplitude_, expectedTiming_, ecaldqm::getElectronicsMap(), ecaldqm::getNSuperCrystals(), kAmplitudeMean, kAmplitudeRMS, kPNAmplitudeMean, kPNAmplitudeRMS, kPNQualitySummary, kQuality, kQualitySummary, kTimingMean, kTimingRMS, laserWavelengths_, ecaldqm::DQWorker::MEs_, MGPAGainsPN_, minChannelEntries_, nPNGain, evf::evtn::offset(), pnAmplitudeRMSThreshold_, pnAmplitudeThreshold_, sAmplitude, ecaldqm::DQWorkerClient::sources_, sPNAmplitude, mathSSE::sqrt(), sTiming, timingRMSThreshold_, timingThreshold_, and towerThreshold_.
{ using namespace std; for(vector<int>::iterator wlItr(laserWavelengths_.begin()); wlItr != laserWavelengths_.end(); ++wlItr){ unsigned offset(*wlItr - 1); MEs_[kQuality + offset]->reset(2.); MEs_[kQualitySummary + offset]->reset(2.); MEs_[kPNQualitySummary + offset]->reset(2.); MEs_[kAmplitudeMean + offset]->reset(); MEs_[kAmplitudeRMS + offset]->reset(); MEs_[kTimingMean + offset]->reset(); MEs_[kTimingRMS + offset]->reset(); for(vector<int>::iterator gainItr(MGPAGainsPN_.begin()); gainItr != MGPAGainsPN_.end(); ++gainItr){ unsigned suboffset((*wlItr - 1) * nPNGain + (*gainItr == 1 ? 0 : 1)); MEs_[kPNAmplitudeMean + suboffset]->reset(); MEs_[kPNAmplitudeRMS + suboffset]->reset(); } for(unsigned dccid(1); dccid <= 54; dccid++){ for(unsigned tower(1); tower <= getNSuperCrystals(dccid); tower++){ std::vector<DetId> ids(getElectronicsMap()->dccTowerConstituents(dccid, tower)); if(ids.size() == 0) continue; float nBad(0.); for(std::vector<DetId>::iterator idItr(ids.begin()); idItr != ids.end(); ++idItr){ float aEntries(sources_[sAmplitude + offset]->getBinEntries(*idItr)); if(aEntries < minChannelEntries_) continue; float aMean(sources_[sAmplitude + offset]->getBinContent(*idItr)); float aRms(sources_[sAmplitude + offset]->getBinError(*idItr) * std::sqrt(aEntries)); MEs_[kAmplitudeMean + offset]->fill(*idItr, aMean); MEs_[kAmplitudeRMS + offset]->fill(*idItr, aRms); float tEntries(sources_[sTiming + offset]->getBinEntries(*idItr)); if(tEntries < minChannelEntries_) continue; float tMean(sources_[sTiming + offset]->getBinContent(*idItr)); float tRms(sources_[sTiming + offset]->getBinError(*idItr) * std::sqrt(tEntries)); MEs_[kTimingMean + offset]->fill(*idItr, tMean); MEs_[kTimingRMS + offset]->fill(*idItr, tRms); if(std::abs(aMean - expectedAmplitude_[offset]) > amplitudeThreshold_[offset] || aRms > amplitudeRMSThreshold_[offset] || std::abs(tMean - expectedTiming_[offset]) > timingThreshold_[offset] || tRms > timingRMSThreshold_[offset]){ MEs_[kQuality + offset]->setBinContent(*idItr, 0.); nBad += 1.; } else MEs_[kQuality + offset]->setBinContent(*idItr, 1.); } if(nBad / ids.size() > towerThreshold_) MEs_[kQualitySummary + offset]->setBinContent(ids[0], 0.); else MEs_[kQualitySummary + offset]->setBinContent(ids[0], 1.); } unsigned subdet; if(dccid <= 9 || dccid >= 46) subdet = EcalEndcap; else subdet = EcalBarrel; for(unsigned pn(1); pn <= 10; pn++){ EcalPnDiodeDetId pnid(subdet, dccid, pn); bool bad(false); for(vector<int>::iterator gainItr(MGPAGainsPN_.begin()); gainItr != MGPAGainsPN_.end(); ++gainItr){ unsigned suboffset((*wlItr - 1) * nPNGain + (*gainItr == 1 ? 0 : 1)); float pEntries(sources_[sPNAmplitude + suboffset]->getBinEntries(pnid)); if(pEntries < minChannelEntries_) continue; float pMean(sources_[sPNAmplitude + suboffset]->getBinContent(pnid)); float pRms(sources_[sPNAmplitude + suboffset]->getBinError(pnid) * std::sqrt(pEntries)); MEs_[kPNAmplitudeMean + suboffset]->fill(pnid, pMean); MEs_[kPNAmplitudeRMS + suboffset]->fill(pnid, pRms); if(std::abs(pMean - expectedPNAmplitude_[suboffset]) > pnAmplitudeThreshold_[suboffset] || pRms > pnAmplitudeRMSThreshold_[suboffset]) bad = true; } if(bad) MEs_[kPNQualitySummary + offset]->setBinContent(pnid, 0.); else MEs_[kPNQualitySummary + offset]->setBinContent(pnid, 1.); } } } }
void ecaldqm::LaserClient::setMEData | ( | std::vector< MEData > & | _data | ) | [static] |
Reimplemented from ecaldqm::DQWorker.
Definition at line 286 of file LaserClient.cc.
References MonitorElement::DQM_KIND_TH1F, MonitorElement::DQM_KIND_TH2F, EcalDQMBinningService::AxisSpecs::high, kAmplitudeMean, kAmplitudeRMS, EcalDQMBinningService::kCrystal, EcalDQMBinningService::kEcal2P, EcalDQMBinningService::kEcalMEM2P, kPNAmplitudeMean, kPNAmplitudeRMS, kPNQualitySummary, kQuality, kQualitySummary, EcalDQMBinningService::kSM, EcalDQMBinningService::kSMMEM, EcalDQMBinningService::kSuperCrystal, kTimingMean, kTimingRMS, EcalDQMBinningService::kUser, EcalDQMBinningService::AxisSpecs::low, EcalDQMBinningService::AxisSpecs::nbins, nPNGain, nWL, and evf::evtn::offset().
{ BinService::AxisSpecs axis; for(unsigned iWL(0); iWL < nWL; iWL++){ _data[kQuality + iWL] = MEData("Quality", BinService::kSM, BinService::kCrystal, MonitorElement::DQM_KIND_TH2F); axis.nbins = 100; axis.low = 0.; axis.high = 4096.; _data[kAmplitudeMean + iWL] = MEData("AmplitudeMean", BinService::kSM, BinService::kUser, MonitorElement::DQM_KIND_TH1F, &axis); axis.low = 0.; axis.high = 400.; _data[kAmplitudeRMS + iWL] = MEData("AmplitudeRMS", BinService::kSM, BinService::kUser, MonitorElement::DQM_KIND_TH1F, &axis); axis.low = 3.5; axis.high = 5.5; _data[kTimingMean + iWL] = MEData("TimingMean", BinService::kSM, BinService::kUser, MonitorElement::DQM_KIND_TH1F, &axis); axis.low = 0.; axis.high = 0.5; _data[kTimingRMS + iWL] = MEData("TimingRMS", BinService::kSM, BinService::kUser, MonitorElement::DQM_KIND_TH1F, &axis); _data[kQualitySummary + iWL] = MEData("QualitySummary", BinService::kEcal2P, BinService::kSuperCrystal, MonitorElement::DQM_KIND_TH2F); _data[kPNQualitySummary + iWL] = MEData("PNQualitySummary", BinService::kEcalMEM2P, BinService::kCrystal, MonitorElement::DQM_KIND_TH2F); for(unsigned iPNGain(0); iPNGain < nPNGain; iPNGain++){ unsigned offset(iWL * nPNGain + iPNGain); axis.low = 0.; axis.high = 4096.; _data[kPNAmplitudeMean + offset] = MEData("PNAmplitudeMean", BinService::kSMMEM, BinService::kUser, MonitorElement::DQM_KIND_TH1F, &axis); axis.low = 0.; axis.high = 200.; _data[kPNAmplitudeRMS + offset] = MEData("PNAmplitudeRMS", BinService::kSMMEM, BinService::kUser, MonitorElement::DQM_KIND_TH1F, &axis); } } }
std::map<std::pair<unsigned, int>, float> ecaldqm::LaserClient::ampCorrections_ [protected] |
Definition at line 67 of file LaserClient.h.
std::vector<double> ecaldqm::LaserClient::amplitudeRMSThreshold_ [protected] |
Definition at line 57 of file LaserClient.h.
Referenced by producePlots().
std::vector<double> ecaldqm::LaserClient::amplitudeThreshold_ [protected] |
Definition at line 56 of file LaserClient.h.
Referenced by producePlots().
std::vector<double> ecaldqm::LaserClient::expectedAmplitude_ [protected] |
Definition at line 55 of file LaserClient.h.
Referenced by producePlots().
std::vector<double> ecaldqm::LaserClient::expectedPNAmplitude_ [protected] |
Definition at line 61 of file LaserClient.h.
Referenced by producePlots().
std::vector<double> ecaldqm::LaserClient::expectedTiming_ [protected] |
Definition at line 58 of file LaserClient.h.
Referenced by producePlots().
std::vector<int> ecaldqm::LaserClient::laserWavelengths_ [protected] |
Definition at line 51 of file LaserClient.h.
Referenced by beginRun(), bookMEs(), initialize(), and producePlots().
std::vector<int> ecaldqm::LaserClient::MGPAGainsPN_ [protected] |
Definition at line 52 of file LaserClient.h.
Referenced by beginRun(), bookMEs(), initialize(), and producePlots().
int ecaldqm::LaserClient::minChannelEntries_ [protected] |
Definition at line 54 of file LaserClient.h.
Referenced by producePlots().
std::vector<double> ecaldqm::LaserClient::pnAmplitudeRMSThreshold_ [protected] |
Definition at line 63 of file LaserClient.h.
Referenced by producePlots().
std::vector<double> ecaldqm::LaserClient::pnAmplitudeThreshold_ [protected] |
Definition at line 62 of file LaserClient.h.
Referenced by producePlots().
std::vector<double> ecaldqm::LaserClient::timingRMSThreshold_ [protected] |
Definition at line 60 of file LaserClient.h.
Referenced by producePlots().
std::vector<double> ecaldqm::LaserClient::timingThreshold_ [protected] |
Definition at line 59 of file LaserClient.h.
Referenced by producePlots().
float ecaldqm::LaserClient::towerThreshold_ [protected] |
Definition at line 65 of file LaserClient.h.
Referenced by producePlots().