switched PFitter to smart pointers.

This commit is contained in:
suter_a 2023-10-21 11:39:16 +02:00
parent 7e17af0256
commit 1a72d67be9
2 changed files with 8 additions and 35 deletions

View File

@ -280,9 +280,6 @@ PFitter::PFitter(PMsrHandler *runInfo, PRunListCollection *runListCollection, Bo
fCmdLines = *runInfo->GetMsrCommands(); fCmdLines = *runInfo->GetMsrCommands();
// init class variables // init class variables
fFitterFcn = nullptr;
fFcnMin = nullptr;
fScanAll = true; fScanAll = true;
fScanParameter[0] = 0; fScanParameter[0] = 0;
fScanParameter[1] = 0; fScanParameter[1] = 0;
@ -317,11 +314,7 @@ PFitter::PFitter(PMsrHandler *runInfo, PRunListCollection *runListCollection, Bo
GetPhaseParams(); GetPhaseParams();
// create fit function object // create fit function object
fFitterFcn = new PFitterFcn(runListCollection, fUseChi2); fFitterFcn = std::make_unique<PFitterFcn>(runListCollection, fUseChi2);
if (!fFitterFcn) {
fIsValid = false;
return;
}
} }
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
@ -337,16 +330,6 @@ PFitter::~PFitter()
fScanData.clear(); fScanData.clear();
fElapsedTime.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 // keep FunctionMinimum object
if (fFcnMin) { // fFcnMin exist hence clean up first fFcnMin.reset(new ROOT::Minuit2::FunctionMinimum(min));
delete fFcnMin;
fFcnMin = nullptr;
}
fFcnMin = new ROOT::Minuit2::FunctionMinimum(min);
// keep user parameters // keep user parameters
if (fFcnMin) if (fFcnMin)
@ -1883,11 +1862,7 @@ Bool_t PFitter::ExecuteMinimize()
} }
// keep FunctionMinimum object // keep FunctionMinimum object
if (fFcnMin) { // fFcnMin exist hence clean up first fFcnMin.reset(new ROOT::Minuit2::FunctionMinimum(min));
delete fFcnMin;
fFcnMin = nullptr;
}
fFcnMin = new ROOT::Minuit2::FunctionMinimum(min);
// keep user parameters // keep user parameters
if (fFcnMin) if (fFcnMin)
@ -2596,11 +2571,7 @@ Bool_t PFitter::ExecuteSimplex()
} }
// keep FunctionMinimum object // keep FunctionMinimum object
if (fFcnMin) { // fFcnMin exist hence clean up first fFcnMin.reset(new ROOT::Minuit2::FunctionMinimum(min));
delete fFcnMin;
fFcnMin = nullptr;
}
fFcnMin = new ROOT::Minuit2::FunctionMinimum(min);
// keep user parameters // keep user parameters
if (fFcnMin) if (fFcnMin)

View File

@ -30,6 +30,8 @@
#ifndef _PFITTER_H_ #ifndef _PFITTER_H_
#define _PFITTER_H_ #define _PFITTER_H_
#include <memory>
#include "Minuit2/MnUserParameters.h" #include "Minuit2/MnUserParameters.h"
#include "Minuit2/FunctionMinimum.h" #include "Minuit2/FunctionMinimum.h"
@ -135,10 +137,10 @@ class PFitter
PMsrLines fCmdLines; ///< all the Minuit commands from the msr-file PMsrLines fCmdLines; ///< all the Minuit commands from the msr-file
PIntPairVector fCmdList; ///< command list, first=cmd, second=cmd line index PIntPairVector fCmdList; ///< command list, first=cmd, second=cmd line index
PFitterFcn *fFitterFcn; ///< pointer to the fitter function object std::unique_ptr<PFitterFcn> fFitterFcn; ///< pointer to the fitter function object
ROOT::Minuit2::MnUserParameters fMnUserParams; ///< minuit2 input parameter list ROOT::Minuit2::MnUserParameters fMnUserParams; ///< minuit2 input parameter list
ROOT::Minuit2::FunctionMinimum *fFcnMin; ///< function minimum object std::unique_ptr<ROOT::Minuit2::FunctionMinimum> fFcnMin; ///< function minimum object
// minuit2 scan/contours command relate variables (see MnScan/MnContours in the minuit2 user manual) // 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) Bool_t fScanAll; ///< flag. false: single parameter scan, true: not implemented yet (see MnScan/MnContours in the minuit2 user manual)