31 const unsigned long long max_bx = 59793997824ULL;
36 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
37 <<
"[DTDataIntegrityTask]: Constructor" <<endl;
55 if (processingMode ==
"Online") {
57 }
else if(processingMode ==
"SM") {
59 }
else if (processingMode ==
"Offline") {
61 }
else if (processingMode ==
"HLT") {
65 <<
"[DTDataIntegrityTask]: processingMode :" << processingMode
66 <<
" invalid! Must be Online, SM, Offline or HLT !" << endl;
74 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
75 <<
"[DTDataIntegrityTask]: Destructor. Analyzed "<<
neventsDDU <<
" events"<<endl;
90 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
91 <<
"[DTDataIntegrityTask]: postEndJob called!" <<endl;
100 dbe->setCurrentFolder(
"DT/EventInfo/Counters");
106 int nFED = (fedMax - fedMin)+1;
108 hFEDEntry =
dbe->book1D(
"FEDEntries",
"# entries per DT FED",nFED,fedMin,fedMax+1);
109 hFEDFatal =
dbe->book1D(
"FEDFatal",
"# fatal errors DT FED",nFED,fedMin,fedMax+1);
110 hFEDNonFatal =
dbe->book1D(
"FEDNonFatal",
"# NON fatal errors DT FED",nFED,fedMin,fedMax+1);
114 hTTSSummary =
dbe->book2D(
"TTSSummary",
"Summary Status TTS",nFED,fedMin,fedMax+1,9,1,10);
129 nFED,fedMin,fedMax+1, 8, 1, 9);
146 stringstream dduID_s; dduID_s << code.
getDDU();
147 stringstream rosID_s; rosID_s << code.
getROS();
148 stringstream robID_s; robID_s << code.
getROB();
149 int wheel = (code.
getDDUID() - 770)%5 - 2;
150 stringstream wheel_s; wheel_s << wheel;
152 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
153 <<
" Booking histos for FED: " << code.
getDDU() <<
" ROS: " << code.
getROS()
154 <<
" ROB: " << code.
getROB() <<
" folder: " << folder << endl;
162 if (folder ==
"DDU") {
164 dbe->setCurrentFolder(
topFolder(
false) +
"FED" + dduID_s.str());
166 histoType =
"EventLenght";
167 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
168 histoTitle =
"Event Lenght (Bytes) FED " + dduID_s.str();
173 histoType =
"ROSStatus";
174 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
205 histoType =
"FEDAvgEvLenghtvsLumi";
206 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
207 histoTitle =
"Avg Event Lenght (Bytes) vs LumiSec FED " + dduID_s.str();
210 histoType =
"TTSValues";
211 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
223 histoType =
"EventType";
224 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
230 histoType =
"ROSList";
231 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
232 histoTitle =
"# of ROS in the FED payload (FED" + dduID_s.str() +
")";
235 histoType =
"FIFOStatus";
236 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
251 histoName =
"FED" + dduID_s.str() +
"_BXID";
252 histoTitle =
"Distrib. BX ID (FED" + dduID_s.str() +
")";
258 if ( folder ==
"ROS_S" ) {
261 histoType =
"ROSSummary";
262 histoName =
"FED" + dduID_s.str() +
"_ROSSummary";
263 string histoTitle =
"Summary Wheel" + wheel_s.str() +
" (FED " + dduID_s.str() +
")";
304 if ( folder ==
"ROS" ) {
305 dbe->setCurrentFolder(
topFolder(
false) +
"FED" + dduID_s.str() +
"/" + folder + rosID_s.str());
308 histoType =
"ROSError";
309 histoName =
"FED" + dduID_s.str() +
"_" + folder + rosID_s.str() +
"_ROSError";
310 histoTitle = histoName +
" (ROBID error summary)";
367 histoType =
"ROSEventLenght";
368 histoName =
"FED" + dduID_s.str() +
"_" + folder + rosID_s.str() +
"_ROSEventLenght";
369 histoTitle =
"Event Lenght (Bytes) FED " + dduID_s.str() +
" ROS " + rosID_s.str();
372 histoType =
"ROSAvgEventLenghtvsLumi";
373 histoName =
"FED" + dduID_s.str() +
"_" + folder + rosID_s.str() + histoType;
374 histoTitle =
"Event Lenght (Bytes) FED " + dduID_s.str() +
" ROS " + rosID_s.str();
377 histoType =
"TDCError";
378 histoName =
"FED" + dduID_s.str() +
"_" + folder + rosID_s.str() +
"_TDCError";
379 histoTitle = histoName +
" (ROBID error summary)";
434 histoType =
"ROB_mean";
435 histoName =
"FED" + dduID_s.str() +
"_" +
"ROS" + rosID_s.str() +
"_ROB_mean";
437 names.insert (pair<std::string,std::string> (histoType,
string(fullName)));
470 if ( folder ==
"SC" ) {
472 dbe->setCurrentFolder(
topFolder(
false) +
"FED" + dduID_s.str());
475 histoType =
"SCSizeVsROSSize";
476 histoName =
"FED" + dduID_s.str() +
"_SCSizeVsROSSize";
477 histoTitle =
"SC size - ROS size vs SC (FED " + dduID_s.str() +
")";
486 if(histoType ==
"Event_word_vs_time"){
490 if ((*it).first==histoType){
494 int first_bin = -1, last_bin=-1;
498 if( first_bin == -1 ) { first_bin =
bin; }
504 if( first_bin > 1 ) { first_bin -= 1; }
505 if( last_bin < h1-> getNbinsX() ){ last_bin += 1; }
537 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
538 <<
"[DTDataIntegrityTask]: " <<
neventsROS25 <<
" events analyzed by processROS25" << endl;
551 if ( (
mode<=2) && (!ROSError) ) {
552 LogError(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
553 "Trying to access non existing ME at ROSID " << code.
getROSID() <<
566 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
" TXP error en ROS "
581 for (vector<DTROSErrorWord>::const_iterator error_it = data.
getROSErrors().begin();
584 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
" Error in ROS " << code.
getROS()
585 <<
" ROB Id " << (*error_it).robID()
586 <<
" Error type " << (*error_it).errorType() << endl;
589 ROSSummary->
Fill((*error_it).errorType(), code.
getROS());
590 if((*error_it).errorType() <= 11) {
596 if ((*error_it).robID() != 31) {
597 ROSError->
Fill((*error_it).errorType(),(*error_it).robID());
599 else if ((*error_it).errorType() == 4) {
600 vector<int> channelBins;
602 vector<int>::const_iterator channelIt = channelBins.begin();
603 vector<int>::const_iterator channelEnd = channelBins.end();
604 for(;channelIt!=channelEnd;++channelIt) {
605 ROSError->
Fill(4,(*channelIt));
612 int ROSDebug_BunchNumber = -1;
613 int ROSDebug_BcntResCntLow = 0;
614 int ROSDebug_BcntResCntHigh = 0;
615 int ROSDebug_BcntResCnt = 0;
617 for (vector<DTROSDebugWord>::const_iterator debug_it = data.
getROSDebugs().begin();
620 int debugROSSummary = 0;
621 int debugROSError = 0;
622 vector<int> debugBins;
623 bool hasEvIdMis =
false;
624 vector<int> evIdMisBins;
626 if ((*debug_it).debugType() == 0 ) {
627 ROSDebug_BunchNumber = (*debug_it).debugMessage();
628 }
else if ((*debug_it).debugType() == 1 ) {
629 ROSDebug_BcntResCntLow = (*debug_it).debugMessage();
630 }
else if ((*debug_it).debugType() == 2 ) {
631 ROSDebug_BcntResCntHigh = (*debug_it).debugMessage();
632 }
else if ((*debug_it).debugType() == 3) {
633 if ((*debug_it).dontRead()){
634 debugROSSummary = 11;
636 if (
mode <= 2)
channelsInCEROS((*debug_it).cerosIdCerosStatus(),(*debug_it).dontRead(),debugBins);
637 }
if ((*debug_it).evIdMis()){
639 if (
mode <= 2)
channelsInCEROS((*debug_it).cerosIdCerosStatus(),(*debug_it).evIdMis(),evIdMisBins);
641 }
else if ((*debug_it).debugType() == 4 &&
642 (*debug_it).cerosIdRosStatus()){
643 debugROSSummary = 13;
648 if (debugROSSummary) {
649 ROSSummary->
Fill(debugROSSummary,code.
getROS());
651 vector<int>::const_iterator channelIt = debugBins.begin();
652 vector<int>::const_iterator channelEnd = debugBins.end();
653 for (;channelIt!=channelEnd;++channelIt) {
654 ROSError->
Fill(debugROSError,(*channelIt));
662 vector<int>::const_iterator channelIt = evIdMisBins.begin();
663 vector<int>::const_iterator channelEnd = evIdMisBins.end();
664 for (;channelIt!=channelEnd;++channelIt) {
665 ROSError->
Fill(9,(*channelIt));
672 ROSDebug_BcntResCnt = (ROSDebug_BcntResCntHigh << 15) + ROSDebug_BcntResCntLow;
698 for (vector<DTROBHeader>::const_iterator rob_it = data.
getROBHeaders().begin();
701 code.
setROB((*rob_it).first);
706 if (robheader.
bunchID() != ROSDebug_BunchNumber) {
719 for (vector<DTROBTrailerWord>::const_iterator robt_it = data.
getROBTrailers().begin();
721 float wCount = (*robt_it).wordCount()<100. ? (*robt_it).wordCount() : 99.9;
735 if(rosEventLenght > 1600) rosEventLenght = 1600;
741 for (vector<DTTDCData>::const_iterator tdc_it = data.
getTDCData().begin();
742 tdc_it != data.
getTDCData().end(); tdc_it++) {
746 if ( tdcDatum.
PC() !=0) {
747 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
748 <<
" PC error in ROS " << code.
getROS() <<
" TDC " << (*tdc_it).first << endl;
755 if(
mode <= 2) ROSError->
Fill(6,(*tdc_it).first);
760 for (vector<DTTDCError>::const_iterator tdc_it = data.
getTDCError().begin();
763 code.
setROB((*tdc_it).first);
765 int tdcError_ROSSummary = 0;
766 int tdcError_ROSError = 0;
767 int tdcError_TDCHisto = 0;
769 if(((*tdc_it).second).tdcError() & 0x4000 ) {
770 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
772 <<
" Internal fatal Error 4000 in TDC " << (*tdc_it).first << endl;
774 tdcError_ROSSummary = 14;
775 tdcError_ROSError = 11;
776 tdcError_TDCHisto = 0;
778 }
else if ( ((*tdc_it).second).tdcError() & 0x0249 ) {
779 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
781 <<
" TDC FIFO overflow in TDC " << (*tdc_it).first << endl;
783 tdcError_ROSSummary = 15;
784 tdcError_ROSError = 12;
785 tdcError_TDCHisto = 1;
787 }
else if ( ((*tdc_it).second).tdcError() & 0x0492 ) {
788 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
790 <<
" TDC L1 buffer overflow in TDC " << (*tdc_it).first << endl;
792 tdcError_ROSSummary = 16;
793 tdcError_ROSError = 13;
794 tdcError_TDCHisto = 2;
796 }
else if ( ((*tdc_it).second).tdcError() & 0x2000 ) {
797 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
799 <<
" TDC L1A FIFO overflow in TDC " << (*tdc_it).first << endl;
801 tdcError_ROSSummary = 17;
802 tdcError_ROSError = 14;
803 tdcError_TDCHisto = 3;
805 }
else if ( ((*tdc_it).second).tdcError() & 0x0924 ) {
806 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
808 <<
" TDC hit error in TDC " << (*tdc_it).first << endl;
810 tdcError_ROSSummary = 18;
811 tdcError_ROSError = 15;
812 tdcError_TDCHisto = 4;
814 }
else if ( ((*tdc_it).second).tdcError() & 0x1000 ) {
815 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
817 <<
" TDC hit rejected in TDC " << (*tdc_it).first << endl;
819 tdcError_ROSSummary = 19;
820 tdcError_ROSError = 16;
821 tdcError_TDCHisto = 5;
824 LogWarning(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
825 <<
" TDC error code not known " << ((*tdc_it).second).tdcError() << endl;
828 ROSSummary->
Fill(tdcError_ROSSummary,code.
getROS());
830 if(tdcError_ROSSummary <= 15) {
835 ROSError->
Fill(tdcError_ROSError,(*tdc_it).first);
837 rosHistos[
"TDCError"][code.
getROSID()]->Fill(tdcError_TDCHisto+6*((*tdc_it).second).tdcID(),(*tdc_it).first);
858 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
859 <<
"[DTDataIntegrityTask]: " <<
neventsDDU <<
" events analyzed by processFED" << endl;
872 if(!header.
check()) {
878 if(!trailer.
check()) {
896 int ttsCodeValue = -1;
897 int ttsSummaryBin = -1;
916 bool knownOrigin =
false;
933 if(!knownOrigin) ttsSummaryBin = 9;
939 bool knownOrigin =
false;
948 if(!knownOrigin) ttsSummaryBin = 9;
964 LogError(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
965 <<
"[DTDataIntegrityTask] DDU control: wrong TTS value "<<trailer.
ttsBits()<<endl;
970 if(ttsSummaryBin != -1) {
983 int rosList = secondWord.
rosList();
984 set<int> rosPositions;
985 for(
int i=0;
i<12;
i++) {
987 rosPositions.insert(
i);
995 for (vector<DTDDUFirstStatusWord>::const_iterator fsw_it = data.
getFirstStatusWord().begin();
999 hROSStatus->
Fill(0,channel,(*fsw_it).channelEnabled());
1000 hROSStatus->
Fill(1,channel,(*fsw_it).timeout());
1001 hROSStatus->
Fill(2,channel,(*fsw_it).eventTrailerLost());
1002 hROSStatus->
Fill(3,channel,(*fsw_it).opticalFiberSignalLost());
1003 hROSStatus->
Fill(4,channel,(*fsw_it).tlkPropagationError());
1004 hROSStatus->
Fill(5,channel,(*fsw_it).tlkPatternError());
1005 hROSStatus->
Fill(6,channel,(*fsw_it).tlkSignalLost());
1006 hROSStatus->
Fill(7,channel,(*fsw_it).errorFromROS());
1009 if((*fsw_it).channelEnabled() == 1 &&
1010 rosPositions.find(channel) == rosPositions.end()) {
1011 if(
mode <= 2) hROSStatus->
Fill(9,channel,1);
1024 if((rosBXIds.size() > 1 || rosBXIds.find(header.
bxID()) == rosBXIds.end()) && rosBXIds.size() != 0) {
1025 for(vector<DTROS25Data>::const_iterator rosControlData = rosData.begin();
1026 rosControlData != rosData.end(); ++rosControlData) {
1027 for (vector<DTROSDebugWord>::const_iterator debug_it = (*rosControlData).getROSDebugs().begin();
1028 debug_it != (*rosControlData).getROSDebugs().end(); debug_it++) {
1029 if ((*debug_it).debugType() == 0 && (*debug_it).debugMessage() != header.
bxID()) {
1030 int ros = (*rosControlData).getROSID();
1032 if(
mode <= 2) hROSStatus->
Fill(11,ros-1);
1044 LogWarning(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
1045 <<
"ERROR: FED " << ddu <<
" BX ID different from other feds: " << header.
bxID() << endl;
1054 if((rosL1AIds.size() > 1 || rosL1AIds.find(header.
lvl1ID()-1) == rosL1AIds.end()) && rosL1AIds.size() != 0) {
1056 for (vector<DTROS25Data>::const_iterator rosControlData = rosData.begin();
1057 rosControlData != rosData.end(); rosControlData++) {
1058 int ROSHeader_TTCCount = ((*rosControlData).getROSHeader().TTCEventCounter() + 1) % 0x1000000;
1059 if( ROSHeader_TTCCount != header.
lvl1ID() ) {
1060 int ros = (*rosControlData).getROSID();
1061 if(
mode <= 2) hROSStatus->
Fill(10,ros-1);
1070 int fedEvtLenght = trailer.
lenght()*8;
1074 if(
mode > 1)
return;
1086 int fifoFull = secondWord.
fifoFull();
1090 for(
int i=0;
i<3;
i++){
1091 if(inputFifoFull & 0x1){
1092 hFIFOStatus->
Fill(
i,0);
1094 if(inputFifoAlmostFull & 0x1){
1095 hFIFOStatus->
Fill(
i,1);
1098 hFIFOStatus->
Fill(3+
i,0);
1100 if(fifoAlmostFull & 0x1){
1101 hFIFOStatus->
Fill(3+
i,1);
1103 if(!(inputFifoFull & 0x1) && !(inputFifoAlmostFull & 0x1)){
1104 hFIFOStatus->
Fill(
i,2);
1106 if(!(fifoFull & 0x1) && !(fifoAlmostFull & 0x1)){
1107 hFIFOStatus->
Fill(3+
i,2);
1109 inputFifoFull >>= 1;
1110 inputFifoAlmostFull >>= 1;
1112 fifoAlmostFull >>= 1;
1116 hFIFOStatus->
Fill(6,0);
1118 if(outputFifoAlmostFull){
1119 hFIFOStatus->
Fill(6,1);
1121 if(!outputFifoFull && !outputFifoAlmostFull){
1122 hFIFOStatus->
Fill(6,2);
1170 if (!isFEDIntegrity)
1171 folder += (
mode==1) ?
"_SM/" : (
mode==3) ?
"_EvF/" :
"/";
1178 for (
int iCh=0; iCh<6;++iCh) {
1179 if ((chMask >> iCh) & 0x1){
1180 channels.push_back(cerosId*6+iCh);
1187 for (
int iCeros=0; iCeros<5;++iCeros) {
1188 if ((cerosMask >> iCeros) & 0x1){
1189 for (
int iCh=0; iCh<6;++iCh) {
1190 channels.push_back(iCeros*6+iCh);
1207 map<std::string, map<int, DTTimeEvolutionHisto*> >::iterator dduIt =
dduTimeHistos.begin();
1208 map<std::string, map<int, DTTimeEvolutionHisto*> >::iterator dduEnd =
dduTimeHistos.end();
1209 for(; dduIt!=dduEnd; ++dduIt) {
1210 map<int, DTTimeEvolutionHisto*>::iterator histoIt = dduIt->second.begin();
1211 map<int, DTTimeEvolutionHisto*>::iterator histoEnd = dduIt->second.end();
1212 for(; histoIt!=histoEnd; ++histoIt) {
1213 histoIt->second->updateTimeSlot(lumiBlock,
nEventsLS);
1217 map<std::string, map<int, DTTimeEvolutionHisto*> >::iterator rosIt =
rosTimeHistos.begin();
1218 map<std::string, map<int, DTTimeEvolutionHisto*> >::iterator rosEnd =
rosTimeHistos.end();
1219 for(; rosIt!=rosEnd; ++rosIt) {
1220 map<int, DTTimeEvolutionHisto*>::iterator histoIt = rosIt->second.begin();
1221 map<int, DTTimeEvolutionHisto*>::iterator histoEnd = rosIt->second.end();
1222 for(; histoIt!=histoEnd; ++histoIt) {
1223 histoIt->second->updateTimeSlot(lumiBlock,
nEventsLS);
1230 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
"[DTDataIntegrityTask]: postBeginJob" <<endl;
1233 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
"[DTDataIntegrityTask] Get DQMStore service" << endl;
1241 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
1256 for(
int ros = 1; ros <= 12; ++ros) {
1272 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
"[DTDataIntegrityTask]: preProcessEvent" <<endl;
1275 (*rosBxIds).second.clear();
1281 (*rosL1AIds).second.clear();
1294 std::vector<DTROS25Data> ros25Data;
1297 for(
unsigned int i=0;
i<dduProduct->size(); ++
i)
1299 dduData = dduProduct->at(
i);
1300 ros25Data = ros25Product->at(
i);
1305 for(
unsigned int j=0;
j < ros25Data.size(); ++
j) {
std::map< int, std::set< int > > rosBxIdsPerFED
std::multimap< std::string, std::string > names
std::map< int, std::set< int > > rosL1AIdsPerFED
int EventWordCount() const
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
const std::vector< DTROBHeader > & getROBHeaders() const
std::map< std::string, std::map< int, MonitorElement * > > dduHistos
const std::vector< DTTDCData > & getTDCData() const
std::multimap< std::string, std::string >::iterator it
void setAxisRange(double xmin, double xmax, int axis=1)
set x-, y- or z-axis range (axis=1, 2, 3 respectively)
void processFED(DTDDUData &dduData, const std::vector< DTROS25Data > &rosData, int dduID)
int outputFifoFull() const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::string fedIntegrityFolder
MonitorElement * hFEDNonFatal
const DTLocalTriggerSectorCollectorHeaderWord & getSCPrivHeader() const
void ROSWords_t(double &ResetCount_unfolded, int ROS_number, int ROSDebug_BcntResCnt, int nevents)
int l1AFifoOccupancy() const
bool eventHasErrors() const
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
double ResetCount_unfolded
std::map< std::string, std::map< int, DTTimeEvolutionHisto * > > dduTimeHistos
void channelsInROS(int cerosMask, std::vector< int > &channels)
MonitorElement * hFEDFatal
int getNbinsY(void) const
get # of bins in Y-axis
LuminosityBlockNumber_t luminosityBlock() const
edm::EDGetTokenT< DTROS25Collection > ros25Token
const DTLocalTriggerTrailerWord & getSCTrailer() const
int warningROSPAF() const
DTDataIntegrityTask(const edm::ParameterSet &ps)
void processROS25(DTROS25Data &data, int dduID, int ros)
const std::vector< DTROSDebugWord > & getROSDebugs() const
const std::vector< DTDDUFirstStatusWord > & getFirstStatusWord() const
const DTROSTrailerWord & getROSTrailer() const
const DTROSHeaderWord & getROSHeader() const
void beginLuminosityBlock(const edm::LuminosityBlock &ls, const edm::EventSetup &es) override
void analyze(const edm::Event &e, const edm::EventSetup &c) override
void bookHistosROS25(DTROChainCoding code)
void endLuminosityBlock(const edm::LuminosityBlock &ls, const edm::EventSetup &es) override
std::map< std::string, std::map< int, MonitorElement * > > rosSHistos
void TimeHistos(std::string histoType)
const unsigned long long max_bx
const FEDTrailer & getDDUTrailer() const
MonitorElement * nEventMonitor
int inputFifoAlmostFull() const
int ttsBits()
Current value of the Trigger Throttling System bitsAQ).
int inputFifoFull() const
std::string topFolder(bool isFEDIntegrity) const
const FEDHeader & getDDUHeader() const
Getters.
MonitorElement * hFEDEntry
void setROB(const int &ID)
std::map< std::string, std::map< int, MonitorElement * > > rosHistos
int lenght()
The length of the event fragment counted in 64-bit words including header and trailer.
void setROS(const int &ID)
void bookHistos(const int fedMin, const int fedMax)
const std::vector< DTROBTrailerWord > & getROBTrailers() const
void channelsInCEROS(int cerosId, int chMask, std::vector< int > &channels)
double getBinContent(int binx) const
get content of bin (1-D)
int outputFifoAlmostFull() const
void setDDU(const int &ID)
need to reset the bits before setting
char data[epos_bytes_allocation]
const std::vector< DTROSErrorWord > & getROSErrors() const
MonitorElement * hTTSSummary
std::map< std::string, std::map< int, DTTimeEvolutionHisto * > > rosTimeHistos
int getNbinsX(void) const
get # of bins in X-axis
void fedNonFatal(int dduID)
int fifoAlmostFull() const
const std::vector< DTTDCError > & getTDCError() const
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
const DTDDUSecondStatusWord & getSecondStatusWord() const
int outOfSynchROSError() const
MonitorElement * hCorruptionSummary
virtual ~DTDataIntegrityTask()
edm::EDGetTokenT< DTDDUCollection > dduToken