216 auto lumiErrors = luminosityBlockCache(
iEvent.getLuminosityBlock().index());
217 auto& nToterr = lumiErrors->nTotal;
218 auto& nErr = lumiErrors->nErrors;
220 if (
he.isValid() && !
he.failedToGet()) {
225 std::map<unsigned int, std::pair<unsigned short, unsigned short> > badChannelFraction;
227 unsigned int lNFEDMonitoring = 0;
228 unsigned int lNFEDUnpacker = 0;
229 unsigned int lNChannelMonitoring = 0;
230 unsigned int lNChannelUnpacker = 0;
232 unsigned int lNTotBadFeds = 0;
233 unsigned int lNTotBadChannels = 0;
234 unsigned int lNTotBadActiveChannels = 0;
236 std::vector<std::vector<std::pair<unsigned int, unsigned int> > > lFeMajFrac;
237 const unsigned int nParts = 4;
239 lFeMajFrac.resize(nParts);
241 lFeMajFrac[0].reserve(912);
242 lFeMajFrac[1].reserve(1080);
243 lFeMajFrac[2].reserve(768);
244 lFeMajFrac[3].reserve(760);
252 unsigned int lNBadChannels_perFEDID = 0;
258 double aLumiSection =
iEvent.orbitNumber() / 262144.0;
262 bool lDataExist =
fedErrors_.checkDataPresent(fedData);
281 bool lFailUnpackerFEDcheck =
fedErrors_.failUnpackerFEDCheck();
284 unsigned int lSize = fedData.
size();
292 bool lFailMonitoringFEDcheck =
fedErrors_.failMonitoringFEDCheck();
293 if (lFailMonitoringFEDcheck)
299 if (lFailMonitoringFEDcheck != lFailUnpackerFEDcheck) {
301 std::ostringstream debugStream;
302 debugStream <<
" --- WARNING: FED " <<
fedId << std::endl <<
" ------ Monitoring FED check ";
303 if (lFailMonitoringFEDcheck)
304 debugStream <<
"failed." << std::endl;
306 debugStream <<
"passed." << std::endl;
307 debugStream <<
" ------ Unpacker FED check ";
308 if (lFailUnpackerFEDcheck)
309 debugStream <<
"failed." << std::endl;
311 debugStream <<
"passed." << std::endl;
312 edm::LogError(
"SiStripMonitorHardware") << debugStream.str();
315 if (lFailMonitoringFEDcheck)
317 else if (lFailUnpackerFEDcheck)
326 <<
" -- Fedid " <<
fedId <<
", TkHistoMap enabled but pointer is null." << std::endl;
333 lNTotBadActiveChannels,
334 lNBadChannels_perFEDID,
341 for (
unsigned int iP(0); iP < nParts; ++iP) {
344 if (lFeMajFrac[iP].
empty())
348 unsigned int lMajorityCounter = 0;
349 std::vector<unsigned int> lfedIds;
351 getMajority(lFeMajFrac[iP], lMajorityCounter, lfedIds);
353 fedHists_.fillMajorityHistograms(iP, static_cast<float>(lMajorityCounter) / lFeMajFrac[iP].
size(), lfedIds);
357 if ((lNTotBadFeds > 0 || lNTotBadChannels > 0) &&
printDebug_ > 1) {
358 std::ostringstream debugStream;
359 debugStream <<
"[SiStripFEDMonitorPlugin] --- Total number of bad feds = " << lNTotBadFeds << std::endl
360 <<
"[SiStripFEDMonitorPlugin] --- Total number of bad channels = " << lNTotBadChannels << std::endl
361 <<
"[SiStripFEDMonitorPlugin] --- Total number of bad active channels = " << lNTotBadActiveChannels
363 edm::LogInfo(
"SiStripMonitorHardware") << debugStream.str();
366 if ((lNFEDMonitoring > 0 || lNFEDUnpacker > 0 || lNChannelMonitoring > 0 || lNChannelUnpacker > 0) &&
printDebug_) {
367 std::ostringstream debugStream;
369 <<
"[SiStripFEDMonitorPlugin]-------------------------------------------------------------------------" 371 <<
"[SiStripFEDMonitorPlugin]-------------------------------------------------------------------------" 373 <<
"[SiStripFEDMonitorPlugin]-- Summary of differences between unpacker and monitoring at FED level : " 375 <<
"[SiStripFEDMonitorPlugin] ---- Number of times monitoring fails but not unpacking = " << lNFEDMonitoring
377 <<
"[SiStripFEDMonitorPlugin] ---- Number of times unpacking fails but not monitoring = " << lNFEDUnpacker
379 <<
"[SiStripFEDMonitorPlugin]-------------------------------------------------------------------------" 381 <<
"[SiStripFEDMonitorPlugin]-- Summary of differences between unpacker and monitoring at Channel level : " 383 <<
"[SiStripFEDMonitorPlugin] ---- Number of times monitoring fails but not unpacking = " << lNChannelMonitoring
385 <<
"[SiStripFEDMonitorPlugin] ---- Number of times unpacking fails but not monitoring = " << lNChannelUnpacker
387 <<
"[SiStripFEDMonitorPlugin]-------------------------------------------------------------------------" 389 <<
"[SiStripFEDMonitorPlugin]-------------------------------------------------------------------------" 391 edm::LogError(
"SiStripMonitorHardware") << debugStream.str();
394 fedErrors_.getFEDErrorsCounters().nTotalBadChannels = lNTotBadChannels;
395 fedErrors_.getFEDErrorsCounters().nTotalBadActiveChannels = lNTotBadActiveChannels;
400 double eventNumber =
static_cast<double>(
iEvent.id().event());
404 double aTime =
iEvent.orbitNumber() / 11223.;
edm::EDGetTokenT< FEDRawDataCollection > rawDataToken_
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
const SiStripFedCabling * cabling_
void getMajority(const std::vector< std::pair< unsigned int, unsigned int > > &aFeMajVec, unsigned int &aMajorityCounter, std::vector< unsigned int > &afedIds)
size_t size() const
Lenght of the data buffer in bytes.
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
unsigned int maxFedBufferSize_
Log< level::Error, false > LogError
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
Log< level::Info, false > LogInfo
bool check(const edm::EventSetup &iSetup)
static bool pairComparison(const std::pair< unsigned int, unsigned int > &pair1, const std::pair< unsigned int, unsigned int > &pair2)
edm::ESWatcher< SiStripFedCablingRcd > fedCablingWatcher_
Log< level::Warning, false > LogWarning
edm::EDGetTokenT< EventWithHistory > heToken_