diff --git a/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py b/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py
index 2a543a646710c73f37fc045be0a1a318266fbce7..a57a588c9e6e08776b005cf88d22601e68ed4d4d 100755
--- a/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py
+++ b/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py
@@ -280,7 +280,7 @@ def TrigMufastHypoToolwORFromDict( chainDict ):
     tool.EtaBinsEC       = [0, 1.9, 2.1, 9.9]
     tool.DRThresEC       = [0.06, 0.05, 0.05]
     tool.MassThresEC     = [0.20, 0.15, 0.10]
-    addMonitoring( tool, TrigMufastHypoMonitoring, 'TrigMufastHypoTool', chainDict['chainName'] )
+    addMonitoring( tool, TrigL2MuonOverlapRemoverMonitoringMufast, 'TrigMufastHypoTool', chainDict['chainName'] )
 
     return tool
 
diff --git a/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMonitoringMT.py b/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMonitoringMT.py
index 8a74ac1ec0d6005d32be212fc98e18aafb97fb82..d012fc170ec7215393b7c157b1b5595eb3ace675 100755
--- a/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMonitoringMT.py
+++ b/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMonitoringMT.py
@@ -25,7 +25,7 @@ class TrigMufastHypoMonitoring(GenericMonitoringTool):
         self.defineHistogram('XatBe', type='TH1F', path='EXPERT', title="DCA along X; X (cm)",
                              xbins=100, xmin=-1000, xmax=1000)
 
-class TrigL2MuonOverlapRemoverMonitoringMufast(GenericMonitoringTool):
+class TrigL2MuonOverlapRemoverMonitoringMufast(TrigMufastHypoMonitoring):
     def __init__ (self, name):
         super(TrigL2MuonOverlapRemoverMonitoringMufast, self).__init__(name)
 
diff --git a/Trigger/TrigHypothesis/TrigMuonHypoMT/src/TrigMufastHypoTool.cxx b/Trigger/TrigHypothesis/TrigMuonHypoMT/src/TrigMufastHypoTool.cxx
index 4b084bebeede5a40987683fd49a45682751395d4..c24297f1189bd1d682b3c29ab3877fffbf8f2874 100644
--- a/Trigger/TrigHypothesis/TrigMuonHypoMT/src/TrigMufastHypoTool.cxx
+++ b/Trigger/TrigHypothesis/TrigMuonHypoMT/src/TrigMufastHypoTool.cxx
@@ -426,27 +426,27 @@ StatusCode TrigMufastHypoTool::applyOverlapRemoval(std::vector<TrigMufastHypoToo
 
   if ( numMuon == 0) {
     ATH_MSG_DEBUG( "No positive previous hypo decision. Not need overlap removal." );
-    // auto mufastNrAllEVs     = Monitored::Scalar("NrAllEVs", -9999.);
-    // auto mufastNrActiveEVs  = Monitored::Scalar("NrActiveEVs", -9999.);
-    // auto monitorIt          = Monitored::Group(m_monTool, mufastNrAllEVs, mufastNrActiveEVs);
-    // mufastNrActiveEVs = numMuon;
-    // mufastNrAllEVs = numMuon;
+    auto mufastNrAllEVs     = Monitored::Scalar("NrAllEVs", -9999.);
+    auto mufastNrActiveEVs  = Monitored::Scalar("NrActiveEVs", -9999.);
+    auto monitorIt          = Monitored::Group(m_monTool, mufastNrAllEVs, mufastNrActiveEVs);
+    mufastNrActiveEVs = numMuon;
+    mufastNrAllEVs = numMuon;
     return StatusCode::SUCCESS;
   }
   else if ( numMuon == 1 ) {
     ATH_MSG_DEBUG("Number of muon event = " << numMuon );
     ATH_MSG_DEBUG("no overlap Removal necessary. exitting with all EventViews active." );
-    // auto mufastNrAllEVs     = Monitored::Scalar("NrAllEVs", -9999.);
-    // auto mufastNrActiveEVs  = Monitored::Scalar("NrActiveEVs", -9999.);
-    // auto monitorIt          = Monitored::Group(m_monTool, mufastNrAllEVs, mufastNrActiveEVs);
-    // mufastNrActiveEVs = numMuon;
-    // mufastNrAllEVs = numMuon;
+    auto mufastNrAllEVs     = Monitored::Scalar("NrAllEVs", -9999.);
+    auto mufastNrActiveEVs  = Monitored::Scalar("NrActiveEVs", -9999.);
+    auto monitorIt          = Monitored::Group(m_monTool, mufastNrAllEVs, mufastNrActiveEVs);
+    mufastNrActiveEVs = numMuon;
+    mufastNrAllEVs = numMuon;
     return StatusCode::SUCCESS;
   } else {
     ATH_MSG_DEBUG("Number of muon event = " << numMuon );
-    // auto mufastNrAllEVs  = Monitored::Scalar("NrAllEVs", -9999.);
-    // auto monitorIt       = Monitored::Group(m_monTool, mufastNrAllEVs);
-    // mufastNrAllEVs = numMuon;
+    auto mufastNrAllEVs  = Monitored::Scalar("NrAllEVs", -9999.);
+    auto monitorIt       = Monitored::Group(m_monTool, mufastNrAllEVs);
+    mufastNrAllEVs = numMuon;
     ATH_CHECK(checkOverlap(toolInput));
     return StatusCode::SUCCESS;
   }
@@ -477,9 +477,9 @@ StatusCode TrigMufastHypoTool::checkOverlap(std::vector<TrigMufastHypoTool::Muon
 	  ATH_MSG_DEBUG( "inconsistentency in muFast overlap removal for more than two objects" );
 	  ATH_MSG_DEBUG( "two objects are judged as different but both were already marked as identical by someone else as: " );
 	  ATH_MSG_DEBUG( "i/j/result[i]/result[j]=" << i << " / " << j << " / " << mufastResult[i] << " / "  << mufastResult[j] );
-	  // auto mufastError  = Monitored::Scalar("MufastError", -9999.);
-	  // auto monitorIt    = Monitored::Group(m_monTool, mufastError);
-	  // mufastError = TrigL2MuonOverlapRemoverToolConsts::errorCode_inconsistent_overlap1;
+	  auto mufastError  = Monitored::Scalar("MufastError", -9999.);
+	  auto monitorIt    = Monitored::Group(m_monTool, mufastError);
+	  mufastError = TrigMufastHypoToolConsts::errorCode_inconsistent_overlap1;
 	  errorWhenIdentifyingOverlap = true;
 	}
       }
@@ -488,9 +488,9 @@ StatusCode TrigMufastHypoTool::checkOverlap(std::vector<TrigMufastHypoTool::Muon
 	  ATH_MSG_DEBUG( "inconsistentency in muFast overlap removal for more than two objects" );
 	  ATH_MSG_DEBUG( "two objects are judged as overlap but only either was already marked as overlap to someone else: " );
 	  ATH_MSG_DEBUG( "i/j/result[i]/result[j]=" << i << " / " << j << " / " << mufastResult[i] << " / "  << mufastResult[j] );
-	  // auto mufastError  = Monitored::Scalar("MufastError", -9999.);
-	  // auto monitorIt    = Monitored::Group(m_monTool, mufastError);
-	  // mufastError = TrigL2MuonOverlapRemoverToolConsts::errorCode_inconsistent_overlap2;
+	  auto mufastError  = Monitored::Scalar("MufastError", -9999.);
+	  auto monitorIt    = Monitored::Group(m_monTool, mufastError);
+	  mufastError = TrigMufastHypoToolConsts::errorCode_inconsistent_overlap2;
 	  errorWhenIdentifyingOverlap = true;
 	}
 	ATH_MSG_DEBUG("   judged as: overlapped objects");
@@ -508,9 +508,9 @@ StatusCode TrigMufastHypoTool::checkOverlap(std::vector<TrigMufastHypoTool::Muon
 
   if( errorWhenIdentifyingOverlap ) {
       ATH_MSG_WARNING( "error when resolving overlap. exitting with all EVs active..." );
-      // auto mufastNrActiveEVs  = Monitored::Scalar("NrActiveEVs", -9999.);
-      // auto monitorIt          = Monitored::Group(m_monTool, mufastNrActiveEVs);
-      // mufastNrActiveEVs = numMuon;
+      auto mufastNrActiveEVs  = Monitored::Scalar("NrActiveEVs", -9999.);
+      auto monitorIt          = Monitored::Group(m_monTool, mufastNrActiveEVs);
+      mufastNrActiveEVs = numMuon;
       // for(i=0; i<numMuon; i++) TrigCompositeUtils::addDecisionID( m_decisionId, toolInput[i].decision );
       return StatusCode::SUCCESS;
    }
@@ -531,9 +531,9 @@ StatusCode TrigMufastHypoTool::checkOverlap(std::vector<TrigMufastHypoTool::Muon
     ATH_CHECK(chooseBestMuon(input, mufastResult));
   } else {
     ATH_MSG_DEBUG( "no overlap identified. exitting with all EventViews active" );
-    // auto mufastNrActiveEVs  = Monitored::Scalar("NrActiveEVs", -9999.);
-    // auto monitorIt          = Monitored::Group(m_monTool, mufastNrActiveEVs);
-    // mufastNrActiveEVs = n_uniqueMuon;
+    auto mufastNrActiveEVs  = Monitored::Scalar("NrActiveEVs", -9999.);
+    auto monitorIt          = Monitored::Group(m_monTool, mufastNrActiveEVs);
+    mufastNrActiveEVs = n_uniqueMuon;
     // for(i=0; i<numMuon; i++) uniqueMuon.emplace_back(input[i]);
   }
 
@@ -547,12 +547,12 @@ bool TrigMufastHypoTool::isOverlap(const xAOD::L2StandAloneMuon *mf1,
 				   const xAOD::L2StandAloneMuon *mf2) const
 {
 
-  // auto mufastDR             = Monitored::Scalar("DR", -9999.);
-  // auto mufastMass           = Monitored::Scalar("Mass", -9999.);
-  // auto mufastDRLog10        = Monitored::Scalar("DRLog10", -9999.);
-  // auto mufastMassLog10      = Monitored::Scalar("MassLog10", -9999.);
+  auto mufastDR             = Monitored::Scalar("DR", -9999.);
+  auto mufastMass           = Monitored::Scalar("Mass", -9999.);
+  auto mufastDRLog10        = Monitored::Scalar("DRLog10", -9999.);
+  auto mufastMassLog10      = Monitored::Scalar("MassLog10", -9999.);
 
-  // auto monitorIt       = Monitored::Group(m_monTool, mufastDR, mufastMass, mufastDRLog10, mufastMassLog10);
+  auto monitorIt       = Monitored::Group(m_monTool, mufastDR, mufastMass, mufastDRLog10, mufastMassLog10);
 
   ATH_MSG_DEBUG( "   ...mF1: pt/eta/phi=" << mf1->pt() << " / " << mf1->etaMS() << " / " << mf1->phiMS() );
   ATH_MSG_DEBUG( "   ...mF2: pt/eta/phi=" << mf2->pt() << " / " << mf2->etaMS() << " / " << mf2->phiMS() );
@@ -620,11 +620,11 @@ bool TrigMufastHypoTool::isOverlap(const xAOD::L2StandAloneMuon *mf1,
   bool dRisClose = false;
   double dr = dR(mf1->etaMS(),mf1->phiMS(),mf2->etaMS(),mf2->phiMS());
 
-  // // for monitoring
-  // mufastDR = dr;
-  // const double monitor_limit = 1e-4;
-  // double dr_mon = (dr>=monitor_limit) ? dr : monitor_limit;
-  // mufastDRLog10 = log10(dr_mon);
+  // for monitoring
+  mufastDR = dr;
+  const double monitor_limit = 1e-4;
+  double dr_mon = (dr>=monitor_limit) ? dr : monitor_limit;
+  mufastDRLog10 = log10(dr_mon);
 
   if( m_requireDR ) {
     if( dr < dRThres ) dRisClose = true;
@@ -636,10 +636,10 @@ bool TrigMufastHypoTool::isOverlap(const xAOD::L2StandAloneMuon *mf1,
   bool massIsClose = false;
   double mass = invMass(TRACK_MASS,mf1->pt(),mf1->etaMS(),mf1->phiMS(),TRACK_MASS,mf2->pt(),mf2->etaMS(),mf2->phiMS());
 
-  // // for monitoring
-  // mufastMass = mass;
-  // double mass_mon = (mass>=monitor_limit) ? mass : monitor_limit;
-  // mufastMassLog10 = log10(mass_mon);
+  // for monitoring
+  mufastMass = mass;
+  double mass_mon = (mass>=monitor_limit) ? mass : monitor_limit;
+  mufastMassLog10 = log10(mass_mon);
 
   if( m_requireMass ) {
     if( mass < massThres ) massIsClose = true;
@@ -716,14 +716,14 @@ StatusCode TrigMufastHypoTool::chooseBestMuon(std::vector<TrigMufastHypoTool::Mu
   size_t numMuon = input.size();
   unsigned int i,j,k;
 
-  // auto mufastNrActiveEVs    = Monitored::Scalar("NrActiveEVs", -9999.);
-  // auto mufastNrOverlapped   = Monitored::Scalar("NrOverlapped", 0);
-  // auto mufastOverlappedEta  = Monitored::Scalar("OverlappedEta", -9999.);
-  // auto mufastOverlappedPhi  = Monitored::Scalar("OverlappedPhi", -9999.);
-  // auto mufastOverlappedPt   = Monitored::Scalar("OverlappedPt", -9999.);
+  auto mufastNrActiveEVs    = Monitored::Scalar("NrActiveEVs", -9999.);
+  auto mufastNrOverlapped   = Monitored::Scalar("NrOverlapped", 0);
+  auto mufastOverlappedEta  = Monitored::Scalar("OverlappedEta", -9999.);
+  auto mufastOverlappedPhi  = Monitored::Scalar("OverlappedPhi", -9999.);
+  auto mufastOverlappedPt   = Monitored::Scalar("OverlappedPt", -9999.);
 
-  // auto monitorIt       = Monitored::Group(m_monTool, mufastNrActiveEVs, mufastNrOverlapped,
-  // 					  mufastOverlappedPt, mufastOverlappedEta, mufastOverlappedPhi);
+  auto monitorIt       = Monitored::Group(m_monTool, mufastNrActiveEVs, mufastNrOverlapped,
+   					  mufastOverlappedPt, mufastOverlappedEta, mufastOverlappedPhi);
 
   ATH_MSG_DEBUG( "--- choose best among overlaps & disable EVs (muFast based) ---" );
   for(i=0; i<numMuon; i++) {
@@ -779,12 +779,12 @@ StatusCode TrigMufastHypoTool::chooseBestMuon(std::vector<TrigMufastHypoTool::Mu
 
 	  input[j].passOR = false;
 
-	  // // monitoring
-	  // const xAOD::L2StandAloneMuon* mf = input[j].muFast;
-	  // mufastNrOverlapped++;
-	  // mufastOverlappedPt = mf->pt();
-	  // mufastOverlappedEta = mf->etaMS();
-	  // mufastOverlappedPhi = mf->phiMS();
+	  // monitoring
+	  const xAOD::L2StandAloneMuon* mf = input[j].muFast;
+	  mufastNrOverlapped++;
+	  mufastOverlappedPt = mf->pt();
+	  mufastOverlappedEta = mf->etaMS();
+	  mufastOverlappedPhi = mf->phiMS();
 	}
 	if( j == best_ev ){
 	  ATH_MSG_DEBUG( "      EventView( j=" << j << " ) is best one" );
@@ -792,7 +792,7 @@ StatusCode TrigMufastHypoTool::chooseBestMuon(std::vector<TrigMufastHypoTool::Mu
       }
     }
   }
-  // mufastNrActiveEVs = numMuon - mufastNrOverlapped;
+   mufastNrActiveEVs = numMuon - mufastNrOverlapped;
 
   return StatusCode::SUCCESS;
 }
diff --git a/Trigger/TrigHypothesis/TrigMuonHypoMT/src/TrigMufastHypoTool.h b/Trigger/TrigHypothesis/TrigMuonHypoMT/src/TrigMufastHypoTool.h
index 54324fdfad913bac2d34a2baaffbd440e228de52..89ffd28efe3018cb1f2ba141ccdc0d6843727329 100644
--- a/Trigger/TrigHypothesis/TrigMuonHypoMT/src/TrigMufastHypoTool.h
+++ b/Trigger/TrigHypothesis/TrigMuonHypoMT/src/TrigMufastHypoTool.h
@@ -20,6 +20,11 @@ class StoreGateSvc;
 
 namespace TrigMufastHypoToolConsts {
 enum ECRegions{ Bulk, WeakBFieldA, WeakBFieldB };
+const int  errorCode_cannot_get_EL         = 1;
+const int  errorCode_EL_not_valid          = 2;
+const int  errorCode_inconsistent_overlap1 = 3;
+const int  errorCode_inconsistent_overlap2 = 4;
+const int  errorCode_cannot_get_RoI        = 5;
 }
 
 // --------------------------------------------------------------------------------