From d83e98a03a7b5f7446269e81685ac833e2b3ea16 Mon Sep 17 00:00:00 2001 From: Florian Uhlig <f.uhlig@gsi.de> Date: Tue, 17 Jan 2023 15:04:33 +0100 Subject: [PATCH] Add map to directly link detectorId to mvd sensor --- mvd/CbmMvdDetector.cxx | 19 +++++++++++++++++++ mvd/CbmMvdDetector.h | 6 ++++-- mvd/tools/CbmMvdGeoHandler.cxx | 3 ++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/mvd/CbmMvdDetector.cxx b/mvd/CbmMvdDetector.cxx index 560141e41e..75e5d5d308 100644 --- a/mvd/CbmMvdDetector.cxx +++ b/mvd/CbmMvdDetector.cxx @@ -26,6 +26,8 @@ #include "plugins/tasks/CbmMvdSensorTask.h" #include "tools/CbmMvdGeoHandler.h" +#include "CbmMvdDetectorId.h" + /// includes from FairRoot #include <Logger.h> @@ -65,6 +67,7 @@ CbmMvdDetector* CbmMvdDetector::Instance() CbmMvdDetector::CbmMvdDetector() : TNamed() , fSensorArray(nullptr) + , fSensorMap() , fSensorIDArray(nullptr) , fPluginCount(0) , foutput(nullptr) @@ -95,6 +98,7 @@ CbmMvdDetector::CbmMvdDetector() CbmMvdDetector::CbmMvdDetector(const char* name) : TNamed() , fSensorArray(new TClonesArray("CbmMvdSensor", 10)) + , fSensorMap() , fSensorIDArray(nullptr) , fPluginCount(0) , foutput(nullptr) @@ -160,6 +164,13 @@ void CbmMvdDetector::AddSensor(TString clearName, TString fullName, TString node sensor->SetDataSheet(sensorData); sensor->SetStation(stationNr); + // calculate the detectorId from the running sensor number + CbmMvdDetectorId tmp; + int detectorId = tmp.DetectorId(sensorNr); + + // Add sensor to SensorMap + fSensorMap[detectorId] = sensor; + Float_t misalignment[3], randArray[3]; // TRandom3* rand = new TRandom3(0); gRandom->RndmArray(3, randArray); @@ -347,11 +358,19 @@ void CbmMvdDetector::SetProduceNoise() } } //----------------------------------------------------------------------- +void CbmMvdDetector::SendInputToSensorPlugin(Int_t detectorid, Int_t nPlugin, TObject* input) +{ + fSensorMap[detectorid]->SendInputToPlugin(nPlugin,input); +} +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +/* void CbmMvdDetector::SendInputToSensorPlugin(Int_t nSensor, Int_t nPlugin, TObject* input) { CbmMvdSensor* sensor=(CbmMvdSensor*)fSensorArray->At(nSensor); sensor->SendInputToPlugin(nPlugin,input); } +*/ //----------------------------------------------------------------------- void CbmMvdDetector::SendInput(TClonesArray* input) { diff --git a/mvd/CbmMvdDetector.h b/mvd/CbmMvdDetector.h index 53bcf8a702..3f31836f08 100644 --- a/mvd/CbmMvdDetector.h +++ b/mvd/CbmMvdDetector.h @@ -59,7 +59,8 @@ public: /** Data interface */ void SendInput(TClonesArray* input); void SendInputNeutral(TClonesArray* input); - void SendInputToSensorPlugin(Int_t nSensor, Int_t nPlugin, TObject* input); +// void SendInputToSensorPlugin(Int_t nSensor, Int_t nPlugin, TObject* input); + void SendInputToSensorPlugin(Int_t detectorid, Int_t nPlugin, TObject* input); void SendInputDigis(CbmDigiManager* digiMan); void SendInputDigis(TClonesArray* digis); void SendInputDigisToHits(TClonesArray* digis); @@ -122,6 +123,7 @@ private: static CbmMvdSensorTyp fSensorTyp; TClonesArray* fSensorArray; + std::map<int, CbmMvdSensor*> fSensorMap; TClonesArray* fSensorIDArray; //Array of Sensor ID UInt_t fPluginCount; TClonesArray* foutput; @@ -152,7 +154,7 @@ private: CbmMvdDetector(const CbmMvdDetector&); CbmMvdDetector operator=(const CbmMvdDetector&); - ClassDef(CbmMvdDetector, 1); + ClassDef(CbmMvdDetector, 2); }; #endif diff --git a/mvd/tools/CbmMvdGeoHandler.cxx b/mvd/tools/CbmMvdGeoHandler.cxx index 9f6ae9a820..c52fca6a4c 100644 --- a/mvd/tools/CbmMvdGeoHandler.cxx +++ b/mvd/tools/CbmMvdGeoHandler.cxx @@ -633,8 +633,9 @@ void CbmMvdGeoHandler::FillStationMap() } } } - else + else { LOG(error) << "You tried to use an unsuported Geometry"; + } } //-------------------------------------------------------------------------- -- GitLab