No, the problem is that the fits converge using MIGRAD, but there is ERROR MATRIX UNCERTAINTY message, not ERROR MATRIX ACCURATE. And I want to obtain ERROR MATRIX ACCURATE with all the fits I do.
The code lines I use are (in a method of a class):
para[0]=almy::seed1(data);
para[1]=almy::seed2(data);
para[2]=1.0;
// para[3]=almy::seed1(data)/10000;
// para[4]=3.0;
step[0]=0.001;
step[1]=0.001;
step[2]=0.001;
// step[3]=0.001;
// step[4]=0.001;
Int_t ierflg=0;
Double_t arglist[2];
TMinuit *min=new TMinuit(3);
min->SetFCN(fcn);
min->mnexcm(“SET ERR”, arglist ,1,ierflg);
min->mnparm(0,“cte1x”,para[0],step[0],0,0,ierflg); //Faltan los flags
min->mnparm(1,“mediax”,para[1],step[1],0,0,ierflg);
min->mnparm(2,“sigmax”,para[2],step[2],0,0,ierflg);
arglist[0]=2500;
arglist[1]=1.0;
min->mnexcm(“MIGRAD”,arglist,2,ierflg);
min->mnpout(0,“cte1x”,fnorm,efnorm,0.,0.,0);
min->mnpout(1,“mediax”,mu,emu,0.,0.,1);
min->mnpout(2,“sigma1x”,sigma,esigma,0.,0.,2);
The fcn is a typical chi square function:
Double_t chisq = 0;
Double_t delta;
for (Int_t i=indice-b;i<indice+c;i++) {
delta = (Intensidad[i]-(almy::func(tiras[i],par)))/sigma[i];
if(Intensidad[i]==-8888.0){
delta=0;
}//if
chisq += delta*delta;
}//for
f=chisq;