32 const unsigned long long max_bx = 59793997824ULL;
45 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
46 <<
"[DTDataIntegrityTask]: Constructor" <<endl;
61 if (processingMode ==
"Online") {
63 }
else if(processingMode ==
"SM") {
65 }
else if (processingMode ==
"Offline") {
67 }
else if (processingMode ==
"HLT") {
71 <<
"[DTDataIntegrityTask]: processingMode :" << processingMode
72 <<
" invalid! Must be Online, SM, Offline or HLT !" << endl;
80 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
81 <<
"[DTDataIntegrityTask]: Destructor. Analyzed "<<
neventsDDU <<
" events"<<endl;
96 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
97 <<
"[DTDataIntegrityTask]: postEndJob called!" <<endl;
112 int nFED = (fedMax - fedMin)+1;
135 nFED,fedMin,fedMax+1, 8, 1, 9);
152 stringstream dduID_s; dduID_s << code.
getDDU();
153 stringstream rosID_s; rosID_s << code.
getROS();
154 stringstream robID_s; robID_s << code.
getROB();
155 int wheel = (code.
getDDUID() - 770)%5 - 2;
156 stringstream wheel_s; wheel_s << wheel;
158 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
159 <<
" Booking histos for FED: " << code.
getDDU() <<
" ROS: " << code.
getROS()
160 <<
" ROB: " << code.
getROB() <<
" folder: " << folder << endl;
168 if (folder ==
"DDU") {
172 histoType =
"EventLenght";
173 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
174 histoTitle =
"Event Lenght (Bytes) FED " + dduID_s.str();
179 histoType =
"ROSStatus";
180 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
211 histoType =
"FEDAvgEvLenghtvsLumi";
212 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
213 histoTitle =
"Avg Event Lenght (Bytes) vs LumiSec FED " + dduID_s.str();
216 histoType =
"TTSValues";
217 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
229 histoType =
"EventType";
230 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
236 histoType =
"ROSList";
237 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
238 histoTitle =
"# of ROS in the FED payload (FED" + dduID_s.str() +
")";
241 histoType =
"FIFOStatus";
242 histoName =
"FED" + dduID_s.str() +
"_" + histoType;
257 histoName =
"FED" + dduID_s.str() +
"_BXID";
258 histoTitle =
"Distrib. BX ID (FED" + dduID_s.str() +
")";
264 if ( folder ==
"ROS_S" ) {
267 histoType =
"ROSSummary";
268 histoName =
"FED" + dduID_s.str() +
"_ROSSummary";
269 string histoTitle =
"Summary Wheel" + wheel_s.str() +
" (FED " + dduID_s.str() +
")";
310 if ( folder ==
"ROS" ) {
314 histoType =
"ROSError";
315 histoName =
"FED" + dduID_s.str() +
"_" + folder + rosID_s.str() +
"_ROSError";
316 histoTitle = histoName +
" (ROBID error summary)";
373 histoType =
"ROSEventLenght";
374 histoName =
"FED" + dduID_s.str() +
"_" + folder + rosID_s.str() +
"_ROSEventLenght";
375 histoTitle =
"Event Lenght (Bytes) FED " + dduID_s.str() +
" ROS " + rosID_s.str();
378 histoType =
"ROSAvgEventLenghtvsLumi";
379 histoName =
"FED" + dduID_s.str() +
"_" + folder + rosID_s.str() + histoType;
380 histoTitle =
"Event Lenght (Bytes) FED " + dduID_s.str() +
" ROS " + rosID_s.str();
383 histoType =
"TDCError";
384 histoName =
"FED" + dduID_s.str() +
"_" + folder + rosID_s.str() +
"_TDCError";
385 histoTitle = histoName +
" (ROBID error summary)";
440 histoType =
"ROB_mean";
441 histoName =
"FED" + dduID_s.str() +
"_" +
"ROS" + rosID_s.str() +
"_ROB_mean";
442 string fullName =
topFolder(
false) +
"FED" + dduID_s.str() +
"/" + folder + rosID_s.str()+
"/" + histoName;
443 names.insert (pair<std::string,std::string> (histoType,
string(fullName)));
476 if ( folder ==
"SC" ) {
481 histoType =
"SCSizeVsROSSize";
482 histoName =
"FED" + dduID_s.str() +
"_SCSizeVsROSSize";
483 histoTitle =
"SC size - ROS size vs SC (FED " + dduID_s.str() +
")";
492 if(histoType ==
"Event_word_vs_time"){
496 if ((*it).first==histoType){
500 int first_bin = -1, last_bin=-1;
504 if( first_bin == -1 ) { first_bin =
bin; }
510 if( first_bin > 1 ) { first_bin -= 1; }
511 if( last_bin < h1-> getNbinsX() ){ last_bin += 1; }
542 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
543 <<
"[DTDataIntegrityTask]: " <<
neventsROS25 <<
" events analyzed by processROS25" << endl;
556 if ( (
mode<=2) && (!ROSError) ) {
557 LogError(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
558 "Trying to access non existing ME at ROSID " << code.
getROSID() <<
571 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
" TXP error en ROS "
586 for (vector<DTROSErrorWord>::const_iterator error_it = data.
getROSErrors().begin();
589 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
" Error in ROS " << code.
getROS()
590 <<
" ROB Id " << (*error_it).robID()
591 <<
" Error type " << (*error_it).errorType() << endl;
594 ROSSummary->
Fill((*error_it).errorType(), code.
getROS());
595 if((*error_it).errorType() <= 11) {
601 if ((*error_it).robID() != 31) {
602 ROSError->
Fill((*error_it).errorType(),(*error_it).robID());
604 else if ((*error_it).errorType() == 4) {
605 vector<int> channelBins;
607 vector<int>::const_iterator channelIt = channelBins.begin();
608 vector<int>::const_iterator channelEnd = channelBins.end();
609 for(;channelIt!=channelEnd;++channelIt) {
610 ROSError->
Fill(4,(*channelIt));
617 int ROSDebug_BunchNumber = -1;
618 int ROSDebug_BcntResCntLow = 0;
619 int ROSDebug_BcntResCntHigh = 0;
620 int ROSDebug_BcntResCnt = 0;
622 for (vector<DTROSDebugWord>::const_iterator debug_it = data.
getROSDebugs().begin();
625 int debugROSSummary = 0;
626 int debugROSError = 0;
627 vector<int> debugBins;
628 bool hasEvIdMis =
false;
629 vector<int> evIdMisBins;
631 if ((*debug_it).debugType() == 0 ) {
632 ROSDebug_BunchNumber = (*debug_it).debugMessage();
633 }
else if ((*debug_it).debugType() == 1 ) {
634 ROSDebug_BcntResCntLow = (*debug_it).debugMessage();
635 }
else if ((*debug_it).debugType() == 2 ) {
636 ROSDebug_BcntResCntHigh = (*debug_it).debugMessage();
637 }
else if ((*debug_it).debugType() == 3) {
638 if ((*debug_it).dontRead()){
639 debugROSSummary = 11;
641 if (
mode <= 2)
channelsInCEROS((*debug_it).cerosIdCerosStatus(),(*debug_it).dontRead(),debugBins);
642 }
if ((*debug_it).evIdMis()){
644 if (
mode <= 2)
channelsInCEROS((*debug_it).cerosIdCerosStatus(),(*debug_it).evIdMis(),evIdMisBins);
646 }
else if ((*debug_it).debugType() == 4 &&
647 (*debug_it).cerosIdRosStatus()){
648 debugROSSummary = 13;
653 if (debugROSSummary) {
654 ROSSummary->
Fill(debugROSSummary,code.
getROS());
656 vector<int>::const_iterator channelIt = debugBins.begin();
657 vector<int>::const_iterator channelEnd = debugBins.end();
658 for (;channelIt!=channelEnd;++channelIt) {
659 ROSError->
Fill(debugROSError,(*channelIt));
667 vector<int>::const_iterator channelIt = evIdMisBins.begin();
668 vector<int>::const_iterator channelEnd = evIdMisBins.end();
669 for (;channelIt!=channelEnd;++channelIt) {
670 ROSError->
Fill(9,(*channelIt));
677 ROSDebug_BcntResCnt = (ROSDebug_BcntResCntHigh << 15) + ROSDebug_BcntResCntLow;
703 for (vector<DTROBHeader>::const_iterator rob_it = data.
getROBHeaders().begin();
706 code.
setROB((*rob_it).first);
711 if (robheader.
bunchID() != ROSDebug_BunchNumber) {
724 for (vector<DTROBTrailerWord>::const_iterator robt_it = data.
getROBTrailers().begin();
726 float wCount = (*robt_it).wordCount()<100. ? (*robt_it).wordCount() : 99.9;
740 if(rosEventLenght > 1600) rosEventLenght = 1600;
746 for (vector<DTTDCData>::const_iterator tdc_it = data.
getTDCData().begin();
747 tdc_it != data.
getTDCData().end(); tdc_it++) {
751 if ( tdcDatum.
PC() !=0) {
752 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
753 <<
" PC error in ROS " << code.
getROS() <<
" TDC " << (*tdc_it).first << endl;
760 if(
mode <= 2) ROSError->
Fill(6,(*tdc_it).first);
765 for (vector<DTTDCError>::const_iterator tdc_it = data.
getTDCError().begin();
768 code.
setROB((*tdc_it).first);
770 int tdcError_ROSSummary = 0;
771 int tdcError_ROSError = 0;
772 int tdcError_TDCHisto = 0;
774 if(((*tdc_it).second).tdcError() & 0x4000 ) {
775 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
777 <<
" Internal fatal Error 4000 in TDC " << (*tdc_it).first << endl;
779 tdcError_ROSSummary = 14;
780 tdcError_ROSError = 11;
781 tdcError_TDCHisto = 0;
783 }
else if ( ((*tdc_it).second).tdcError() & 0x0249 ) {
784 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
786 <<
" TDC FIFO overflow in TDC " << (*tdc_it).first << endl;
788 tdcError_ROSSummary = 15;
789 tdcError_ROSError = 12;
790 tdcError_TDCHisto = 1;
792 }
else if ( ((*tdc_it).second).tdcError() & 0x0492 ) {
793 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
795 <<
" TDC L1 buffer overflow in TDC " << (*tdc_it).first << endl;
797 tdcError_ROSSummary = 16;
798 tdcError_ROSError = 13;
799 tdcError_TDCHisto = 2;
801 }
else if ( ((*tdc_it).second).tdcError() & 0x2000 ) {
802 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
804 <<
" TDC L1A FIFO overflow in TDC " << (*tdc_it).first << endl;
806 tdcError_ROSSummary = 17;
807 tdcError_ROSError = 14;
808 tdcError_TDCHisto = 3;
810 }
else if ( ((*tdc_it).second).tdcError() & 0x0924 ) {
811 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
813 <<
" TDC hit error in TDC " << (*tdc_it).first << endl;
815 tdcError_ROSSummary = 18;
816 tdcError_ROSError = 15;
817 tdcError_TDCHisto = 4;
819 }
else if ( ((*tdc_it).second).tdcError() & 0x1000 ) {
820 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
822 <<
" TDC hit rejected in TDC " << (*tdc_it).first << endl;
824 tdcError_ROSSummary = 19;
825 tdcError_ROSError = 16;
826 tdcError_TDCHisto = 5;
829 LogWarning(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
830 <<
" TDC error code not known " << ((*tdc_it).second).tdcError() << endl;
833 ROSSummary->
Fill(tdcError_ROSSummary,code.
getROS());
835 if(tdcError_ROSSummary <= 15) {
840 ROSError->
Fill(tdcError_ROSError,(*tdc_it).first);
842 rosHistos[
"TDCError"][code.
getROSID()]->Fill(tdcError_TDCHisto+6*((*tdc_it).second).tdcID(),(*tdc_it).first);
865 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
866 <<
"[DTDataIntegrityTask]: " <<
neventsDDU <<
" events analyzed by processFED" << endl;
878 if(!header.
check()) {
884 if(!trailer.
check()) {
903 int ttsCodeValue = -1;
904 int ttsSummaryBin = -1;
923 bool knownOrigin =
false;
940 if(!knownOrigin) ttsSummaryBin = 9;
946 bool knownOrigin =
false;
955 if(!knownOrigin) ttsSummaryBin = 9;
971 LogError(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
972 <<
"[DTDataIntegrityTask] DDU control: wrong TTS value "<<trailer.
ttsBits()<<endl;
977 if(ttsSummaryBin != -1) {
990 int rosList = secondWord.
rosList();
991 set<int> rosPositions;
992 for(
int i=0;
i<12;
i++) {
994 rosPositions.insert(
i);
1002 for (vector<DTDDUFirstStatusWord>::const_iterator fsw_it = data.
getFirstStatusWord().begin();
1006 hROSStatus->
Fill(0,channel,(*fsw_it).channelEnabled());
1007 hROSStatus->
Fill(1,channel,(*fsw_it).timeout());
1008 hROSStatus->
Fill(2,channel,(*fsw_it).eventTrailerLost());
1009 hROSStatus->
Fill(3,channel,(*fsw_it).opticalFiberSignalLost());
1010 hROSStatus->
Fill(4,channel,(*fsw_it).tlkPropagationError());
1011 hROSStatus->
Fill(5,channel,(*fsw_it).tlkPatternError());
1012 hROSStatus->
Fill(6,channel,(*fsw_it).tlkSignalLost());
1013 hROSStatus->
Fill(7,channel,(*fsw_it).errorFromROS());
1016 if((*fsw_it).channelEnabled() == 1 &&
1017 rosPositions.find(channel) == rosPositions.end()) {
1018 if(
mode <= 2) hROSStatus->
Fill(9,channel,1);
1031 if((rosBXIds.size() > 1 || rosBXIds.find(header.
bxID()) == rosBXIds.end()) && rosBXIds.size() != 0) {
1032 for(vector<DTROS25Data>::const_iterator rosControlData = rosData.begin();
1033 rosControlData != rosData.end(); ++rosControlData) {
1034 for (vector<DTROSDebugWord>::const_iterator debug_it = (*rosControlData).getROSDebugs().begin();
1035 debug_it != (*rosControlData).getROSDebugs().end(); debug_it++) {
1036 if ((*debug_it).debugType() == 0 && (*debug_it).debugMessage() != header.
bxID()) {
1037 int ros = (*rosControlData).getROSID();
1039 if(
mode <= 2) hROSStatus->
Fill(11,ros-1);
1051 LogWarning(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
1052 <<
"ERROR: FED " << ddu <<
" BX ID different from other feds: " << header.
bxID() << endl;
1061 if((rosL1AIds.size() > 1 || rosL1AIds.find(header.
lvl1ID()-1) == rosL1AIds.end()) && rosL1AIds.size() != 0) {
1063 for (vector<DTROS25Data>::const_iterator rosControlData = rosData.begin();
1064 rosControlData != rosData.end(); rosControlData++) {
1065 int ROSHeader_TTCCount = ((*rosControlData).getROSHeader().TTCEventCounter() + 1) % 0x1000000;
1066 if( ROSHeader_TTCCount != header.
lvl1ID() ) {
1067 int ros = (*rosControlData).getROSID();
1068 if(
mode <= 2) hROSStatus->
Fill(10,ros-1);
1077 int fedEvtLenght = trailer.
lenght()*8;
1081 if(
mode > 1)
return;
1093 int fifoFull = secondWord.
fifoFull();
1097 for(
int i=0;
i<3;
i++){
1098 if(inputFifoFull & 0x1){
1099 hFIFOStatus->
Fill(
i,0);
1101 if(inputFifoAlmostFull & 0x1){
1102 hFIFOStatus->
Fill(
i,1);
1105 hFIFOStatus->
Fill(3+
i,0);
1107 if(fifoAlmostFull & 0x1){
1108 hFIFOStatus->
Fill(3+
i,1);
1110 if(!(inputFifoFull & 0x1) && !(inputFifoAlmostFull & 0x1)){
1111 hFIFOStatus->
Fill(
i,2);
1113 if(!(fifoFull & 0x1) && !(fifoAlmostFull & 0x1)){
1114 hFIFOStatus->
Fill(3+
i,2);
1116 inputFifoFull >>= 1;
1117 inputFifoAlmostFull >>= 1;
1119 fifoAlmostFull >>= 1;
1123 hFIFOStatus->
Fill(6,0);
1125 if(outputFifoAlmostFull){
1126 hFIFOStatus->
Fill(6,1);
1128 if(!outputFifoFull && !outputFifoAlmostFull){
1129 hFIFOStatus->
Fill(6,2);
1177 if (!isFEDIntegrity)
1178 folder += (
mode==1) ?
"_SM/" : (
mode==3) ?
"_EvF/" :
"/";
1185 for (
int iCh=0; iCh<6;++iCh) {
1186 if ((chMask >> iCh) & 0x1){
1187 channels.push_back(cerosId*6+iCh);
1194 for (
int iCeros=0; iCeros<5;++iCeros) {
1195 if ((cerosMask >> iCeros) & 0x1){
1196 for (
int iCh=0; iCh<6;++iCh) {
1197 channels.push_back(iCeros*6+iCh);
1211 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
"[DTDataIntegrityTask]: preProcessEvent" <<endl;
1215 (*rosBxIds).second.clear();
1222 (*rosL1AIds).second.clear();
1240 map<std::string, map<int, DTTimeEvolutionHisto*> >::iterator dduIt =
dduTimeHistos.begin();
1241 map<std::string, map<int, DTTimeEvolutionHisto*> >::iterator dduEnd =
dduTimeHistos.end();
1242 for(; dduIt!=dduEnd; ++dduIt) {
1243 map<int, DTTimeEvolutionHisto*>::iterator histoIt = dduIt->second.begin();
1244 map<int, DTTimeEvolutionHisto*>::iterator histoEnd = dduIt->second.end();
1245 for(; histoIt!=histoEnd; ++histoIt) {
1246 histoIt->second->updateTimeSlot(lumiBlock,
nEventsLS);
1250 map<std::string, map<int, DTTimeEvolutionHisto*> >::iterator rosIt =
rosTimeHistos.begin();
1251 map<std::string, map<int, DTTimeEvolutionHisto*> >::iterator rosEnd =
rosTimeHistos.end();
1252 for(; rosIt!=rosEnd; ++rosIt) {
1253 map<int, DTTimeEvolutionHisto*>::iterator histoIt = rosIt->second.begin();
1254 map<int, DTTimeEvolutionHisto*>::iterator histoEnd = rosIt->second.end();
1255 for(; histoIt!=histoEnd; ++histoIt) {
1256 histoIt->second->updateTimeSlot(lumiBlock,
nEventsLS);
1263 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
"[DTDataIntegrityTask]: postBeginJob" <<endl;
1266 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask") <<
"[DTDataIntegrityTask] Get DQMStore service" << endl;
1274 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityTask")
1275 <<
" FEDS: " << FEDIDmin <<
" to " << FEDIDMax <<
" in the RO" << endl;
1281 for(
int fed = FEDIDmin; fed <= FEDIDMax; ++fed) {
1289 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