493 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
494 <<
"[DTDataIntegrityTask]: " <<
neventsROS25 <<
" events analyzed by processROS25" << endl;
507 if ( (
mode<=2) && (!ROSError) ) {
508 LogError(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
509 "Trying to access non existing ME at ROSID " << code.
getROSID() <<
522 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
" TXP error en ROS " 533 for (vector<DTROSErrorWord>::const_iterator error_it = data.
getROSErrors().begin();
536 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
" Error in ROS " << code.
getROS()
537 <<
" ROB Id " << (*error_it).robID()
538 <<
" Error type " << (*error_it).errorType() << endl;
541 ROSSummary->
Fill((*error_it).errorType(), code.
getROS());
542 if((*error_it).errorType() <= 11) {
548 if ((*error_it).robID() != 31) {
549 ROSError->
Fill((*error_it).errorType(),(*error_it).robID());
551 else if ((*error_it).errorType() == 4) {
552 vector<int> channelBins;
554 vector<int>::const_iterator channelIt = channelBins.begin();
555 vector<int>::const_iterator channelEnd = channelBins.end();
556 for(;channelIt!=channelEnd;++channelIt) {
557 ROSError->
Fill(4,(*channelIt));
564 int ROSDebug_BunchNumber = -1;
566 for (vector<DTROSDebugWord>::const_iterator debug_it = data.
getROSDebugs().begin();
569 int debugROSSummary = 0;
570 int debugROSError = 0;
571 vector<int> debugBins;
572 bool hasEvIdMis =
false;
573 vector<int> evIdMisBins;
575 if ((*debug_it).debugType() == 0 ) {
576 ROSDebug_BunchNumber = (*debug_it).debugMessage();
577 }
else if ((*debug_it).debugType() == 1 ) {
580 }
else if ((*debug_it).debugType() == 2 ) {
583 }
else if ((*debug_it).debugType() == 3) {
584 if ((*debug_it).dontRead()){
585 debugROSSummary = 11;
587 if (
mode <= 2)
channelsInCEROS((*debug_it).cerosIdCerosStatus(),(*debug_it).dontRead(),debugBins);
588 }
if ((*debug_it).evIdMis()){
590 if (
mode <= 2)
channelsInCEROS((*debug_it).cerosIdCerosStatus(),(*debug_it).evIdMis(),evIdMisBins);
592 }
else if ((*debug_it).debugType() == 4 &&
593 (*debug_it).cerosIdRosStatus()){
594 debugROSSummary = 13;
599 if (debugROSSummary) {
600 ROSSummary->
Fill(debugROSSummary,code.
getROS());
602 vector<int>::const_iterator channelIt = debugBins.begin();
603 vector<int>::const_iterator channelEnd = debugBins.end();
604 for (;channelIt!=channelEnd;++channelIt) {
605 ROSError->
Fill(debugROSError,(*channelIt));
613 vector<int>::const_iterator channelIt = evIdMisBins.begin();
614 vector<int>::const_iterator channelEnd = evIdMisBins.end();
615 for (;channelIt!=channelEnd;++channelIt) {
616 ROSError->
Fill(9,(*channelIt));
625 for (vector<DTROBHeader>::const_iterator rob_it = data.
getROBHeaders().begin();
628 code.
setROB((*rob_it).first);
633 if (robheader.
bunchID() != ROSDebug_BunchNumber) {
646 for (vector<DTROBTrailerWord>::const_iterator robt_it = data.
getROBTrailers().begin();
648 float wCount = (*robt_it).wordCount()<100. ? (*robt_it).wordCount() : 99.9;
656 if(rosEventLenght > 1600) rosEventLenght = 1600;
662 for (vector<DTTDCData>::const_iterator tdc_it = data.
getTDCData().begin();
663 tdc_it != data.
getTDCData().end(); tdc_it++) {
667 if ( tdcDatum.
PC() !=0) {
668 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
669 <<
" PC error in ROS " << code.
getROS() <<
" TDC " << (*tdc_it).first << endl;
676 if(
mode <= 2) ROSError->
Fill(6,(*tdc_it).first);
681 for (vector<DTTDCError>::const_iterator tdc_it = data.
getTDCError().begin();
684 code.
setROB((*tdc_it).first);
686 int tdcError_ROSSummary = 0;
687 int tdcError_ROSError = 0;
688 int tdcError_TDCHisto = 0;
690 if(((*tdc_it).second).tdcError() & 0x4000 ) {
691 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
693 <<
" Internal fatal Error 4000 in TDC " << (*tdc_it).first << endl;
695 tdcError_ROSSummary = 14;
696 tdcError_ROSError = 11;
697 tdcError_TDCHisto = 0;
699 }
else if ( ((*tdc_it).second).tdcError() & 0x0249 ) {
700 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
702 <<
" TDC FIFO overflow in TDC " << (*tdc_it).first << endl;
704 tdcError_ROSSummary = 15;
705 tdcError_ROSError = 12;
706 tdcError_TDCHisto = 1;
708 }
else if ( ((*tdc_it).second).tdcError() & 0x0492 ) {
709 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
711 <<
" TDC L1 buffer overflow in TDC " << (*tdc_it).first << endl;
713 tdcError_ROSSummary = 16;
714 tdcError_ROSError = 13;
715 tdcError_TDCHisto = 2;
717 }
else if ( ((*tdc_it).second).tdcError() & 0x2000 ) {
718 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
720 <<
" TDC L1A FIFO overflow in TDC " << (*tdc_it).first << endl;
722 tdcError_ROSSummary = 17;
723 tdcError_ROSError = 14;
724 tdcError_TDCHisto = 3;
726 }
else if ( ((*tdc_it).second).tdcError() & 0x0924 ) {
727 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
729 <<
" TDC hit error in TDC " << (*tdc_it).first << endl;
731 tdcError_ROSSummary = 18;
732 tdcError_ROSError = 15;
733 tdcError_TDCHisto = 4;
735 }
else if ( ((*tdc_it).second).tdcError() & 0x1000 ) {
736 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
738 <<
" TDC hit rejected in TDC " << (*tdc_it).first << endl;
740 tdcError_ROSSummary = 19;
741 tdcError_ROSError = 16;
742 tdcError_TDCHisto = 5;
745 LogWarning(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
746 <<
" TDC error code not known " << ((*tdc_it).second).tdcError() << endl;
749 ROSSummary->
Fill(tdcError_ROSSummary,code.
getROS());
751 if(tdcError_ROSSummary <= 15) {
756 ROSError->
Fill(tdcError_ROSError,(*tdc_it).first);
758 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