From f44c624a07448afdfc79cb9dc75e4cc02e120d86 Mon Sep 17 00:00:00 2001 From: Federico <federicoscutti@gmail.com> Date: Wed, 27 Sep 2017 07:05:57 +0000 Subject: [PATCH] use smart pointers to get rid of mem-leak --- .../tauRecTools/Root/TauWPDecorator.cxx | 15 ++++++++------- .../tauRecTools/tauRecTools/TauWPDecorator.h | 3 +-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Reconstruction/tauRecTools/Root/TauWPDecorator.cxx b/Reconstruction/tauRecTools/Root/TauWPDecorator.cxx index 3cab3b1d2550..bd69013071f5 100644 --- a/Reconstruction/tauRecTools/Root/TauWPDecorator.cxx +++ b/Reconstruction/tauRecTools/Root/TauWPDecorator.cxx @@ -75,13 +75,15 @@ StatusCode TauWPDecorator::retrieveHistos(int nProng) { } // Clone histogram and store locally - TH2* myLocalGraph = (TH2*)myGraph->Clone(); - myLocalGraph->SetDirectory(0); + std::unique_ptr<TH2> myLocalGraph1P((TH2*)myGraph->Clone()); + std::unique_ptr<TH2> myLocalGraph3P((TH2*)myGraph->Clone()); + myLocalGraph1P->SetDirectory(0); + myLocalGraph3P->SetDirectory(0); if(nProng == 1) - m_hists1P.push_back(m_pair_t(float(i)/100., myLocalGraph)); + m_hists1P.push_back(m_pair_t(float(i)/100., std::move(myLocalGraph1P))); else - m_hists3P.push_back(m_pair_t(float(i)/100., myLocalGraph)); + m_hists3P.push_back(m_pair_t(float(i)/100., std::move(myLocalGraph3P))); } return StatusCode::SUCCESS; @@ -102,8 +104,7 @@ StatusCode TauWPDecorator::storeLimits(int nProng) { // Store limits for (unsigned int i=0; i<histArray->size(); i++) { - TH2* myHist = histArray->at(i).second; - + TH2* myHist = histArray->at(i).second.get(); m_xmin[nProng] = TMath::Min(myHist->GetXaxis()->GetXmin(), m_xmin[nProng]); m_ymin[nProng] = TMath::Min(myHist->GetYaxis()->GetXmin(), m_ymin[nProng]); @@ -198,7 +199,7 @@ StatusCode TauWPDecorator::execute(xAOD::TauJet& pTau) // Loop over all histograms for (unsigned int i=0; i<histArray->size(); i++) { - TH2* myHist = histArray->at(i).second; + TH2* myHist = histArray->at(i).second.get(); double myCut = myHist->Interpolate(pt, y_var); // Find upper and lower cuts diff --git a/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h b/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h index a2a612ae249a..d037a90cc759 100644 --- a/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h +++ b/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h @@ -24,7 +24,6 @@ class TH2; * */ - class TauWPDecorator : public TauRecToolBase { public: @@ -50,7 +49,7 @@ private: std::string m_file1P; //!< energy calibration file std::string m_file3P; //!< energy calibration file - typedef std::pair<double, TH2* > m_pair_t; + typedef std::pair<double, std::unique_ptr<TH2> > m_pair_t; std::vector<m_pair_t> m_hists1P; std::vector<m_pair_t> m_hists3P; -- GitLab