From b91b7de114e3d274f6b47eb8b9c166c90c8d4e55 Mon Sep 17 00:00:00 2001
From: drslebedev <dr.s.lebedev@gmail.com>
Date: Fri, 30 Apr 2021 16:12:46 +0200
Subject: [PATCH] Changes in RICH reconstruction log.

---
 reco/detectors/rich/CbmRichReconstruction.cxx | 39 +++++++++++++++++--
 reco/detectors/rich/CbmRichReconstruction.h   |  8 +++-
 .../rich/finder/CbmRichRingFinderHough.cxx    |  6 +--
 .../tracks/CbmRichRingTrackAssignClosestD.cxx |  6 +--
 .../tracks/CbmRichTrackExtrapolationIdeal.cxx |  8 ++--
 5 files changed, 53 insertions(+), 14 deletions(-)

diff --git a/reco/detectors/rich/CbmRichReconstruction.cxx b/reco/detectors/rich/CbmRichReconstruction.cxx
index f119bc2940..b83404f4fd 100644
--- a/reco/detectors/rich/CbmRichReconstruction.cxx
+++ b/reco/detectors/rich/CbmRichReconstruction.cxx
@@ -40,6 +40,7 @@
 
 #include "TClonesArray.h"
 
+#include <iomanip>
 #include <iostream>
 
 using std::cout;
@@ -98,22 +99,36 @@ InitStatus CbmRichReconstruction::Init()
 
 void CbmRichReconstruction::Exec(Option_t* /*opt*/)
 {
+  TStopwatch timer;
+  timer.Start();
   if (fRichTrackParamZ != nullptr) fRichTrackParamZ->Delete();
   if (fRichProjections != nullptr) fRichProjections->Delete();
   if (fRichRings != nullptr) fRichRings->Delete();
 
+  fNofTs++;
+
   if (fCbmEvents == nullptr) {
-    LOG(info) << "CbmRichReconstruction: Event " << ++fEventNum;
+    fNofEvents++;
     ProcessData(nullptr);
   }
   else {
     int nEvents = fCbmEvents->GetEntriesFast();
-    LOG(info) << "CbmRichReconstruction: Timeslice " << ++fEventNum << " with " << nEvents << " events";
+    fNofEvents += nEvents;
     for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) {
       CbmEvent* event = static_cast<CbmEvent*>(fCbmEvents->At(iEvent));
       ProcessData(event);
     }
   }
+  timer.Stop();
+  fCalcTime += timer.RealTime();
+  fTotalNofHits += fRichHits->GetEntriesFast();
+  fTotalNofRings += fRichRings->GetEntriesFast();
+  fTotalNofTrackProj += (fRichProjections ? fRichProjections->GetEntriesFast() : 0);
+
+  LOG(info) << setw(20) << left << GetName() << "[" << fixed << setw(8) << setprecision(1) << right
+            << timer.RealTime() * 1000. << " ms] "
+            << "TS " << fNofTs << ", hits " << fRichHits->GetEntriesFast() << ", rings " << fRichRings->GetEntriesFast()
+            << ", trackProj " << (fRichProjections ? fRichProjections->GetEntriesFast() : 0);
 }
 
 void CbmRichReconstruction::ProcessData(CbmEvent* event)
@@ -249,6 +264,24 @@ void CbmRichReconstruction::RunTrackAssign(CbmEvent* event)
   fRingTrackAssign->DoAssign(event, fRichRings, fRichProjections);
 }
 
