From e22da0e3a411446fa7f5486cbdc5a8275985e323 Mon Sep 17 00:00:00 2001 From: P-A Loizeau <p.-a.loizeau@gsi.de> Date: Thu, 17 Nov 2022 16:25:50 +0100 Subject: [PATCH] Add statistics printout to TofEventClusterizer similar to other hit finders --- reco/detectors/tof/CbmTofEventClusterizer.cxx | 40 ++++++++++++++++++- reco/detectors/tof/CbmTofEventClusterizer.h | 4 ++ reco/tasks/CbmTaskMakeRecoEvents.cxx | 2 +- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/reco/detectors/tof/CbmTofEventClusterizer.cxx b/reco/detectors/tof/CbmTofEventClusterizer.cxx index 22cab5bf42..6dcf94ae2b 100644 --- a/reco/detectors/tof/CbmTofEventClusterizer.cxx +++ b/reco/detectors/tof/CbmTofEventClusterizer.cxx @@ -65,15 +65,17 @@ #include "TROOT.h" #include "TRandom.h" #include "TRandom3.h" +#include "TStopwatch.h" #include "TVector3.h" // Constants definitions #include "CbmTofClusterizersDef.h" // C++ Classes and includes -// Globals +#include <iomanip> #include <vector> +// Globals static Int_t iIndexDut = 0; // const Double_t cLight=29.9792; // in cm/ns (VF) not used static Int_t SelMask = DetMask; @@ -374,6 +376,10 @@ void CbmTofEventClusterizer::Exec(Option_t* option) LOG(info) << "New timeslice " << iNbTs << " with " << fEventsColl->GetEntriesFast() << " events, " << fDigiMan->GetNofDigis(ECbmModuleId::kTof) << " TOF digis + " << fDigiMan->GetNofDigis(ECbmModuleId::kT0) << " T0 digis "; + + TStopwatch timerTs; + timerTs.Start(); + fiNbSkip1 = 0; fiNbSkip2 = 0; iNbTs++; @@ -478,6 +484,23 @@ void CbmTofEventClusterizer::Exec(Option_t* option) // LOG(info) << "Total Skip2 Digi nb " << fiNbSkip2; } + + /// PAL: add TS statistics for monitoring and perf evaluation + timerTs.Stop(); + LOG(debug) << GetName() << "::Exec: real time=" << timerTs.RealTime() << " CPU time=" << timerTs.CpuTime(); + fProcessTime += timerTs.RealTime(); + fuNbDigis += fDigiMan->GetNofDigis(ECbmModuleId::kTof) // TOF + + fDigiMan->GetNofDigis(ECbmModuleId::kT0); // T0 + fuNbHits += fiHitStart; + + std::stringstream logOut; + logOut << std::setw(20) << std::left << GetName() << " ["; + logOut << std::fixed << std::setw(8) << std::setprecision(1) << std::right << timerTs.RealTime() * 1000. << " ms] "; + logOut << "TS " << iNbTs; + logOut << ", events " << fEventsColl->GetEntriesFast(); + logOut << ", hits " << fiHitStart << ", time/1k-hit " << std::setprecision(4) + << timerTs.RealTime() * 1e6 / fiHitStart << " [ms]"; + LOG(info) << logOut.str(); } else { // fTofDigisColl=fTofRawDigisColl; @@ -536,6 +559,21 @@ void CbmTofEventClusterizer::ExecEvent(Option_t* /*option*/, CbmEvent* tEvent) void CbmTofEventClusterizer::Finish() { LOG(info) << "Finish with " << fdEvent << " processed events"; + + /// PAL: add run statistics for monitoring and perf evaluation + LOG(info) << "====================================="; + LOG(info) << GetName() << ": Finish run"; + LOG(info) << GetName() << ": Run summary "; + LOG(info) << GetName() << ": Processing time : " << std::fixed << std::setprecision(3) << fProcessTime; + LOG(info) << GetName() << ": Nr of events : " << fdEvent; + LOG(info) << GetName() << ": Nr of input digis : " << fuNbDigis; + LOG(info) << GetName() << ": Nr of produced hits : " << fuNbHits; + LOG(info) << GetName() << ": Nr of hits / event : " << std::fixed << std::setprecision(2) + << (fdEvent > 0 ? fuNbHits / fdEvent : 0); + LOG(info) << GetName() << ": Nr of hits / digis : " << std::fixed << std::setprecision(2) + << (fuNbDigis > 0 ? fuNbHits / (Double_t) fuNbDigis : 0); + LOG(info) << "====================================="; + if (fdEvent < 100) return; // don't save histos with insufficient statistics if (fDutId < 0) return; // no histograms were produced diff --git a/reco/detectors/tof/CbmTofEventClusterizer.h b/reco/detectors/tof/CbmTofEventClusterizer.h index 85e01933ab..b53f4d8aa2 100644 --- a/reco/detectors/tof/CbmTofEventClusterizer.h +++ b/reco/detectors/tof/CbmTofEventClusterizer.h @@ -465,6 +465,10 @@ private: Double_t fdEvent; Double_t fdStartAnalysisTime; + Double_t fProcessTime = 0.0; + uint64_t fuNbDigis = 0; + uint64_t fuNbHits = 0; + Bool_t fbSwapChannelSides; Int_t fiOutputTreeEntry; Int_t fiFileIndex; diff --git a/reco/tasks/CbmTaskMakeRecoEvents.cxx b/reco/tasks/CbmTaskMakeRecoEvents.cxx index ad8503767b..dbfe50e11b 100644 --- a/reco/tasks/CbmTaskMakeRecoEvents.cxx +++ b/reco/tasks/CbmTaskMakeRecoEvents.cxx @@ -94,7 +94,7 @@ void CbmTaskMakeRecoEvents::Exec(Option_t*) logOut << fixed << setw(8) << setprecision(1) << right << timer.RealTime() * 1000. << " ms] "; logOut << "TS " << fNumTs << ", events " << fDigiEvents->size() << ", Digis: T0 " << fT0Digis->size() << " STS " << fStsDigis->size() << " RICH " << fRichDigis->size() << " MUCH " << fMuchDigis->size() << " TRD " - << fTrdDigis->size() << " TOF " << fTofDigis->size() << " PSD" << fPsdDigis->size(); + << fTrdDigis->size() << " TOF " << fTofDigis->size() << " PSD " << fPsdDigis->size(); LOG(info) << logOut.str(); // --- Run statistics -- GitLab