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; }