-void CbmRichReconstruction::Finish() {}
+void CbmRichReconstruction::Finish()
+{
+
+  std::cout << std::endl;
+  LOG(info) << "=====================================";
+  LOG(info) << GetName() << ": Run summary";
+  LOG(info) << "Time slices     : " << fNofTs;
+  LOG(info) << "Events          : " << fNofEvents;
+  LOG(info) << "Events / TS     : " << fixed << setprecision(2) << fNofEvents / (Double_t) fNofTs;
+  LOG(info) << "Hits / TS       : " << fixed << setprecision(2) << fTotalNofHits / (Double_t) fNofTs;
+  LOG(info) << "Ring / TS       : " << fixed << setprecision(2) << fTotalNofRings / (Double_t) fNofTs;
+  LOG(info) << "TrackProj / TS  : " << fixed << setprecision(2) << fTotalNofTrackProj / (Double_t) fNofTs;
+  LOG(info) << "Time / TS       : " << fixed << setprecision(2) << 1000. * fCalcTime / Double_t(fNofTs) << " ms";
+  LOG(info) << "Hits / ev       : " << fixed << setprecision(2) << fTotalNofHits / (Double_t) fNofEvents;
+  LOG(info) << "Ring / ev       : " << fixed << setprecision(2) << fTotalNofRings / (Double_t) fNofEvents;
+  LOG(info) << "TrackProj / ev  : " << fixed << setprecision(2) << fTotalNofTrackProj / (Double_t) fNofEvents;
+  LOG(info) << "Time / ev       : " << fixed << setprecision(2) << 1000. * fCalcTime / Double_t(fNofEvents) << " ms";
+  LOG(info) << "=====================================\n";
+}
 
 ClassImp(CbmRichReconstruction)
diff --git a/reco/detectors/rich/CbmRichReconstruction.h b/reco/detectors/rich/CbmRichReconstruction.h
index 2e5d4b1763..00278b4659 100644
--- a/reco/detectors/rich/CbmRichReconstruction.h
+++ b/reco/detectors/rich/CbmRichReconstruction.h
@@ -96,7 +96,13 @@ private:
   TClonesArray* fGlobalTracks    = nullptr;
   TClonesArray* fCbmEvents       = nullptr;
 
-  Int_t fEventNum = 0;  // event or timeslice counter
+  Int_t fNofTs             = 0;
+  Int_t fNofEvents         = 0;
+  Double_t fCalcTime       = 0.;
+  Int_t fTotalNofHits      = 0;
+  Int_t fTotalNofRings     = 0;
+  Int_t fTotalNofTrackProj = 0;
+
 
   // pointers to the algorithms
   CbmRichRingFinder* fRingFinder                     = nullptr;
diff --git a/reco/detectors/rich/finder/CbmRichRingFinderHough.cxx b/reco/detectors/rich/finder/CbmRichRingFinderHough.cxx
index cdee4ad6bf..045fe36167 100644
--- a/reco/detectors/rich/finder/CbmRichRingFinderHough.cxx
+++ b/reco/detectors/rich/finder/CbmRichRingFinderHough.cxx
@@ -111,9 +111,9 @@ Int_t CbmRichRingFinderHough::DoFind(CbmEvent* event, TClonesArray* rHitArray, T
   Double_t dt3 = timer.RealTime();
 
   int nofFoundRings = event ? event->GetNofData(ECbmDataType::kRichRing) : rRingArray->GetEntriesFast();
-  LOG(info) << "CbmRichRingFinderHough::DoFind(): Event:" << fEventNum << " hits:" << nofRichHits
-            << " rings:" << nofFoundRings << " ringsInTS:" << rRingArray->GetEntriesFast()
-            << " Time:" << dt1 + dt2 + dt3;
+  LOG(debug) << "CbmRichRingFinderHough::DoFind(): Event:" << fEventNum << " hits:" << nofRichHits
+             << " rings:" << nofFoundRings << " ringsInTS:" << rRingArray->GetEntriesFast()
+             << " Time:" << dt1 + dt2 + dt3;
 
   return 1;
 }
