From 5a0b86b02050ac76f0c934bec2da4a6ef8644a5b Mon Sep 17 00:00:00 2001
From: Florian Uhlig <f.uhlig@gsi.de>
Date: Tue, 8 Nov 2022 15:50:39 +0100
Subject: [PATCH] Move rich local reconstruction code

There were rich ring finders in the L1 code base which were compiled and linked
into libL1. With the change in the build system this results in a circular
dependency between the L1 and CbmRichReco libraries which was resolved by
removing the classes from compilation.
With this commit the classes are moved from the L1 code base into the rich
reconstruction code base.
---
 reco/L1/CMakeLists.txt                        |  3 ---
 reco/L1/L1LinkDef.h                           |  2 --
 reco/detectors/rich/CMakeLists.txt            |  4 ++++
 reco/detectors/rich/CbmRichRecoLinkDef.h      |  1 +
 reco/detectors/rich/CbmRichReconstruction.cxx | 19 ++++++++++---------
 .../rich/alignment/CbmRichReconstruction.cxx  | 14 ++++++++------
 .../rich/finder}/CbmL1RichENNRingFinder.cxx   |  4 +---
 .../rich/finder}/CbmL1RichENNRingFinder.h     |  6 ------
 .../CbmL1RichENNRingFinderParallel.cxx        |  0
 .../finder}/CbmL1RichENNRingFinderParallel.h  |  2 --
 .../rich/qa}/CbmL1RichRingQa.cxx              |  0
 .../rich/qa}/CbmL1RichRingQa.h                |  0
 12 files changed, 24 insertions(+), 31 deletions(-)
 rename reco/{L1/OffLineInterface => detectors/rich/finder}/CbmL1RichENNRingFinder.cxx (93%)
 rename reco/{L1/OffLineInterface => detectors/rich/finder}/CbmL1RichENNRingFinder.h (94%)
 rename reco/{L1/OffLineInterface => detectors/rich/finder}/CbmL1RichENNRingFinderParallel.cxx (100%)
 rename reco/{L1/OffLineInterface => detectors/rich/finder}/CbmL1RichENNRingFinderParallel.h (99%)
 rename reco/{L1/OffLineInterface => detectors/rich/qa}/CbmL1RichRingQa.cxx (100%)
 rename reco/{L1/OffLineInterface => detectors/rich/qa}/CbmL1RichRingQa.h (100%)

