34 const unsigned long long max_bx = 59793997824ULL;
47 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
48 <<
"[DTDataIntegrityTask]: Constructor" <<endl;
63 if (processingMode ==
"Online") {
65 }
else if(processingMode ==
"SM") {
67 }
else if (processingMode ==
"Offline") {
69 }
else if (processingMode ==
"HLT") {
73 <<
"[DTDataIntegrityTask]: processingMode :" << processingMode
74 <<
" invalid! Must be Online, SM, Offline or HLT !" << endl;
82 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
83 <<
"[DTDataIntegrityTask]: Destructor. Analyzed "<<
neventsDDU <<
" events"<<endl;
98 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
99 <<
"[DTDataIntegrityTask]: postEndJob called!" <<endl;
114 int nFED = (fedMax - fedMin)+1;
137 nFED,fedMin,fedMax+1, 8, 1, 9);
154 stringstream dduID_s; dduID_s << code.
getDDU();
155 stringstream rosID_s; rosID_s << code.
getROS();
156 stringstream robID_s; robID_s << code.
getROB();
157 int wheel = (code.
getDDUID() - 770)%5 - 2;
158 stringstream wheel_s; wheel_s << wheel;
160 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
161 <<
" Booking histos for FED: " << code.
getDDU() <<
" ROS: " << code.
getROS()
162 <<
" ROB: " << code.
getROB() <<
" folder: " << folder << endl;
170 if (folder ==
"DDU") {
174 histoType =
"EventLenght";
175 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
176 histoTitle =
"Event Lenght (Bytes) FED " + dduID_s.str();
181 histoType =
"ROSStatus";
182 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
213 histoType =
"FEDAvgEvLenghtvsLumi";
214 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
215 histoTitle =
"Avg Event Lenght (Bytes) vs LumiSec FED " + dduID_s.str();
218 histoType =
"TTSValues";
219 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
231 histoType =
"EventType";
232 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
238 histoType =
"ROSList";
239 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
240 histoTitle =
"# of ROS in the FED payload (FED" + dduID_s.str() +
")";
243 histoType =
"FIFOStatus";
244 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
259 histoName =
"FED" + dduID_s.str() +
"_BXID";
260 histoTitle =
"Distrib. BX ID (FED" + dduID_s.str() +
")";
266 if ( folder ==
"ROS_S" ) {
269 histoType =
"ROSSummary";
270 histoName =
"FED" + dduID_s.str() +
"_ROSSummary";
271 string histoTitle =
"Summary Wheel" + wheel_s.str() +
" (FED " + dduID_s.str() +
")";
312 if ( folder ==
"ROS" ) {
316 histoType =
"ROSError";
317 histoName =
"FED" + dduID_s.str() +
"_" + folder + rosID_s.str() +
"_ROSError";
318 histoTitle = histoName +
" (ROBID error summary)";
375 histoType =
"ROSEventLenght";
376 histoName =
"FED" + dduID_s.str() +
"_" + folder + rosID_s.str() +
"_ROSEventLenght";
377 histoTitle =
"Event Lenght (Bytes) FED " + dduID_s.str() +
" ROS " + rosID_s.str();
380 histoType =
"ROSAvgEventLenghtvsLumi";
381 histoName =
"FED" + dduID_s.str() +
"_" + folder + rosID_s.str() + histoType;
382 histoTitle =
"Event Lenght (Bytes) FED " + dduID_s.str() +
" ROS " + rosID_s.str();
385 histoType =
"TDCError";
386 histoName =
"FED" + dduID_s.str() +
"_" + folder + rosID_s.str() +
"_TDCError";
387 histoTitle = histoName +
" (ROBID error summary)";
442 histoType =
"ROB_mean";
443 histoName =
"FED" + dduID_s.str() +
"_" +
"ROS" + rosID_s.str() +
"_ROB_mean";
444 string fullName =
topFolder(
false) +
"FED" + dduID_s.str() +
"/" + folder + rosID_s.str()+
"/" + histoName;
445 names.insert (pair<std::string,std::string> (histoType,
string(fullName)));
478 if ( folder ==
"SC" ) {
483 histoType =
"SCSizeVsROSSize";
484 histoName =
"FED" + dduID_s.str() +
"_SCSizeVsROSSize";
485 histoTitle =
"SC size - ROS size vs SC (FED " + dduID_s.str() +
")";
494 if(histoType ==
"Event_word_vs_time"){
498 if ((*it).first==histoType){
502 int first_bin = -1, last_bin=-1;
506 if( first_bin == -1 ) { first_bin =
bin; }
512 if( first_bin > 1 ) { first_bin -= 1; }
513 if( last_bin < h1-> getNbinsX() ){ last_bin += 1; }
544 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
545 <<
"[DTDataIntegrityTask]: " <<
neventsROS25 <<
" events analyzed by processROS25" << endl;
558 if ( (
mode<=2) && (!ROSError) ) {
559 LogError(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
560 "Trying to access non existing ME at ROSID " << code.
getROSID() <<
573 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
" TXP error en ROS "
588 for (vector<DTROSErrorWord>::const_iterator error_it = data.
getROSErrors().begin();
591 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
" Error in ROS " << code.
getROS()
592 <<
" ROB Id " << (*error_it).robID()
593 <<
" Error type " << (*error_it).errorType() << endl;
596 ROSSummary->
Fill((*error_it).errorType(), code.
getROS());
597 if((*error_it).errorType() <= 11) {
603 if ((*error_it).robID() != 31) {
604 ROSError->
Fill((*error_it).errorType(),(*error_it).robID());
606 else if ((*error_it).errorType() == 4) {
607 vector<int> channelBins;
609 vector<int>::const_iterator channelIt = channelBins.begin();
610 vector<int>::const_iterator channelEnd = channelBins.end();
611 for(;channelIt!=channelEnd;++channelIt) {
612 ROSError->
Fill(4,(*channelIt));
619 int ROSDebug_BunchNumber = -1;
620 int ROSDebug_BcntResCntLow = 0;
621 int ROSDebug_BcntResCntHigh = 0;
622 int ROSDebug_BcntResCnt = 0;
624 for (vector<DTROSDebugWord>::const_iterator debug_it = data.
getROSDebugs().begin();
627 int debugROSSummary = 0;
628 int debugROSError = 0;
629 vector<int> debugBins;
630 bool hasEvIdMis =
false;
631 vector<int> evIdMisBins;
633 if ((*debug_it).debugType() == 0 ) {
634 ROSDebug_BunchNumber = (*debug_it).debugMessage();
635 }
else if ((*debug_it).debugType() == 1 ) {
636 ROSDebug_BcntResCntLow = (*debug_it).debugMessage();
637 }
else if ((*debug_it).debugType() == 2 ) {
638 ROSDebug_BcntResCntHigh = (*debug_it).debugMessage();
639 }
else if ((*debug_it).debugType() == 3) {
640 if ((*debug_it).dontRead()){
641 debugROSSummary = 11;
643 if (
mode <= 2)
channelsInCEROS((*debug_it).cerosIdCerosStatus(),(*debug_it).dontRead(),debugBins);
644 }
if ((*debug_it).evIdMis()){
646 if (
mode <= 2)
channelsInCEROS((*debug_it).cerosIdCerosStatus(),(*debug_it).evIdMis(),evIdMisBins);
648 }
else if ((*debug_it).debugType() == 4 &&
649 (*debug_it).cerosIdRosStatus()){
650 debugROSSummary = 13;
655 if (debugROSSummary) {
656 ROSSummary->
Fill(debugROSSummary,code.
getROS());
658 vector<int>::const_iterator channelIt = debugBins.begin();
659 vector<int>::const_iterator channelEnd = debugBins.end();
660 for (;channelIt!=channelEnd;++channelIt) {
661 ROSError->
Fill(debugROSError,(*channelIt));
669 vector<int>::const_iterator channelIt = evIdMisBins.begin();
670 vector<int>::const_iterator channelEnd = evIdMisBins.end();
671 for (;channelIt!=channelEnd;++channelIt) {
672 ROSError->
Fill(9,(*channelIt));
679 ROSDebug_BcntResCnt = (ROSDebug_BcntResCntHigh << 15) + ROSDebug_BcntResCntLow;
705 for (vector<DTROBHeader>::const_iterator rob_it = data.
getROBHeaders().begin();
708 code.
setROB((*rob_it).first);
713 if (robheader.
bunchID() != ROSDebug_BunchNumber) {
726 for (vector<DTROBTrailerWord>::const_iterator robt_it = data.
getROBTrailers().begin();
728 float wCount = (*robt_it).wordCount()<100. ? (*robt_it).wordCount() : 99.9;
742 if(rosEventLenght > 1600) rosEventLenght = 1600;
748 for (vector<DTTDCData>::const_iterator tdc_it = data.
getTDCData().begin();
749 tdc_it != data.
getTDCData().end(); tdc_it++) {
753 if ( tdcDatum.
PC() !=0) {
754 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
755 <<
" PC error in ROS " << code.
getROS() <<
" TDC " << (*tdc_it).first << endl;
762 if(
mode <= 2) ROSError->
Fill(6,(*tdc_it).first);
767 for (vector<DTTDCError>::const_iterator tdc_it = data.
getTDCError().begin();
770 code.
setROB((*tdc_it).first);
772 int tdcError_ROSSummary = 0;
773 int tdcError_ROSError = 0;
774 int tdcError_TDCHisto = 0;
776 if(((*tdc_it).second).tdcError() & 0x4000 ) {
777 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
779 <<
" Internal fatal Error 4000 in TDC " << (*tdc_it).first << endl;
781 tdcError_ROSSummary = 14;
782 tdcError_ROSError = 11;
783 tdcError_TDCHisto = 0;
785 }
else if ( ((*tdc_it).second).tdcError() & 0x0249 ) {
786 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
788 <<
" TDC FIFO overflow in TDC " << (*tdc_it).first << endl;
790 tdcError_ROSSummary = 15;
791 tdcError_ROSError = 12;
792 tdcError_TDCHisto = 1;
794 }
else if ( ((*tdc_it).second).tdcError() & 0x0492 ) {
795 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
797 <<
" TDC L1 buffer overflow in TDC " << (*tdc_it).first << endl;
799 tdcError_ROSSummary = 16;
800 tdcError_ROSError = 13;
801 tdcError_TDCHisto = 2;
803 }
else if ( ((*tdc_it).second).tdcError() & 0x2000 ) {
804 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
806 <<
" TDC L1A FIFO overflow in TDC " << (*tdc_it).first << endl;
808 tdcError_ROSSummary = 17;
809 tdcError_ROSError = 14;
810 tdcError_TDCHisto = 3;
812 }
else if ( ((*tdc_it).second).tdcError() & 0x0924 ) {
813 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
815 <<
" TDC hit error in TDC " << (*tdc_it).first << endl;
817 tdcError_ROSSummary = 18;
818 tdcError_ROSError = 15;
819 tdcError_TDCHisto = 4;
821 }
else if ( ((*tdc_it).second).tdcError() & 0x1000 ) {
822 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
824 <<
" TDC hit rejected in TDC " << (*tdc_it).first << endl;
826 tdcError_ROSSummary = 19;
827 tdcError_ROSError = 16;
828 tdcError_TDCHisto = 5;
831 LogWarning(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
832 <<
" TDC error code not known " << ((*tdc_it).second).tdcError() << endl;
835 ROSSummary->
Fill(tdcError_ROSSummary,code.
getROS());
837 if(tdcError_ROSSummary <= 15) {
842 ROSError->
Fill(tdcError_ROSError,(*tdc_it).first);
844 rosHistos[
"TDCError"][code.
getROSID()]->Fill(tdcError_TDCHisto+6*((*tdc_it).second).tdcID(),(*tdc_it).first);
867 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
868 <<
"[DTDataIntegrityTask]: " <<
neventsDDU <<
" events analyzed by processFED" << endl;
880 if(!header.
check()) {
886 if(!trailer.
check()) {
905 int ttsCodeValue = -1;
906 int ttsSummaryBin = -1;
925 bool knownOrigin =
false;
942 if(!knownOrigin) ttsSummaryBin = 9;
948 bool knownOrigin =
false;
957 if(!knownOrigin) ttsSummaryBin = 9;
973 LogError(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
974 <<
"[DTDataIntegrityTask] DDU control: wrong TTS value "<<trailer.
ttsBits()<<endl;
979 if(ttsSummaryBin != -1) {
992 int rosList = secondWord.
rosList();
993 set<int> rosPositions;
994 for(
int i=0;
i<12;
i++) {
996 rosPositions.insert(
i);
1004 for (vector<DTDDUFirstStatusWord>::const_iterator fsw_it = data.
getFirstStatusWord().begin();
1008 hROSStatus->
Fill(0,channel,(*fsw_it).channelEnabled());
1009 hROSStatus->
Fill(1,channel,(*fsw_it).timeout());
1010 hROSStatus->
Fill(2,channel,(*fsw_it).eventTrailerLost());
1011 hROSStatus->
Fill(3,channel,(*fsw_it).opticalFiberSignalLost());
1012 hROSStatus->
Fill(4,channel,(*fsw_it).tlkPropagationError());
1013 hROSStatus->
Fill(5,channel,(*fsw_it).tlkPatternError());
1014 hROSStatus->
Fill(6,channel,(*fsw_it).tlkSignalLost());
1015 hROSStatus->
Fill(7,channel,(*fsw_it).errorFromROS());
1018 if((*fsw_it).channelEnabled() == 1 &&
1019 rosPositions.find(channel) == rosPositions.end()) {
1020 if(
mode <= 2) hROSStatus->
Fill(9,channel,1);
1033 if((rosBXIds.size() > 1 || rosBXIds.find(header.
bxID()) == rosBXIds.end()) && rosBXIds.size() != 0) {
1034 for(vector<DTROS25Data>::const_iterator rosControlData = rosData.begin();
1035 rosControlData != rosData.end(); ++rosControlData) {
1036 for (vector<DTROSDebugWord>::const_iterator debug_it = (*rosControlData).getROSDebugs().begin();
1037 debug_it != (*rosControlData).getROSDebugs().end(); debug_it++) {
1038 if ((*debug_it).debugType() == 0 && (*debug_it).debugMessage() != header.
bxID()) {
1039 int ros = (*rosControlData).getROSID();
1041 if(
mode <= 2) hROSStatus->
Fill(11,ros-1);
1053 LogWarning(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
1054 <<
"ERROR: FED " << ddu <<
" BX ID different from other feds: " << header.
bxID() << endl;
1063 if((rosL1AIds.size() > 1 || rosL1AIds.find(header.
lvl1ID()-1) == rosL1AIds.end()) && rosL1AIds.size() != 0) {
1065 for (vector<DTROS25Data>::const_iterator rosControlData = rosData.begin();
1066 rosControlData != rosData.end(); rosControlData++) {
1067 int ROSHeader_TTCCount = ((*rosControlData).getROSHeader().TTCEventCounter() + 1) % 0x1000000;
1068 if( ROSHeader_TTCCount != header.
lvl1ID() ) {
1069 int ros = (*rosControlData).getROSID();
1070 if(
mode <= 2) hROSStatus->
Fill(10,ros-1);
1079 int fedEvtLenght = trailer.
lenght()*8;
1083 if(
mode > 1)
return;
1095 int fifoFull = secondWord.
fifoFull();
1099 for(
int i=0;
i<3;
i++){
1100 if(inputFifoFull & 0x1){
1101 hFIFOStatus->
Fill(
i,0);
1103 if(inputFifoAlmostFull & 0x1){
1104 hFIFOStatus->
Fill(
i,1);
1107 hFIFOStatus->
Fill(3+
i,0);
1109 if(fifoAlmostFull & 0x1){
1110 hFIFOStatus->
Fill(3+
i,1);
1112 if(!(inputFifoFull & 0x1) && !(inputFifoAlmostFull & 0x1)){
1113 hFIFOStatus->
Fill(
i,2);
1115 if(!(fifoFull & 0x1) && !(fifoAlmostFull & 0x1)){
1116 hFIFOStatus->
Fill(3+
i,2);
1118 inputFifoFull >>= 1;
1119 inputFifoAlmostFull >>= 1;
1121 fifoAlmostFull >>= 1;
1125 hFIFOStatus->
Fill(6,0);
1127 if(outputFifoAlmostFull){
1128 hFIFOStatus->
Fill(6,1);
1130 if(!outputFifoFull && !outputFifoAlmostFull){
1131 hFIFOStatus->
Fill(6,2);
1179 if (!isFEDIntegrity)
1180 folder += (
mode==1) ?
"_SM/" : (
mode==3) ?
"_EvF/" :
"/";
1187 for (
int iCh=0; iCh<6;++iCh) {
1188 if ((chMask >> iCh) & 0x1){
1189 channels.push_back(cerosId*6+iCh);
1196 for (
int iCeros=0; iCeros<5;++iCeros) {
1197 if ((cerosMask >> iCeros) & 0x1){
1198 for (
int iCh=0; iCh<6;++iCh) {
1199 channels.push_back(iCeros*6+iCh);
1213 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
"[DTDataIntegrityTask]: preProcessEvent" <<endl;
1217 (*rosBxIds).second.clear();
1224 (*rosL1AIds).second.clear();
1242 map<std::string, map<int, DTTimeEvolutionHisto*> >::iterator dduIt =
dduTimeHistos.begin();
1243 map<std::string, map<int, DTTimeEvolutionHisto*> >::iterator dduEnd =
dduTimeHistos.end();
1244 for(; dduIt!=dduEnd; ++dduIt) {
1245 map<int, DTTimeEvolutionHisto*>::iterator histoIt = dduIt->second.begin();
1246 map<int, DTTimeEvolutionHisto*>::iterator histoEnd = dduIt->second.end();
1247 for(; histoIt!=histoEnd; ++histoIt) {
1248 histoIt->second->updateTimeSlot(lumiBlock,
nEventsLS);
1252 map<std::string, map<int, DTTimeEvolutionHisto*> >::iterator rosIt =
rosTimeHistos.begin();
1253 map<std::string, map<int, DTTimeEvolutionHisto*> >::iterator rosEnd =
rosTimeHistos.end();
1254 for(; rosIt!=rosEnd; ++rosIt) {
1255 map<int, DTTimeEvolutionHisto*>::iterator histoIt = rosIt->second.begin();
1256 map<int, DTTimeEvolutionHisto*>::iterator histoEnd = rosIt->second.end();
1257 for(; histoIt!=histoEnd; ++histoIt) {
1258 histoIt->second->updateTimeSlot(lumiBlock,
nEventsLS);
1265 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
"[DTDataIntegrityTask]: postBeginJob" <<endl;
1268 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
"[DTDataIntegrityTask] Get DQMStore service" << endl;
1276 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
1277 <<
" FEDS: " << FEDIDmin <<
" to " << FEDIDMax <<
" in the RO" << endl;
1283 for(
int fed = FEDIDmin; fed <= FEDIDMax; ++fed) {
1291 for(
int ros = 1; ros <= 12; ++ros) {
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 getUntrackedParameter(std::string const &, T const &) const
const std::vector< DTROBHeader > & getROBHeaders() const
void preProcessEvent(const edm::EventID &iEvtid, const edm::Timestamp &iTime)
std::map< std::string, std::map< int, MonitorElement * > > dduHistos
const std::vector< DTTDCData > & getTDCData() const
std::multimap< std::string, std::string >::iterator it
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
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
void preBeginLumi(const edm::LuminosityBlockID &ls, const edm::Timestamp &iTime)
std::string fedIntegrityFolder
MonitorElement * hFEDNonFatal
const DTLocalTriggerSectorCollectorHeaderWord & getSCPrivHeader() const
void ROSWords_t(double &ResetCount_unfolded, int ROS_number, int ROSDebug_BcntResCnt, int nevents)
void watchPreProcessEvent(PreProcessEvent::slot_type const &iSlot)
int l1AFifoOccupancy() const
void watchPreEndLumi(PreEndLumi::slot_type const &iSlot)
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
MonitorElement * bookFloat(const char *name)
Book float.
int getNbinsY(void) const
get # of bins in Y-axis
const DTLocalTriggerTrailerWord & getSCTrailer() const
int warningROSPAF() const
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 bookHistosROS25(DTROChainCoding code)
void preEndLumi(const edm::LuminosityBlockID &ls, const edm::Timestamp &iTime)
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. "my/long/dir/my_histo")
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)
LuminosityBlockNumber_t luminosityBlock() const
const std::vector< DTROBTrailerWord > & getROBTrailers() const
DTDataIntegrityTask(const edm::ParameterSet &ps, edm::ActivityRegistry ®)
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 watchPreBeginLumi(PreBeginLumi::slot_type const &iSlot)
void fedNonFatal(int dduID)
int fifoAlmostFull() const
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
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()
void setCurrentFolder(const std::string &fullpath)
void watchPostBeginJob(PostBeginJob::slot_type const &iSlot)
convenience function for attaching to signal