13 #ifndef ROOT_Fit_FitConfig
14 #define ROOT_Fit_FitConfig
32 class MinimizerOptions;
53 FitConfig (
unsigned int npar = 0);
59 FitConfig(
const FitConfig & rhs);
69 FitConfig & operator= (
const FitConfig & rhs);
75 const ParameterSettings & ParSettings(
unsigned int i)
const {
return fSettings.at(i); }
80 ParameterSettings & ParSettings(
unsigned int i) {
return fSettings.at(i); }
85 const std::vector<ROOT::Fit::ParameterSettings> & ParamsSettings()
const {
return fSettings; }
90 std::vector<ROOT::Fit::ParameterSettings> & ParamsSettings() {
return fSettings; }
95 unsigned int NPar()
const {
return fSettings.size(); }
100 std::vector<double> ParamsValues()
const;
108 void CreateParamsSettings(
const ROOT::Math::IParamMultiFunctionTempl<T> &func) {
111 unsigned int npar = func.NPar();
112 const double *begin = func.Parameters();
114 fSettings = std::vector<ParameterSettings>(npar);
119 fSettings.reserve(npar);
120 const double *end = begin + npar;
122 for (
const double *ipar = begin; ipar != end; ++ipar) {
124 double step = 0.3 * fabs(val);
126 if (val == 0) step = 0.3;
128 fSettings.push_back(ParameterSettings(func.ParameterName(i), val, step));
130 std::cout <<
"FitConfig: add parameter " << func.ParameterName(i) <<
" val = " << val << std::endl;
139 void SetParamsSettings(
unsigned int npar,
const double * params,
const double * vstep = 0);
144 void SetParamsSettings (
const std::vector<ROOT::Fit::ParameterSettings>& pars ) {
152 void SetFromFitResult (
const FitResult & rhs);
159 ROOT::Math::Minimizer * CreateMinimizer();
166 ROOT::Math::MinimizerOptions & MinimizerOptions() {
return fMinimizerOpts; }
169 #ifndef __CINT__ // this method fails on Windows
173 void SetMinimizerOptions(
const ROOT::Math::MinimizerOptions & minopt);
180 void SetMinimizer(
const char * type,
const char * algo = 0) {
181 if (type) fMinimizerOpts.SetMinimizerType(type);
182 if (algo) fMinimizerOpts.SetMinimizerAlgorithm(algo);
188 const std::string & MinimizerType()
const {
return fMinimizerOpts.MinimizerType(); }
193 const std::string & MinimizerAlgoType()
const {
return fMinimizerOpts.MinimizerAlgorithm(); }
198 std::string MinimizerName()
const;
203 bool NormalizeErrors()
const {
return fNormErrors; }
206 bool ParabErrors()
const {
return fParabErrors; }
209 bool MinosErrors()
const {
return fMinosErrors; }
212 bool UpdateAfterFit()
const {
return fUpdateAfterFit; }
215 bool UseWeightCorrection()
const {
return fWeightCorr; }
219 const std::vector<unsigned int> & MinosParams()
const {
return fMinosParams; }
224 void SetNormErrors(
bool on =
true) { fNormErrors= on; }
227 void SetParabErrors(
bool on =
true) { fParabErrors = on; }
230 void SetMinosErrors(
bool on =
true) { fMinosErrors = on; }
233 void SetWeightCorrection(
bool on =
true) { fWeightCorr = on; }
238 void SetMinosErrors(
const std::vector<unsigned int> & paramInd ) {
240 fMinosParams = paramInd;
244 void SetUpdateAfterFit(
bool on =
true) { fUpdateAfterFit = on; }
250 static void SetDefaultMinimizer(
const char * type,
const char * algo = 0);
263 bool fUpdateAfterFit;
266 std::vector<ROOT::Fit::ParameterSettings> fSettings;
267 std::vector<unsigned int> fMinosParams;
269 ROOT::Math::MinimizerOptions fMinimizerOpts;