Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-07-16 02:42:45

0001 #include "DQM/EcalMonitorClient/interface/RawDataClient.h"
0002 
0003 #include "DQM/EcalCommon/interface/EcalDQMCommonUtils.h"
0004 #include "DQM/EcalCommon/interface/FEFlags.h"
0005 
0006 #include "CondFormats/EcalObjects/interface/EcalDQMStatusHelper.h"
0007 
0008 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0009 
0010 #include <cmath>
0011 
0012 namespace ecaldqm {
0013 
0014   RawDataClient::RawDataClient() : DQWorkerClient(), minEvents_(0), synchErrThresholdFactor_(0.) {
0015     qualitySummaries_.insert("QualitySummary");
0016   }
0017 
0018   void RawDataClient::setParams(edm::ParameterSet const& _params) {
0019     minEvents_ = _params.getUntrackedParameter<int>("minEvents");
0020     synchErrThresholdFactor_ = _params.getUntrackedParameter<double>("synchErrThresholdFactor");
0021   }
0022 
0023   void RawDataClient::producePlots(ProcessType) {
0024     MESet& meQualitySummary(MEs_.at("QualitySummary"));
0025     MESet& meErrorsSummary(MEs_.at("ErrorsSummary"));
0026 
0027     MESet const& sEntries(sources_.at("Entries"));
0028     MESet const& sL1ADCC(sources_.at("L1ADCC"));
0029     MESet const& sFEStatus(sources_.at("FEStatus"));
0030 
0031     uint32_t mask(1 << EcalDQMStatusHelper::STATUS_FLAG_ERROR);
0032 
0033     std::vector<int> dccStatus(nDCC, 1);
0034 
0035     for (unsigned iDCC(0); iDCC < nDCC; ++iDCC) {
0036       double entries(sEntries.getBinContent(getEcalDQMSetupObjects(), iDCC + 1));
0037       if (entries > 1. && sL1ADCC.getBinContent(getEcalDQMSetupObjects(), iDCC + 1) >
0038                               synchErrThresholdFactor_ * std::log(entries) / std::log(10.))
0039         dccStatus[iDCC] = 0;
0040     }
0041 
0042     MESet::iterator meEnd(meQualitySummary.end(GetElectronicsMap()));
0043     for (MESet::iterator meItr(meQualitySummary.beginChannel(GetElectronicsMap())); meItr != meEnd;
0044          meItr.toNextChannel(GetElectronicsMap())) {
0045       DetId id(meItr->getId());
0046 
0047       bool doMask(meQualitySummary.maskMatches(id, mask, statusManager_, GetTrigTowerMap()));
0048 
0049       int dccid(dccId(id, GetElectronicsMap()));
0050 
0051       if (dccStatus[dccid - 1] == 0) {
0052         meItr->setBinContent(doMask ? kMUnknown : kUnknown);
0053         continue;
0054       }
0055 
0056       int towerStatus(doMask ? kMGood : kGood);
0057       float towerEntries(0.);
0058       for (unsigned iS(0); iS < nFEFlags; iS++) {
0059         float entries(sFEStatus.getBinContent(getEcalDQMSetupObjects(), id, iS + 1));
0060         towerEntries += entries;
0061         if (entries > minEvents_ && iS != Enabled && iS != Suppressed && iS != ForcedFullSupp && iS != FIFOFull &&
0062             iS != ForcedZS)
0063           towerStatus = doMask ? kMBad : kBad;
0064       }
0065 
0066       if (towerEntries < 1.)
0067         towerStatus = doMask ? kMUnknown : kUnknown;
0068 
0069       meItr->setBinContent(towerStatus);
0070       if (towerStatus == kBad)
0071         meErrorsSummary.fill(getEcalDQMSetupObjects(), dccid);
0072     }
0073   }
0074 
0075   DEFINE_ECALDQM_WORKER(RawDataClient);
0076 }  // namespace ecaldqm