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";
+  }
 }
 //--------------------------------------------------------------------------