Skip to content
Snippets Groups Projects

cbmreco: Add monitoring for Event Building.

Merged Felix Weiglhofer requested to merge fweig/cbmroot:evbuild-monitor into master
11 files
+ 159
70
Compare changes
  • Side-by-side
  • Inline
Files
11
@@ -7,6 +7,8 @@
#include <cassert>
#include <iomanip>
#include <xpu/host.h>
using std::is_sorted;
using std::vector;
@@ -14,25 +16,41 @@ namespace cbm::algo::evbuild
{
// ----- Algorithm execution --------------------------------------------
EventBuilder::resultType EventBuilder::operator()(const DigiData& ts, const vector<double> triggers) const
EventBuilder::resultType EventBuilder::operator()(const DigiData& ts, const vector<double> triggers,
std::optional<DigiEventSelector> selector) const
{
xpu::push_timer("EventBuilder");
// --- Output data
resultType result = {};
result.first.resize(triggers.size());
auto& events = result.first;
events.resize(triggers.size());
std::transform(triggers.begin(), triggers.end(), result.first.begin(),
std::transform(triggers.begin(), triggers.end(), events.begin(),
[&ts, &result, this](const double& trigger) { return BuildEvent(ts, result.second, trigger); });
// --- Apply event selector
if (selector.has_value()) {
auto notSelected = [&](DigiEvent& ev) { return !((*selector)(ev)); };
auto removeIt = std::remove_if(events.begin(), events.end(), notSelected);
events.erase(removeIt, events.end());
}
EventBuilderMonitorData& monitor = result.second;
monitor.fSts.fNum += ts.fSts.size();
monitor.fRich.fNum += ts.fRich.size();
monitor.fMuch.fNum += ts.fMuch.size();
monitor.fTrd.fNum += ts.fTrd.size();
monitor.fTrd2d.fNum += ts.fTrd2d.size();
monitor.fTof.fNum += ts.fTof.size();
monitor.fPsd.fNum += ts.fPsd.size();
monitor.fFsd.fNum += ts.fFsd.size();
monitor.fBmon.fNum += ts.fBmon.size();
monitor.sts.nDigis += ts.fSts.size();
monitor.rich.nDigis += ts.fRich.size();
monitor.much.nDigis += ts.fMuch.size();
monitor.trd.nDigis += ts.fTrd.size();
monitor.trd2d.nDigis += ts.fTrd2d.size();
monitor.tof.nDigis += ts.fTof.size();
monitor.psd.nDigis += ts.fPsd.size();
monitor.fsd.nDigis += ts.fFsd.size();
monitor.bmon.nDigis += ts.fBmon.size();
monitor.nEvents += result.first.size();
auto timings = xpu::pop_timer();
monitor.timeMs = timings.wall();
return result;
}
@@ -90,15 +108,15 @@ namespace cbm::algo::evbuild
default: break;
}
}
monitor.fSts.fNumInEvents += event.fSts.size();
monitor.fRich.fNumInEvents += event.fRich.size();
monitor.fMuch.fNumInEvents += event.fMuch.size();
monitor.fTrd.fNumInEvents += event.fTrd.size();
monitor.fTrd2d.fNumInEvents += event.fTrd2d.size();
monitor.fTof.fNumInEvents += event.fTof.size();
monitor.fPsd.fNumInEvents += event.fPsd.size();
monitor.fFsd.fNumInEvents += event.fFsd.size();
monitor.fBmon.fNumInEvents += event.fBmon.size();
monitor.sts.nDigisInEvents += event.fSts.size();
monitor.rich.nDigisInEvents += event.fRich.size();
monitor.much.nDigisInEvents += event.fMuch.size();
monitor.trd.nDigisInEvents += event.fTrd.size();
monitor.trd2d.nDigisInEvents += event.fTrd2d.size();
monitor.tof.nDigisInEvents += event.fTof.size();
monitor.psd.nDigisInEvents += event.fPsd.size();
monitor.fsd.nDigisInEvents += event.fFsd.size();
monitor.bmon.nDigisInEvents += event.fBmon.size();
return event;
}
// --------------------------------------------------------------------------
Loading