diff --git a/MuonSpectrometer/MuonDigitization/MuonFastDigitization/src/MM_FastDigitizer.cxx b/MuonSpectrometer/MuonDigitization/MuonFastDigitization/src/MM_FastDigitizer.cxx
index fcc59733e263878ce9baaa694047f8c7c6c3afa6..811f2985b31b839edec0241f78f1820894034eac 100644
--- a/MuonSpectrometer/MuonDigitization/MuonFastDigitization/src/MM_FastDigitizer.cxx
+++ b/MuonSpectrometer/MuonDigitization/MuonFastDigitization/src/MM_FastDigitizer.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 //Gaudi - Core
@@ -15,7 +15,7 @@
 
 #include "MM_FastDigitizer.h"
 #include "MuonSimEvent/MM_SimIdToOfflineId.h"
-#include "MuonSimEvent/GenericMuonSimHitCollection.h"
+#include "MuonSimEvent/MMSimHitCollection.h"
 #include "MuonSimEvent/MicromegasHitIdHelper.h"
 
 #include "MuonReadoutGeometry/MuonDetectorManager.h"
@@ -44,9 +44,9 @@ using namespace Muon;
 /*******************************************************************************/ 
   MM_FastDigitizer::MM_FastDigitizer(const std::string& name, ISvcLocator* pSvcLocator)
 : AthAlgorithm(name, pSvcLocator) , m_activeStore(NULL) , m_detManager(NULL) , m_idHelper(NULL)
-  , m_file(NULL) , m_ntuple(NULL) , m_slx(0.) , m_sly(0.) , m_slz(0.) , m_dlx(0.) , m_dly(0.) , m_dlz(0.)
+  , m_file(NULL) , m_ntuple(NULL) , m_dlx(0.) , m_dly(0.) , m_dlz(0.)
   , m_sulx(0.) , m_suly(0.) , m_tsulx(0.) , m_tsuly(0.) , m_tsulz(0.) , m_stsulx(0.) , m_stsuly(0.) , m_stsulz(0.)
-  , m_ang(0.) , m_shift(0.) , m_resx(0.) , m_resy(0.) , m_resz(0.) , m_suresx(0.) , m_suresy(0.) , m_err(0.) , m_res(0.)
+  , m_ang(0.) , m_shift(0.) , m_suresx(0.) , m_suresy(0.) , m_err(0.) , m_res(0.)
   , m_pull(0.) , m_is(0) , m_seta(0) , m_sphi(0) , m_sml(0) , m_sl(0) , m_ss(0) , m_ieta(0) , m_iphi(0) , m_iml(0) , m_il(0)
   , m_ich(0) , m_istr(0) , m_exitcode(0) , m_mode(0) , m_pdg(0) , m_trkid(0) , m_gpx(0.) , m_gpy(0.) , m_gpz(0.)
   , m_gpr(0.) , m_gpp(0.) , m_dgpx(0.) , m_dgpy(0.) , m_dgpz(0.), m_dgpr(0.) , m_dgpp(0.) , m_tofCorrection(0.)
@@ -131,9 +131,6 @@ StatusCode MM_FastDigitizer::initialize() {
 
   m_file = new TFile("MM_plots.root","RECREATE");
   m_ntuple = new TTree("a","a");
-  m_ntuple->Branch("slx",&m_slx);
-  m_ntuple->Branch("sly",&m_sly);
-  m_ntuple->Branch("slz",&m_slz);
   m_ntuple->Branch("dlx",&m_dlx);
   m_ntuple->Branch("dly",&m_dly);
   m_ntuple->Branch("dlz",&m_dlz);
@@ -147,11 +144,8 @@ StatusCode MM_FastDigitizer::initialize() {
   m_ntuple->Branch("stsulz",&m_stsulz);
   m_ntuple->Branch("ang",&m_ang);
   m_ntuple->Branch("shift",&m_shift);
-  m_ntuple->Branch("resx",&m_resx);
-  m_ntuple->Branch("resy",&m_resy);
   m_ntuple->Branch("suresx",&m_suresx);
   m_ntuple->Branch("suresy",&m_suresy);
-  m_ntuple->Branch("resz",&m_resz);
   m_ntuple->Branch("err",&m_err);
   m_ntuple->Branch("res",&m_res);
   m_ntuple->Branch("pull",&m_pull);
@@ -214,7 +208,7 @@ StatusCode MM_FastDigitizer::execute() {
   // as the MMPrepDataContainer only allows const accesss, need a local vector as well.
   std::vector<MMPrepDataCollection*> localMMVec(m_idHelper->module_hash_max());
 
-  const DataHandle< GenericMuonSimHitCollection > collGMSH;
+  const DataHandle< MMSimHitCollection > collGMSH;
   if ( evtStore()->retrieve( collGMSH,m_inputObjectName ).isFailure()) {
     ATH_MSG_WARNING("No MM hits found in SG");
     return StatusCode::FAILURE;
@@ -228,26 +222,17 @@ StatusCode MM_FastDigitizer::execute() {
   std::map<Identifier,int> hitsPerChannel;
   int nhits = 0;
 
-  GenericMuonSimHitCollection::const_iterator iterMM;
-
-  const GenericMuonSimHit* previousHit = 0;
+  MMSimHitCollection::const_iterator iterMM;
 
   for (iterMM=collGMSH->begin();iterMM!=collGMSH->end();++iterMM) {
-    const GenericMuonSimHit& hit = *iterMM;
+    const MMSimHit& hit = *iterMM;
 
     // SimHits without energy loss are not recorded. 
     // not needed because of already done in sensitive detector
     // https://svnweb.cern.ch/trac/atlasoff/browser/MuonSpectrometer/MuonG4/MuonG4SD/trunk/src/MicromegasSensitiveDetector.cxx?rev=542333#L65
     // if(hit.depositEnergy()==0.) continue;
 
-    if( previousHit && abs(hit.particleEncoding())==13 && abs(previousHit->particleEncoding())==13 ) {
-      Amg::Vector3D diff = previousHit->localPosition() - hit.localPrePosition();
-      ATH_MSG_VERBOSE("second hit from a muon: prev " <<  previousHit->localPosition() << " current " << hit.localPrePosition() 
-		      << " diff " << diff );
-      if( diff.mag() < 0.1 ) continue;
-    }
-
-    m_globalHitTime = hit.globalpreTime();
+    m_globalHitTime = hit.globalTime();
     m_tofCorrection = hit.globalPosition().mag()/CLHEP::c_light;
     m_bunchTime = m_globalHitTime - m_tofCorrection;
     const float stripPropagationTime = 0.;
@@ -265,7 +250,7 @@ StatusCode MM_FastDigitizer::execute() {
     ATH_MSG_VERBOSE("MM hit: r " << hit.globalPosition().perp() << " z " << hit.globalPosition().z() << " mclink " << hit.particleLink() );
 
     //  convert simHit id to offline layer id; make sanity checks; retrieve the associated detector element.
-    int simId = hit.GenericId();
+    int simId = hit.MMId();
     Identifier layid = simToOffline.convert(simId);
 
     // sanity checks
@@ -388,9 +373,6 @@ StatusCode MM_FastDigitizer::execute() {
 
     std::string stName = m_idHelper->stationNameString(m_idHelper->stationName(layid));
     int isSmall = stName[2] == 'S';
-    m_slx = hit.localPosition().x();
-    m_sly = hit.localPosition().y();
-    m_slz = hit.localPosition().z();
     m_dlx = lpos.x();
     m_dly = lpos.y();
     m_sulx = posOnSurf.x();
@@ -403,9 +385,6 @@ StatusCode MM_FastDigitizer::execute() {
     m_stsulz = hitAfterTimeShiftOnSurface.z();
     m_ang = inAngle_XZ;
     m_shift  = shiftTimeOffset;
-    m_resx = hit.localPosition().x() - lpos.x();
-    m_resy = hit.localPosition().y() - lpos.y();
-    m_resz = hit.localPosition().z() - lpos.z();
     m_suresx = posOnSurf.x()-hitOnSurface.x();
     m_suresy = posOnSurf.y()-hitOnSurface.y();
     m_err  = -99999.; 
@@ -506,7 +485,6 @@ StatusCode MM_FastDigitizer::execute() {
     ATH_MSG_VERBOSE(" Calculated truth hitOnSurfaceGlobal: r " << hitOnSurfaceGlobal.perp() << " phi " << hitOnSurfaceGlobal.phi() << " z " << hitOnSurfaceGlobal.z());
     ATH_MSG_VERBOSE(" detEl: r " << repos.perp() << " phi " << repos.phi() << " z " << repos.z());
     ATH_MSG_VERBOSE(" Surface center: r " << surf.center().perp() << " phi " << surf.center().phi() << " z " << surf.center().z());
-    ATH_MSG_VERBOSE("Local hit in Det Element Frame: x " << hit.localPosition().x() << " y " << hit.localPosition().y() << " z " << hit.localPosition().z());
     ATH_MSG_DEBUG(" hit:  " << m_idHelperTool->toString(id) << " hitx " << posOnSurf.x() << " hitOnSurface.x() " << hitOnSurface.x() << " residual " << posOnSurf.x() - hitOnSurface.x()
 		  << " pull " << (posOnSurf.x() - hitOnSurface.x())/resolution );
     Amg::Vector3D CurrentHitInDriftGap = slpos;
@@ -592,7 +570,6 @@ StatusCode MM_FastDigitizer::execute() {
     m_ntuple->Fill();
     // OLD CODE ENDS HERE
 
-    previousHit = &hit;
   } 
 
   if( msgLvl(MSG::DEBUG) ){
diff --git a/MuonSpectrometer/MuonDigitization/MuonFastDigitization/src/MM_FastDigitizer.h b/MuonSpectrometer/MuonDigitization/MuonFastDigitization/src/MM_FastDigitizer.h
index d75c16fad84b8ec1144028b922fb687c1b241aa7..59801a2f9e5e4d4955cc7d766f76d99bcce6c757 100644
--- a/MuonSpectrometer/MuonDigitization/MuonFastDigitization/src/MM_FastDigitizer.h
+++ b/MuonSpectrometer/MuonDigitization/MuonFastDigitization/src/MM_FastDigitizer.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MUONDIGITIZATION_MM_FASTDIGITIZER_H
@@ -62,9 +62,6 @@ class MM_FastDigitizer : public AthAlgorithm {
   
   TFile* m_file;
   TTree* m_ntuple;
-  float  m_slx; // local position simhit in G4
-  float  m_sly;
-  float  m_slz;
   float  m_dlx;  //  local position simhit in GeoModel frame
   float  m_dly;
   float  m_dlz;
@@ -78,9 +75,6 @@ class MM_FastDigitizer : public AthAlgorithm {
   float  m_stsulz;
   float  m_ang; // local angel
   float  m_shift; // m_shift due to bunch offset 
-  float  m_resx; // residuals in local G4 - GeoModel
-  float  m_resy;
-  float  m_resz;
   float  m_suresx; // residuals g4 - RE stripPosition in tracking frame
   float  m_suresy;
   float  m_err;    // error
diff --git a/Simulation/Digitization/python/DigiOutput.py b/Simulation/Digitization/python/DigiOutput.py
index 5c5f562832d4c529fa5c3a424cba3856249a633f..0b4f1521e7f72d0ead983851028597fdcfe7a8f3 100644
--- a/Simulation/Digitization/python/DigiOutput.py
+++ b/Simulation/Digitization/python/DigiOutput.py
@@ -175,6 +175,7 @@ def getStreamRDO_ItemList(log):
             StreamRDO_ItemList+=["Muon::MM_RawDataContainer#*"]
             # the sensitive detector must not be removed w/o checking with the atlas-muon-nsw-sim-dev list
             StreamRDO_ItemList+=["GenericMuonSimHitCollection#MicromegasSensitiveDetector"]
+            StreamRDO_ItemList+=["MMSimHitCollection#MicromegasSensitiveDetector"]
     # LVL1 Emulation Output
     if DetFlags.simulateLVL1.LAr_on():
         if DetFlags.writeRDOPool.LAr_on():