13 #ifndef ROOT_Fit_Fitter 14 #define ROOT_Fit_Fitter 107 Fitter (
const std::shared_ptr<FitResult> & result);
137 template <
class Data,
class Function,
138 class cond =
typename std::enable_if<!(std::is_same<Function, ROOT::Fit::ExecutionPolicy>::value ||
139 std::is_same<Function, int>::value),
145 return Fit(
data, executionPolicy);
206 template <
class Data ,
class Function>
231 template <
class Function>
232 bool FitFCN(
unsigned int npar,
Function & fcn,
const double * params = 0,
unsigned int dataSize = 0,
bool chi2fit =
false);
240 template <
class Function>
241 bool SetFCN(
unsigned int npar,
Function & fcn,
const double * params = 0,
unsigned int dataSize = 0,
bool chi2fit =
false);
310 typedef void (*
MinuitFCN_t )(
int &npar,
double *gin,
double &f,
double *u,
int flag);
311 bool FitFCN(
MinuitFCN_t fcn,
int npar = 0,
const double * params = 0,
unsigned int dataSize = 0,
bool chi2fit =
false);
318 bool SetFCN(
MinuitFCN_t fcn,
int npar = 0,
const double * params = 0,
unsigned int dataSize = 0,
bool chi2fit =
false);
340 #ifdef R__HAS_VECCORE 341 template <class NotCompileIfScalarBackend = std::enable_if<!(std::is_same<double, ROOT::Double_v>::value)>>
344 template <class NotCompileIfScalarBackend = std::enable_if<!(std::is_same<double, ROOT::Double_v>::value)>>
476 template <
class Data>
478 fData = std::static_pointer_cast<Data>(
data);
488 template <
class ObjFuncType>
508 std::shared_ptr<IModelFunction>
fFunc;
510 std::shared_ptr<ROOT::Fit::FitResult>
fResult;
514 std::shared_ptr<ROOT::Fit::FitData>
fData;
523 template <
class ObjFuncType>
525 ObjFuncType * objfunc =
dynamic_cast<ObjFuncType*
>(
fObjFunction.get() );
527 fFunc = objfunc->ModelFunctionPtr();
528 fData = objfunc->DataPtr();
536 #ifdef R__HAS_VECCORE 537 template <
class NotCompileIfScalarBackend>
548 "Requested function does not provide gradient - use it as non-gradient function ");
563 template <
class NotCompileIfScalarBackend>
589 template<
class Function>
592 return FitFCN(wf,par,datasize,chi2fit);
594 template<
class Function>
597 return SetFCN(wf,par,datasize,chi2fit);
603 #endif // endif __CINT__ ROOT::Math::IParamFunction IModel1DFunction
bool Fit(const UnBinData &data, bool extended=false, const ROOT::Fit::ExecutionPolicy &executionPolicy=ROOT::Fit::ExecutionPolicy::kSerial)
fit an unbinned data set using loglikelihood method
void ExamineFCN()
look at the user provided FCN and get data and model function is they derive from ROOT::Fit FCN class...
Interface (abstract class) for multi-dimensional functions providing a gradient calculation.
Namespace for new ROOT classes and functions.
void(* MinuitFCN_t)(int &npar, double *gin, double &f, double *u, int flag)
fit using user provided FCN with Minuit-like interface If npar = 0 it is assumed that the parameters ...
FitConfig & Config()
access to the configuration (non const method)
bool CalculateMinosErrors()
perform an error analysis on the result using MINOS To be called only after fitting and when a minimi...
bool Fit(const BinData &data, const ROOT::Fit::ExecutionPolicy &executionPolicy=ROOT::Fit::ExecutionPolicy::kSerial)
Fit a binned data set using a least square fit (default method)
Fitter & operator=(const Fitter &rhs)
Assignment operator (disabled, class is not copyable)
bool EvalFCN()
Perform a simple FCN evaluation.
Base class for all the fit data types: Stores the coordinates and the DataOptions.
void SetData(const FitData &data)
bool LikelihoodFit(const UnBinData &data, bool extended=false, const ROOT::Fit::ExecutionPolicy &executionPolicy=ROOT::Fit::ExecutionPolicy::kSerial)
Unbinned Likelihood fit.
ROOT::Math::IMultiGenFunction BaseFunc
std::shared_ptr< IModelFunction > fFunc
copy of the fitted function containing on output the fit result
Class describing the unbinned data sets (just x coordinates values) of any dimensions.
Interface (abstract class) for parametric gradient multi-dimensional functions providing in addition ...
bool LikelihoodFit(const BinData &data, bool extended=true, const ROOT::Fit::ExecutionPolicy &executionPolicy=ROOT::Fit::ExecutionPolicy::kSerial)
Binned Likelihood fit.
bool DoLinearFit()
linear least square fit
void SetFunctionAndData(const IModelFunctionTempl< T > &func, const FitData &data)
#define MATH_WARN_MSG(loc, str)
std::shared_ptr< ROOT::Fit::FitResult > fResult
copy of the fitted function containing on output the fit result
bool CalculateHessErrors()
perform an error analysis on the result using the Hessian Errors are obtaied from the inverse of the ...
bool LeastSquareFit(const BinData &data)
Fit a binned data set using a least square fit.
bool DoBinnedLikelihoodFit(bool extended=true, const ROOT::Fit::ExecutionPolicy &executionPolicy=ROOT::Fit::ExecutionPolicy::kSerial)
binned likelihood fit
const FitResult & Result() const
get fit result
void CreateParamsSettings(const ROOT::Math::IParamMultiFunctionTempl< T > &func)
set the parameter settings from a model function.
Fitter()
Default constructor.
ROOT::Math::IParamMultiGradFunction IGradModelFunction
Abstract Minimizer class, defining the interface for the various minimizer (like Minuit2, Minuit, GSL, etc..) Plug-in's exist in ROOT to be able to instantiate the derived classes like ROOT::Math::GSLMinimizer or ROOT::Math::Minuit2Minimizer via the plug-in manager.
bool DoLeastSquareFit(const ROOT::Fit::ExecutionPolicy &executionPolicy=ROOT::Fit::ExecutionPolicy::kSerial)
least square fit
ROOT::Math::IParamGradFunction IGradModel1DFunction
bool LinearFit(const BinData &data)
do a linear fit on a set of bin-data
bool Fit(const std::shared_ptr< BinData > &data, const ROOT::Fit::ExecutionPolicy &executionPolicy=ROOT::Fit::ExecutionPolicy::kSerial)
std::shared_ptr< IModelFunction_v > fFunc_v
bool ApplyWeightCorrection(const ROOT::Math::IMultiGenFunction &loglw2, bool minimizeW2L=false)
apply correction in the error matrix for the weights for likelihood fits This method can be called on...
const FitConfig & Config() const
access to the fit configuration (const method)
Documentation for the abstract class IBaseFunctionMultiDim.
std::shared_ptr< ROOT::Fit::FitData > fData
pointer to used minimizer
Double_t(* Function)(Double_t)
bool IsBinFit() const
query if fit is binned.
RooCmdArg Minimizer(const char *type, const char *alg=0)
Fitter class, entry point for performing all type of fits.
ROOT::Math::IParamMultiGradFunction IGradModelFunction_v
ROOT::Math::IMultiGenFunction * GetFCN() const
return pointer to last used objective function (is NULL in case fit is not yet done) This pointer wil...
bool LikelihoodFit(const std::shared_ptr< UnBinData > &data, bool extended=false, const ROOT::Fit::ExecutionPolicy &executionPolicy=ROOT::Fit::ExecutionPolicy::kSerial)
bool FitFCN()
Perform a fit with the previously set FCN function.
Class describing the binned data sets : vectors of x coordinates, y values and optionally error on y ...
void SetFunction(const IModelFunction &func, bool useGradient=false)
Set the fitted function (model function) from a parametric function interface.
std::shared_ptr< ROOT::Math::Minimizer > fMinimizer
pointer to the object containing the result of the fit
Interface (abstract class) for parametric one-dimensional gradient functions providing in addition to...
IParamFunction interface (abstract class) describing multi-dimensional parameteric functions It is a ...
class containg the result of the fit and all the related information (fitted parameter values...
Specialized IParamFunction interface (abstract class) for one-dimensional parametric functions It is ...
FitMethodFunction class Interface for objective functions (like chi2 and likelihood used in the fit) ...
TFitResultPtr Fit(FitObject *h1, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption, const char *goption, ROOT::Fit::DataRange &range)
bool DoUnbinnedLikelihoodFit(bool extended=false, const ROOT::Fit::ExecutionPolicy &executionPolicy=ROOT::Fit::ExecutionPolicy::kSerial)
un-binned likelihood fit
ROOT::Math::IMultiGradFunction BaseGradFunc
std::shared_ptr< ROOT::Math::IMultiGenFunction > fObjFunction
pointer to the fit data (binned or unbinned data)
bool GetDataFromFCN()
internal functions to get data set and model function from FCN useful for fits done with customized F...
Template class to wrap any C++ callable object implementing operator() (const double * x) in a multi-...
Namespace for new Math classes and functions.
BasicFitMethodFunction< ROOT::Math::IMultiGradFunction > FitMethodGradFunction
typedef void((*Func_t)())
bool SetFCN(unsigned int npar, Function &fcn, const double *params=0, unsigned int dataSize=0, bool chi2fit=false)
Set a generic FCN function as a C++ callable object implementing double () (const double *) Note that...
bool LikelihoodFit(const std::shared_ptr< BinData > &data, bool extended=true, const ROOT::Fit::ExecutionPolicy &executionPolicy=ROOT::Fit::ExecutionPolicy::kSerial)
ROOT::Math::IParamMultiFunction IModelFunction_v
ROOT::Math::Minimizer * GetMinimizer() const
return pointer to last used minimizer (is NULL in case fit is not yet done) This pointer is guranteed...
bool LikelihoodFit(const Data &data, const Function &func, bool extended)
fit a data set using any generic model function Pre-requisite on the function:
bool Fit(const Data &data, const Function &func, const ROOT::Fit::ExecutionPolicy &executionPolicy=ROOT::Fit::ExecutionPolicy::kSerial)
fit a data set using any generic model function If data set is binned a least square fit is performed...
bool LinearFit(const std::shared_ptr< BinData > &data)
void SetData(const std::shared_ptr< Data > &data)
bool DoMinimization(const BaseFunc &f, const ROOT::Math::IMultiGenFunction *chifunc=0)
do minimization
ROOT::Math::IParamMultiFunction IModelFunction
Class describing the configuration of the fit, options and parameter settings using the ROOT::Fit::Pa...
BasicFitMethodFunction< ROOT::Math::IMultiGenFunction > FitMethodFunction