Hi, I have a bit of an open-ended question. I am trying to fit a graph with a function, but the function comes from a functor that has a fixed parameter in the constructor. Other than that parameter, the function also has parameters that can be set through TF1::SetParameter. I would like to write a simple loop over plausible values of the fixed parameter, where at each loop iteration I perform a fit over the other parameters, then at the end I just use the best one.
To illustrate (in pseudo-python):
fixed_paramvalues = [1,2,3] best_chi2 = None for fp in fixed_paramvalues: myfunctor = ROOT.myfunctor(fp) f = ROOT.TF1("f",myfunctor,xmin,xmax,myfunctor.n_pars) ftr_p = mygraph.Fit(f,"S") chi2 = ftr_p.Get().Chi2() if best_chi2 is None or chi2 < best_chi2: best_chi2 = chi2 best_f = f # do stuff with best_f
Now after that loop I would like to plot mygraph with the best_f overlaid on top, but there seems to be a lot of implicit stuff happening in mygraph.Fit.
Can the experts give some general advice in a situation like this? Like should I be using the “N” option for fitting? Is my naive python loop breaking something fundamental on the ROOT side?