From 1a72d67be9960bf355c9c32a647029253da37ad0 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Sat, 21 Oct 2023 11:39:16 +0200 Subject: [PATCH] switched PFitter to smart pointers. --- src/classes/PFitter.cpp | 37 ++++--------------------------------- src/include/PFitter.h | 6 ++++-- 2 files changed, 8 insertions(+), 35 deletions(-) diff --git a/src/classes/PFitter.cpp b/src/classes/PFitter.cpp index ce8f6d61..9d5a4486 100644 --- a/src/classes/PFitter.cpp +++ b/src/classes/PFitter.cpp @@ -280,9 +280,6 @@ PFitter::PFitter(PMsrHandler *runInfo, PRunListCollection *runListCollection, Bo fCmdLines = *runInfo->GetMsrCommands(); // init class variables - fFitterFcn = nullptr; - fFcnMin = nullptr; - fScanAll = true; fScanParameter[0] = 0; fScanParameter[1] = 0; @@ -317,11 +314,7 @@ PFitter::PFitter(PMsrHandler *runInfo, PRunListCollection *runListCollection, Bo GetPhaseParams(); // create fit function object - fFitterFcn = new PFitterFcn(runListCollection, fUseChi2); - if (!fFitterFcn) { - fIsValid = false; - return; - } + fFitterFcn = std::make_unique(runListCollection, fUseChi2); } //-------------------------------------------------------------------------- @@ -337,16 +330,6 @@ PFitter::~PFitter() fScanData.clear(); fElapsedTime.clear(); - - if (fFcnMin) { - delete fFcnMin; - fFcnMin = nullptr; - } - - if (fFitterFcn) { - delete fFitterFcn; - fFitterFcn = nullptr; - } } //-------------------------------------------------------------------------- @@ -1802,11 +1785,7 @@ Bool_t PFitter::ExecuteMigrad() } // keep FunctionMinimum object - if (fFcnMin) { // fFcnMin exist hence clean up first - delete fFcnMin; - fFcnMin = nullptr; - } - fFcnMin = new ROOT::Minuit2::FunctionMinimum(min); + fFcnMin.reset(new ROOT::Minuit2::FunctionMinimum(min)); // keep user parameters if (fFcnMin) @@ -1883,11 +1862,7 @@ Bool_t PFitter::ExecuteMinimize() } // keep FunctionMinimum object - if (fFcnMin) { // fFcnMin exist hence clean up first - delete fFcnMin; - fFcnMin = nullptr; - } - fFcnMin = new ROOT::Minuit2::FunctionMinimum(min); + fFcnMin.reset(new ROOT::Minuit2::FunctionMinimum(min)); // keep user parameters if (fFcnMin) @@ -2596,11 +2571,7 @@ Bool_t PFitter::ExecuteSimplex() } // keep FunctionMinimum object - if (fFcnMin) { // fFcnMin exist hence clean up first - delete fFcnMin; - fFcnMin = nullptr; - } - fFcnMin = new ROOT::Minuit2::FunctionMinimum(min); + fFcnMin.reset(new ROOT::Minuit2::FunctionMinimum(min)); // keep user parameters if (fFcnMin) diff --git a/src/include/PFitter.h b/src/include/PFitter.h index 978429e6..bf2447e8 100644 --- a/src/include/PFitter.h +++ b/src/include/PFitter.h @@ -30,6 +30,8 @@ #ifndef _PFITTER_H_ #define _PFITTER_H_ +#include + #include "Minuit2/MnUserParameters.h" #include "Minuit2/FunctionMinimum.h" @@ -135,10 +137,10 @@ class PFitter PMsrLines fCmdLines; ///< all the Minuit commands from the msr-file PIntPairVector fCmdList; ///< command list, first=cmd, second=cmd line index - PFitterFcn *fFitterFcn; ///< pointer to the fitter function object + std::unique_ptr fFitterFcn; ///< pointer to the fitter function object ROOT::Minuit2::MnUserParameters fMnUserParams; ///< minuit2 input parameter list - ROOT::Minuit2::FunctionMinimum *fFcnMin; ///< function minimum object + std::unique_ptr fFcnMin; ///< function minimum object // minuit2 scan/contours command relate variables (see MnScan/MnContours in the minuit2 user manual) Bool_t fScanAll; ///< flag. false: single parameter scan, true: not implemented yet (see MnScan/MnContours in the minuit2 user manual)