diff --git a/mvd/CbmMvdDetector.cxx b/mvd/CbmMvdDetector.cxx
index d7c0ee9e092935d89d2dacd2f0a3a8bb2620c038..560141e41ee3b66eed3464cfd7a6273ed595ed02 100644
--- a/mvd/CbmMvdDetector.cxx
+++ b/mvd/CbmMvdDetector.cxx
@@ -265,6 +265,26 @@ void CbmMvdDetector::AddPlugin(CbmMvdSensorPlugin* plugin)
 
 //----------------------------------------------------------------------
 
+Int_t CbmMvdDetector::DetectPlugin(Int_t pluginID)
+{
+  // Detects the position of a plugin with a given Plugin-ID (set in the plugin implementation constructor) in the plugin-array of the sensors
+
+  Int_t nDigitizerPlugin=-1;
+
+  if (!fSensorArrayFilled) {cout << "-W - CbmMvdDetector::DetectPlugin: You tried to access sensor plugins while the detector is not initialized yet." << endl;  return -1;}
+  CbmMvdSensor* sensor=GetSensor(0);
+  TObjArray* pluginArray= sensor->GetPluginArray();
+
+  Int_t nPlugin=pluginArray->GetEntries();
+  for(Int_t i=0; i<nPlugin;i++) {
+    CbmMvdSensorPlugin* plugin= (CbmMvdSensorPlugin*) pluginArray->At(i);
+    // cout << "- I - CbmMvdDetector::DetectPlugin: PlugInID = " << plugin->GetPluginIDNumber() << " Position: "<< i << endl;
+    if (pluginID==plugin->GetPluginIDNumber()){return i;}
+  }
+
+
+ return -1;
+}
 
 //-----------------------------------------------------------------------
 void CbmMvdDetector::Init()
@@ -344,7 +364,6 @@ void CbmMvdDetector::SendInput(TClonesArray* input)
    *
    * **/
 
-
   CbmMvdPoint* point;
   Int_t nEntries = input->GetEntriesFast();
   Int_t nSensors = fSensorArray->GetEntriesFast();
@@ -357,7 +376,7 @@ void CbmMvdDetector::SendInput(TClonesArray* input)
       sensor = (CbmMvdSensor*) fSensorArray->At(k);
 
       if (point->GetDetectorID() == sensor->GetDetectorID()) {
-        sensor->SendInput(point);
+        sensor->SendInputToPlugin(sensor->GetDigiPlugin(),(TObject*) point);
         send = true;
       }
     }
diff --git a/mvd/CbmMvdDetector.h b/mvd/CbmMvdDetector.h
index 31cac62bc8ff6aacd5d338f670159b16f3318d1b..53bcf8a7021b754c096b60449c158dc6b9cb4cf0 100644
--- a/mvd/CbmMvdDetector.h
+++ b/mvd/CbmMvdDetector.h
@@ -73,10 +73,12 @@ public:
   TClonesArray* GetOutputCluster();  //khun
   TClonesArray* GetOutputArray(Int_t nPlugin);
   TClonesArray* GetSensorArray(){return fSensorArray;};
+  CbmMvdSensor* GetSensor(Int_t nSensor) {return (CbmMvdSensor*) fSensorArray->At(nSensor);}
   TClonesArray* GetSensorIDArray(){return fSensorIDArray;};
   // TClonesArray* GetClonesArray(Int_t dataLevel){ return 0;}
   Int_t GetSensorArraySize() { return (fSensorArray->GetEntriesFast()); }
-  UInt_t GetPluginArraySize() { return fPluginCount - 1; }
+  Int_t GetPluginArraySize() { return fPluginCount - 1; }
+  Int_t  DetectPlugin(Int_t pluginID);
 
 
   TClonesArray* GetCurrentEvent();
diff --git a/mvd/CbmMvdDigitizer.cxx b/mvd/CbmMvdDigitizer.cxx
index a8f0eeef0eea07a583db4a64166da3db0ce0c3f1..deb978ea94d8a1665fbb4a557c8280f1d5998517 100644
--- a/mvd/CbmMvdDigitizer.cxx
+++ b/mvd/CbmMvdDigitizer.cxx
@@ -270,6 +270,7 @@ InitStatus CbmMvdDigitizer::Init()
       return kERROR;
     }
   }
+
   CbmMvdSensorDigitizerTask* digiTask = new CbmMvdSensorDigitizerTask();
 
   fDetector->AddPlugin(digiTask);
@@ -307,7 +308,8 @@ InitStatus CbmMvdDigitizer::ReInit() { return kSUCCESS; }
 
 // -----   Virtual method Finish   -----------------------------------------
 void CbmMvdDigitizer::Finish()
-{
+{ //Int_t i = DetectPlugin (100);
+  //cout << "CbmMvdDigitizer::Finish() Autodetect: " << i <<" Manual Detect " << fDigiPluginNr << endl;
   // cout<< endl << "finishing" << endl;
   fDetector->Finish();
   PrintParameters();
@@ -336,6 +338,24 @@ void CbmMvdDigitizer::ResetArrays()
 void CbmMvdDigitizer::GetMvdGeometry() {}
 // -------------------------------------------------------------------------
 
+Int_t CbmMvdDigitizer::DetectPlugin(Int_t pluginID)
+{ Int_t nDigitizerPlugin=-1;
+
+  CbmMvdDetector* detector= CbmMvdDetector::Instance();
+  return detector->DetectPlugin(pluginID);
+  /*CbmMvdSensor* sensor=detector->GetSensor(0);
+  TObjArray* pluginArray= sensor->GetPluginArray();
+
+  Int_t nPlugin=pluginArray->GetEntries();
+  for(Int_t i=0; i<nPlugin;i++) {
+    CbmMvdSensorPlugin* plugin= (CbmMvdSensorPlugin*) pluginArray->At(i);
+    cout << "CbmMvdDigitizer::DetectDigitizerPlugin: PlugInID = " << plugin->GetPluginIDNumber() << endl;
+    if (pluginID==plugin->GetPluginIDNumber()){return i;}
+  }
+
+
+ return -1;*/
+}
 
 // -----   Private method PrintParameters   --------------------------------
 void CbmMvdDigitizer::PrintParameters()
diff --git a/mvd/CbmMvdDigitizer.h b/mvd/CbmMvdDigitizer.h
index c5ea494d58f0f1cdfb8a1e0114855f8956a7861c..9be5dea481b1ce460ceffe6f4da3303feddd5aa8 100644
--- a/mvd/CbmMvdDigitizer.h
+++ b/mvd/CbmMvdDigitizer.h
@@ -66,6 +66,7 @@ public:
   void ShowDebugHistograms() { fShowDebugHistos = kTRUE; }
 
   void SetProduceNoise() { fNoiseSensors = kTRUE; };
+  Int_t DetectPlugin(Int_t pluginID);
 
 
   /** @brief Clear data arrays **/
@@ -92,7 +93,7 @@ private:
 
   std::pair<Float_t, Int_t> fPerformanceDigi;
 
-  UInt_t fDigiPluginNr;
+  Int_t fDigiPluginNr;
 
   Double_t fFakeRate;  // Fake hit rate
   Int_t fNPileup;      // Number of pile-up background events
diff --git a/mvd/CbmMvdSensor.h b/mvd/CbmMvdSensor.h
index f93f9ecb79a8c1b841d44f94c118a1772c1b38f3..15678fb6061471496a29dab3098d91a5afe04853 100644
--- a/mvd/CbmMvdSensor.h
+++ b/mvd/CbmMvdSensor.h
@@ -93,6 +93,7 @@ public:
   Int_t GetDigiPlugin() const { return fDigiPlugin; };
   Int_t GetHitPlugin() const { return fHitPlugin; };
   Int_t GetClusterPlugin() const { return fClusterPlugin; }
+  TObjArray* GetPluginArray() {return fPluginArray;}
 
   void SetDigiPlugin(const Int_t& nPlugin) { fDigiPlugin = nPlugin; };
   void SetHitPlugin(const Int_t& nPlugin) { fHitPlugin = nPlugin; };
diff --git a/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx b/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx
index fadbfc5680eafdcecefa855e756b0890e73f5db1..9f3abbe13cd5077de8ee512478b2212e5fe097af 100644
--- a/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx
+++ b/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx
@@ -155,7 +155,7 @@ CbmMvdSensorDigitizerTask::CbmMvdSensorDigitizerTask()
 {
   fRandGen.SetSeed(2736);
   fproduceNoise = kFALSE;
-  fPluginIDNumber= 00100;
+  fPluginIDNumber= 100;
 }
 // -------------------------------------------------------------------------
 
@@ -256,7 +256,7 @@ CbmMvdSensorDigitizerTask::CbmMvdSensorDigitizerTask(Int_t iMode)
   , h_LengthVsEloss(NULL)
   , h_ElossVsMomIn(NULL)
 
-{ fPluginIDNumber= 00100;
+{ fPluginIDNumber= 100;
   cout << "Starting CbmMvdSensorDigitizerTask::CbmMvdSensorDigitizerTask() " << endl;
 
   fRandGen.SetSeed(2736);
@@ -386,6 +386,13 @@ void CbmMvdSensorDigitizerTask::SetInput(CbmMvdPoint* point)
 
   new ((*fInputPoints)[fInputPoints->GetEntriesFast()]) CbmMvdPoint(*((CbmMvdPoint*) point));
 }
+//-----------------------------------------------------------------------------
+
+void CbmMvdSensorDigitizerTask::SetInput(TObject* point)
+{
+
+  new ((*fInputPoints)[fInputPoints->GetEntriesFast()]) CbmMvdPoint(*((CbmMvdPoint*) point));
+}
 
 
 // -------------- public method ExecChain   ------------------------------------
diff --git a/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.h b/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.h
index 9984b5709926e0b130e81a1c7185fa169b9a0d4d..026ab52cef0e161d444a313d5b3aba77f2bb569e 100644
--- a/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.h
+++ b/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.h
@@ -67,6 +67,7 @@ public:
   /** fill buffer **/
   void SetInputArray(TClonesArray* inputStream);
   void SetInput(CbmMvdPoint* point);
+  void SetInput(TObject*); //overwrite
 
   /** Execute **/
   void Exec();