From 86f0616e21b5ec4ef27c1c6c4071eeff4d6d8bd8 Mon Sep 17 00:00:00 2001
From: Michael Deveaux <deveaux@physik.uni-frankfurt.de>
Date: Thu, 19 Jan 2023 12:53:49 +0100
Subject: [PATCH] Bringing HitFinder into operation.

---
 macro/mvd/qa/mvd_qa4_reco.C                   |  2 +-
 reco/detectors/mvd/CbmMvdHitfinder.cxx        | 26 ++++++++++++++-----
 reco/detectors/mvd/CbmMvdHitfinder.h          |  3 ++-
 .../tasks/CbmMvdSensorClusterfinderTask.cxx   |  5 +---
 .../plugins/tasks/CbmMvdSensorFindHitTask.cxx |  6 ++---
 .../tasks/CbmMvdSensorHitfinderTask.cxx       |  4 +--
 .../plugins/tasks/CbmMvdSensorHitfinderTask.h |  6 +++++
 7 files changed, 34 insertions(+), 18 deletions(-)

diff --git a/macro/mvd/qa/mvd_qa4_reco.C b/macro/mvd/qa/mvd_qa4_reco.C
index f20c65b153..9d3de7e5fe 100644
--- a/macro/mvd/qa/mvd_qa4_reco.C
+++ b/macro/mvd/qa/mvd_qa4_reco.C
@@ -59,7 +59,7 @@ void mvd_qa4_reco(const char* setup = "sis100_electron")
 
 
   // ----    Debug option   -------------------------------------------------
-  gDebug = 0;
+  gDebug = 1;
   // ------------------------------------------------------------------------
 
 
diff --git a/reco/detectors/mvd/CbmMvdHitfinder.cxx b/reco/detectors/mvd/CbmMvdHitfinder.cxx
index 626773fc18..343df77ec5 100644
--- a/reco/detectors/mvd/CbmMvdHitfinder.cxx
+++ b/reco/detectors/mvd/CbmMvdHitfinder.cxx
@@ -11,7 +11,7 @@
 
 #include "CbmMvdPoint.h"
 #include "SensorDataSheets/CbmMvdMimosa26AHR.h"
-//#include "plugins/tasks/CbmMvdSensorFindHitTask.h"
+#include "plugins/tasks/CbmMvdSensorFindHitTask.h"
 #include "CbmDigiManager.h"
 #include "plugins/tasks/CbmMvdSensorHitfinderTask.h"
 #include "tools/CbmMvdGeoHandler.h"
@@ -104,7 +104,7 @@ void CbmMvdHitfinder::Exec(Option_t* /*opt*/)
 
   fHits->Clear();
   fTimer.Start();
-  Int_t nTargetPlugin= fDetector->DetectPlugin(300);
+  Int_t nTargetPlugin= fDetector->DetectPlugin(fMyPluginID);
   Int_t nDigis=0;
   CbmMvdDigi* digi=0;
   CbmMvdCluster* cluster=0;
@@ -212,13 +212,25 @@ InitStatus CbmMvdHitfinder::Init()
   std::map<int, CbmMvdSensor*>& sensorMap = fDetector->GetSensorMap();
   UInt_t plugincount=fDetector->GetPluginCount();
 
-  for (auto itr = sensorMap.begin();
-              itr != sensorMap.end(); itr++) {
-    CbmMvdSensorHitfinderTask* hitfinderTask = new CbmMvdSensorHitfinderTask();
+  if (!fUseClusterfinder) {
+    for (auto itr = sensorMap.begin(); itr != sensorMap.end(); itr++) {
+      CbmMvdSensorFindHitTask* hitfinderTask = new CbmMvdSensorFindHitTask();
 
-    itr->second->AddPlugin(hitfinderTask);
-    itr->second->SetHitPlugin(plugincount);
+      itr->second->AddPlugin(hitfinderTask);
+      itr->second->SetHitPlugin(plugincount);
+      fMyPluginID=400;
+    }
   }
+  else {
+    for (auto itr = sensorMap.begin(); itr != sensorMap.end(); itr++) {
+      CbmMvdSensorHitfinderTask* hitfinderTask = new CbmMvdSensorHitfinderTask();
+
+      itr->second->AddPlugin(hitfinderTask);
+      itr->second->SetHitPlugin(plugincount);
+      fMyPluginID=300;
+    }
+  }
+
   fDetector->SetSensorArrayFilled(kTRUE);
   fDetector->SetPluginCount(plugincount+1);
   fHitfinderPluginNr = (UInt_t)(fDetector->GetPluginArraySize());
diff --git a/reco/detectors/mvd/CbmMvdHitfinder.h b/reco/detectors/mvd/CbmMvdHitfinder.h
index 32439479c7..3383a47d66 100644
--- a/reco/detectors/mvd/CbmMvdHitfinder.h
+++ b/reco/detectors/mvd/CbmMvdHitfinder.h
@@ -41,9 +41,10 @@ public:
   {
     fUseClusterfinder = clusterfinderFlag;
   };  //* enable use of external clusterfinder
-  void ShowDebugHistos() { fShowDebugHistos = kTRUE; }
+    void ShowDebugHistos() { fShowDebugHistos = kTRUE; }
 
 protected:
+  Int_t fMyPluginID;
 private:
   CbmMvdDetector* fDetector;
   CbmDigiManager* fDigiMan;  //!
diff --git a/reco/detectors/mvd/plugins/tasks/CbmMvdSensorClusterfinderTask.cxx b/reco/detectors/mvd/plugins/tasks/CbmMvdSensorClusterfinderTask.cxx
index 674a656a86..a4e5ca56e0 100644
--- a/reco/detectors/mvd/plugins/tasks/CbmMvdSensorClusterfinderTask.cxx
+++ b/reco/detectors/mvd/plugins/tasks/CbmMvdSensorClusterfinderTask.cxx
@@ -210,10 +210,7 @@ void CbmMvdSensorClusterfinderTask::Exec()
     }
 
     Int_t nDigis = fInputBuffer->GetEntriesFast();
