Skip to content
Snippets Groups Projects
Commit e607b54e authored by James Beacham's avatar James Beacham
Browse files

Merge branch 'b21-tau-mem-leak' into '21.0'

Resolve memory leaks in TauWPDecorator

See merge request !5047

Former-commit-id: 1bdae38232a2df60f7a3058a3db7ff8fd316537d
parents 38be77b7 d1c9dc24
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment