diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RPCStandaloneTracksMon.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RPCStandaloneTracksMon.h
index 9406cb1bfa2521de2cdb11b590b4f2bc9b357990..50977d306ed1aba3b7eb50380d7693c52d9189ae 100755
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RPCStandaloneTracksMon.h
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RPCStandaloneTracksMon.h
@@ -31,7 +31,7 @@
 #include "MuonReadoutGeometry/RpcReadoutElement.h"
 
 #include "RPCcablingInterface/IRPCcablingServerSvc.h"
-
+#include "MuonPrepRawData/MuonPrepDataContainer.h"
 
 #include "xAODTracking/TrackParticle.h"
 #include "xAODMuon/MuonContainer.h"
@@ -41,8 +41,12 @@
 #include "xAODEventInfo/EventInfo.h"
 
 #include "TrigT1Interfaces/RecMuonRoiSvc.h"
-
+#include "TrigT1Result/MuCTPI_RDO.h"
 #include "TrigDecisionTool/TrigDecisionTool.h" 
+#include "MuonRDO/RpcSectorLogicContainer.h"
+#include "MuonTrigCoinData/RpcCoinDataContainer.h"
+
+#include "StoreGate/ReadHandleKey.h"
 
 #include <TError.h>
 #include <TH1F.h>
@@ -89,7 +93,6 @@ class RPCStandaloneTracksMon: public ManagedMonitorToolBase {
   
   ActiveStoreSvc* m_activeStore;
 
-  std::string m_muonsName;
   std::string m_muonSegmentsName;
   std::string m_muonTracksName;
   std::string m_msVertexCollection;
@@ -149,16 +152,18 @@ class RPCStandaloneTracksMon: public ManagedMonitorToolBase {
   
   const IRPCcablingSvc* m_cabling;
   
-  
-  const RpcSectorLogicContainer* m_sectorLogicContainer; 
-  
   //Declare Properties  
+  SG::ReadHandleKey<Muon::RpcPrepDataContainer> m_key_rpc{this,"RpcPrepDataContainer","RPC_Measurements","RPC PRDs"};
+  SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this,"EventInfo","EventInfo","event info"};
+  SG::ReadHandleKey<Muon::RpcPrepDataContainer> m_clusterContainerName{this,"ClusterContainer","rpcClusters","RPC clusters"};
+  SG::ReadHandleKey<MuCTPI_RDO> m_muCTPI_RDO_key{this,"muCTPI_RDO_key","MUCTPI_RDO","muCTPI RDO"};
+  SG::ReadHandleKey<RpcSectorLogicContainer> m_sectorLogicContainerKey{this,"RPCSec","RPC_SECTORLOGIC","RPC sector logic"};
+  SG::ReadHandleKey<Muon::RpcCoinDataContainer> m_rpc_coin_key{this,"RPCCoinKey","RPC_triggerHits","RPC coin container"};
+  SG::ReadHandleKey<xAOD::MuonContainer> m_muonsName{this,"MuonCollection","Muons","muons"};
   std::string m_chamberName		;
   std::string m_StationSize		;
-  std::string m_key_rpc			;
   std::string m_key_trig		;
   bool m_doClusters			;
-  std::string m_clusterContainerName	;
   bool m_checkCabling			;
   bool m_rpcfile			;   
   bool m_rpcchamberhist			; 
@@ -193,6 +198,8 @@ class RPCStandaloneTracksMon: public ManagedMonitorToolBase {
   double m_MuonDeltaRMatching           ;       
   bool   m_requireMuonCombinedTight     ;
   bool   m_StandAloneMatchedWithTrack   ;
+
+  bool   m_isMC                         ;
   
   int m_nClus;                      // number of clusters
 
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataEfficiency.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataEfficiency.h
index 3f0b913fc69b7fc7b16f4a6764b4c245b10b7596..fa41bf010837760b793b2a7449d71cca37e08bca 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataEfficiency.h
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataEfficiency.h
@@ -45,6 +45,10 @@
 #include "MuonTrigCoinData/RpcCoinDataContainer.h"
 #include "MuonTrigCoinData/RpcCoinDataCollection.h"
 
+#include "xAODEventInfo/EventInfo.h"
+
+#include "StoreGate/ReadHandleKey.h"
+
 // STL includes
 #include <sstream>
 #include <string.h>
@@ -180,11 +184,8 @@ class RpcLv1RawDataEfficiency: public ManagedMonitorToolBase {
   virtual StatusCode procHistograms();  
 
  private:
-  StatusCode readOfflineMuonContainer(std::string key);
   // Retrieving information and data
-  ActiveStoreSvc* m_activeStore; // to get all the other information
   const RpcIdHelper* m_rpcIdHelper; 
-  const RpcSectorLogicContainer* m_sectorLogicContainer; 
   const MuonGM::MuonDetectorManager* m_muonMgr; // to retrieve coincidence informations
   
   // Trigger type stuff
@@ -200,6 +201,12 @@ class RpcLv1RawDataEfficiency: public ManagedMonitorToolBase {
   int m_lumiblock;
   int m_BCID;
 
+  bool m_isMC;
+
+  SG::ReadHandleKey<Muon::RpcCoinDataContainer> m_rpcCoinKey{this,"RpcCoinKey","RPC_triggerHits","RPC coincidences"};
+  SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this,"EventInfo","EventInfo","EventInfo"};
+  SG::ReadHandleKey<RpcSectorLogicContainer> m_sectorLogicContainerKey{this,"RPCSec","RPC_SECTORLOGIC","RPC sector logic"};
+
   // muon informations for offline muons and trigger hits
   std::vector<OfflineMuon>   m_OfflineMuons;
   std::vector<CoincidenceData*> m_CoincidenceData;
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataSectorLogic.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataSectorLogic.h
index e4285695bba0eb04e92178d7868188b12955a9ea..431925a7782696991e18ce4362f5a814dc57743d 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataSectorLogic.h
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataSectorLogic.h
@@ -38,6 +38,8 @@
 #include "MuonRDO/RpcPadContainer.h"
 #include "MuonRDO/RpcSectorLogicContainer.h"
 
+#include "xAODEventInfo/EventInfo.h"
+
 #include <sstream>
 #include <string.h>
 #include <vector>
@@ -65,16 +67,18 @@ class RpcLv1RawDataSectorLogic: public ManagedMonitorToolBase {
     
   // Private functions and members and histograms
   
-  ActiveStoreSvc* m_activeStore;
-  
   StatusCode StoreTriggerType();
   int GetTriggerType() { return m_trigtype; }
   int m_trigtype;
 
+  SG::ReadHandleKey<RpcSectorLogicContainer> m_sectorLogicContainerKey{this,"RPCSec","RPC_SECTORLOGIC","RPC sector logic"};
+  SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this,"EventInfo","EventInfo","event info"};
+
   int m_rpc_eventstotal;
   int m_rpc_event_inarea;  
   
   bool m_lumiblockhist			;
+  bool m_isMC;
   
   // Declare Histograms
   TH1* m_rpclv1_Hits_per_TriggerSector;
@@ -113,7 +117,6 @@ class RpcLv1RawDataSectorLogic: public ManagedMonitorToolBase {
   int m_Tower_in;
   int m_in_sectorid;
 
-  const RpcSectorLogicContainer* m_sectorLogicContainer;
  };
 
 #endif
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataValAlg.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataValAlg.h
index 61509d8623c807340619a6bf43a8185104b899eb..5f38e293b749c534b18d1ac7f8a8d4f419741127 100755
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataValAlg.h
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcLv1RawDataValAlg.h
@@ -15,7 +15,6 @@
 
 #include "GaudiKernel/Algorithm.h"
 #include "GaudiKernel/StatusCode.h"
-#include "StoreGate/StoreGateSvc.h"
 #include "GaudiKernel/MsgStream.h"
 #include "GaudiKernel/NTuple.h"
 
@@ -23,6 +22,8 @@
 #include "AthenaMonitoring/ManagedMonitorToolBase.h"
 #include "MuonDQAUtils/MuonDQAHistMap.h"
 
+#include "xAODEventInfo/EventInfo.h"
+
 #include "RPCcablingInterface/IRPCcablingServerSvc.h"
 
 #include "MuonReadoutGeometry/MuonDetectorManager.h"
@@ -41,6 +42,8 @@
 
 #include "RpcRawDataMonitoring/RpcGlobalUtilities.h"
 
+#include "StoreGate/ReadHandleKey.h"
+
 #include <sstream>
 #include <string.h>
 #include <vector>
@@ -80,10 +83,6 @@ class RpcLv1RawDataValAlg: public ManagedMonitorToolBase {
   MuonDQAHistMap m_stationHists;
 
 
-  StoreGateSvc* m_eventStore;
-  
-  ActiveStoreSvc* m_activeStore;
-  
   StatusCode StoreTriggerType();
   int GetTriggerType() { return m_trigtype; }
   int m_trigtype;
@@ -91,6 +90,9 @@ class RpcLv1RawDataValAlg: public ManagedMonitorToolBase {
   int m_sector;
   int m_side;
 
+  SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this,"EventInfo","EventInfo","event info"};
+  SG::ReadHandleKey<RpcPadContainer> m_rpcRdoKey{this,"RpcRdo","RPCPAD","RPC RDO"};
+
   std::vector<std::string> m_sectorlogicTowerCma_name_list   ;
   std::vector<std::string> m_sectorlogicTowerCma_name_list2  ;
   std::vector<std::string> m_profile_list                    ;
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataValAlg.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataValAlg.h
index e3c2139865b0a7215504ee6739b3c043b1f61270..244bb0b2b6a13500dd58289c4d9a45ab924098d3 100755
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataValAlg.h
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataMonitoring/RpcRawDataValAlg.h
@@ -35,6 +35,12 @@
 
 #include "RPCcablingInterface/IRPCcablingServerSvc.h"
 
+#include "MuonPrepRawData/MuonPrepDataContainer.h"
+#include "MuonTrigCoinData/RpcCoinDataContainer.h"
+#include "xAODEventInfo/EventInfo.h"
+
+#include "StoreGate/ReadHandleKey.h"
+
 
 #include <TError.h>
 #include <TH1F.h>
@@ -75,14 +81,12 @@ class RpcRawDataValAlg: public ManagedMonitorToolBase {
   // Private function to add the clusters to the ntuple
   StatusCode addClusters(std::string clusterContainerName);  
   
-  StoreGateSvc* m_eventStore;
-  
-  ActiveStoreSvc* m_activeStore;
-
-
   //ServiceHandle<IRPCConditionsSvc> m_pSummarySvc;
   
-  
+  SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this,"EventInfo","EventInfo","event info"};
+  SG::ReadHandleKey<Muon::RpcPrepDataContainer> m_key_rpc{this,"RpcPrepDataContainer","RPC_Measurements","RPC PRDs"};  
+  SG::ReadHandleKey<Muon::RpcCoinDataContainer> m_key_trig{this,"RPCTriggerContainer","RPC_triggerHits","RPC trigger hits"};
+  SG::ReadHandleKey<Muon::RpcPrepDataContainer> m_clusterContainerName{this,"ClusterContainer","rpcClusters","RPC clusters"};
 
   std::string m_generic_path_rpcmonitoring ;
   
@@ -133,10 +137,7 @@ class RpcRawDataValAlg: public ManagedMonitorToolBase {
   //Declare Properties  
   std::string m_chamberName		;
   std::string m_StationSize		;
-  std::string m_key_rpc			;
-  std::string m_key_trig		;
   bool m_doClusters			;
-  std::string m_clusterContainerName	;
   bool m_checkCabling			;
   bool m_rpcfile			;   
   bool m_rpcchamberhist			;    
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawBS_MonitoringOptions.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawBS_MonitoringOptions.py
index 470887e14fdf131e52222e091e37858b22013721..9529f43b5eae67b35ac9b30e06779e12fca15d14 100755
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawBS_MonitoringOptions.py
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawBS_MonitoringOptions.py
@@ -37,7 +37,8 @@ rpcLv1SLRawMonMan = AthenaMonManager(name="RpcLv1SLRawMonManager",
                                      OutputLevel         = muonOutputLevel)
 from RpcRawDataMonitoring.RpcRawDataMonitoringConf import RpcLv1RawDataSectorLogic
 rpcLV1RawDataSectorLogic = RpcLv1RawDataSectorLogic(name='rpcLV1RawDataSectorLogic',OutputLevel = OutputMessageLevel)
-
+if globalflags.DataSource() != 'data':
+    rpcLV1RawDataSectorLogic.isMC = True
 ToolSvc += rpcLV1RawDataSectorLogic
 rpcLv1SLRawMonMan.AthenaMonTools += [ rpcLV1RawDataSectorLogic ]
 topSequence += rpcLv1SLRawMonMan
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawESD_MonitoringOptions.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawESD_MonitoringOptions.py
index d294d61cffd132eb8c593f466e852aa6c22c1c7c..e60664aab0a0fbec890e0ebf18bf1fc9ae5015a5 100755
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawESD_MonitoringOptions.py
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/share/RpcRawESD_MonitoringOptions.py
@@ -71,7 +71,9 @@ RPCStandaloneTracksMon = RPCStandaloneTracksMon(name='RPCStandaloneTracksMon',
 						       rpc_readout_window    = 0.2, ## micro sec
                                                        doRadiography         = False,
 						       doCoolDB              = False,
-                                                       ClusterContainer      = "rpcClusters") 
+                                                       ClusterContainer      = "rpcClusters")
+if globalflags.DataSource() != 'data':
+    RPCStandaloneTracksMon.isMC = True
 ToolSvc += RPCStandaloneTracksMon
 rpcTrackMonMan.AthenaMonTools += [ RPCStandaloneTracksMon ]
 topSequence += rpcTrackMonMan
@@ -91,6 +93,8 @@ if not hasattr(topSequence,"RpcClusterBuilderPRD"):
     topSequence += RpcClusterBuilderPRD(ClusterTimeSpread = 10000,
                                         OutputLevel = FATAL)
 rpcLv1RawDataEfficiency = RpcLv1RawDataEfficiency(name='rpcLv1RawDataEfficiency')
+if globalflags.DataSource() != 'data':
+    rpcLv1RawDataEfficiency.isMC = True
 ToolSvc += rpcLv1RawDataEfficiency
 rpcLv1RawEfficiencyMonMan.AthenaMonTools += [ rpcLv1RawDataEfficiency ]
 topSequence += rpcLv1RawEfficiencyMonMan
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCStandaloneTracksMon.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCStandaloneTracksMon.cxx
index 7b5b37c60a64875acb26f05e3d4c330c8accacf8..4f6f5b4e93d26890fb0cd6eec72de671c22f7166 100755
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCStandaloneTracksMon.cxx
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RPCStandaloneTracksMon.cxx
@@ -25,18 +25,12 @@
 #include "MuonRDO/RpcCoinMatrix.h"
 #include "MuonRDO/RpcPad.h"
 #include "MuonRDO/RpcPadContainer.h"
-#include "MuonRDO/RpcSectorLogicContainer.h"
  
-#include "TrigT1Result/MuCTPI_RDO.h"
 #include "TrigT1Result/MuCTPI_DataWord_Decoder.h"
 #include "TrigT1Interfaces/RecMuonRoI.h"
 #include "TrigConfL1Data/TriggerThreshold.h"
 #include "MuonDigitContainer/RpcDigitContainer.h"
  
-#include "MuonPrepRawData/MuonPrepDataContainer.h"
-
-#include "MuonTrigCoinData/RpcCoinDataContainer.h"
-
 #include "MuonDQAUtils/MuonChamberNameConverter.h"
 #include "MuonDQAUtils/MuonChambersRange.h"
 #include "MuonDQAUtils/MuonCosmicSetup.h"
@@ -44,7 +38,6 @@
 
 
 #include "MuonIdHelpers/MuonStationIndex.h"
-#include "xAODEventInfo/EventInfo.h"
 
 #include "TrkMultiComponentStateOnSurface/MultiComponentStateOnSurface.h"
 #include "TrkMultiComponentStateOnSurface/MultiComponentState.h"
@@ -100,8 +93,6 @@ RPCStandaloneTracksMon::RPCStandaloneTracksMon( const std::string & type, const
   declareProperty("CosmicStation",       m_cosmicStation	= 0	);
   declareProperty("Side",                m_side			= 0	); 
   declareProperty("Clusters",            m_doClusters		= true	);			
-  declareProperty("ClusterContainer",    m_clusterContainerName = "rpcClusters"		);
-  declareProperty("RpcPrepDataContainer",m_key_rpc		= "RPC_Measurements"	);
   declareProperty("RPCTriggerContainer", m_key_trig		= "RPC_triggerHits"	);
   declareProperty("MinimunEntries",      m_MinEntries		= 10	);    // min entries required for summary plot 
   declareProperty("rpc_readout_window",  m_rpc_readout_window	= 0.2   ); // rpc readout window in 10^(-6) s for noise evaluation 
@@ -121,7 +112,6 @@ RPCStandaloneTracksMon::RPCStandaloneTracksMon( const std::string & type, const
   declareProperty("Muon_Trigger_Items",   m_muon_triggers);
   declareProperty("TriggerDecisionTool",  m_trigDecTool);
   
-  declareProperty("MuonCollection",		     m_muonsName	    = "Muons");
   declareProperty("MuonSegmentCollection",	     m_muonSegmentsName     = "MuonSegments");
   declareProperty("MuonTrackCollection",	     m_muonTracksName	    = "MuonSpectrometerTrackParticles");
   declareProperty("MuonExtrapolatedTrackCollection", m_muonExtrapTracksName = "ExtrapolatedMuonTrackParticles");
@@ -133,6 +123,8 @@ RPCStandaloneTracksMon::RPCStandaloneTracksMon( const std::string & type, const
   declareProperty("MuonDeltaRMatching"          , m_MuonDeltaRMatching         =   0.15 ); 
   declareProperty("requireMuonCombinedTight"    , m_requireMuonCombinedTight   = false  );
   declareProperty("StandAloneMatchedWithTrack"  , m_StandAloneMatchedWithTrack = true   );
+
+  declareProperty("isMC"                        , m_isMC                       = false  );
   
   declareProperty( "selectTriggerChainGroup"    , m_selectTriggerChainGroup    = false     );
   declareProperty( "deSelectTriggerChainGroup"  , m_deselectTriggerChainGroup  = false     );
@@ -176,19 +168,6 @@ StatusCode RPCStandaloneTracksMon::initialize(){
   
   StatusCode sc;
 
-  // Store Gate store
-  sc = serviceLocator()->service("StoreGateSvc", m_eventStore);
-  if (sc != StatusCode::SUCCESS ) {
-    ATH_MSG_ERROR ( " Cannot get StoreGateSvc " );
-    return sc ;
-  }
-  // retrieve the active store
-  sc = serviceLocator()->service("ActiveStoreSvc", m_activeStore);
-  if (sc != StatusCode::SUCCESS ) {
-    ATH_MSG_ERROR ( " Cannot get ActiveStoreSvc " );
-    return sc ;
-  }
-
   // Initialize the IdHelper
   StoreGateSvc* detStore = 0;
   sc = service("DetectorStore", detStore);
@@ -270,8 +249,15 @@ StatusCode RPCStandaloneTracksMon::initialize(){
   m_hRPCPhiEtaCoinThr_eff.clear()	 ;
   m_hRPCPadThr_eff.clear()		 ;
   m_hRPCMuctpiThr_eff.clear()  	 ;
-  m_sectorLogicContainer = 0 ;
 	 
+  ATH_CHECK(m_key_rpc.initialize());
+  ATH_CHECK(m_eventInfo.initialize());
+  ATH_CHECK(m_clusterContainerName.initialize());
+  ATH_CHECK(m_muCTPI_RDO_key.initialize());
+  ATH_CHECK(m_sectorLogicContainerKey.initialize(!m_isMC));
+  ATH_CHECK(m_rpc_coin_key.initialize());
+  ATH_CHECK(m_muonsName.initialize());
+
   return StatusCode::SUCCESS;
 }
 
@@ -336,39 +322,19 @@ StatusCode RPCStandaloneTracksMon::fillHistograms()
 //       // retrieve containers
 //       const xAOD::MuonSegmentContainer*     MuonSegments = evtStore()->retrieve< const xAOD::MuonSegmentContainer >        (m_muonSegmentsName);       
 //       const xAOD::TrackParticleContainer*   tracksMS     = evtStore()->retrieve< const xAOD::TrackParticleContainer >        (m_muonTracksName);      
-         const xAOD::MuonContainer*	       Muons        = evtStore()->retrieve< const xAOD::MuonContainer >                      (m_muonsName);
-	 if (!Muons)   {
-	   ATH_MSG_WARNING ("Couldn't retrieve Muons container with key: " << m_muonsName);
-	   return StatusCode::SUCCESS;
-	 } 
-	 ATH_MSG_DEBUG ("Muon container with key: " << m_muonsName<<" found");
+         SG::ReadHandle<xAOD::MuonContainer> Muons(m_muonsName);
+	 ATH_MSG_DEBUG ("Muon container with key: " << m_muonsName.key()<<" found");
 //       const xAOD::VertexContainer*	       MSVertices   = evtStore()->retrieve< const xAOD::VertexContainer >           (m_msVertexCollection);
 //       const xAOD::TrackParticleContainer*   METracks     = evtStore()->retrieve< const xAOD::TrackParticleContainer >( m_muonExtrapTracksName );
 //       const xAOD::TrackParticleContainer*   IDTracks     = evtStore()->retrieve< const xAOD::TrackParticleContainer >     ( m_innerTracksName );
   
       
       
-      const Muon::RpcPrepDataContainer* rpc_container;
-      sc = (*m_activeStore)->retrieve(rpc_container, m_key_rpc);
-      if (sc.isFailure()) {
-	ATH_MSG_ERROR ( " Cannot retrieve RpcPrepDataContainer " << m_key_rpc );
-	return sc;
-      }
-      ATH_MSG_DEBUG ( "RpcPrepDataContainer " << m_key_rpc <<" found");
+      SG::ReadHandle<Muon::RpcPrepDataContainer> rpc_container(m_key_rpc);
+      ATH_MSG_DEBUG ( "RpcPrepDataContainer " << m_key_rpc.key() <<" found");
 
-      
-
-      const DataHandle<xAOD::EventInfo> eventInfo;
-      sc = m_eventStore->retrieve( eventInfo );
-      if (sc.isFailure()) {
-	ATH_MSG_DEBUG ( "no event info" );
-	return StatusCode::SUCCESS;
-      }
-      else {
-	ATH_MSG_DEBUG ( "yes event info" );
-      }
+      SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfo);
 
-            
       //int RunNumber = eventInfo->runNumber();
       //long int EventNumber = eventInfo->eventNumber();
       long int BCID   =  eventInfo->       bcid()  ;
@@ -385,15 +351,6 @@ StatusCode RPCStandaloneTracksMon::fillHistograms()
 	    }  	 
       }
     
-    
-      // check if data or MC
-      int isMC=0;
-      if (eventInfo->eventType(xAOD::EventInfo::IS_SIMULATION ) ){
-       isMC=1;
-       ATH_MSG_INFO( "SIMULATION");
-      }
-      //   return StatusCode::SUCCESS; // stop this algorithms execute() for this event, here only interested in MC
-        
       ATH_MSG_DEBUG ("****** rpc->size() : " << rpc_container->size());  
     
       Muon::RpcPrepDataContainer::const_iterator containerIt;
@@ -415,16 +372,9 @@ StatusCode RPCStandaloneTracksMon::fillHistograms()
       MonGroup rpc_triggerefficiency( this, m_generic_path_rpcmonitoring +"/TriggerEfficiency", run, ATTRIB_UNMANAGED  );
        
       // begin cluster monitoring
-      const Muon::RpcPrepDataContainer* rpc_clusterContainer = nullptr;
-      if(m_eventStore->contains<Muon::RpcPrepDataContainer>(m_clusterContainerName)){
-	sc = m_eventStore->retrieve(rpc_clusterContainer, m_clusterContainerName);
-	if (sc.isFailure()) {
-	  ATH_MSG_DEBUG ( " RPCStandaloneTracksMon :: Cannot retrieve the RPC cluster container " );
-	  return sc;
-	}
-      }  
+      SG::ReadHandle<Muon::RpcPrepDataContainer> rpc_clusterContainer(m_clusterContainerName);
         
-      if (m_doClusters && rpc_clusterContainer )
+      if (m_doClusters)
 	{  
 	  ATH_MSG_DEBUG ( "Start RPC Cluster Monitoring" );
     
@@ -834,7 +784,7 @@ StatusCode RPCStandaloneTracksMon::fillHistograms()
 		    //Check for muon combined match
 	            bool foundmatch3DwithMuon = false;
 		    int nm=0;
-		    if (Muons){	
+		    if (Muons.cptr()){	
                       // CombinedMuons Tight
 	             for (const xAOD::Muon* muons: *Muons)
 	             {       
@@ -912,77 +862,64 @@ StatusCode RPCStandaloneTracksMon::fillHistograms()
     
     std::list<muctpi_rdo> muctpi_rdo_roi_list;
     muctpi_rdo_roi_list.clear();
-    const MuCTPI_RDO* muctpiRDO;
-    sc = (*m_activeStore)->retrieve(muctpiRDO,"MUCTPI_RDO");
-    if (sc.isFailure()) {
-      ATH_MSG_WARNING ( "Cannot retrieve the MuCTPI" );     
-      return StatusCode::SUCCESS;
-    }
-    else {
-        
+    SG::ReadHandle<MuCTPI_RDO> muctpiRDO(m_muCTPI_RDO_key);
         
-        // Create some dummy LVL1 muon thresholds:
-        std::vector< TrigConf::TriggerThreshold* > dummy_thresholds;
-       
-
-        // Loop over the MuCTPI data words, and "reconstruct" them:
-        std::vector< uint32_t >::const_iterator dw_itr = muctpiRDO->dataWord().begin();
-        std::vector< uint32_t >::const_iterator dw_end = muctpiRDO->dataWord().end();
-        for( ; dw_itr != dw_end; ++dw_itr ) {
-            
-            muctpi_rdo  muctpi_rdo_roi;
-            // Use the same class that is used by the LVL2 steering to decode
-            // the muon RoIs:
-
-            uint32_t dataWord = (*dw_itr);
-            uint32_t RoIWord = ( ( dataWord & 0x18000000 ) |
-        			 ( ( dataWord & 0x3fe0000 ) >> 3 ) |
-        			 ( dataWord & 0x3fff ) );
-
-            LVL1::RecMuonRoI roi( RoIWord,
-        			  &( *m_rpcRoiSvc ), &( *m_tgcRoiSvc ),
-        			  &dummy_thresholds );
-            
-            muctpi_rdo_roi.eta= roi.eta() ;
-            muctpi_rdo_roi.phi= roi.phi() ;
-            muctpi_rdo_roi.source= roi.sysID() ;
-            muctpi_rdo_roi.hemisphere= roi.subsysID() ;
-            int muctpi_bcid = ( ( dataWord >> 14 ) & 0x7 );
-            // store difference from L1Acc
-            int dbc = muctpi_bcid;
-            if (!isMC) dbc = dbc - BCID%8;
-            if (dbc<=-4) {
-        	dbc=dbc+8;
-            }else if (dbc>4) {
-        	dbc=dbc-8;
-            }
-            muctpi_rdo_roi.bcid=dbc;	 
-            muctpi_rdo_roi.sectorID= roi.sectorID() ;
-            muctpi_rdo_roi.thrNumber= roi.getThresholdNumber() ;
-            muctpi_rdo_roi.RoINumber= roi.getRoINumber() ;
-            muctpi_rdo_roi.overlapFlags= roi.getOverlap() ;
-
-
-            muctpi_rdo_roi_list.push_back(muctpi_rdo_roi);
-            
-        }
-
-        ATH_MSG_DEBUG(" MUCTPI RoIs = " << muctpi_rdo_roi_list.size() );
+    // Create some dummy LVL1 muon thresholds:
+    std::vector< TrigConf::TriggerThreshold* > dummy_thresholds;
+    
+    
+    // Loop over the MuCTPI data words, and "reconstruct" them:
+    std::vector< uint32_t >::const_iterator dw_itr = muctpiRDO->dataWord().begin();
+    std::vector< uint32_t >::const_iterator dw_end = muctpiRDO->dataWord().end();
+    for( ; dw_itr != dw_end; ++dw_itr ) {
+      
+      muctpi_rdo  muctpi_rdo_roi;
+      // Use the same class that is used by the LVL2 steering to decode
+      // the muon RoIs:
+      
+      uint32_t dataWord = (*dw_itr);
+      uint32_t RoIWord = ( ( dataWord & 0x18000000 ) |
+			   ( ( dataWord & 0x3fe0000 ) >> 3 ) |
+			   ( dataWord & 0x3fff ) );
+      
+      LVL1::RecMuonRoI roi( RoIWord,
+			    &( *m_rpcRoiSvc ), &( *m_tgcRoiSvc ),
+			    &dummy_thresholds );
+      
+      muctpi_rdo_roi.eta= roi.eta() ;
+      muctpi_rdo_roi.phi= roi.phi() ;
+      muctpi_rdo_roi.source= roi.sysID() ;
+      muctpi_rdo_roi.hemisphere= roi.subsysID() ;
+      int muctpi_bcid = ( ( dataWord >> 14 ) & 0x7 );
+      // store difference from L1Acc
+      int dbc = muctpi_bcid;
+      if (!m_isMC) dbc = dbc - BCID%8;
+      if (dbc<=-4) {
+	dbc=dbc+8;
+      }else if (dbc>4) {
+	dbc=dbc-8;
+      }
+      muctpi_rdo_roi.bcid=dbc;	 
+      muctpi_rdo_roi.sectorID= roi.sectorID() ;
+      muctpi_rdo_roi.thrNumber= roi.getThresholdNumber() ;
+      muctpi_rdo_roi.RoINumber= roi.getRoINumber() ;
+      muctpi_rdo_roi.overlapFlags= roi.getOverlap() ;
+      
+      
+      muctpi_rdo_roi_list.push_back(muctpi_rdo_roi);
+      
     }
+    
+    ATH_MSG_DEBUG(" MUCTPI RoIs = " << muctpi_rdo_roi_list.size() );
      
     // Retrieve the Sector Logic container
-    sc = (*m_activeStore) -> retrieve(m_sectorLogicContainer);     
     
-    if (sc.isFailure()) {
-      if (isMC==1) ATH_MSG_DEBUG ( "Cannot retrieve the RpcSectorLogicContainer ... that's normal in MC: no container is produced in digitization" );
-      else 
-	{
-	  ATH_MSG_WARNING ( "Cannot retrieve the RpcSectorLogicContainer ... however, there's no reason to stop here" );     
-	  //return StatusCode::SUCCESS;
-	}
+    if (m_isMC) {
+      ATH_MSG_DEBUG ( "Cannot retrieve the RpcSectorLogicContainer ... that's normal in MC: no container is produced in digitization" );
     }
     else {
-     ATH_MSG_DEBUG("RpcSectorLogicContainer found with size " << m_sectorLogicContainer->size());
+      SG::ReadHandle<RpcSectorLogicContainer> sectorLogicContainer(m_sectorLogicContainerKey);
+      ATH_MSG_DEBUG("RpcSectorLogicContainer found with size " << sectorLogicContainer->size());
 
       ///////////////////////////////////////////
       // Loop over the Sector Logic containers //
@@ -994,9 +931,9 @@ StatusCode RPCStandaloneTracksMon::fillHistograms()
       phimaxpad.clear();
       thresholdpad.clear();
   
-      RpcSectorLogicContainer::const_iterator its = m_sectorLogicContainer -> begin();
+      RpcSectorLogicContainer::const_iterator its = sectorLogicContainer -> begin();
       
-      for ( ; its != m_sectorLogicContainer -> end() ; ++its ) 
+      for ( ; its != sectorLogicContainer -> end() ; ++its ) 
 	{
 	  	  int i_sectorid = (*its)->sectorId(); 
 	  // Loop over the trigger hits of each sector
@@ -1038,16 +975,9 @@ StatusCode RPCStandaloneTracksMon::fillHistograms()
 	
 	  /////////////// Trigger hits efficiency
 	  //Trigger hits    
-          const Muon::RpcCoinDataContainer* rpc_coin_container;
-          sc = (*m_activeStore)->retrieve(rpc_coin_container, "RPC_triggerHits" );
-          if (sc.isFailure()) {
-            ATH_MSG_WARNING ( "Cannot retrieve RPC trigger hits container");
-            return sc;
-          }
-	  
- 
+          SG::ReadHandle<Muon::RpcCoinDataContainer> rpc_coin_container(m_rpc_coin_key);
 	  
-	  if (Muons){	
+	  if (Muons.cptr()){	
           // CombinedMuons Tight
 	  for (const xAOD::Muon* muons: *Muons)
 	  {
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataEfficiency.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataEfficiency.cxx
index d580e4204f62bab7b8cbf2acbaf3f14d823d4e00..ce2cb42f80a37cea3615e7ef8df1883955be792e 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataEfficiency.cxx
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataEfficiency.cxx
@@ -25,9 +25,7 @@
 #include "AthenaMonitoring/AthenaMonManager.h"
 
 #include "MuonPrepRawData/MuonPrepDataContainer.h"
-#include "MuonTrigCoinData/RpcCoinDataContainer.h"
 
-#include "xAODEventInfo/EventInfo.h"
 #include <inttypes.h> 
 
 #include <sstream>
@@ -41,7 +39,9 @@ RpcLv1RawDataEfficiency::RpcLv1RawDataEfficiency( const std::string & type,
 						  const std::string & name, 
 						  const IInterface* parent )
   :ManagedMonitorToolBase( type, name, parent )
-{}
+{
+  declareProperty("isMC"                        , m_isMC                       = false  );
+}
 
 //================================================================================================================================
 RpcLv1RawDataEfficiency::~RpcLv1RawDataEfficiency()
@@ -55,9 +55,7 @@ StatusCode RpcLv1RawDataEfficiency::initialize()
   ATH_MSG_INFO( "In initializing 'RpcLv1RawDataEfficiency'"  );
   ATH_MSG_INFO( "Package version = "<< PACKAGE_VERSION  );
   
-  m_activeStore  = 0 ;
   m_rpcIdHelper  = 0 ;
-  m_sectorLogicContainer  = 0 ;
   m_muonMgr  = 0 ;
   m_trigtype  = 0 ;
   m_event  = 0 ;
@@ -82,132 +80,20 @@ StatusCode RpcLv1RawDataEfficiency::initialize()
   m_rpclv1_sectorhits_C[5]  = 0 ;  	
   m_rpclv1_sectorhits_all[5]= 0 ;
   
-  // Retrieve the active store where all the information is being read from
-  ATH_CHECK(  serviceLocator()->service("ActiveStoreSvc", m_activeStore) );
-
   ATH_CHECK(  detStore()->retrieve(m_rpcIdHelper,"RPCIDHELPER") );
   ATH_CHECK(  detStore()->retrieve(m_muonMgr) );
   ATH_MSG_DEBUG( "Found the MuonDetectorManager from detector store."  );
 
+  ATH_CHECK(m_rpcCoinKey.initialize());
+  ATH_CHECK(m_eventInfo.initialize());
+  ATH_CHECK(m_sectorLogicContainerKey.initialize(!m_isMC));
+
   // Ignore the checking code
   ManagedMonitorToolBase::initialize().ignore();
   
   return StatusCode::SUCCESS;
 }
 
-
-//================================================================================================================================
-// Reads the offline muon container into vectors for use in filling histograms
-//================================================================================================================================
-StatusCode RpcLv1RawDataEfficiency::readOfflineMuonContainer( std::string key )
-{
-  ATH_MSG_VERBOSE( "Reading OfflineMuonContainer... "  );
-
-  // read the container the first time or again, so delete the old one
-  m_OfflineMuons.clear();
-  
-  const float ptcut = 1.0;
-  const float etamin = -1.0;
-  const float etamax = 1.0;
- 
-  const Analysis::MuonContainer* muonCont;
-  
-  // retrieve the offline muon container
-  StatusCode sc = (*m_activeStore)->retrieve(muonCont, key);
-  if(sc.isFailure()) {
-    ATH_MSG_WARNING( "Container of muon particle with key " << key << " not found in ActiveStore"   );
-    return StatusCode::SUCCESS;
-  }
-
-  float pt,eta;
-
-  int pixHits;
-  int sctHits;
-  int trtHits;            
-  int pixHoles; 
-  int sctHoles; 
-  int trtOL;             
-  int trtOLfrac;
-  bool trt;
-  float matchChi2;
-
-  Analysis::MuonContainer::const_iterator it  = muonCont->begin();
-  Analysis::MuonContainer::const_iterator ite = muonCont->end();
-  for (;  it != ite; it++ ) {
-    pt  = (*it)->pt();
-    eta = (*it)->eta();
-    if( fabs(pt) < ptcut || 
-	fabs(eta) < etamin ||
-	fabs(eta) > etamax ) continue;
-    
-    pixHits  = (*it)->numberOfPixelHits();
-    sctHits  = (*it)->numberOfSCTHits();
-    trtHits  = (*it)->numberOfTRTHits();
-    pixHoles = (*it)->numberOfPixelHoles();
-    sctHoles = (*it)->numberOfSCTHoles();
-    trtOL    = (*it)->numberOfTRTOutliers();
-    
-    trtOLfrac = 0;
-    if( trtHits + trtOL > 0 ) trtOLfrac = trtOL/(trtHits + trtOL);
-    
-    trt=false;
-    if( fabs(eta) < 1.9 ) 
-      trt = ( (trtHits > 5) && (trtOLfrac < 0.9) );
-    else{
-      if( trtHits > 5 )
-	trt = ( trtOLfrac < 0.9 );
-      else
-	trt=true;
-    }
-
-    matchChi2 = (*it)->matchChi2();
-
-    //Muid MCP except phi hits
-    if( key == "MuidMuonCollection" &&
-	!( (*it)->combinedMuonTrackParticle() &&
-	   sctHits >= 6 &&
-	   pixHits >= 2 &&
-	   pixHoles+sctHoles <=1 &&
-           trt 
-	   ) ) continue;
-    
-    //Staco MCP
-    if( key == "StacoMuonCollection" &&
-	! ( (*it)->combinedMuonTrackParticle() &&
-            sctHits >= 6 &&
-	    pixHits >= 2 &&
-	    pixHoles+sctHoles <=1 &&
-	    trt &&
-	    matchChi2 < 50 ) ) continue;
-
-    OfflineMuon offmu;
-    offmu.SetPtEtaPhiQ( pt/CLHEP::GeV, eta, (*it)->phi(), (*it)->charge() );
-    m_OfflineMuons.push_back(offmu);
-  }
-  ATH_MSG_VERBOSE( "Number of offline muons before dR check : " << m_OfflineMuons.size()  );
-
-  // check if no track is too close to another track
-  bool bTooClose = false;
-  float trackdr;
-  const float trackdr_min = .8;
-
-  vector<OfflineMuon>::const_iterator it1 = m_OfflineMuons.begin();
-  vector<OfflineMuon>::const_iterator it2;
-  while( it1 != m_OfflineMuons.end() ) {
-    it2 = it1+1;
-    while( it2 != m_OfflineMuons.end() ) {
-      trackdr = (*it1).DeltaR( (*it2) );
-      if( trackdr < trackdr_min ) bTooClose = true;
-      ++it2;}
-    ++it1; }
-  if(bTooClose) m_OfflineMuons.clear();
-
-  ATH_MSG_VERBOSE( "Finished reading OfflineMuonContainer... "  );
-  return StatusCode::SUCCESS;
-}
-
-
-
 //================================================================================================================================
 // Reads RPC coincidence data from container into vectors for use in filling histograms
 //================================================================================================================================
@@ -215,8 +101,7 @@ StatusCode RpcLv1RawDataEfficiency::readRpcCoinDataContainer()
 {
   ATH_MSG_DEBUG( "Reading RpcCoincidenceContainer... "  );
    
-  const Muon::RpcCoinDataContainer* rpc_coin_container;
-  ATH_CHECK(  (*m_activeStore)->retrieve(rpc_coin_container, "RPC_triggerHits" ) );
+  SG::ReadHandle<Muon::RpcCoinDataContainer> rpc_coin_container(m_rpcCoinKey);
   Muon::RpcCoinDataContainer::const_iterator  it_container;
   //Muon::RpcCoinDataCollection::const_iterator it_collection;
   Identifier prdcoll_id;
@@ -269,8 +154,7 @@ StatusCode RpcLv1RawDataEfficiency::readRpcCoinDataContainer()
 StatusCode RpcLv1RawDataEfficiency::StoreTriggerType() 
 {
   ATH_MSG_DEBUG( "Storing Trigger Type... "  );
-  const xAOD::EventInfo* eventInfo;
-  ATH_CHECK( evtStore() -> retrieve(eventInfo) );
+  SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfo);
   ATH_MSG_DEBUG( "RpcLv1RawDataEfficiency::retrieved eventInfo"  );
   
   // Protection against simulated cosmics when the trigger_info() of the event_info is not filled and returns a null pointer. 
@@ -333,16 +217,13 @@ StatusCode RpcLv1RawDataEfficiency::fillHistograms( )
 
   // == Filling the Histograms                                                                                                                               
   //--------------------Sector Hits---------------------------------
-  // Retrieve the Sector Logic container
-  if ( (*m_activeStore) -> retrieve(m_sectorLogicContainer).isFailure() ) {
-    ATH_MSG_INFO( "Cannot retrieve the RpcSectorLogicContainer"  );
-    return StatusCode::FAILURE;
-  }
-  else {
-		      
-    RpcSectorLogicContainer::const_iterator it = m_sectorLogicContainer -> begin();
+  if(!m_isMC){
+    // Retrieve the Sector Logic container
+    SG::ReadHandle<RpcSectorLogicContainer> sectorLogicContainer(m_sectorLogicContainerKey);
 
-    for ( ; it != m_sectorLogicContainer -> end() ; ++it ) 
+    RpcSectorLogicContainer::const_iterator it = sectorLogicContainer -> begin();
+    
+    for ( ; it != sectorLogicContainer -> end() ; ++it ) 
       {
 	int i_sectorid = (*it)->sectorId();
 	// Loop over the trigger hits of each sector
@@ -365,7 +246,6 @@ StatusCode RpcLv1RawDataEfficiency::fillHistograms( )
 	  }
       }
   }
-  
   return StatusCode::SUCCESS;
 }
 
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataSectorLogic.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataSectorLogic.cxx
index 9bb4926e34f651698863fa713e27455780baa4d6..3a96fbd299ff86c2769e6bcccbd6c71e159427c8 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataSectorLogic.cxx
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataSectorLogic.cxx
@@ -14,7 +14,6 @@
 #include "GaudiKernel/MsgStream.h"
 #include "GaudiKernel/AlgFactory.h"
 
-#include "xAODEventInfo/EventInfo.h" 
 #include "MuonDQAUtils/MuonChamberNameConverter.h"
 #include "MuonDQAUtils/MuonChambersRange.h"
 #include "MuonDQAUtils/MuonCosmicSetup.h"
@@ -38,6 +37,7 @@ RpcLv1RawDataSectorLogic::RpcLv1RawDataSectorLogic( const std::string & type,
 {  
   // Declare the properties      
   declareProperty("LumiblockHist" ,      m_lumiblockhist	= false	);   
+  declareProperty("isMC"                        , m_isMC                       = false  );
 }
 
 //***********************************************************************************************************************
@@ -68,10 +68,9 @@ StatusCode RpcLv1RawDataSectorLogic::initialize()
   m_Tower_out = 0 ;
   m_Tower_in = 0 ;
   m_in_sectorid = 0 ;
-  m_sectorLogicContainer = 0 ;
       
-  // Retrieve the active store
-  ATH_CHECK( serviceLocator() -> service("ActiveStoreSvc", m_activeStore) );
+  ATH_CHECK(m_sectorLogicContainerKey.initialize(!m_isMC));
+  ATH_CHECK(m_eventInfo.initialize());
 
   // Ignore the checking code
   ManagedMonitorToolBase::initialize().ignore();
@@ -83,8 +82,7 @@ StatusCode RpcLv1RawDataSectorLogic::initialize()
 //***********************************************************************************************************************
 StatusCode RpcLv1RawDataSectorLogic::StoreTriggerType() 
 {
-  const xAOD::EventInfo* eventInfo;
-  ATH_CHECK(  evtStore() -> retrieve(eventInfo) );
+  SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfo);
   ATH_MSG_DEBUG( "RpcLv1RawDataSectorLogic::retrieved eventInfo"  );
   
   m_trigtype = eventInfo->level1TriggerType();
@@ -178,147 +176,142 @@ StatusCode RpcLv1RawDataSectorLogic::fillHistograms( )
     
     m_nTriggerHits = 0;
 
-    // Retrieve the Sector Logic container
-    sc = (*m_activeStore) -> retrieve(m_sectorLogicContainer);     
-    
-    if (sc.isFailure()) {
-      ATH_MSG_INFO( "Cannot retrieve the RpcSectorLogicContainer"  );
-      return StatusCode::SUCCESS;
-    }
-    else {
+    if(!m_isMC){
+      // Retrieve the Sector Logic container
+      SG::ReadHandle<RpcSectorLogicContainer> sectorLogicContainer(m_sectorLogicContainerKey);
       ///////////////////////////////////////////
       // Loop over the Sector Logic containers //
       ///////////////////////////////////////////
-      RpcSectorLogicContainer::const_iterator it = m_sectorLogicContainer -> begin();
-      for ( ; it != m_sectorLogicContainer -> end() ; ++it ) 
+      RpcSectorLogicContainer::const_iterator it = sectorLogicContainer -> begin();
+      for ( ; it != sectorLogicContainer -> end() ; ++it ) 
 	{
 	  int i_sectorid = (*it)->sectorId();
 	  m_nTriggerHitsperSector = 0;
-
+	  
 	  // Loop over the trigger hits of each sector
 	  RpcSectorLogic::const_iterator ithit = (*it) -> begin();
 	  for ( ; ithit != (*it) -> end() ; ++ithit ) 
-          {
-            // from RpcSLTriggerHit
-            bool b_isInput        = (*ithit) -> isInput();
-            int i_rowinBcid      = (*ithit) -> rowinBcid();//readout window BCid
-            int i_padid          = (*ithit) -> padId();//tower
-            int i_ptid           = (*ithit) -> ptId();//threshold
-            int i_roi            = (*ithit) -> roi();//region of interest
-            int i_triggerBcid    = (*ithit) -> triggerBcid();
-
-            m_Diff_triggerBCid = 0;
-            m_in_triggerBCid = 0;
-            m_out_triggerBCid = 0;
-            m_in_rowinBCid = 0;
-            m_out_rowinBCid = 0;
-            m_Tower_in = -1;
-
-            if (b_isInput == true){ 
-              m_nTriggerHits++;
-              m_nTriggerHitsperSector++;
+	    {
+	      // from RpcSLTriggerHit
+	      bool b_isInput        = (*ithit) -> isInput();
+	      int i_rowinBcid      = (*ithit) -> rowinBcid();//readout window BCid
+	      int i_padid          = (*ithit) -> padId();//tower
+	      int i_ptid           = (*ithit) -> ptId();//threshold
+	      int i_roi            = (*ithit) -> roi();//region of interest
+	      int i_triggerBcid    = (*ithit) -> triggerBcid();
+	      
+	      m_Diff_triggerBCid = 0;
+	      m_in_triggerBCid = 0;
+	      m_out_triggerBCid = 0;
+	      m_in_rowinBCid = 0;
+	      m_out_rowinBCid = 0;
+	      m_Tower_in = -1;
+	      
+	      if (b_isInput == true){ 
+		m_nTriggerHits++;
+		m_nTriggerHitsperSector++;
 		
-              //Fill hits per trigger sector histogram
-              m_rpclv1_Hits_per_TriggerSector -> Fill(float(i_sectorid));
-              //per lumi block
-              if(m_lumiblockhist)m_rpclv1_Hits_per_TriggerSector_LB -> Fill(float(i_sectorid));
-
-              //Fill Pad vs. tigger sector histograms
-              if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad -> Fill(float(-(i_padid + 1)), float(i_sectorid));
-              else m_rpclv1_TriggerSector_vs_Pad -> Fill(float((i_padid + 1)), float(i_sectorid - 32));
+		//Fill hits per trigger sector histogram
+		m_rpclv1_Hits_per_TriggerSector -> Fill(float(i_sectorid));
+		//per lumi block
+		if(m_lumiblockhist)m_rpclv1_Hits_per_TriggerSector_LB -> Fill(float(i_sectorid));
 		
-              if (i_ptid == 1){
-                if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt1 -> Fill(float(-(i_padid + 1)), float(i_sectorid));
-                else m_rpclv1_TriggerSector_vs_Pad_Pt1 -> Fill(float((i_padid + 1)), float(i_sectorid - 32));
-              }
-              if (i_ptid == 2){
-                if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt2 -> Fill(float(-(i_padid + 1)), float(i_sectorid));
-                else m_rpclv1_TriggerSector_vs_Pad_Pt2 -> Fill(float((i_padid + 1)), float(i_sectorid - 32));
-              }
-              if (i_ptid == 3){
-                if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt3 -> Fill(float(-(i_padid + 1)), float(i_sectorid));
-                else m_rpclv1_TriggerSector_vs_Pad_Pt3 -> Fill(float((i_padid + 1)), float(i_sectorid - 32));
-              }
-              if (i_ptid == 4){
-                if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt4 -> Fill(float(-(i_padid + 1)), float(i_sectorid));
-                else m_rpclv1_TriggerSector_vs_Pad_Pt4 -> Fill(float((i_padid + 1)), float(i_sectorid - 32));
-              }
-              if (i_ptid == 5){
-                if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt5 -> Fill(float(-(i_padid + 1)), float(i_sectorid));
-                else m_rpclv1_TriggerSector_vs_Pad_Pt5 -> Fill(float((i_padid + 1)), float(i_sectorid - 32));
-              }
-              if (i_ptid == 6){
-                if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt6 -> Fill(float(-(i_padid + 1)), float(i_sectorid));
-                else m_rpclv1_TriggerSector_vs_Pad_Pt6 -> Fill(float((i_padid + 1)), float(i_sectorid - 32));
-              }
+		//Fill Pad vs. tigger sector histograms
+		if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad -> Fill(float(-(i_padid + 1)), float(i_sectorid));
+		else m_rpclv1_TriggerSector_vs_Pad -> Fill(float((i_padid + 1)), float(i_sectorid - 32));
 		
-              //Fill trigger sector vs. rowin BCid histogram
-              m_rpclv1_rowinBCid_vs_TriggerSector -> Fill(float(i_sectorid), float(i_rowinBcid));
-
-              //Fill Threshold vs. Pad(Tower) histogram
-              m_rpclv1_ptid_vs_Tower -> Fill(float(i_padid), float(i_ptid));
-
-              //Trigger BCid in
-              m_in_triggerBCid = i_triggerBcid;
-              //ReadOutWindow BCid in
-              m_in_rowinBCid = i_rowinBcid;
-
-              //Tower in
-              m_Tower_in = i_padid;
+		if (i_ptid == 1){
+		  if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt1 -> Fill(float(-(i_padid + 1)), float(i_sectorid));
+		  else m_rpclv1_TriggerSector_vs_Pad_Pt1 -> Fill(float((i_padid + 1)), float(i_sectorid - 32));
+		}
+		if (i_ptid == 2){
+		  if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt2 -> Fill(float(-(i_padid + 1)), float(i_sectorid));
+		  else m_rpclv1_TriggerSector_vs_Pad_Pt2 -> Fill(float((i_padid + 1)), float(i_sectorid - 32));
+		}
+		if (i_ptid == 3){
+		  if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt3 -> Fill(float(-(i_padid + 1)), float(i_sectorid));
+		  else m_rpclv1_TriggerSector_vs_Pad_Pt3 -> Fill(float((i_padid + 1)), float(i_sectorid - 32));
+		}
+		if (i_ptid == 4){
+		  if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt4 -> Fill(float(-(i_padid + 1)), float(i_sectorid));
+		  else m_rpclv1_TriggerSector_vs_Pad_Pt4 -> Fill(float((i_padid + 1)), float(i_sectorid - 32));
+		}
+		if (i_ptid == 5){
+		  if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt5 -> Fill(float(-(i_padid + 1)), float(i_sectorid));
+		  else m_rpclv1_TriggerSector_vs_Pad_Pt5 -> Fill(float((i_padid + 1)), float(i_sectorid - 32));
+		}
+		if (i_ptid == 6){
+		  if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_Pt6 -> Fill(float(-(i_padid + 1)), float(i_sectorid));
+		  else m_rpclv1_TriggerSector_vs_Pad_Pt6 -> Fill(float((i_padid + 1)), float(i_sectorid - 32));
+		}
+		
+		//Fill trigger sector vs. rowin BCid histogram
+		m_rpclv1_rowinBCid_vs_TriggerSector -> Fill(float(i_sectorid), float(i_rowinBcid));
+		
+		//Fill Threshold vs. Pad(Tower) histogram
+		m_rpclv1_ptid_vs_Tower -> Fill(float(i_padid), float(i_ptid));
 		
-              m_Tower_out = -1;
-              // Loop over the trigger hits of each sector
-              RpcSectorLogic::const_iterator ithiti = (*it) -> begin();
-              for ( ; ithiti != (*it) -> end() ; ++ithiti ) 
-              {
-                bool b_isInput1        = (*ithiti) -> isInput();
-                int i_roi1            = (*ithiti) -> roi();//region of interest
-                int i_triggerBcid1    = (*ithiti) -> triggerBcid();
-                int i_rowinBcid1      = (*ithiti) -> rowinBcid();
-                if (b_isInput1 == false){ 
-
-                  //Tower out calculated from ROI out
-                  if ( i_roi1 < 4 ) m_Tower_out = 0; 
-                  if ( i_roi1 >= 4 && i_roi < 8 ) m_Tower_out = 1; 
-                  if ( i_roi1 >= 8 && i_roi < 12 ) m_Tower_out = 2; 
-                  if ( i_roi1 >= 12 && i_roi < 16 ) m_Tower_out = 3; 
-                  if ( i_roi1 >= 16 && i_roi < 20 ) m_Tower_out = 4; 
-                  if ( i_roi1 >= 20 && i_roi < 24 ) m_Tower_out = 5; 
-                  if ( i_roi1 >= 24 ) m_Tower_out = 6; 
+		//Trigger BCid in
+		m_in_triggerBCid = i_triggerBcid;
+		//ReadOutWindow BCid in
+		m_in_rowinBCid = i_rowinBcid;
+		
+		//Tower in
+		m_Tower_in = i_padid;
+		
+		m_Tower_out = -1;
+		// Loop over the trigger hits of each sector
+		RpcSectorLogic::const_iterator ithiti = (*it) -> begin();
+		for ( ; ithiti != (*it) -> end() ; ++ithiti ) 
+		  {
+		    bool b_isInput1        = (*ithiti) -> isInput();
+		    int i_roi1            = (*ithiti) -> roi();//region of interest
+		    int i_triggerBcid1    = (*ithiti) -> triggerBcid();
+		    int i_rowinBcid1      = (*ithiti) -> rowinBcid();
+		    if (b_isInput1 == false){ 
+		      
+		      //Tower out calculated from ROI out
+		      if ( i_roi1 < 4 ) m_Tower_out = 0; 
+		      if ( i_roi1 >= 4 && i_roi < 8 ) m_Tower_out = 1; 
+		      if ( i_roi1 >= 8 && i_roi < 12 ) m_Tower_out = 2; 
+		      if ( i_roi1 >= 12 && i_roi < 16 ) m_Tower_out = 3; 
+		      if ( i_roi1 >= 16 && i_roi < 20 ) m_Tower_out = 4; 
+		      if ( i_roi1 >= 20 && i_roi < 24 ) m_Tower_out = 5; 
+		      if ( i_roi1 >= 24 ) m_Tower_out = 6; 
 		      
-                  //Trigger BCid out
-                  m_out_triggerBCid = i_triggerBcid1;
-                  //ReadOutWindow BCid in
-                  m_out_rowinBCid = i_rowinBcid1;
-
-                  //Calculate Timing difference in trigger BCid
-                  if ((m_Tower_out == m_Tower_in) && (m_out_rowinBCid == m_in_rowinBCid)){
-                    if(m_in_triggerBCid - m_out_triggerBCid >= 0) m_Diff_triggerBCid = m_in_triggerBCid - m_out_triggerBCid;
-                    else  m_Diff_triggerBCid = (m_in_triggerBCid - m_out_triggerBCid) + 8;
-                  }
-                }
+		      //Trigger BCid out
+		      m_out_triggerBCid = i_triggerBcid1;
+		      //ReadOutWindow BCid in
+		      m_out_rowinBCid = i_rowinBcid1;
+		      
+		      //Calculate Timing difference in trigger BCid
+		      if ((m_Tower_out == m_Tower_in) && (m_out_rowinBCid == m_in_rowinBCid)){
+			if(m_in_triggerBCid - m_out_triggerBCid >= 0) m_Diff_triggerBCid = m_in_triggerBCid - m_out_triggerBCid;
+			else  m_Diff_triggerBCid = (m_in_triggerBCid - m_out_triggerBCid) + 8;
+		      }
+		    }
 		    
-              }
-            }
+		  }
+	      }
 	      
-
-            //Fill in/out dependent histograms & histograms with timing difference only for IN
-            if (b_isInput == true){ 
-
-              m_rpclv1_triggerBCid_inout_vs_Tower -> Fill(float(m_Tower_out), float(m_Diff_triggerBCid));
-
-              // if (i_padid == 0){ 
-              m_rpclv1_triggerBCid_inout_vs_TriggerSector -> Fill(float(i_sectorid), float(m_Diff_triggerBCid));
-              m_rpclv1_triggerBCid_inout -> Fill(float(m_Diff_triggerBCid));
-              //per lumi block
-              if(m_lumiblockhist)m_rpclv1_triggerBCid_inout_LB -> Fill(float(m_Diff_triggerBCid));
-              // }
-
-              if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_triggerBCid_inout -> Fill(float(-(i_padid + 1)), float(i_sectorid), float(m_Diff_triggerBCid));
-              else m_rpclv1_TriggerSector_vs_Pad_triggerBCid_inout -> Fill(float((i_padid + 1)), float(i_sectorid - 32), float(m_Diff_triggerBCid));
-            }
+	      
+	      //Fill in/out dependent histograms & histograms with timing difference only for IN
+	      if (b_isInput == true){ 
+		
+		m_rpclv1_triggerBCid_inout_vs_Tower -> Fill(float(m_Tower_out), float(m_Diff_triggerBCid));
 		
-          } // End Loop over the trigger hits of each sector	  
+		// if (i_padid == 0){ 
+		m_rpclv1_triggerBCid_inout_vs_TriggerSector -> Fill(float(i_sectorid), float(m_Diff_triggerBCid));
+		m_rpclv1_triggerBCid_inout -> Fill(float(m_Diff_triggerBCid));
+		//per lumi block
+		if(m_lumiblockhist)m_rpclv1_triggerBCid_inout_LB -> Fill(float(m_Diff_triggerBCid));
+		// }
+		
+		if (i_sectorid < 32) m_rpclv1_TriggerSector_vs_Pad_triggerBCid_inout -> Fill(float(-(i_padid + 1)), float(i_sectorid), float(m_Diff_triggerBCid));
+		else m_rpclv1_TriggerSector_vs_Pad_triggerBCid_inout -> Fill(float((i_padid + 1)), float(i_sectorid - 32), float(m_Diff_triggerBCid));
+	      }
+	      
+	    } // End Loop over the trigger hits of each sector	  
 	  
 	  // Fill the trigger hits per event per sector histogram here
 	  if (m_nTriggerHitsperSector > 0) {
@@ -326,14 +319,14 @@ StatusCode RpcLv1RawDataSectorLogic::fillHistograms( )
 	    //per lumi block
 	    if(m_lumiblockhist)m_rpclv1_TriggerHitsperEventperTriggerSector_LB -> Fill(float(i_sectorid), float(m_nTriggerHitsperSector));
 	  }
-
+	  
 	} // End Loop over the Sector Logic containers
-      
-      // Fill the trigger hits per event histogram here
-      m_rpclv1_TriggerHitsperEvent -> Fill(float(m_nTriggerHits));
 
     }
     
+    // Fill the trigger hits per event histogram here
+    m_rpclv1_TriggerHitsperEvent -> Fill(float(m_nTriggerHits));
+    
   } // AthenaMonManager::tier0 || AthenaMonManager::tier0Raw   
   
   return sc;
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataValAlg.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataValAlg.cxx
index feab3818dfa40801cdbf8884a934253912fce056..b26f5b77f3310d2a6fc7d29bd0999e966dc465ab 100755
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataValAlg.cxx
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcLv1RawDataValAlg.cxx
@@ -14,7 +14,6 @@
 #include "GaudiKernel/MsgStream.h"
 #include "GaudiKernel/AlgFactory.h"
  
-#include "xAODEventInfo/EventInfo.h"
 #include "MuonDQAUtils/MuonChamberNameConverter.h"
 #include "MuonDQAUtils/MuonChambersRange.h"
 #include "MuonDQAUtils/MuonCosmicSetup.h"
@@ -74,19 +73,6 @@ StatusCode RpcLv1RawDataValAlg::initialize()
   ATH_MSG_INFO ( "RpcLv1ReduceNbins	" << m_rpclv1reducenbins	);
   StatusCode sc;
  
-  // Store Gate store
-  sc = serviceLocator()->service("StoreGateSvc", m_eventStore);
-  if (sc != StatusCode::SUCCESS ) {
-    ATH_MSG_ERROR ( " Cannot get StoreGateSvc " );
-    return sc ;
-  }
-  // retrieve the active store
-  sc = serviceLocator()->service("ActiveStoreSvc", m_activeStore);
-  if (sc != StatusCode::SUCCESS ) {
-    ATH_MSG_ERROR ( " Cannot get ActiveStoreSvc " );
-    return sc ;
-  }
-
   // Initialize the IdHelper
   StoreGateSvc* detStore = 0;
   sc = service("DetectorStore", detStore);
@@ -137,23 +123,20 @@ StatusCode RpcLv1RawDataValAlg::initialize()
   hardware_name_list.push_back("XXX");
   
   ManagedMonitorToolBase::initialize().ignore();  //  Ignore the checking code;
+
+  ATH_CHECK(m_eventInfo.initialize());
+  ATH_CHECK(m_rpcRdoKey.initialize());
  
   return StatusCode::SUCCESS;
 }
 
 
 StatusCode RpcLv1RawDataValAlg::StoreTriggerType() {
-  const xAOD::EventInfo* eventInfo = nullptr;
-  StatusCode sc = StatusCode::SUCCESS;
-  sc = m_eventStore->retrieve(eventInfo);
-  if ( sc.isFailure() ) {
-    ATH_MSG_ERROR ( "Could not find eventInfo " );
-    return sc;
-  }else {ATH_MSG_DEBUG ( "RpcLv1RawDataValAlg::retrieved eventInfo" );} 
+  SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfo);
   
   m_trigtype = eventInfo->level1TriggerType();
 
-  return sc;
+  return StatusCode::SUCCESS;
 }
 
 
@@ -191,12 +174,7 @@ StatusCode RpcLv1RawDataValAlg::fillHistograms()
   
     // Prepare the retrieval of the RpcPadContainer
 
-    const RpcPadContainer* rpcRDO = nullptr;
-    sc= (*m_activeStore)->retrieve(rpcRDO,"RPCPAD");
-    if (sc.isFailure()) {
-      ATH_MSG_ERROR ( "Could not find RPC Pads" );     
-      return sc;
-    }
+    SG::ReadHandle<RpcPadContainer> rpcRDO(m_rpcRdoKey);
 
     // begin loop to get trigger time
     for (RpcPadContainer::const_iterator rdoColli = rpcRDO->begin(); rdoColli!=rpcRDO->end(); ++rdoColli)
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcRawDataValAlg.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcRawDataValAlg.cxx
index 39dcb257e3399ede4859f039a44313bc2e78c672..e5555a53836ceeb8cb32b82397f386e6fc2d3d05 100755
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcRawDataValAlg.cxx
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/RpcRawDataMonitoring/src/RpcRawDataValAlg.cxx
@@ -35,10 +35,6 @@
 
 #include "MuonDigitContainer/RpcDigitContainer.h"
  
-#include "MuonPrepRawData/MuonPrepDataContainer.h"
-
-#include "MuonTrigCoinData/RpcCoinDataContainer.h"
-
 #include "MuonDQAUtils/MuonChamberNameConverter.h"
 #include "MuonDQAUtils/MuonChambersRange.h"
 #include "MuonDQAUtils/MuonCosmicSetup.h"
@@ -93,9 +89,6 @@ RpcRawDataValAlg::RpcRawDataValAlg( const std::string & type, const std::string
   declareProperty("lv1Thres_2",		 m_lv1Thres_2		= 2	);
   declareProperty("lv1Thres_3",		 m_lv1Thres_3		= 3	);
   declareProperty("doCoolDB",		 m_doCoolDB		= true	);
-  declareProperty("ClusterContainer",    m_clusterContainerName = "rpcClusters"		);
-  declareProperty("RpcPrepDataContainer",m_key_rpc		= "RPC_Measurements"	);
-  declareProperty("RPCTriggerContainer", m_key_trig		= "RPC_triggerHits"	);
   declareProperty("MinimunEntries",      m_MinEntries		= 10	);    // min entries required for summary plot 
   declareProperty("LB_Nbins"      ,      m_LB_Nbins		= 300	);     
   declareProperty("LBmax"         ,      m_LBmax		= 1500	);
@@ -130,19 +123,6 @@ StatusCode RpcRawDataValAlg::initialize(){
   
   StatusCode sc;
 
-  // Store Gate store
-  sc = serviceLocator()->service("StoreGateSvc", m_eventStore);
-  if (sc != StatusCode::SUCCESS ) {
-    ATH_MSG_ERROR (  " Cannot get StoreGateSvc " );
-    return sc ;
-  }
-  // retrieve the active store
-  sc = serviceLocator()->service("ActiveStoreSvc", m_activeStore);
-  if (sc != StatusCode::SUCCESS ) {
-    ATH_MSG_ERROR (  " Cannot get ActiveStoreSvc " );
-    return sc ;
-  }
-
   // Initialize the IdHelper
   StoreGateSvc* detStore = 0;
   sc = service("DetectorStore", detStore);
@@ -245,6 +225,10 @@ StatusCode RpcRawDataValAlg::initialize(){
  
   m_first = true ;
   
+  ATH_CHECK(m_eventInfo.initialize());
+  ATH_CHECK( m_key_rpc.initialize());
+  ATH_CHECK( m_key_trig.initialize());
+  ATH_CHECK(m_clusterContainerName.initialize(m_doClusters));
   
   return StatusCode::SUCCESS;
 }
@@ -263,31 +247,18 @@ StatusCode RpcRawDataValAlg::fillHistograms()
        
       int lumiblock = -1 ;
 	
-      const DataHandle<xAOD::EventInfo> eventInfo;
-      StatusCode sc = m_eventStore->retrieve( eventInfo );
-      if (sc.isFailure()) {
-	ATH_MSG_INFO ( "no event info" );
-	return StatusCode::SUCCESS;
-      }
-      else {
+      SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfo);
 	  
-	lumiblock = eventInfo->lumiBlock()  ;
+      lumiblock = eventInfo->lumiBlock()  ;
 	  
-	ATH_MSG_DEBUG ( "event LB " << lumiblock ); 
-	      
-      }
+      ATH_MSG_DEBUG ( "event LB " << lumiblock ); 
               
       float AverageLuminosityWeight = 1;
       
   
     
     
-      const Muon::RpcPrepDataContainer* rpc_container;
-      sc = (*m_activeStore)->retrieve(rpc_container, m_key_rpc);
-      if (sc.isFailure()) {
-	ATH_MSG_ERROR (  " Cannot retrieve RpcPrepDataContainer " << m_key_rpc );
-	return sc;
-      }
+      SG::ReadHandle<Muon::RpcPrepDataContainer> rpc_container(m_key_rpc);
 
       ATH_MSG_DEBUG ( "****** rpc->size() : " << rpc_container->size()) ;  
     
@@ -1222,13 +1193,8 @@ StatusCode RpcRawDataValAlg::fillHistograms()
       // loop on trigger hits
       if(m_doTriggerHits){  
     
-        const Muon::RpcCoinDataContainer* rpc_trigcontainer;
+	SG::ReadHandle<Muon::RpcCoinDataContainer> rpc_trigcontainer(m_key_trig );
     
-        sc = (*m_activeStore)->retrieve(rpc_trigcontainer, m_key_trig );
-        if (sc.isFailure()) {
-          ATH_MSG_ERROR (  " Cannot retrieve RPC trigger Hits container " << m_key_trig );
-          return sc;
-        }
         Muon::RpcCoinDataContainer::const_iterator trigcontainerIt;
         for ( trigcontainerIt = rpc_trigcontainer->begin(); trigcontainerIt != rpc_trigcontainer->end(); ++trigcontainerIt ) 
 	{
@@ -1832,25 +1798,12 @@ StatusCode RpcRawDataValAlg::fillHistograms()
        m_rpcTriggerHitsPerEvents_Phi_HighPt ->  Fill (NTrigger_Phi_HighPt)  ;
       }
       // begin cluster monitoring
-      const Muon::RpcPrepDataContainer* rpc_clusterContainer;
-      bool Clus_Retr = false;
-      if(m_eventStore->contains<Muon::RpcPrepDataContainer>(m_clusterContainerName)){
-	sc = m_eventStore->retrieve(rpc_clusterContainer, m_clusterContainerName);
-	if ( sc.isSuccess() ) {
-	  Clus_Retr = true ; 
-	}
-	else {
-	  ATH_MSG_DEBUG (  " RpcRawDataValAlg :: Cannot retrieve the RPC cluster container " );
-	  Clus_Retr = false;
-	  return sc;
-	}
-      }  
-      else { Clus_Retr = false;}
    
-      if (m_doClusters && Clus_Retr )
+      if (m_doClusters )
 	{  
 	  ATH_MSG_DEBUG (  "Start RPC Cluster Monitoring" );
-  
+	  SG::ReadHandle<Muon::RpcPrepDataContainer> rpc_clusterContainer(m_clusterContainerName);
+
 	  // RPC clusters histograms
 
 	  m_nClus=0;