#ifndef ROOT_Fit_Fitter
#define ROOT_Fit_Fitter
#ifndef ROOT_Fit_DataVectorfwd
#include "Fit/DataVectorfwd.h"
#endif
#ifndef ROOT_Fit_FitConfig
#include "Fit/FitConfig.h"
#endif
#ifndef ROOT_Fit_FitResult
#include "Fit/FitResult.h"
#endif
#ifndef ROOT_Math_IParamFunctionfwd
#include "Math/IParamFunctionfwd.h"
#endif
namespace ROOT {
namespace Math {
class Minimizer;
}
namespace Fit {
class Fitter {
public:
typedef ROOT::Math::IParamMultiFunction IModelFunction;
typedef ROOT::Math::IParamMultiGradFunction IGradModelFunction;
typedef ROOT::Math::IParamFunction IModel1DFunction;
typedef ROOT::Math::IParamGradFunction IGradModel1DFunction;
typedef ROOT::Math::IMultiGenFunction BaseFunc;
typedef ROOT::Math::IMultiGradFunction BaseGradFunc;
Fitter ();
~Fitter ();
private:
Fitter(const Fitter &);
Fitter & operator = (const Fitter & rhs);
public:
template < class Data , class Function>
bool Fit( const Data & data, const Function & func) {
SetFunction(func);
return Fit(data);
}
bool Fit(const BinData & data) {
return DoLeastSquareFit(data);
}
bool Fit(const UnBinData & data) {
return DoLikelihoodFit(data);
}
template <class Data>
bool LikelihoodFit(const Data & data) {
return DoLikelihoodFit(data);
}
template < class Data , class Function>
bool LikelihoodFit( const Data & data, const Function & func) {
SetFunction(func);
return DoLikelihoodFit(data);
}
bool FitFCN(const ROOT::Math::IMultiGenFunction & fcn, const double * params, unsigned int dataSize );
bool FitFCN(const ROOT::Math::IMultiGradFunction & fcn, const double * params, unsigned int dataSize );
bool LinearFit(const BinData & data) { return DoLinearFit(data); }
void SetFunction(const IModelFunction & func);
void SetFunction(const IModel1DFunction & func);
void SetFunction(const IGradModelFunction & func);
void SetFunction(const IGradModel1DFunction & func);
const FitResult & Result() const { return fResult; }
const FitConfig & Config() const { return fConfig; }
FitConfig & Config() { return fConfig; }
protected:
bool DoLeastSquareFit(const BinData & data);
bool DoLikelihoodFit(const BinData & data);
bool DoLikelihoodFit(const UnBinData & data);
bool DoLinearFit(const BinData & data);
template<class ObjFunc>
bool DoMinimization(ROOT::Math::Minimizer & min, const ObjFunc & f, unsigned int dataSize, const ROOT::Math::IMultiGenFunction * chifunc = 0);
private:
bool fUseGradient;
IModelFunction * fFunc;
FitResult fResult;
FitConfig fConfig;
};
}
}
#endif /* ROOT_Fit_Fitter */
Last change: Wed Jun 25 08:29:15 2008
Last generated: 2008-06-25 08:29
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.