From 5895669f44e096f9bf12a87d660462032d73214f Mon Sep 17 00:00:00 2001 From: Felix Weiglhofer <weiglhofer@fias.uni-frankfurt.de> Date: Wed, 12 Jul 2023 00:02:48 +0200 Subject: [PATCH] cbmreco: Monitor STS Reco. --- algo/detectors/sts/StsHitfinder.h | 7 +++++-- algo/detectors/sts/StsHitfinderChain.cxx | 11 +++++++++-- algo/detectors/sts/StsHitfinderChain.h | 2 +- algo/global/Reco.cxx | 19 +++++++++++++++++-- algo/global/Reco.h | 1 + 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/algo/detectors/sts/StsHitfinder.h b/algo/detectors/sts/StsHitfinder.h index f41ce3354c..e1f80a47e7 100644 --- a/algo/detectors/sts/StsHitfinder.h +++ b/algo/detectors/sts/StsHitfinder.h @@ -112,8 +112,11 @@ namespace cbm::algo::sts }; struct HitfinderMonitor { - u32 fNumClusterBucketOverflow = 0; - u32 fNumHitBucketOverflow = 0; + i32 fNumClusterBucketOverflow = 0; + i32 fNumHitBucketOverflow = 0; + u64 fNumClusterTotal = 0; + u64 fNumHitsTotal = 0; + f64 fTimeTotal = 0.; bool HasErrors() const { return fNumClusterBucketOverflow > 0 || fNumHitBucketOverflow > 0; } }; diff --git a/algo/detectors/sts/StsHitfinderChain.cxx b/algo/detectors/sts/StsHitfinderChain.cxx index e1bde280a4..5fe1579989 100644 --- a/algo/detectors/sts/StsHitfinderChain.cxx +++ b/algo/detectors/sts/StsHitfinderChain.cxx @@ -23,11 +23,11 @@ void sts::HitfinderChain::Finalize() xpu::set<TheHitfinder>(fHitfinder); } -void sts::HitfinderChain::operator()(gsl::span<const CbmStsDigi> digis) +sts::HitfinderMonitor sts::HitfinderChain::operator()(gsl::span<const CbmStsDigi> digis) { EnsureParameters(); - xpu::scoped_timer t_("STS Hitfinder"); + xpu::push_timer("STS Hitfinder"); int nModules = fPars->modules.size(); int nModuleSides = nModules * 2; @@ -197,6 +197,13 @@ void sts::HitfinderChain::operator()(gsl::span<const CbmStsDigi> digis) xpu::k_add_bytes<FindHits>(nClustersTotal * sizeof(sts::Cluster)); L_(info) << "Timeslice contains " << nHitsTotal << " STS hits and " << nClustersTotal << " STS clusters"; + + auto timings = xpu::pop_timer(); + + monitor[0].fTimeTotal = timings.wall(); + monitor[0].fNumClusterTotal = nClustersTotal; + monitor[0].fNumHitsTotal = nHitsTotal; + return monitor[0]; } void sts::HitfinderChain::EnsureParameters() diff --git a/algo/detectors/sts/StsHitfinderChain.h b/algo/detectors/sts/StsHitfinderChain.h index 7bd7e0e6d0..c811a19ab9 100644 --- a/algo/detectors/sts/StsHitfinderChain.h +++ b/algo/detectors/sts/StsHitfinderChain.h @@ -48,7 +48,7 @@ namespace cbm::algo::sts */ void Finalize(); - void operator()(gsl::span<const CbmStsDigi>); + sts::HitfinderMonitor operator()(gsl::span<const CbmStsDigi>); private: // Shorthands to map module-address onto digis in that module diff --git a/algo/global/Reco.cxx b/algo/global/Reco.cxx index 3dad3a6a01..72d87493c5 100644 --- a/algo/global/Reco.cxx +++ b/algo/global/Reco.cxx @@ -118,13 +118,14 @@ RecoResults Reco::Run(const fles::Timeslice& ts) std::vector<CbmDigiEvent> events; if (Opts().HasStep(Step::DigiTrigger)) events = fEventBuild.Run(digiTs); - + sts::HitfinderMonitor stsHitfinderMonitor; if (Opts().HasStep(Step::LocalReco) && Opts().HasDetector(fles::Subsystem::STS)) - fStsHitFinder(unpackResult.first.fData.fSts.fDigis); + stsHitfinderMonitor = fStsHitFinder(unpackResult.first.fData.fSts.fDigis); xpu::timings ts_times = xpu::pop_timer(); QueueUnpackerMetrics(ts, unpackMonitor, unpackResult.first); + QueueStsRecoMetrics(stsHitfinderMonitor); PrintTimings(ts_times); @@ -214,3 +215,17 @@ void Reco::QueueUnpackerMetrics(const fles::Timeslice& ts, const UnpackMonitorDa {"unpackNumErrInvalidSysVer", monitor.fNumErrInvalidSysVer}, }); } + +void Reco::QueueStsRecoMetrics(const sts::HitfinderMonitor& monitor) +{ + if (!HasMonitor()) return; + + GetMonitor().QueueMetric("cbmreco", {{"hostname", fles::system::current_hostname()}}, + { + {"stsRecoTimeTotal", monitor.fTimeTotal}, + {"stsRecoNumClusters", monitor.fNumClusterTotal}, + {"stsRecoNumHits", monitor.fNumHitsTotal}, + {"stsRecoNumClusterBucketOverflow", monitor.fNumClusterBucketOverflow}, + {"stsRecoNumHitBucketOverflow", monitor.fNumHitBucketOverflow}, + }); +} diff --git a/algo/global/Reco.h b/algo/global/Reco.h index 8cd099c806..ce048fe559 100644 --- a/algo/global/Reco.h +++ b/algo/global/Reco.h @@ -50,6 +50,7 @@ namespace cbm::algo void Validate(const Options& opts); void QueueUnpackerMetrics(const fles::Timeslice&, const UnpackMonitorData&, const CbmDigiTimeslice&); + void QueueStsRecoMetrics(const sts::HitfinderMonitor&); }; } // namespace cbm::algo -- GitLab