diff --git a/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/MuonMomentumCorrections/MuonCalibrationAndSmearingTool.h b/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/MuonMomentumCorrections/MuonCalibrationAndSmearingTool.h
index 1989bfc66d52258badea2f211cdf1985252e9a85..2f303012671b15ad325ad9ca6ca3441455bfd626 100644
--- a/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/MuonMomentumCorrections/MuonCalibrationAndSmearingTool.h
+++ b/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/MuonMomentumCorrections/MuonCalibrationAndSmearingTool.h
@@ -140,7 +140,7 @@ protected:
   virtual  double  sagitta(TProfile2D* corrM, TLorentzVector &lv);
   
   virtual void ConvertToSagittaBias(TH2F *h,float mean=1);
-  virtual TProfile2D* GetHist(std::string fname="", std::string hname="inclusive",double GlobalScale=MZPDG);
+  virtual TProfile2D* GetHist(const std::string &fname="", const std::string &hname="inclusive",double GlobalScale=MZPDG);
 
   //private:
   //::: fake assignment operator missing actual implementation
diff --git a/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/Root/MuonCalibrationAndSmearingTool.cxx b/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/Root/MuonCalibrationAndSmearingTool.cxx
index ce6ba551b0e5b3899758ebdff0c9d91cb73967dc..dc8ab315aba8b5f009f1ad7fbbdad6f5c40a2fd2 100644
--- a/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/Root/MuonCalibrationAndSmearingTool.cxx
+++ b/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/Root/MuonCalibrationAndSmearingTool.cxx
@@ -269,8 +269,9 @@ StatusCode MuonCalibrationAndSmearingTool::initialize() {
       ATH_MSG_VERBOSE("Case "<<i<<" track Name "<<trackNames.at(i)<<" and iterations "<<m_SagittaIterations.at(i));
       for( unsigned int j=0; j< m_SagittaIterations.at(i) ;  j++){
         ATH_MSG_VERBOSE("Track "<<i<<" file "<< PathResolverFindCalibFile(Form("MuonMomentumCorrections/sagittaBiasDataAll/outqDeltamPlots_iter%d/",j) + trackNames.at(i) + "_data.root"));
-        
-        setSagittaHistogramsSingle(GetHist( PathResolverFindCalibFile(Form("MuonMomentumCorrections/sagittaBiasDataAll/outqDeltamPlots_iter%d/",j) + trackNames.at(i) + "_data.root"),"inclusive",m_GlobalZScales.at(i)),i);
+        std::unique_ptr<TProfile2D> hist(GetHist( PathResolverFindCalibFile(Form("MuonMomentumCorrections/sagittaBiasDataAll/outqDeltamPlots_iter%d/",j) + trackNames.at(i) + "_data.root"),"inclusive",m_GlobalZScales.at(i)));
+
+        setSagittaHistogramsSingle(hist.get() , i);
       }
     }
   }
@@ -290,7 +291,7 @@ StatusCode MuonCalibrationAndSmearingTool::initialize() {
     h->GetZaxis()->SetRangeUser(-1,+1);
   }
   
-  TProfile2D* MuonCalibrationAndSmearingTool::GetHist(std::string fname, std::string hname,double GlobalScale){
+  TProfile2D* MuonCalibrationAndSmearingTool::GetHist(const std::string &fname, const std::string &hname, double GlobalScale){
     if( fname.size() == 0 || hname.size()==0 ) return NULL;
     
     ATH_MSG_INFO("Opening correction file : " <<fname);
@@ -301,16 +302,15 @@ StatusCode MuonCalibrationAndSmearingTool::initialize() {
       return NULL;
     }
 
-    TH3F *h3=NULL;
-    h3=(TH3F*)fmc->Get(hname.c_str());
+    TH3 *h3= static_cast<TH3*>(fmc->Get(hname.c_str()));
     
     if( h3==NULL ){ 
       ATH_MSG_ERROR("NULL sagitta map");
       return NULL; 
-    } 
+    }
 
     h3->SetDirectory(0);
-    TProfile2D *hinclusive=(TProfile2D*)h3->Project3DProfile("yx");
+    TProfile2D *hinclusive= h3->Project3DProfile("yx");
     hinclusive->SetDirectory(0);
     hinclusive->GetXaxis()->SetTitle(h3->GetXaxis()->GetTitle());
     hinclusive->GetYaxis()->SetTitle(h3->GetYaxis()->GetTitle());
@@ -320,6 +320,7 @@ StatusCode MuonCalibrationAndSmearingTool::initialize() {
     
     delete h3;
     fmc->Close();
+    delete fmc;
     return hinclusive;
 }