-    cout << " -I- CbmMvdClusterTrask::Exec(): Received following number of digis: " << nDigis << endl;
-
-
-    nDigis             = fInputBuffer->GetEntriesFast();
+    //cout << " -I- CbmMvdClusterTrask::Exec(): Received following number of digis: " << nDigis << endl;
     TArrayS* pixelUsed = new TArrayS(nDigis);
 
     for (iDigi = 0; iDigi < nDigis; iDigi++) {
diff --git a/reco/detectors/mvd/plugins/tasks/CbmMvdSensorFindHitTask.cxx b/reco/detectors/mvd/plugins/tasks/CbmMvdSensorFindHitTask.cxx
index c1adff8716..6d3b3e41d2 100644
--- a/reco/detectors/mvd/plugins/tasks/CbmMvdSensorFindHitTask.cxx
+++ b/reco/detectors/mvd/plugins/tasks/CbmMvdSensorFindHitTask.cxx
@@ -204,9 +204,9 @@ void CbmMvdSensorFindHitTask::InitTask(CbmMvdSensor* mysensor)
 
   fSensor = mysensor;
   //cout << "-Start- " << GetName() << ": Initialisation of sensor " << fSensor->GetName() << endl;
-  fInputBuffer  = new TClonesArray("CbmMvdDigi", 10000);
-  fOutputBuffer = new TClonesArray("CbmMvdHit", 10000);
-  fHits         = new TClonesArray("CbmMvdHit", 10000);
+  fInputBuffer  = new TClonesArray("CbmMvdDigi", 100);
+  fOutputBuffer = new TClonesArray("CbmMvdHit", 100);
+  fHits         = new TClonesArray("CbmMvdHit", 100);
 
 
   //Add charge collection histograms
diff --git a/reco/detectors/mvd/plugins/tasks/CbmMvdSensorHitfinderTask.cxx b/reco/detectors/mvd/plugins/tasks/CbmMvdSensorHitfinderTask.cxx
index 23988ca9ea..a819bc5653 100644
--- a/reco/detectors/mvd/plugins/tasks/CbmMvdSensorHitfinderTask.cxx
+++ b/reco/detectors/mvd/plugins/tasks/CbmMvdSensorHitfinderTask.cxx
@@ -201,8 +201,8 @@ void CbmMvdSensorHitfinderTask::InitTask(CbmMvdSensor* mysensor)
 
   fSensor = mysensor;
   //cout << "-Start- " << GetName() << ": Initialisation of sensor " << fSensor->GetName() << endl;
-  fInputBuffer  = new TClonesArray("CbmMvdCluster", 10000);
-  fOutputBuffer = new TClonesArray("CbmMvdHit", 10000);
+  fInputBuffer  = new TClonesArray("CbmMvdCluster", 100);
+  fOutputBuffer = new TClonesArray("CbmMvdHit", 100);
 
 
   //Add charge collection histograms
diff --git a/reco/detectors/mvd/plugins/tasks/CbmMvdSensorHitfinderTask.h b/reco/detectors/mvd/plugins/tasks/CbmMvdSensorHitfinderTask.h
index f94476bc03..6b7815ec1a 100644
--- a/reco/detectors/mvd/plugins/tasks/CbmMvdSensorHitfinderTask.h
+++ b/reco/detectors/mvd/plugins/tasks/CbmMvdSensorHitfinderTask.h
@@ -71,6 +71,12 @@ public:
     inputSet = kTRUE;
   };
 
+  void SetInput(TObject* cluster)
+  {
+    new ((*fInputBuffer)[fInputBuffer->GetEntriesFast()]) CbmMvdCluster(*((CbmMvdCluster*) cluster));
+    inputSet = kTRUE;
+  };
+
   /** Accessors **/
   //Double_t GetSigmaX()        const { return fSigmaX;     };
 
-- 
GitLab