diff --git a/reco/detectors/tof/CbmTofEventClusterizer.cxx b/reco/detectors/tof/CbmTofEventClusterizer.cxx index 22cab5bf42a29c0600b999804de0bcd268fdd3b3..6dcf94ae2b597421ba9c6a07fbe9909faaacfbd1 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 85e01933ab06a071d375feb547df5ae501a6403c..b53f4d8aa2798e20db53d00f0c86c5147a9e07c1 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 ad8503767b77852185c17a53fd54c7201ccab76b..dbfe50e11b4f33f762ec543e1152d953e9caa246 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