diff --git a/mvd/CbmMvdDetector.cxx b/mvd/CbmMvdDetector.cxx index 560141e41ee3b66eed3464cfd7a6273ed595ed02..75e5d5d308a5faf1d2b0f70f9686514195bcb6e0 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 53bcf8a7021b754c096b60449c158dc6b9cb4cf0..3f31836f086c9800a7311831df44b5d568184761 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 9f6ae9a82086b4ed3fe23c27f4ddf01e6aeea195..c52fca6a4c99745db61d9c99dbbdbe559ce2781a 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"; + } } //--------------------------------------------------------------------------