From b872dcccd3a3894289ff2444e68d06d2b6ccaa13 Mon Sep 17 00:00:00 2001 From: Florian Uhlig <f.uhlig@gsi.de> Date: Wed, 18 Jan 2023 11:11:09 +0100 Subject: [PATCH] Move AddPlugins from MvdDetector to tasks Up to now the CbmMvdDetector class has dependencies to all plugin classes. This prevents a restructering of the mvd code. With this commit the plugins are added to the sensors from the tasks. --- mvd/CbmMvd.h | 2 +- mvd/CbmMvdClusterfinder.cxx | 16 +++++++-- mvd/CbmMvdDetector.cxx | 71 ++++++++++++------------------------- mvd/CbmMvdDigiToHit.cxx | 15 ++++++-- mvd/CbmMvdDigitizer.cxx | 2 +- mvd/CbmMvdDigitizerTB.cxx | 15 ++++++-- mvd/CbmMvdHitfinder.cxx | 25 +++++++------ 7 files changed, 78 insertions(+), 68 deletions(-) diff --git a/mvd/CbmMvd.h b/mvd/CbmMvd.h index a377ddc998..f6dbbc68b5 100644 --- a/mvd/CbmMvd.h +++ b/mvd/CbmMvd.h @@ -19,7 +19,7 @@ #define CBMMVD_H 1 -#include "SensorDataSheets/CbmMvdMimosa26AHR.h" +//#include "SensorDataSheets/CbmMvdMimosa26AHR.h" #include "FairDetector.h" diff --git a/mvd/CbmMvdClusterfinder.cxx b/mvd/CbmMvdClusterfinder.cxx index 9b566b3c89..4e17674ba2 100644 --- a/mvd/CbmMvdClusterfinder.cxx +++ b/mvd/CbmMvdClusterfinder.cxx @@ -158,10 +158,22 @@ InitStatus CbmMvdClusterfinder::Init() LOG(fatal) << "Geometry couldn't be loaded from file. No MVD digitizer available."; } - CbmMvdSensorClusterfinderTask* clusterTask = new CbmMvdSensorClusterfinderTask(); - fDetector->AddPlugin(clusterTask); + // Add the digitizer plugin to all sensors + std::map<int, CbmMvdSensor*>& sensorMap = fDetector->GetSensorMap(); + UInt_t plugincount=fDetector->GetPluginCount(); + + for (auto itr = sensorMap.begin(); + itr != sensorMap.end(); itr++) { + CbmMvdSensorClusterfinderTask* clusterTask = new CbmMvdSensorClusterfinderTask(); + + itr->second->AddPlugin(clusterTask); + itr->second->SetDigiPlugin(plugincount); + } + fDetector->SetSensorArrayFilled(kTRUE); + fDetector->SetPluginCount(plugincount+1); fClusterPluginNr = (UInt_t)(fDetector->GetPluginArraySize()); + if (fShowDebugHistos) fDetector->ShowDebugHistos(); fDetector->Init(); diff --git a/mvd/CbmMvdDetector.cxx b/mvd/CbmMvdDetector.cxx index 21c151ed82..28ea7cd6cc 100644 --- a/mvd/CbmMvdDetector.cxx +++ b/mvd/CbmMvdDetector.cxx @@ -10,23 +10,27 @@ #include "CbmMvdDetector.h" /// includes from CbmRoot +#include "CbmDigiManager.h" +#include "CbmMvdDetectorId.h" #include "CbmMvdDigi.h" #include "CbmMvdSensor.h" #include "plugins/CbmMvdSensorPlugin.h" -#include "plugins/buffers/CbmMvdSensorBuffer.h" -#include "plugins/buffers/CbmMvdSensorFrameBuffer.h" -#include "plugins/buffers/CbmMvdSensorTrackingBuffer.h" -#include "plugins/tasks/CbmMvdSensorClusterfinderTask.h" //khun -#include "plugins/tasks/CbmMvdSensorDigiToHitTask.h" -#include "plugins/tasks/CbmMvdSensorDigitizerTBTask.h" -//#include "plugins/tasks/CbmMvdSensorDigitizerTask.h" -//#include "plugins/tasks/CbmMvdSensorFindHitTask.h" -#include "CbmDigiManager.h" -#include "plugins/tasks/CbmMvdSensorHitfinderTask.h" //khun #include "plugins/tasks/CbmMvdSensorTask.h" #include "tools/CbmMvdGeoHandler.h" -#include "CbmMvdDetectorId.h" + +// #include "plugins/buffers/CbmMvdSensorBuffer.h" +// #include "plugins/buffers/CbmMvdSensorFrameBuffer.h" +// #include "plugins/buffers/CbmMvdSensorTrackingBuffer.h" + +// #include "plugins/tasks/CbmMvdSensorClusterfinderTask.h" //khun +// #include "plugins/tasks/CbmMvdSensorDigiToHitTask.h" +// #include "plugins/tasks/CbmMvdSensorDigitizerTBTask.h" +// #include "plugins/tasks/CbmMvdSensorDigitizerTask.h" +// #include "plugins/tasks/CbmMvdSensorFindHitTask.h" +// #include "plugins/tasks/CbmMvdSensorHitfinderTask.h" //khun + + /// includes from FairRoot #include <Logger.h> @@ -35,6 +39,7 @@ #include "TGeoBBox.h" #include "TGeoMatrix.h" #include "TGeoVolume.h" +#include "TRandom.h" #include "TString.h" /// includes from c @@ -195,12 +200,12 @@ void CbmMvdDetector::AddPlugin(CbmMvdSensorPlugin* plugin) CbmMvdSensor* sensor; Int_t nSensors = fSensorArray->GetEntriesFast(); - const TString digitizername = "CbmMvdSensorDigitizerTask"; + const TString digitizername = "CbmMvdSensorDigitizerTask"; //done const TString digitizerTBname = "CbmMvdSensorDigitizerTBTask"; // const TString findername = "CbmMvdSensorFindHitTask"; //const TString framename = "CbmMvdSensorFrameBuffer"; //const TString trackingname = "CbmMvdSensorTrackingBuffer"; - const TString clustername = "CbmMvdSensorClusterfinderTask"; //khun + const TString clustername = "CbmMvdSensorClusterfinderTask"; //khun //done const TString hitname = "CbmMvdSensorHitfinderTask"; //khun const TString digitohitname = "CbmMvdSensorDigiToHitTask"; @@ -211,54 +216,22 @@ void CbmMvdDetector::AddPlugin(CbmMvdSensorPlugin* plugin) if (plugin->ClassName() == digitizername) { LOG(fatal) << "Should never come here. Tasks are now added in CbmMvdDigitizer class"; -/* - CbmMvdSensorDigitizerTask* digiTask = new CbmMvdSensorDigitizerTask(); - sensor = (CbmMvdSensor*) fSensorArray->At(i); - sensor->AddPlugin(digiTask); - sensor->SetDigiPlugin(fPluginCount); - - //cout << "Adding Task CbmMvdSensorDigitizerTask at Sensor " << sensor->GetName() << endl; -*/ } else if (plugin->ClassName() == digitizerTBname) { - CbmMvdSensorDigitizerTBTask* digiTask = new CbmMvdSensorDigitizerTBTask(); - sensor = (CbmMvdSensor*) fSensorArray->At(i); - sensor->AddPlugin(digiTask); - sensor->SetDigiPlugin(fPluginCount); - - //cout << "Adding Task CbmMvdSensorDigitizerTask at Sensor " << sensor->GetName() << endl; - /* } else if (plugin->ClassName() == findername) { - CbmMvdSensorFindHitTask* findTask = new CbmMvdSensorFindHitTask(); - sensor = (CbmMvdSensor*) fSensorArray->At(i); - sensor->AddPlugin(findTask); - sensor->SetHitPlugin(fPluginCount); - // cout << "Adding Task CbmMvdSensorFindHitTask at Sensor " << sensor->GetName() << endl; -*/ + LOG(fatal) << "Should never come here. Tasks are now added in CbmMvdDigitizerTB class"; } //Re-enable cluster and hit finder in addition to khun else if (plugin->ClassName() == clustername) { - CbmMvdSensorClusterfinderTask* clusterTask = new CbmMvdSensorClusterfinderTask(); - sensor = (CbmMvdSensor*) fSensorArray->At(i); - sensor->AddPlugin(clusterTask); - sensor->SetClusterPlugin(fPluginCount); - // cout << "Adding Task CbmMvdSensorClusterfinderTask at Sensor " << sensor->GetName() << endl; + LOG(fatal) << "Should never come here. Tasks are now added in CbmMvdClusterfinder class"; } else if (plugin->ClassName() == hitname) { - CbmMvdSensorHitfinderTask* hitTask = new CbmMvdSensorHitfinderTask(); - sensor = (CbmMvdSensor*) fSensorArray->At(i); - sensor->AddPlugin(hitTask); - sensor->SetHitPlugin(fPluginCount); - // cout << "Adding Task CbmMvdSensorHitfinderTask at Sensor " << sensor->GetName() << endl; + LOG(fatal) << "Should never come here. Tasks are now added in CbmMvdHitfinder class"; } //end: re-enable cluster and hit finder in addition to khun else if (plugin->ClassName() == digitohitname) { - CbmMvdSensorDigiToHitTask* digitohitTask = new CbmMvdSensorDigiToHitTask(); - sensor = (CbmMvdSensor*) fSensorArray->At(i); - sensor->AddPlugin(digitohitTask); - sensor->SetHitPlugin(fPluginCount); - // cout << "Adding Task CbmMvdSensorClusterfinderTask at Sensor " << sensor->GetName() << endl; + LOG(fatal) << "Should never come here. Tasks are now added in CbmMvdDigiToHit class"; } else { cout << endl << "task not included yet, adding standart task." << endl; diff --git a/mvd/CbmMvdDigiToHit.cxx b/mvd/CbmMvdDigiToHit.cxx index b40b9cd2c4..955ca07e9d 100644 --- a/mvd/CbmMvdDigiToHit.cxx +++ b/mvd/CbmMvdDigiToHit.cxx @@ -149,10 +149,21 @@ InitStatus CbmMvdDigiToHit::Init() LOG(fatal) << "Geometry couldn't be loaded from file. No MVD digitizer available."; } - CbmMvdSensorDigiToHitTask* hitTask = new CbmMvdSensorDigiToHitTask(); + // Add the digitizer plugin to all sensors + std::map<int, CbmMvdSensor*>& sensorMap = fDetector->GetSensorMap(); + UInt_t plugincount=fDetector->GetPluginCount(); - fDetector->AddPlugin(hitTask); + for (auto itr = sensorMap.begin(); + itr != sensorMap.end(); itr++) { + CbmMvdSensorDigiToHitTask* hitTask = new CbmMvdSensorDigiToHitTask(); + + itr->second->AddPlugin(hitTask); + itr->second->SetDigiPlugin(plugincount); + } + fDetector->SetSensorArrayFilled(kTRUE); + fDetector->SetPluginCount(plugincount+1); fHitPluginNr = (UInt_t)(fDetector->GetPluginArraySize()); + if (fShowDebugHistos) fDetector->ShowDebugHistos(); fDetector->Init(); diff --git a/mvd/CbmMvdDigitizer.cxx b/mvd/CbmMvdDigitizer.cxx index cbb8e4668b..bc2c46ffbe 100644 --- a/mvd/CbmMvdDigitizer.cxx +++ b/mvd/CbmMvdDigitizer.cxx @@ -14,7 +14,7 @@ #include "CbmMvdDigi.h" #include "CbmMvdPileupManager.h" #include "CbmMvdPoint.h" -#include "SensorDataSheets/CbmMvdMimosa26AHR.h" +//#include "SensorDataSheets/CbmMvdMimosa26AHR.h" #include "plugins/tasks/CbmMvdSensorDigitizerTask.h" #include "tools/CbmMvdGeoHandler.h" diff --git a/mvd/CbmMvdDigitizerTB.cxx b/mvd/CbmMvdDigitizerTB.cxx index 3c011806c4..451ed9095d 100644 --- a/mvd/CbmMvdDigitizerTB.cxx +++ b/mvd/CbmMvdDigitizerTB.cxx @@ -138,10 +138,21 @@ InitStatus CbmMvdDigitizerTB::Init() fDetector = CbmMvdDetector::Instance(); - CbmMvdSensorDigitizerTBTask* digiTask = new CbmMvdSensorDigitizerTBTask(); + // Add the digitizer plugin to all sensors + std::map<int, CbmMvdSensor*>& sensorMap = fDetector->GetSensorMap(); + UInt_t plugincount=fDetector->GetPluginCount(); - fDetector->AddPlugin(digiTask); + for (auto itr = sensorMap.begin(); + itr != sensorMap.end(); itr++) { + CbmMvdSensorDigitizerTBTask* digiTask = new CbmMvdSensorDigitizerTBTask(); + + itr->second->AddPlugin(digiTask); + itr->second->SetDigiPlugin(plugincount); + } + fDetector->SetSensorArrayFilled(kTRUE); + fDetector->SetPluginCount(plugincount+1); fDigiPluginNr = (UInt_t)(fDetector->GetPluginArraySize()); + fDetector->Init(); // Screen output diff --git a/mvd/CbmMvdHitfinder.cxx b/mvd/CbmMvdHitfinder.cxx index 2664b764cd..00205b6033 100644 --- a/mvd/CbmMvdHitfinder.cxx +++ b/mvd/CbmMvdHitfinder.cxx @@ -203,19 +203,22 @@ InitStatus CbmMvdHitfinder::Init() fDetector = CbmMvdDetector::Instance(); - // if(!useClusterfinder) - // { - // CbmMvdSensorFindHitTask* HitfinderTask = new CbmMvdSensorFindHitTask(); - // fDetector->AddPlugin(HitfinderTask); - // } - // else - // { - CbmMvdSensorHitfinderTask* HitfinderTask = new CbmMvdSensorHitfinderTask(); - fDetector->AddPlugin(HitfinderTask); - cout << endl << "running with external clusterfinder" << endl; - // } + // Add the digitizer plugin to all sensors + 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(); + + itr->second->AddPlugin(hitfinderTask); + itr->second->SetDigiPlugin(plugincount); + } + fDetector->SetSensorArrayFilled(kTRUE); + fDetector->SetPluginCount(plugincount+1); fHitfinderPluginNr = (UInt_t)(fDetector->GetPluginArraySize()); + if (fShowDebugHistos) fDetector->ShowDebugHistos(); fDetector->Init(); -- GitLab