499 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
500 <<
"[DTDataIntegrityTask]: " <<
neventsROS25 <<
" events analyzed by processROS25" << endl;
515 if ( (
mode<=2) && (!ROSError) ) {
516 LogError(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
517 "Trying to access non existing ME at ROSID " << code.
getROSID() <<
530 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
" TXP error en ROS " 541 for (vector<DTROSErrorWord>::const_iterator error_it = data.
getROSErrors().begin();
544 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
" Error in ROS " << code.
getROS()
545 <<
" ROB Id " << (*error_it).robID()
546 <<
" Error type " << (*error_it).errorType() << endl;
549 ROSSummary->
Fill((*error_it).errorType(), code.
getROS());
550 if((*error_it).errorType() <= 11) {
556 if ((*error_it).robID() != 31) {
557 ROSError->
Fill((*error_it).errorType(),(*error_it).robID());
559 else if ((*error_it).errorType() == 4) {
560 vector<int> channelBins;
562 vector<int>::const_iterator channelIt = channelBins.begin();
563 vector<int>::const_iterator channelEnd = channelBins.end();
564 for(;channelIt!=channelEnd;++channelIt) {
565 ROSError->
Fill(4,(*channelIt));
572 int ROSDebug_BunchNumber = -1;
574 for (vector<DTROSDebugWord>::const_iterator debug_it = data.
getROSDebugs().begin();
577 int debugROSSummary = 0;
578 int debugROSError = 0;
579 vector<int> debugBins;
580 bool hasEvIdMis =
false;
581 vector<int> evIdMisBins;
583 if ((*debug_it).debugType() == 0 ) {
584 ROSDebug_BunchNumber = (*debug_it).debugMessage();
585 }
else if ((*debug_it).debugType() == 1 ) {
588 }
else if ((*debug_it).debugType() == 2 ) {
591 }
else if ((*debug_it).debugType() == 3) {
592 if ((*debug_it).dontRead()){
593 debugROSSummary = 11;
595 if (
mode <= 2)
channelsInCEROS((*debug_it).cerosIdCerosStatus(),(*debug_it).dontRead(),debugBins);
596 }
if ((*debug_it).evIdMis()){
598 if (
mode <= 2)
channelsInCEROS((*debug_it).cerosIdCerosStatus(),(*debug_it).evIdMis(),evIdMisBins);
600 }
else if ((*debug_it).debugType() == 4 &&
601 (*debug_it).cerosIdRosStatus()){
602 debugROSSummary = 13;
607 if (debugROSSummary) {
608 ROSSummary->
Fill(debugROSSummary,code.
getROS());
610 vector<int>::const_iterator channelIt = debugBins.begin();
611 vector<int>::const_iterator channelEnd = debugBins.end();
612 for (;channelIt!=channelEnd;++channelIt) {
613 ROSError->
Fill(debugROSError,(*channelIt));
621 vector<int>::const_iterator channelIt = evIdMisBins.begin();
622 vector<int>::const_iterator channelEnd = evIdMisBins.end();
623 for (;channelIt!=channelEnd;++channelIt) {
624 ROSError->
Fill(9,(*channelIt));
633 for (vector<DTROBHeader>::const_iterator rob_it = data.
getROBHeaders().begin();
636 code.
setROB((*rob_it).first);
641 if (robheader.
bunchID() != ROSDebug_BunchNumber) {
654 for (vector<DTROBTrailerWord>::const_iterator robt_it = data.
getROBTrailers().begin();
656 float wCount = (*robt_it).wordCount()<100. ? (*robt_it).wordCount() : 99.9;
664 if(rosEventLenght > 1600) rosEventLenght = 1600;
670 for (vector<DTTDCData>::const_iterator tdc_it = data.
getTDCData().begin();
671 tdc_it != data.
getTDCData().end(); tdc_it++) {
675 if ( tdcDatum.
PC() !=0) {
676 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
677 <<
" PC error in ROS " << code.
getROS() <<
" TDC " << (*tdc_it).first << endl;
684 if(
mode <= 2) ROSError->
Fill(6,(*tdc_it).first);
689 for (vector<DTTDCError>::const_iterator tdc_it = data.
getTDCError().begin();
692 code.
setROB((*tdc_it).first);
694 int tdcError_ROSSummary = 0;
695 int tdcError_ROSError = 0;
696 int tdcError_TDCHisto = 0;
698 if(((*tdc_it).second).tdcError() & 0x4000 ) {
699 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
701 <<
" Internal fatal Error 4000 in TDC " << (*tdc_it).first << endl;
703 tdcError_ROSSummary = 14;
704 tdcError_ROSError = 11;
705 tdcError_TDCHisto = 0;
707 }
else if ( ((*tdc_it).second).tdcError() & 0x0249 ) {
708 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
710 <<
" TDC FIFO overflow in TDC " << (*tdc_it).first << endl;
712 tdcError_ROSSummary = 15;
713 tdcError_ROSError = 12;
714 tdcError_TDCHisto = 1;
716 }
else if ( ((*tdc_it).second).tdcError() & 0x0492 ) {
717 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
719 <<
" TDC L1 buffer overflow in TDC " << (*tdc_it).first << endl;
721 tdcError_ROSSummary = 16;
722 tdcError_ROSError = 13;
723 tdcError_TDCHisto = 2;
725 }
else if ( ((*tdc_it).second).tdcError() & 0x2000 ) {
726 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
728 <<
" TDC L1A FIFO overflow in TDC " << (*tdc_it).first << endl;
730 tdcError_ROSSummary = 17;
731 tdcError_ROSError = 14;
732 tdcError_TDCHisto = 3;
734 }
else if ( ((*tdc_it).second).tdcError() & 0x0924 ) {
735 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
737 <<
" TDC hit error in TDC " << (*tdc_it).first << endl;
739 tdcError_ROSSummary = 18;
740 tdcError_ROSError = 15;
741 tdcError_TDCHisto = 4;
743 }
else if ( ((*tdc_it).second).tdcError() & 0x1000 ) {
744 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
746 <<
" TDC hit rejected in TDC " << (*tdc_it).first << endl;
748 tdcError_ROSSummary = 19;
749 tdcError_ROSError = 16;
750 tdcError_TDCHisto = 5;
753 LogWarning(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
754 <<
" TDC error code not known " << ((*tdc_it).second).tdcError() << endl;
757 ROSSummary->
Fill(tdcError_ROSSummary,code.
getROS());
759 if(tdcError_ROSSummary <= 15) {
764 ROSError->
Fill(tdcError_ROSError,(*tdc_it).first);
766 rosHistos[
"TDCError"][code.
getROSID()]->Fill(tdcError_TDCHisto+6*((*tdc_it).second).tdcID(),(*tdc_it).first);
std::map< int, std::set< int > > rosBxIdsPerFED
std::map< int, std::set< int > > rosL1AIdsPerFED
int EventWordCount() const
const std::vector< DTROBHeader > & getROBHeaders() const
const std::vector< DTTDCData > & getTDCData() const
int l1AFifoOccupancy() const
void channelsInROS(int cerosMask, std::vector< int > &channels)
const DTLocalTriggerTrailerWord & getSCTrailer() const
const std::vector< DTROSDebugWord > & getROSDebugs() const
const DTROSTrailerWord & getROSTrailer() const
const DTROSHeaderWord & getROSHeader() const
std::map< std::string, std::map< int, MonitorElement * > > rosSHistos
void setROB(const int &ID)
std::map< std::string, std::map< int, MonitorElement * > > rosHistos
void setROS(const int &ID)
const std::vector< DTROBTrailerWord > & getROBTrailers() const
void channelsInCEROS(int cerosId, int chMask, std::vector< int > &channels)
void setDDU(const int &ID)
need to reset the bits before setting
const std::vector< DTROSErrorWord > & getROSErrors() const
std::map< std::string, std::map< int, DTTimeEvolutionHisto * > > rosTimeHistos
const std::vector< DTTDCError > & getTDCError() const