diff --git a/DQMServices/Components/src/DQMFileSaver.cc b/DQMServices/Components/src/DQMFileSaver.cc index 5116efd8a1e61..8307eb2b7c88e 100644 --- a/DQMServices/Components/src/DQMFileSaver.cc +++ b/DQMServices/Components/src/DQMFileSaver.cc @@ -291,7 +291,7 @@ DQMFileSaver::fillJson(int run, int lumi, const std::string& dataFilePathName, c } // The availability test of the FastMonitoringService was done in the ctor. bpt::ptree data; - bpt::ptree processedEvents, acceptedEvents, errorEvents, bitmask, fileList, fileSize, inputFiles, fileAdler32, transferDestination; + bpt::ptree processedEvents, acceptedEvents, errorEvents, bitmask, fileList, fileSize, inputFiles, fileAdler32, transferDestination, hltErrorEvents; processedEvents.put("", nProcessed); // Processed events acceptedEvents.put("", nProcessed); // Accepted events, same as processed for our purposes @@ -303,6 +303,7 @@ DQMFileSaver::fillJson(int run, int lumi, const std::string& dataFilePathName, c inputFiles.put("", ""); // We do not care about input files! fileAdler32.put("", -1); // placeholder to match output json definition transferDestination.put("", transferDestinationStr); // SM Transfer destination field + hltErrorEvents.put("", 0); // Error events data.push_back(std::make_pair("", processedEvents)); data.push_back(std::make_pair("", acceptedEvents)); @@ -313,6 +314,7 @@ DQMFileSaver::fillJson(int run, int lumi, const std::string& dataFilePathName, c data.push_back(std::make_pair("", inputFiles)); data.push_back(std::make_pair("", fileAdler32)); data.push_back(std::make_pair("", transferDestination)); + data.push_back(std::make_pair("", hltErrorEvents)); pt.add_child("data", data); diff --git a/EventFilter/Utilities/plugins/RecoEventOutputModuleForFU.h b/EventFilter/Utilities/plugins/RecoEventOutputModuleForFU.h index f8608e5af9d81..e926564238725 100644 --- a/EventFilter/Utilities/plugins/RecoEventOutputModuleForFU.h +++ b/EventFilter/Utilities/plugins/RecoEventOutputModuleForFU.h @@ -61,6 +61,7 @@ namespace evf { StringJ inputFiles_; IntJ fileAdler32_; StringJ transferDestination_; + IntJ hltErrorEvents_; boost::shared_ptr jsonMonitor_; evf::FastMonitoringService *fms_; DataPointDefinition outJsonDef_; @@ -85,6 +86,7 @@ namespace evf { inputFiles_(), fileAdler32_(1), transferDestination_(), + hltErrorEvents_(0), outBuf_(new unsigned char[1024*1024]) { std::string baseRunDir = edm::Service()->baseRunDir(); @@ -122,6 +124,7 @@ namespace evf { inputFiles_.setName("InputFiles"); fileAdler32_.setName("FileAdler32"); transferDestination_.setName("TransferDestination"); + hltErrorEvents_.setName("HLTErrorEvents"); outJsonDef_.setDefaultGroup("data"); outJsonDef_.addLegendItem("Processed","integer",DataPointDefinition::SUM); @@ -133,6 +136,7 @@ namespace evf { outJsonDef_.addLegendItem("InputFiles","string",DataPointDefinition::CAT); outJsonDef_.addLegendItem("FileAdler32","integer",DataPointDefinition::ADLER32); outJsonDef_.addLegendItem("TransferDestination","string",DataPointDefinition::SAME); + outJsonDef_.addLegendItem("HLTErrorEvents","integer",DataPointDefinition::SUM); std::stringstream tmpss,ss; tmpss << baseRunDir << "/open/" << "output_" << getpid() << ".jsd"; ss << baseRunDir << "/" << "output_" << getpid() << ".jsd"; @@ -161,6 +165,7 @@ namespace evf { jsonMonitor_->registerGlobalMonitorable(&inputFiles_,false); jsonMonitor_->registerGlobalMonitorable(&fileAdler32_,false); jsonMonitor_->registerGlobalMonitorable(&transferDestination_,false); + jsonMonitor_->registerGlobalMonitorable(&hltErrorEvents_,false); jsonMonitor_->commit(nullptr); } diff --git a/EventFilter/Utilities/plugins/output.jsd b/EventFilter/Utilities/plugins/output.jsd index e1109a0301a37..e54dd234a2356 100644 --- a/EventFilter/Utilities/plugins/output.jsd +++ b/EventFilter/Utilities/plugins/output.jsd @@ -44,6 +44,11 @@ "name" : "TransferDestination", "operation" : "same", "type" : "string" + }, + { + "name" : "HLTErrorEvents", + "operation" : "sum", + "type" : "integer" } ] diff --git a/HLTrigger/JSONMonitoring/plugins/TriggerJSONMonitoring.cc b/HLTrigger/JSONMonitoring/plugins/TriggerJSONMonitoring.cc index 1b324c62b36d5..877be44e85229 100644 --- a/HLTrigger/JSONMonitoring/plugins/TriggerJSONMonitoring.cc +++ b/HLTrigger/JSONMonitoring/plugins/TriggerJSONMonitoring.cc @@ -649,6 +649,7 @@ TriggerJSONMonitoring::globalEndLuminosityBlockSummary(const edm::LuminosityBloc IntJ daqJsnAccepted = daqJsnProcessed; IntJ daqJsnErrorEvents = 0; IntJ daqJsnRetCodeMask = 0; + IntJ daqJsnHLTErrorEvents = 0; //write out HLT metadata jsn Json::Value hltDaqJsn; @@ -664,6 +665,7 @@ TriggerJSONMonitoring::globalEndLuminosityBlockSummary(const edm::LuminosityBloc hltDaqJsn[DataPoint::DATA].append(hltJsnInputFiles.value()); hltDaqJsn[DataPoint::DATA].append(hltJsnFileAdler32); hltDaqJsn[DataPoint::DATA].append(iSummary->streamHLTDestination); + hltDaqJsn[DataPoint::DATA].append((unsigned int)daqJsnHLTErrorEvents.value()); result = writer.write(hltDaqJsn); @@ -689,6 +691,7 @@ TriggerJSONMonitoring::globalEndLuminosityBlockSummary(const edm::LuminosityBloc l1DaqJsn[DataPoint::DATA].append(l1JsnInputFiles.value()); l1DaqJsn[DataPoint::DATA].append(l1JsnFileAdler32); l1DaqJsn[DataPoint::DATA].append(iSummary->streamL1Destination); + l1DaqJsn[DataPoint::DATA].append((unsigned int)daqJsnHLTErrorEvents.value()); result = writer.write(l1DaqJsn);