diff --git a/reco/L1/CMakeLists.txt b/reco/L1/CMakeLists.txt
index 1dd572a61b..4d4deee982 100644
--- a/reco/L1/CMakeLists.txt
+++ b/reco/L1/CMakeLists.txt
@@ -32,8 +32,6 @@ set(SRCS
   CbmL1TrackMerger.cxx 
   CbmL1TofMerger.cxx
  # L1AlgoInputData.cxx
-  #OffLineInterface/CbmL1RichENNRingFinder.cxx
-  #OffLineInterface/CbmL1RichENNRingFinderParallel.cxx 
   OffLineInterface/CbmL1StsTrackFinder.cxx 
   OffLineInterface/CbmL1GlobalTrackFinder.cxx 
   OffLineInterface/CbmL1GlobalFindTracksEvents.cxx
@@ -41,7 +39,6 @@ set(SRCS
   #OffLineInterface / CbmL1MuchHit.cxx
   #OffLineInterface / CbmL1MuchTrack.cxx
   #OffLineInterface / CbmL1MuchFinderQa.cxx
-  #OffLineInterface/CbmL1RichRingQa.cxx
   #OffLineInterface / CbmL1SttHit.cxx
   #OffLineInterface / CbmL1SttTrackFinder.cxx
   #OffLineInterface / CbmL1SttTrack.cxx 
diff --git a/reco/L1/L1LinkDef.h b/reco/L1/L1LinkDef.h
index 686ad40584..152819d5b8 100644
--- a/reco/L1/L1LinkDef.h
+++ b/reco/L1/L1LinkDef.h
@@ -11,7 +11,6 @@
 #pragma link off all functions;
 
 #pragma link C++ class CbmL1 + ;
-//#pragma link C++ class CbmL1RichENNRingFinder + ;
 #pragma link C++ class CbmL1StsTrackFinder + ;
 //#pragma link C++ class  CbmL1TrdTrackFinderSts+;
 #pragma link C++ class CbmL1TrackMerger + ;
@@ -20,7 +19,6 @@
 //#pragma link C++ class  CbmL1MuchHit+;
 //#pragma link C++ class  CbmL1MuchTrack+;
 //#pragma link C++ class  CbmL1MuchFinderQa+;
-//#pragma link C++ class CbmL1RichRingQa + ;
 #pragma link C++ class CbmL1TrdTracklet + ;
 #pragma link C++ class CbmL1TrdTracklet4 + ;
 #pragma link C++ class CbmL1GlobalTrackFinder + ;
diff --git a/reco/detectors/rich/CMakeLists.txt b/reco/detectors/rich/CMakeLists.txt
index c0105f9f12..6e9d3f8891 100644
--- a/reco/detectors/rich/CMakeLists.txt
+++ b/reco/detectors/rich/CMakeLists.txt
@@ -33,6 +33,7 @@ set(SRCS
   qa/CbmRichUrqmdTest.cxx
   qa/CbmRichGeoTestOpt.cxx
   qa/CbmRichRecoQa.cxx
+  qa/CbmL1RichRingQa.cxx
 
   unpack/CbmRichUnpackAlgo.cxx
   unpack/CbmRichUnpackAlgo2022.cxx
@@ -43,9 +44,12 @@ set(SRCS
 
 set(NO_DICT_SRCS
   CbmRichConverter.cxx
+
   finder/CbmRichRingFinderIdeal.cxx
   finder/CbmRichRingFinderHoughImpl.cxx
   finder/CbmRichRingFinderHough.cxx
+  finder/CbmL1RichENNRingFinder.cxx
+  finder/CbmL1RichENNRingFinderParallel.cxx 
 
   fitter/CbmRichRingFitterCircle.cxx
   fitter/CbmRichRingFitterCOP.cxx
diff --git a/reco/detectors/rich/CbmRichRecoLinkDef.h b/reco/detectors/rich/CbmRichRecoLinkDef.h
index d6f65b9be9..8739d2c865 100644
--- a/reco/detectors/rich/CbmRichRecoLinkDef.h
+++ b/reco/detectors/rich/CbmRichRecoLinkDef.h
@@ -31,6 +31,7 @@
 #pragma link C++ class CbmRichRingFitterQa + ;
 #pragma link C++ class CbmRichRecoQa + ;
 #pragma link C++ class CbmRichRecoTbQa + ;
+#pragma link C++ class CbmL1RichRingQa + ;
 
 //unpack
 #pragma link C++ class CbmRichUnpackAlgo + ;
diff --git a/reco/detectors/rich/CbmRichReconstruction.cxx b/reco/detectors/rich/CbmRichReconstruction.cxx
index 68d2e066fd..a93c762a51 100644
--- a/reco/detectors/rich/CbmRichReconstruction.cxx
+++ b/reco/detectors/rich/CbmRichReconstruction.cxx
@@ -16,7 +16,8 @@
 #include "CbmRichRing.h"
 //#include "prototype/CbmRichProtProjectionProducer.h"
 
-//#include "CbmL1RichENNRingFinder.h"
+#include "CbmL1RichENNRingFinder.h"
+#include "CbmL1RichENNRingFinderParallel.h"
 #include "CbmRichRingFinderHough.h"
 #include "CbmRichRingFinderIdeal.h"
 #include "CbmRichTrackExtrapolationBase.h"
@@ -24,7 +25,6 @@
 #include "CbmRichTrackExtrapolationKF.h"
 #include "CbmRichTrackExtrapolationLittrack.h"
 #include "CbmRichTrackExtrapolationMirrorIdeal.h"
-//#include "CbmL1RichENNRingFinderParallel.h"
 //#include "prototype/CbmRichProtRingFinderHough.h"
 
 #include "CbmEvent.h"
@@ -197,13 +197,14 @@ void CbmRichReconstruction::InitFinder()
   else if (fFinderName == "ideal") {
     fRingFinder = new CbmRichRingFinderIdeal();
   }
-  /* else if (fFinderName == "enn") {
-     fRingFinder = new CbmL1RichENNRingFinder(0);
-     }
-     else if ((fFinderName == "enn_parallel")) {
-
-     fRingFinder = new CbmL1RichENNRingFinderParallel(0);
-     } else if (fFinderName == "hough_prototype") {
+  else if (fFinderName == "enn") {
+    fRingFinder = new CbmL1RichENNRingFinder(0);
+  }
+  else if ((fFinderName == "enn_parallel")) {
+    fRingFinder = new CbmL1RichENNRingFinderParallel(0);
+  }
+  /*
+  else if (fFinderName == "hough_prototype") {
      fRingFinder = new CbmRichProtRingFinderHough();
      }*/
   else {
diff --git a/reco/detectors/rich/alignment/CbmRichReconstruction.cxx b/reco/detectors/rich/alignment/CbmRichReconstruction.cxx
index dd7e41f541..658623e62a 100644
--- a/reco/detectors/rich/alignment/CbmRichReconstruction.cxx
+++ b/reco/detectors/rich/alignment/CbmRichReconstruction.cxx
@@ -16,7 +16,8 @@
 #include "CbmRichRing.h"
 //#include "prototype/CbmRichProtProjectionProducer.h"
 
-//#include "CbmL1RichENNRingFinder.h"
+#include "CbmL1RichENNRingFinder.h"
+#include "CbmL1RichENNRingFinderParallel.h"
 #include "CbmRichRingFinderHough.h"
 #include "CbmRichRingFinderIdeal.h"
 #include "CbmRichTrackExtrapolationBase.h"
@@ -24,7 +25,6 @@
 #include "CbmRichTrackExtrapolationKF.h"
 #include "CbmRichTrackExtrapolationLittrack.h"
 #include "CbmRichTrackExtrapolationMirrorIdeal.h"
-//#include "CbmL1RichENNRingFinderParallel.h"
 //#include "prototype/CbmRichProtRingFinderHough.h"
 
 #include "CbmGlobalTrack.h"
@@ -172,12 +172,14 @@ void CbmRichReconstruction::InitFinder()
   else if (fFinderName == "ideal") {
     fRingFinder = new CbmRichRingFinderIdeal();
   }
-  /*else if (fFinderName == "enn") {
+  else if (fFinderName == "enn") {
     fRingFinder = new CbmL1RichENNRingFinder(0);
-    }
-    else if ((fFinderName == "enn_parallel")) {
+  }
+  else if ((fFinderName == "enn_parallel")) {
     fRingFinder = new CbmL1RichENNRingFinderParallel(0);
-    } else if (fFinderName == "hough_prototype") {
+  }
+  /*
+    else if (fFinderName == "hough_prototype") {
     fRingFinder = new CbmRichProtRingFinderHough();
     }*/
   else {
diff --git a/reco/L1/OffLineInterface/CbmL1RichENNRingFinder.cxx b/reco/detectors/rich/finder/CbmL1RichENNRingFinder.cxx
similarity index 93%
rename from reco/L1/OffLineInterface/CbmL1RichENNRingFinder.cxx
rename to reco/detectors/rich/finder/CbmL1RichENNRingFinder.cxx
index 14cb156350..1c64dfde02 100644
--- a/reco/L1/OffLineInterface/CbmL1RichENNRingFinder.cxx
+++ b/reco/detectors/rich/finder/CbmL1RichENNRingFinder.cxx
@@ -46,9 +46,7 @@ using std::sqrt;
 using std::vector;
 
 
-ClassImp(CbmL1RichENNRingFinder)
-
-  CbmL1RichENNRingFinder::CbmL1RichENNRingFinder(Int_t verbose)
+CbmL1RichENNRingFinder::CbmL1RichENNRingFinder(Int_t verbose)
   : finder(new CbmL1RichENNRingFinderParallel(verbose))
   , fRecoTime(0)
   , fNEvents(0)
diff --git a/reco/L1/OffLineInterface/CbmL1RichENNRingFinder.h b/reco/detectors/rich/finder/CbmL1RichENNRingFinder.h
similarity index 94%
rename from reco/L1/OffLineInterface/CbmL1RichENNRingFinder.h
rename to reco/detectors/rich/finder/CbmL1RichENNRingFinder.h
index 3c0807986a..9da1e95a47 100644
--- a/reco/L1/OffLineInterface/CbmL1RichENNRingFinder.h
+++ b/reco/detectors/rich/finder/CbmL1RichENNRingFinder.h
@@ -23,9 +23,6 @@
 
 #include "CbmRichRingFinder.h"
 
-#include "TStopwatch.h"
-#include "TString.h"
-
 #include <vector>
 
 class ENNHit;
@@ -61,9 +58,6 @@ private:
   CbmL1RichENNRingFinderParallel* finder;
   Float_t fRecoTime;
   Int_t fNEvents;
-
-public:
-  ClassDef(CbmL1RichENNRingFinder, 1);
 };
 
 #endif
diff --git a/reco/L1/OffLineInterface/CbmL1RichENNRingFinderParallel.cxx b/reco/detectors/rich/finder/CbmL1RichENNRingFinderParallel.cxx
similarity index 100%
rename from reco/L1/OffLineInterface/CbmL1RichENNRingFinderParallel.cxx
rename to reco/detectors/rich/finder/CbmL1RichENNRingFinderParallel.cxx
diff --git a/reco/L1/OffLineInterface/CbmL1RichENNRingFinderParallel.h b/reco/detectors/rich/finder/CbmL1RichENNRingFinderParallel.h
similarity index 99%
rename from reco/L1/OffLineInterface/CbmL1RichENNRingFinderParallel.h
rename to reco/detectors/rich/finder/CbmL1RichENNRingFinderParallel.h
index 2bc1e80bcc..9daca1c082 100644
--- a/reco/L1/OffLineInterface/CbmL1RichENNRingFinderParallel.h
+++ b/reco/detectors/rich/finder/CbmL1RichENNRingFinderParallel.h
@@ -212,8 +212,6 @@ private:
   TStopwatch fTimers[NTimers];    // timers for different parts of algorithm
   TString fTimersNames[NTimers];  // names which are correspond to the timers.
   TStopwatch& GetTimer(TString t);
-
-public:
 };
 
 #endif
diff --git a/reco/L1/OffLineInterface/CbmL1RichRingQa.cxx b/reco/detectors/rich/qa/CbmL1RichRingQa.cxx
similarity index 100%
rename from reco/L1/OffLineInterface/CbmL1RichRingQa.cxx
rename to reco/detectors/rich/qa/CbmL1RichRingQa.cxx
diff --git a/reco/L1/OffLineInterface/CbmL1RichRingQa.h b/reco/detectors/rich/qa/CbmL1RichRingQa.h
similarity index 100%
rename from reco/L1/OffLineInterface/CbmL1RichRingQa.h
rename to reco/detectors/rich/qa/CbmL1RichRingQa.h
-- 
GitLab