我使用用户定义的函数来适应ROOT中的数据集。我的代码中的TF1类声明是:
double t=1000;
double a=0.1*t, b=0.9*t;
...
TF1 *ffit = new TF1("ffit",fit,a,b,2);
ffit->FixParameter(0,t);
ffit->FixParameter(1,1);
...
TGraph *g = new TGraph(n,x,y);
g->Fit("ffit","R");
我希望它会起作用,但实际上不会。运行此代码时,出现了段违规和混乱。但是,当我在TF1函数的声明中仅输入100和900而不是a和b时,效果很好。
那么,这是什么问题?我该如何克服这个问题?
函数fit
如下:
double fit(double *x, double *par)
{
double y=par[0], g=par[1], y0=x[0];
double r=(y0*(y-y0))/y;
return (pow(r,1.5)*g);
}
P / s:我正在使用ROOT v6.14