%%cpp -d #include "TMinuit.h" float z[5],x[5],y[5],errorz[5]; %%cpp -d double func(float x,float y,double *par) { double value=( (par[0]*par[0])/(x*x)-1)/ ( par[1]+par[2]*y-par[3]*y*y); return value; } %%cpp -d void fcn(int &npar, double *gin, double &f, double *par, int iflag) { const int nbins = 5; int i; //calculate chisquare double chisq = 0; double delta; for (i=0;iSetFCN(fcn); double arglist[10]; int ierflg = 0; arglist[0] = 1; gMinuit->mnexcm("SET ERR", arglist ,1,ierflg); static double vstart[4] = {3, 1 , 0.1 , 0.01}; static double step[4] = {0.1 , 0.1 , 0.01 , 0.001}; gMinuit->mnparm(0, "a1", vstart[0], step[0], 0,0,ierflg); gMinuit->mnparm(1, "a2", vstart[1], step[1], 0,0,ierflg); gMinuit->mnparm(2, "a3", vstart[2], step[2], 0,0,ierflg); gMinuit->mnparm(3, "a4", vstart[3], step[3], 0,0,ierflg); arglist[0] = 500; arglist[1] = 1.; gMinuit->mnexcm("MIGRAD", arglist ,2,ierflg); double amin,edm,errdef; int nvpar,nparx,icstat; gMinuit->mnstat(amin,edm,errdef,nvpar,nparx,icstat);