Skip to content

Commit

Permalink
Merge pull request #11052 from fwyzard/ThroughputServiceClient_add_mo…
Browse files Browse the repository at this point in the history
…re_plots

ThroughputServiceClient: add more throughput plots (75x)
  • Loading branch information
cmsbuild committed Sep 1, 2015
2 parents eecf9e3 + 538fefd commit 626e6bc
Showing 1 changed file with 39 additions and 10 deletions.
49 changes: 39 additions & 10 deletions HLTrigger/Timer/plugins/ThroughputServiceClient.cc
Expand Up @@ -85,25 +85,54 @@ ThroughputServiceClient::fillSummaryPlots(DQMStore::IBooker & booker, DQMStore::
for (auto const & folder: folders) {
TH1F * sourced = getter.get( folder + "/throughput_sourced" )->getTH1F();
TH1F * retired = getter.get( folder + "/throughput_retired" )->getTH1F();
TH1F * concurrent = nullptr;
booker.setCurrentFolder(folder);
unsigned int nbins = sourced->GetXaxis()->GetNbins();
double range = sourced->GetXaxis()->GetXmax();
MonitorElement * me = getter.get( folder + "/concurrent" );
if (me) {
concurrent = me->getTH1F();
assert( concurrent->GetXaxis()->GetNbins() == (int) nbins );
assert( concurrent->GetXaxis()->GetXmax() == range );
concurrent->Reset();
} else {
concurrent = booker.book1D("concurrent", "Concurrent events being processed", nbins, 0., range)->getTH1F();
}

// drop .../concurrent, if it exists
if (getter.get(folder + "/concurrent"))
getter.removeElement(folder, "concurrent", true);
// (re)book and fill .../concurrent
TH1F* concurrent = booker.book1D("concurrent", "Concurrent events being processed", nbins, 0., range)->getTH1F();
double sum = 0;
// from bin=0 (underflow) to bin=nbins+1 (overflow)
for (unsigned int i = 0; i <= nbins+1; ++i) {
sum += sourced->GetBinContent(i) - retired->GetBinContent(i);
concurrent->Fill( concurrent->GetXaxis()->GetBinCenter(i), sum );
}

TH1F* average = nullptr;
double avg_min = std::min(sourced->GetMinimum(0.), retired->GetMinimum(0.));
double avg_max = std::max(sourced->GetMaximum(), retired->GetMaximum());
double width = avg_max - avg_min;
avg_min = std::floor( avg_min - width * 0.2 );
if (avg_min < 0.) avg_min = 0.;
avg_max = std::ceil( avg_max + width * 0.2 );
width = avg_max - avg_min;

// drop .../average_sourced, if it exists
if (getter.get(folder + "/average_sourced"))
getter.removeElement(folder, "average_sourced", true);
// define the range for .../average_sourced
uint64_t first = sourced->FindFirstBinAbove(0.);
uint64_t last = sourced->FindLastBinAbove(0.);
booker.setCurrentFolder(folder);
// (re)book and fill .../average_sourced
average = booker.book1D("average_sourced", "Throughput (sourced events)", (int) width, avg_min, avg_max)->getTH1F();
for (unsigned int i = first; i <= last; ++i)
average->Fill(sourced->GetBinContent(i));

// drop .../average_retired, if it exists
if (getter.get(folder + "/average_retired"))
getter.removeElement(folder, "average_retired", true);
// define the range for .../average_retired
first = retired->FindFirstBinAbove(0.);
last = retired->FindLastBinAbove(0.);
booker.setCurrentFolder(folder);
// (re)book and fill .../average_retired
average = booker.book1D("average_retired", "Throughput (retired events)", (int) width, avg_min, avg_max)->getTH1F();
for (unsigned int i = first; i <= last; ++i)
average->Fill(retired->GetBinContent(i));
}
}

Expand Down

0 comments on commit 626e6bc

Please sign in to comment.