Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JsonMonitoring additional fixes (forward-port to 73X) #6243

Merged
merged 2 commits into from Nov 6, 2014
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
280 changes: 141 additions & 139 deletions HLTrigger/JSONMonitoring/plugins/TriggerJSONMonitoring.cc
Expand Up @@ -485,145 +485,147 @@ TriggerJSONMonitoring::endLuminosityBlockSummary(const edm::LuminosityBlock& iLu
void
TriggerJSONMonitoring::globalEndLuminosityBlockSummary(const edm::LuminosityBlock& iLumi, const edm::EventSetup& iSetup, const LuminosityBlockContext* iContext, hltJson::lumiVars* iSummary)
{
Json::StyledWriter writer;

char hostname[33];
gethostname(hostname,32);
std::string sourceHost(hostname);

//Get the output directory
std::string monPath = iSummary->baseRunDir + "/";

std::stringstream sOutDef;
sOutDef << monPath << "output_" << getpid() << ".jsd";

unsigned int iLs = iLumi.luminosityBlock();
unsigned int iRun = iLumi.run();

//Write the .jsndata files which contain the actual rates
//HLT .jsndata file
Json::Value hltJsnData;
hltJsnData[DataPoint::SOURCE] = sourceHost;
hltJsnData[DataPoint::DEFINITION] = iSummary->stHltJsd;

hltJsnData[DataPoint::DATA].append(iSummary->processed->toJsonValue());
hltJsnData[DataPoint::DATA].append(iSummary->hltWasRun->toJsonValue());
hltJsnData[DataPoint::DATA].append(iSummary->hltL1s ->toJsonValue());
hltJsnData[DataPoint::DATA].append(iSummary->hltPre ->toJsonValue());
hltJsnData[DataPoint::DATA].append(iSummary->hltAccept->toJsonValue());
hltJsnData[DataPoint::DATA].append(iSummary->hltReject->toJsonValue());
hltJsnData[DataPoint::DATA].append(iSummary->hltErrors->toJsonValue());

hltJsnData[DataPoint::DATA].append(iSummary->hltDatasets->toJsonValue());

std::string && result = writer.write(hltJsnData);

std::stringstream ssHltJsnData;
ssHltJsnData << "run" << iRun << "_ls" << std::setfill('0') << std::setw(4) << iLs;
ssHltJsnData << "_streamHLTRates_pid" << std::setfill('0') << std::setw(5) << getpid() << ".jsndata";

std::ofstream outHltJsnData( monPath + ssHltJsnData.str() );
outHltJsnData<<result;
outHltJsnData.close();

//L1 .jsndata file
Json::Value l1JsnData;
l1JsnData[DataPoint::SOURCE] = sourceHost;
l1JsnData[DataPoint::DEFINITION] = iSummary->stL1Jsd;

l1JsnData[DataPoint::DATA].append(iSummary->processed->toJsonValue());
l1JsnData[DataPoint::DATA].append(iSummary->L1Accept ->toJsonValue());
l1JsnData[DataPoint::DATA].append(iSummary->L1TechAccept ->toJsonValue()); //DS
l1JsnData[DataPoint::DATA].append(iSummary->L1Global ->toJsonValue()); //DS
result = writer.write(l1JsnData);

std::stringstream ssL1JsnData;
ssL1JsnData << "run" << iRun << "_ls" << std::setfill('0') << std::setw(4) << iLs;
ssL1JsnData << "_streamL1Rates_pid" << std::setfill('0') << std::setw(5) << getpid() << ".jsndata";

std::ofstream outL1JsnData( monPath + "/" + ssL1JsnData.str() );
outL1JsnData<<result;
outL1JsnData.close();

//Create special DAQ JSON file for L1 and HLT rates pseudo-streams
//Only three variables are different between the files:
//the file list, the file size and the Adler32 value
IntJ daqJsnProcessed_ = iSummary->processed->value().at(0);
IntJ daqJsnAccepted_ = daqJsnProcessed_;
IntJ daqJsnErrorEvents_ = 0;
IntJ daqJsnRetCodeMask_ = 0;

struct stat st;

//HLT
StringJ hltJsnFilelist_;
hltJsnFilelist_.update(ssHltJsnData.str());

const char* cName = (monPath+ssHltJsnData.str()).c_str();
stat(cName, &st);

IntJ hltJsnFilesize_ = st.st_size;
StringJ hltJsnInputFiles_;
hltJsnInputFiles_.update("");
IntJ hltJsnFileAdler32_ = cms::Adler32(cName, st.st_size);

Json::Value hltDaqJsn;
hltDaqJsn[DataPoint::SOURCE] = sourceHost;
hltDaqJsn[DataPoint::DEFINITION] = sOutDef.str();

hltDaqJsn[DataPoint::DATA].append((unsigned int)daqJsnProcessed_.value());
hltDaqJsn[DataPoint::DATA].append((unsigned int)daqJsnAccepted_.value());
hltDaqJsn[DataPoint::DATA].append((unsigned int)daqJsnErrorEvents_.value());
hltDaqJsn[DataPoint::DATA].append((unsigned int)daqJsnRetCodeMask_.value());
hltDaqJsn[DataPoint::DATA].append(hltJsnFilelist_.value());
hltDaqJsn[DataPoint::DATA].append((unsigned int)hltJsnFilesize_.value());
hltDaqJsn[DataPoint::DATA].append(hltJsnInputFiles_.value());
hltDaqJsn[DataPoint::DATA].append((unsigned int)hltJsnFileAdler32_.value());

result = writer.write(hltDaqJsn);

std::stringstream ssHltDaqJsn;
ssHltDaqJsn << "run" << iRun << "_ls" << std::setfill('0') << std::setw(4) << iLs;
ssHltDaqJsn << "_streamHLTRates_pid" << std::setfill('0') << std::setw(5) << getpid() << ".jsn";

std::ofstream outHltDaqJsn( monPath + ssHltDaqJsn.str() );
outHltDaqJsn<<result;
outHltDaqJsn.close();

//L1
StringJ l1JsnFilelist_;
l1JsnFilelist_.update(ssL1JsnData.str());

cName = (monPath+ssL1JsnData.str()).c_str();
stat(cName, &st);

IntJ l1JsnFilesize_ = st.st_size;
StringJ l1JsnInputFiles_;
l1JsnInputFiles_.update("");
IntJ l1JsnFileAdler32_ = cms::Adler32(cName, st.st_size);

Json::Value l1DaqJsn;
l1DaqJsn[DataPoint::SOURCE] = sourceHost;
l1DaqJsn[DataPoint::DEFINITION] = sOutDef.str();

l1DaqJsn[DataPoint::DATA].append((unsigned int)daqJsnProcessed_.value());
l1DaqJsn[DataPoint::DATA].append((unsigned int)daqJsnAccepted_.value());
l1DaqJsn[DataPoint::DATA].append((unsigned int)daqJsnErrorEvents_.value());
l1DaqJsn[DataPoint::DATA].append((unsigned int)daqJsnRetCodeMask_.value());
l1DaqJsn[DataPoint::DATA].append(l1JsnFilelist_.value());
l1DaqJsn[DataPoint::DATA].append((unsigned int)l1JsnFilesize_.value());
l1DaqJsn[DataPoint::DATA].append(l1JsnInputFiles_.value());
l1DaqJsn[DataPoint::DATA].append((unsigned int)l1JsnFileAdler32_.value());

result = writer.write(l1DaqJsn);

std::stringstream ssL1DaqJsn;
ssL1DaqJsn << "run" << iRun << "_ls" << std::setfill('0') << std::setw(4) << iLs;
ssL1DaqJsn << "_streamL1Rates_pid" << std::setfill('0') << std::setw(5) << getpid() << ".jsn";

std::ofstream outL1DaqJsn( monPath + ssL1DaqJsn.str() );
outL1DaqJsn<<result;
outL1DaqJsn.close();
if (iSummary->processed->value().at(0)!=0) {
Json::StyledWriter writer;

char hostname[33];
gethostname(hostname,32);
std::string sourceHost(hostname);

//Get the output directory
std::string monPath = iSummary->baseRunDir + "/";

std::stringstream sOutDef;
sOutDef << monPath << "output_" << getpid() << ".jsd";

unsigned int iLs = iLumi.luminosityBlock();
unsigned int iRun = iLumi.run();

//Write the .jsndata files which contain the actual rates
//HLT .jsndata file
Json::Value hltJsnData;
hltJsnData[DataPoint::SOURCE] = sourceHost;
hltJsnData[DataPoint::DEFINITION] = iSummary->stHltJsd;

hltJsnData[DataPoint::DATA].append(iSummary->processed->toJsonValue());
hltJsnData[DataPoint::DATA].append(iSummary->hltWasRun->toJsonValue());
hltJsnData[DataPoint::DATA].append(iSummary->hltL1s ->toJsonValue());
hltJsnData[DataPoint::DATA].append(iSummary->hltPre ->toJsonValue());
hltJsnData[DataPoint::DATA].append(iSummary->hltAccept->toJsonValue());
hltJsnData[DataPoint::DATA].append(iSummary->hltReject->toJsonValue());
hltJsnData[DataPoint::DATA].append(iSummary->hltErrors->toJsonValue());

hltJsnData[DataPoint::DATA].append(iSummary->hltDatasets->toJsonValue());

std::string && result = writer.write(hltJsnData);

std::stringstream ssHltJsnData;
ssHltJsnData << "run" << iRun << "_ls" << std::setfill('0') << std::setw(4) << iLs;
ssHltJsnData << "_streamHLTRates_pid" << std::setfill('0') << std::setw(5) << getpid() << ".jsndata";

std::ofstream outHltJsnData( monPath + ssHltJsnData.str() );
outHltJsnData<<result;
outHltJsnData.close();

//L1 .jsndata file
Json::Value l1JsnData;
l1JsnData[DataPoint::SOURCE] = sourceHost;
l1JsnData[DataPoint::DEFINITION] = iSummary->stL1Jsd;

l1JsnData[DataPoint::DATA].append(iSummary->processed->toJsonValue());
l1JsnData[DataPoint::DATA].append(iSummary->L1Accept ->toJsonValue());
l1JsnData[DataPoint::DATA].append(iSummary->L1TechAccept ->toJsonValue()); //DS
l1JsnData[DataPoint::DATA].append(iSummary->L1Global ->toJsonValue()); //DS
result = writer.write(l1JsnData);

std::stringstream ssL1JsnData;
ssL1JsnData << "run" << iRun << "_ls" << std::setfill('0') << std::setw(4) << iLs;
ssL1JsnData << "_streamL1Rates_pid" << std::setfill('0') << std::setw(5) << getpid() << ".jsndata";

std::ofstream outL1JsnData( monPath + "/" + ssL1JsnData.str() );
outL1JsnData<<result;
outL1JsnData.close();

//Create special DAQ JSON file for L1 and HLT rates pseudo-streams
//Only three variables are different between the files:
//the file list, the file size and the Adler32 value
IntJ daqJsnProcessed_ = iSummary->processed->value().at(0);
IntJ daqJsnAccepted_ = daqJsnProcessed_;
IntJ daqJsnErrorEvents_ = 0;
IntJ daqJsnRetCodeMask_ = 0;

struct stat st;

//HLT
StringJ hltJsnFilelist_;
hltJsnFilelist_.update(ssHltJsnData.str());

const char* cName = (monPath+ssHltJsnData.str()).c_str();
stat(cName, &st);

IntJ hltJsnFilesize_ = st.st_size;
StringJ hltJsnInputFiles_;
hltJsnInputFiles_.update("");
IntJ hltJsnFileAdler32_ = cms::Adler32(cName, st.st_size);

Json::Value hltDaqJsn;
hltDaqJsn[DataPoint::SOURCE] = sourceHost;
hltDaqJsn[DataPoint::DEFINITION] = sOutDef.str();

hltDaqJsn[DataPoint::DATA].append((unsigned int)daqJsnProcessed_.value());
hltDaqJsn[DataPoint::DATA].append((unsigned int)daqJsnAccepted_.value());
hltDaqJsn[DataPoint::DATA].append((unsigned int)daqJsnErrorEvents_.value());
hltDaqJsn[DataPoint::DATA].append((unsigned int)daqJsnRetCodeMask_.value());
hltDaqJsn[DataPoint::DATA].append(hltJsnFilelist_.value());
hltDaqJsn[DataPoint::DATA].append((unsigned int)hltJsnFilesize_.value());
hltDaqJsn[DataPoint::DATA].append(hltJsnInputFiles_.value());
hltDaqJsn[DataPoint::DATA].append((unsigned int)hltJsnFileAdler32_.value());

result = writer.write(hltDaqJsn);

std::stringstream ssHltDaqJsn;
ssHltDaqJsn << "run" << iRun << "_ls" << std::setfill('0') << std::setw(4) << iLs;
ssHltDaqJsn << "_streamHLTRates_pid" << std::setfill('0') << std::setw(5) << getpid() << ".jsn";

std::ofstream outHltDaqJsn( monPath + ssHltDaqJsn.str() );
outHltDaqJsn<<result;
outHltDaqJsn.close();

//L1
StringJ l1JsnFilelist_;
l1JsnFilelist_.update(ssL1JsnData.str());

cName = (monPath+ssL1JsnData.str()).c_str();
stat(cName, &st);

IntJ l1JsnFilesize_ = st.st_size;
StringJ l1JsnInputFiles_;
l1JsnInputFiles_.update("");
IntJ l1JsnFileAdler32_ = cms::Adler32(cName, st.st_size);

Json::Value l1DaqJsn;
l1DaqJsn[DataPoint::SOURCE] = sourceHost;
l1DaqJsn[DataPoint::DEFINITION] = sOutDef.str();

l1DaqJsn[DataPoint::DATA].append((unsigned int)daqJsnProcessed_.value());
l1DaqJsn[DataPoint::DATA].append((unsigned int)daqJsnAccepted_.value());
l1DaqJsn[DataPoint::DATA].append((unsigned int)daqJsnErrorEvents_.value());
l1DaqJsn[DataPoint::DATA].append((unsigned int)daqJsnRetCodeMask_.value());
l1DaqJsn[DataPoint::DATA].append(l1JsnFilelist_.value());
l1DaqJsn[DataPoint::DATA].append((unsigned int)l1JsnFilesize_.value());
l1DaqJsn[DataPoint::DATA].append(l1JsnInputFiles_.value());
l1DaqJsn[DataPoint::DATA].append((unsigned int)l1JsnFileAdler32_.value());

result = writer.write(l1DaqJsn);

std::stringstream ssL1DaqJsn;
ssL1DaqJsn << "run" << iRun << "_ls" << std::setfill('0') << std::setw(4) << iLs;
ssL1DaqJsn << "_streamL1Rates_pid" << std::setfill('0') << std::setw(5) << getpid() << ".jsn";

std::ofstream outL1DaqJsn( monPath + ssL1DaqJsn.str() );
outL1DaqJsn<<result;
outL1DaqJsn.close();
}

//Delete the individual HistoJ pointers
delete iSummary->processed;
Expand Down