diff --git a/reco/detectors/rich/tracks/CbmRichRingTrackAssignClosestD.cxx b/reco/detectors/rich/tracks/CbmRichRingTrackAssignClosestD.cxx
index feee8de28b..ac95de0226 100644
--- a/reco/detectors/rich/tracks/CbmRichRingTrackAssignClosestD.cxx
+++ b/reco/detectors/rich/tracks/CbmRichRingTrackAssignClosestD.cxx
@@ -59,9 +59,9 @@ void CbmRichRingTrackAssignClosestD::DoAssign(CbmEvent* event, TClonesArray* rin
 
   Int_t nofTracks = event ? event->GetNofData(ECbmDataType::kRichTrackProjection) : richProj->GetEntriesFast();
   Int_t nofRings  = event ? event->GetNofData(ECbmDataType::kRichRing) : rings->GetEntriesFast();
-  LOG(info) << "CbmRichRingTrackAssignClosestD::DoAssign(): Event:" << fEventNum << " rings:" << nofRings
-            << " ringsInTS:" << rings->GetEntriesFast() << " tracks:" << nofTracks
-            << " tracksInTS:" << richProj->GetEntriesFast();
+  LOG(debug) << "CbmRichRingTrackAssignClosestD::DoAssign(): Event:" << fEventNum << " rings:" << nofRings
+             << " ringsInTS:" << rings->GetEntriesFast() << " tracks:" << nofTracks
+             << " tracksInTS:" << richProj->GetEntriesFast();
 }
 
 void CbmRichRingTrackAssignClosestD::DoAssignRingTrack(CbmEvent* event, TClonesArray* rings, TClonesArray* richProj)
diff --git a/reco/detectors/rich/tracks/CbmRichTrackExtrapolationIdeal.cxx b/reco/detectors/rich/tracks/CbmRichTrackExtrapolationIdeal.cxx
index a4b5b5369d..b36c65b842 100644
--- a/reco/detectors/rich/tracks/CbmRichTrackExtrapolationIdeal.cxx
+++ b/reco/detectors/rich/tracks/CbmRichTrackExtrapolationIdeal.cxx
@@ -33,16 +33,16 @@ CbmRichTrackExtrapolationIdeal::~CbmRichTrackExtrapolationIdeal() {}
 void CbmRichTrackExtrapolationIdeal::Init()
 {
   FairRootManager* manager = FairRootManager::Instance();
-  if (manager = nullptr) LOG(fatal) << "CbmRichTrackExtrapolationIdeal::Init(): FairRootManager is nullptr.";
+  if (manager == nullptr) LOG(fatal) << "CbmRichTrackExtrapolationIdeal::Init(): FairRootManager is nullptr.";
 
   fRefPlanePoints = (TClonesArray*) manager->GetObject("RefPlanePoint");
-  if (fRefPlanePoints = nullptr) LOG(fatal) << "CbmRichTrackExtrapolationIdeal::Init(): No RefPlanePoint array.";
+  if (fRefPlanePoints == nullptr) LOG(fatal) << "CbmRichTrackExtrapolationIdeal::Init(): No RefPlanePoint array.";
 
   fStsTracks = (TClonesArray*) manager->GetObject("StsTrack");
-  if (fStsTracks = nullptr) LOG(fatal) << "CbmRichTrackExtrapolationIdeal::Init(): No StsTrack array.";
+  if (fStsTracks == nullptr) LOG(fatal) << "CbmRichTrackExtrapolationIdeal::Init(): No StsTrack array.";
 
   fStsTrackMatches = (TClonesArray*) manager->GetObject("StsTrackMatch");
-  if (fStsTrackMatches = nullptr) LOG(fatal) << "CbmRichTrackExtrapolationIdeal::Init(): No StsTrackMatch array.";
+  if (fStsTrackMatches == nullptr) LOG(fatal) << "CbmRichTrackExtrapolationIdeal::Init(): No StsTrackMatch array.";
 }
 
 void CbmRichTrackExtrapolationIdeal::DoExtrapolation(CbmEvent* event, TClonesArray* globalTracks,
-- 
GitLab