1 #include "../interface/DBWriterWorkers.h"
2 #include "../interface/LogicIDTranslation.h"
77 std::vector<std::string> runTypes(params.getUntrackedParameter<std::vector<std::string> >(
"runTypes"));
78 for(
unsigned iT(0); iT < runTypes.size(); ++iT)
84 std::vector<std::string>
const& meNames(sourceParams.getParameterNames());
85 for(
unsigned iP(0); iP < meNames.size(); ++iP){
96 for(MESetCollection::iterator sItr(
source_.begin()); sItr !=
source_.end(); ++sItr){
97 if(!sItr->second->retrieve(_store, &failedPath)){
98 edm::LogError(
"EcalDQM") <<
name_ <<
": MESet " << sItr->first <<
"@" << failedPath <<
" not found";
131 std::map<EcalLogicID, MonCrystalConsistencyDat> crystalConsistencies;
132 std::map<EcalLogicID, MonTTConsistencyDat> towerConsistencies;
133 std::map<EcalLogicID, MonMemChConsistencyDat> memChannelConsistencies;
134 std::map<EcalLogicID, MonMemTTConsistencyDat> memTowerConsistencies;
153 MESet const& memblocksizeME(
source_.at(
"MEMBlockSize"));
160 DetId id(dItr->getId());
162 int nDigis(dItr->getBinContent());
163 int gain(gainME.getBinContent(
id));
164 int chid(chidME.getBinContent(
id));
165 int gainswitch(gainswitchME.getBinContent(
id));
168 if(gain > 0 || chid > 0 || gainswitch > 0){
176 int channelStatus(qItr->getBinContent());
177 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
187 for(
unsigned iTower(1); iTower <= 68; ++iTower){
188 if(!
ccuExists(iDCC + 1, iTower))
continue;
191 std::vector<DetId> channels(
getElectronicsMap()->dccTowerConstituents(iDCC + 1, iTower));
193 bool towerBad(
false);
194 for(
unsigned iD(0); iD < channels.size(); ++iD){
195 int n(digiME.getBinContent(channels[iD]));
196 if(
n > nDigis) nDigis =
n;
197 int channelStatus(qualityME.getBinContent(channels[iD]));
198 if(channelStatus ==
kBad || channelStatus ==
kMBad) towerBad =
true;
201 int towerid(toweridME.getBinContent(eid));
202 int blocksize(blocksizeME.getBinContent(eid));
203 int l1a(l1aME.getBinContent(iDCC + 1, iTower));
204 int bx(bxME.getBinContent(iDCC + 1, iTower));
206 if(towerid > 0 || blocksize > 0 || l1a > 0 || bx > 0){
223 for(
unsigned iMD(0); iMD <
memDCC.size(); ++iMD){
224 unsigned iDCC(
memDCC[iMD]);
228 for(
unsigned iPN(1); iPN <= 10; ++iPN){
231 int nDigis(memdigiME.getBinContent(pnid));
232 int memchid(memchidME.getBinContent(pnid));
233 int memgain(memgainME.getBinContent(pnid));
235 if(memchid > 0 || memgain > 0){
243 int channelStatus(pnqualityME.getBinContent(pnid));
244 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
251 for(
unsigned iTower(69); iTower <= 70; ++iTower){
255 bool towerBad(
false);
256 for(
unsigned iPN(1); iPN <= 10; ++iPN){
258 int n(memdigiME.getBinContent(pnid));
259 if(
n > nDigis) nDigis =
n;
260 int channelStatus(pnqualityME.getBinContent(pnid));
261 if(channelStatus ==
kBad || channelStatus ==
kMBad) towerBad =
true;
264 int towerid(memtoweridME.getBinContent(eid));
265 int blocksize(memblocksizeME.getBinContent(eid));
267 if(towerid > 0 || blocksize > 0){
284 if(crystalConsistencies.size() > 0){
288 if(towerConsistencies.size() > 0){
292 if(memChannelConsistencies.size() > 0){
296 if(memTowerConsistencies.size() > 0){
301 catch(std::runtime_error&
e){
302 if(
std::string(e.what()).
find(
"unique constraint") != std::string::npos)
323 MESetMulti const& amplitude(static_cast<MESetMulti const&>(
source_.at(
"Amplitude")));
324 unsigned nWL(laserWavelengths.size());
325 for(
unsigned iWL(0); iWL != nWL; ++iWL){
326 int wl(laserWavelengths[iWL]);
327 if(wl <= 0 || wl >= 5)
throw cms::Exception(
"InvalidConfiguration") <<
"Laser Wavelength";
349 std::map<EcalLogicID, MonLaserBlueDat> l1Amp;
350 std::map<EcalLogicID, MonTimingLaserBlueCrystalDat> l1Time;
351 std::map<EcalLogicID, MonPNBlueDat> l1PN;
352 std::map<EcalLogicID, MonLaserGreenDat> l2Amp;
353 std::map<EcalLogicID, MonTimingLaserGreenCrystalDat> l2Time;
354 std::map<EcalLogicID, MonPNGreenDat> l2PN;
355 std::map<EcalLogicID, MonLaserIRedDat> l3Amp;
356 std::map<EcalLogicID, MonTimingLaserIRedCrystalDat> l3Time;
357 std::map<EcalLogicID, MonPNIRedDat> l3PN;
358 std::map<EcalLogicID, MonLaserRedDat> l4Amp;
359 std::map<EcalLogicID, MonTimingLaserRedCrystalDat> l4Time;
360 std::map<EcalLogicID, MonPNRedDat> l4PN;
371 for(std::map<int, unsigned>::iterator wlItr(
wlToME_.begin()); wlItr !=
wlToME_.end(); ++wlItr){
372 int wl(wlItr->first);
373 unsigned iM(wlItr->second);
387 float aEntries(aItr->getBinEntries());
388 if(aEntries < 1.)
continue;
394 DetId id(aItr->getId());
396 float ampMean(aItr->getBinContent());
397 float ampRms(aItr->getBinError() *
std::sqrt(aEntries));
407 int channelStatus(qItr->getBinContent());
408 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
477 for(
unsigned iMD(0); iMD <
memDCC.size(); ++iMD){
478 unsigned iDCC(
memDCC[iMD]);
482 for(
unsigned iPN(1); iPN <= 10; ++iPN){
485 float entries(pnME.getBinEntries(pnid));
488 float mean(pnME.getBinContent(pnid));
491 float pedestalEntries(pnPedestalME.getBinEntries(pnid));
492 float pedestalMean(pnPedestalME.getBinContent(pnid));
493 float pedestalRms(pnPedestalME.getBinError(pnid) *
std::sqrt(pedestalEntries));
495 int channelStatus(pnQualityME.getBinContent(pnid));
496 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
566 if(l1Time.size() > 0)
572 if(l2Time.size() > 0)
578 if(l3Time.size() > 0)
584 if(l4Time.size() > 0)
589 catch(std::runtime_error&
e){
590 if(
std::string(e.what()).
find(
"unique constraint") != std::string::npos)
610 unsigned nG(MGPAGains.size());
611 for(
unsigned iG(0); iG != nG; ++iG){
612 int gain(MGPAGains[iG]);
613 if(gain != 1 && gain != 6 && gain != 12)
throw cms::Exception(
"InvalidConfiguration") <<
"MGPA gain";
620 MESetMulti const& pnPedestal(static_cast<MESetMulti const&>(
source_.at(
"PNPedestal")));
621 unsigned nGPN(MGPAGainsPN.size());
622 for(
unsigned iG(0); iG != nGPN; ++iG){
623 int gain(MGPAGainsPN[iG]);
624 if(gain != 1 && gain != 16)
throw cms::Exception(
"InvalidConfiguration") <<
"PN MGPA gain";
643 std::map<EcalLogicID, MonPedestalsDat> pedestals;
644 std::map<EcalLogicID, MonPNPedDat> pnPedestals;
652 for(std::map<int, unsigned>::iterator gainItr(
gainToME_.begin()); gainItr !=
gainToME_.end(); ++gainItr){
653 int gain(gainItr->first);
654 int iM(gainItr->second);
662 float entries(pItr->getBinEntries());
667 float mean(pItr->getBinContent());
671 if(pedestals.find(logicID) == pedestals.end()){
698 int channelStatus(qItr->getBinContent());
699 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
707 for(std::map<int, unsigned>::iterator gainItr(
pnGainToME_.begin()); gainItr !=
pnGainToME_.end(); ++gainItr){
708 int gain(gainItr->first);
709 int iM(gainItr->second);
714 for(
unsigned iMD(0); iMD <
memDCC.size(); ++iMD){
715 unsigned iDCC(
memDCC[iMD]);
719 for(
unsigned iPN(1); iPN <= 10; ++iPN){
722 float entries(pnPedestalME.getBinEntries(pnid));
725 float mean(pnPedestalME.getBinContent(pnid));
729 if(pnPedestals.find(logicID) == pnPedestals.end()){
750 int channelStatus(pnQualityME.getBinContent(pnid));
751 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
761 if(pedestals.size() > 0)
763 if(pnPedestals.size() > 0)
766 catch(std::runtime_error&
e){
767 if(
std::string(e.what()).
find(
"unique constraint") != std::string::npos)
787 std::map<EcalLogicID, MonPedestalsOnlineDat> pedestals;
795 float entries(pItr->getBinEntries());
800 float mean(pItr->getBinContent());
804 data.setADCMeanG12(
mean);
805 data.setADCRMSG12(
rms);
807 int channelStatus(qItr->getBinContent());
808 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
809 data.setTaskStatus(channelBad);
815 if(pedestals.size() > 0)
818 catch(std::runtime_error&
e){
819 if(
std::string(e.what()).
find(
"unique constraint") != std::string::npos)
838 MESetMulti const& amplitude(static_cast<MESetMulti const&>(
source_.at(
"Amplitude")));
839 unsigned nG(MGPAGains.size());
840 for(
unsigned iG(0); iG != nG; ++iG){
841 int gain(MGPAGains[iG]);
842 if(gain != 1 && gain != 6 && gain != 12)
throw cms::Exception(
"InvalidConfiguration") <<
"MGPA gain";
849 MESetMulti const& pnAmplitude(static_cast<MESetMulti const&>(
source_.at(
"PNAmplitude")));
850 unsigned nGPN(MGPAGainsPN.size());
851 for(
unsigned iG(0); iG != nGPN; ++iG){
852 int gain(MGPAGainsPN[iG]);
853 if(gain != 1 && gain != 16)
throw cms::Exception(
"InvalidConfiguration") <<
"PN MGPA gain";
874 std::map<EcalLogicID, MonTestPulseDat> amplitude;
875 std::map<EcalLogicID, MonPulseShapeDat> shape;
876 std::map<EcalLogicID, MonPNMGPADat> pnAmplitude;
886 for(std::map<int, unsigned>::iterator gainItr(
gainToME_.begin()); gainItr !=
gainToME_.end(); ++gainItr){
887 int gain(gainItr->first);
888 int iM(gainItr->second);
897 float entries(aItr->getBinEntries());
902 float mean(aItr->getBinContent());
906 if(amplitude.find(logicID) == amplitude.end()){
933 int channelStatus(qItr->getBinContent());
934 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
941 for(
unsigned iSM(0); iSM < 54; ++iSM){
942 std::vector<float> samples(10, 0.);
944 unsigned nId(ids.size());
947 for(
unsigned iD(0); iD < nId; ++iD){
952 if(shapeME.getBinEntries(
id, 1) < 1.)
continue;
956 for(
int i(0);
i < 10; ++
i)
957 samples[
i] += shapeME.getBinContent(
id,
i + 1);
960 if(nChannels == 0)
continue;
962 for(
int i(0);
i < 10; ++
i)
963 samples[
i] /= nChannels;
965 if(shape.find(logicID) == shape.end()){
967 std::vector<float> defval(10, -1.);
978 for(std::map<int, unsigned>::iterator gainItr(
pnGainToME_.begin()); gainItr !=
pnGainToME_.end(); ++gainItr){
979 int gain(gainItr->first);
980 int iM(gainItr->second);
985 for(
unsigned iMD(0); iMD <
memDCC.size(); ++iMD){
986 unsigned iDCC(
memDCC[iMD]);
990 for(
unsigned iPN(1); iPN <= 10; ++iPN){
993 float entries(pnAmplitudeME.getBinEntries(pnid));
996 float mean(pnAmplitudeME.getBinContent(pnid));
998 float pedestalEntries(pnPedestalME.getBinEntries(pnid));
999 float pedestalMean(pnPedestalME.getBinContent(pnid));
1000 float pedestalRms(pnPedestalME.getBinError(pnid) *
std::sqrt(pedestalEntries));
1003 if(pnAmplitude.find(logicID) == pnAmplitude.end()){
1033 int channelStatus(pnQualityME.getBinContent(pnid));
1034 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
1044 if(amplitude.size() > 0)
1046 if(shape.size() > 0)
1048 if(pnAmplitude.size() > 0)
1051 catch(std::runtime_error&
e){
1052 if(
std::string(e.what()).
find(
"unique constraint") != std::string::npos)
1072 std::map<EcalLogicID, MonTimingCrystalDat> timing;
1080 float entries(tItr->getBinEntries());
1085 float mean(tItr->getBinContent());
1089 data.setTimingMean(
mean);
1090 data.setTimingRMS(
rms);
1092 int channelStatus(qItr->getBinContent());
1093 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
1094 data.setTaskStatus(channelBad);
1100 if(timing.size() > 0)
1103 catch(std::runtime_error&
e){
1104 if(
std::string(e.what()).
find(
"unique constraint") != std::string::npos)
1125 MESetMulti const& amplitude(static_cast<MESetMulti const&>(
source_.at(
"Amplitude")));
1126 unsigned nWL(ledWavelengths.size());
1127 for(
unsigned iWL(0); iWL != nWL; ++iWL){
1128 int wl(ledWavelengths[iWL]);
1129 if(wl != 1 && wl != 2)
throw cms::Exception(
"InvalidConfiguration") <<
"Led Wavelength";
1151 std::map<EcalLogicID, MonLed1Dat> l1Amp;
1152 std::map<EcalLogicID, MonTimingLed1CrystalDat> l1Time;
1154 std::map<EcalLogicID, MonLed2Dat> l2Amp;
1155 std::map<EcalLogicID, MonTimingLed2CrystalDat> l2Time;
1167 for(std::map<int, unsigned>::iterator wlItr(
wlToME_.begin()); wlItr !=
wlToME_.end(); ++wlItr){
1168 int wl(wlItr->first);
1169 unsigned iM(wlItr->second);
1183 float aEntries(aItr->getBinEntries());
1184 if(aEntries < 1.)
continue;
1190 DetId id(aItr->getId());
1192 float ampMean(aItr->getBinContent());
1193 float ampRms(aItr->getBinError() *
std::sqrt(aEntries));
1203 int channelStatus(qItr->getBinContent());
1204 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
1302 if(l1Amp.size() > 0)
1304 if(l1Time.size() > 0)
1308 if(l2Amp.size() > 0)
1310 if(l2Time.size() > 0)
1315 catch(std::runtime_error&
e){
1316 if(
std::string(e.what()).
find(
"unique constraint") != std::string::npos)
1333 std::map<EcalLogicID, MonOccupancyDat> occupancy;
1342 if(oItr->getME()->getTH1()->GetEntries() < 1000.)
continue;
1344 int entries(oItr->getBinContent());
1349 int eEntries(eItr->getBinEntries());
1350 float energy(eEntries > 10 ? eItr->getBinContent() : -1.);
1359 if(occupancy.size() > 0)
1362 catch(std::runtime_error&
e){
1363 if(
std::string(e.what()).
find(
"unique constraint") != std::string::npos)
1375 std::map<EcalLogicID, MonRunDat>
dataset;
1390 catch(std::runtime_error&
e){
1391 if(
std::string(e.what()).
find(
"unique constraint") != std::string::npos)
std::vector< unsigned > const memDCC
void setProblematicEvents(int prob)
void setADCMeanG1(float mean)
T getUntrackedParameter(std::string const &, T const &) const
void setPedMeanG1(float mean)
void setTaskList(int list)
void setADCRMSG16(float mean)
void setPedRMSG16(float mean)
void setPedRMSG1(float mean)
void setNumEvents(int num)
bool run(EcalCondDBInterface *, MonRunIOV &) override
PedestalWriter(edm::ParameterSet const &)
void setMonRunOutcomeDef(const MonRunOutcomeDef &outcomeDef)
DBWriterWorker(std::string const &, edm::ParameterSet const &)
void setProblematicEvents(int prob)
void setADCRMSG16(float mean)
void setADCRMSG1(float rms)
void setADCMeanG16(float mean)
void setAvgEnergy(float energy)
void setAPDOverPNRMS(float rms)
void setEventsOverLowThreshold(int events)
void setAPDOverPNMean(float mean)
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
void setPedRMSG16(float mean)
void setProcessedEvents(int proc)
std::map< int, unsigned > wlToME_
void setAPDMean(float mean)
void setProblemsID(int id)
void setADCMeanG16(float mean)
void setADCMeanG1(float mean)
EcalElectronicsMapping const * getElectronicsMap()
double getBinEntries() const
void setProblemsLV1(int LV1)
void setADCRMSG1(float mean)
void setTaskStatus(bool status)
std::map< int, unsigned > gainToME_
void setVPTOverPNMean(float mean)
void setADCMeanG1(float mean)
void setADCRMSG1(float mean)
bool run(EcalCondDBInterface *, MonRunIOV &) override
ParameterSet getUntrackedParameterSet(std::string const &name, ParameterSet const &defaultValue) const
void setADCMeanG6(float mean)
bool ccuExists(unsigned, unsigned)
void setPedRMSG1(float mean)
void setTaskStatus(bool status)
void setPedRMSG16(float mean)
void setTimingMean(float mean)
void setPedMeanG1(float mean)
void setProblemsSize(int size)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
void setTaskStatus(bool status)
bool run(EcalCondDBInterface *, MonRunIOV &) override
void setPedRMSG6(float rms)
bool run(EcalCondDBInterface *, MonRunIOV &) override
void setSamples(std::vector< float > &samples, int gain)
virtual void retrieveSource(DQMStore const &)
void setShortDesc(std::string desc)
void setTaskStatus(bool status)
void setProblematicEvents(int prob)
void setProcessedEvents(int proc)
void setVPTMean(float mean)
std::string to_string(const T &t)
void setADCMeanG12(float mean)
void setVPTOverPNRMS(float rms)
void setVPTOverPNMean(float mean)
LedWriter(edm::ParameterSet const &)
void setADCMeanG1(float mean)
LaserWriter(edm::ParameterSet const &)
void setADCMeanG16(float mean)
void setTaskStatus(bool status)
void setAPDMean(float mean)
void setTaskStatus(bool status)
void setTaskStatus(bool status)
void setPedMeanG6(float mean)
void setTaskStatus(bool status)
bool run(EcalCondDBInterface *, MonRunIOV &) override
void setVPTRMS(float rms)
unsigned processedEvents_
double getBinError() const
void setPedMeanG1(float mean)
void setAPDMean(float mean)
void setTaskStatus(bool status)
void setProblematicEvents(int prob)
bool run(EcalCondDBInterface *, MonRunIOV &) override
void setProblemsID(int id)
void setPedRMSG1(float mean)
void setProblemsID(int id)
void setPedRMSG1(float mean)
void setADCRMSG12(float rms)
void setTaskStatus(bool status)
void setPedRMSG1(float mean)
void setPedMeanG16(float mean)
EcalLogicID memChannelID(EcalPnDiodeDetId const &)
void setTaskOutcome(int outcome)
void setProblemsBunchX(int bunchX)
void setProblemsGainSwitch(int prob)
void setADCMeanG1(float mean)
void setADCRMSG1(float mean)
void setPedRMSG1(float mean)
void setADCRMSG1(float mean)
void setTaskStatus(bool status)
std::map< int, unsigned > pnGainToME_
void setAPDRMS(float rms)
void setPedRMSG16(float mean)
void setADCRMSG16(float mean)
void setAPDOverPNRMS(float rms)
void setAPDRMS(float rms)
std::map< int, unsigned > pnGainToME_
void setTaskStatus(bool status)
void setPedRMSG1(float rms)
void setAPDOverPNRMS(float rms)
void setVPTRMS(float rms)
bool qualityOK(int _quality)
void setTaskStatus(bool status)
EcalLogicID lmPNID(EcalPnDiodeDetId const &)
void setProblemsID(int id)
bool run(EcalCondDBInterface *, MonRunIOV &) override
void setAPDOverPNMean(float mean)
void setTimingRMS(float rms)
void setADCMeanG16(float mean)
bool run(EcalCondDBInterface *, MonRunIOV &) override
void setADCRMSG6(float rms)
void setADCMeanG16(float mean)
void setTaskStatus(bool status)
void setPedMeanG16(float mean)
void setPedMeanG16(float mean)
void setAPDOverPNRMS(float rms)
double getBinContent() const
void setTaskStatus(bool status)
std::map< int, unsigned > gainToME_
void setPedMeanG1(float mean)
void setTaskStatus(bool status)
void setAPDOverPNMean(float mean)
void setAPDRMS(float rms)
void setProcessedEvents(int proc)
void setPedMeanG16(float mean)
void setEventsOverHighThreshold(int events)
void setTaskStatus(bool status)
char data[epos_bytes_allocation]
void setProcessedEvents(int proc)
void setADCRMSG1(float mean)
void setPedMeanG1(float mean)
void setProblemsGainZero(int prob)
void setPedRMSG16(float mean)
void setProblemsGainZero(int prob)
void setPedMeanG12(float mean)
void setADCMeanG1(float mean)
void setTaskStatus(bool status)
void insertDataArraySet(const std::map< EcalLogicID, DATT > *data, IOVT *iov)
void setProblemsSize(int size)
void insertDataSet(const std::map< EcalLogicID, DATT > *data, IOVT *iov)
EcalLogicID towerID(EcalElectronicsId const &)
TestPulseWriter(edm::ParameterSet const &)
void setVPTMean(float mean)
const_iterator & toNextChannel()
void setPedMeanG16(float mean)
void setTaskStatus(bool status)
volatile std::atomic< bool > shutdown_flag false
void setAPDMean(float mean)
std::map< int, unsigned > wlToME_
void setVPTOverPNRMS(float rms)
void setADCRMSG16(float mean)
std::set< std::string > runTypes_
void setADCRMSG16(float mean)
void setAPDOverPNMean(float mean)
EcalLogicID memTowerID(EcalElectronicsId const &)
std::map< std::string, std::string > PathReplacements
MESet * createMESet(edm::ParameterSet const &)
bool run(EcalCondDBInterface *, MonRunIOV &) override
void setPedMeanG1(float mean)
void setPedMeanG1(float mean)
EcalLogicID crystalID(DetId const &)
void setPedRMSG16(float mean)
void setAPDRMS(float rms)
unsigned getIndex(PathReplacements const &) const
void setPedMeanG16(float mean)
void setPedRMSG12(float rms)