[ROOT] Minuit questions (seg violation error + covariance)

From: lobo (lobo@irmm.jrc.be)
Date: Mon May 27 2002 - 17:50:15 MEST


Hi rooters,
I have a problem since some days concerning Minuit in root.
I have written a small testfile to explain my problems.
// testfit.C
void testfit() {

Double_t x1[]  = {1000,16100,83000,223426,425938};
Double_t y1[]  = {0.0194932,0.00299029,0.00168717,0.00167152,0.00134782};
Double_t ex1[] = {40,500,1000,1574.5,3062.5};
Double_t ey1[] =
{0.00232989,0.000269625,0.000142085,0.000110943,7.1839e-05};
TGraphErrors *fluxbkg = new TGraphErrors(5,x1,y1,ex1,ey1);
fluxbkg->Print();
TF1 *fitFcn = new TF1("fitFcn",Background,0,450000,3);
fitFcn->SetParameters(0.,1.,-0.5.);
fitFcn->Draw();
fluxbkg->Fit("fitFcn");
double matrix[3][3];
gMinuit->mnemat(matrix,3);
}

Double_t Background(Double_t *x, Double_t *par) {
Double_t fitval = TMath::Power(x[0],par[2]);
  return(par[0]+par[1]*fitval);


}

When I load this file (.L testfit.C) and I execute it I got a segmentation
violation error after the fit.

[root][1] .L testfit.C
[root][2] testfit();
x[0]=1000, y[0]=0.0194932, ex[0]=40, ey[0]=0.00232989
x[1]=16100, y[1]=0.00299029, ex[1]=500, ey[1]=0.000269625
x[2]=83000, y[2]=0.00168717, ex[2]=1000, ey[2]=0.000142085
x[3]=223426, y[3]=0.00167152, ex[3]=1574.5, ey[3]=0.000110943
x[4]=425938, y[4]=0.00134782, ex[4]=3062.5, ey[4]=7.1839e-05
<TCanvas::MakeDefCanvas>: created default TCanvas with name c1
 **********
 **    1 **SET ERR           1
 **********
 **********
 **    5 **MIGRAD        5000   5.539e-12
 **********
 MACHINE ACCURACY LIMITS FURTHER IMPROVEMENT.
 MIGRAD MINIMIZATION HAS CONVERGED.
 FCN=3.59539 FROM MIGRAD    STATUS=CONVERGED     258 CALLS         259
TOTAL
                     EDM=6.36245e-15    STRATEGY= 1  ERROR MATRIX
UNCERTAINTY
1.6 per cent
  EXT PARAMETER                                   STEP         FIRST
  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE
   1  p0           1.30041e-03   8.98106e-05  -0.00000e+00   1.21824e-03
   2  p1           6.12043e+00   3.81528e+00   0.00000e+00  -1.66377e-07
   3  p2          -8.43509e-01   7.80422e-02  -0.00000e+00  -6.64307e-06
 FCN=3.59539 FROM MIGRAD    STATUS=CONVERGED     258 CALLS         259
TOTAL
                     EDM=6.36245e-15    STRATEGY= 1  ERROR MATRIX
UNCERTAINTY
1.6 per cent
  EXT PARAMETER                                   STEP         FIRST
  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE
   1  p0           1.30041e-03   8.98106e-05  -0.00000e+00   1.21824e-03
   2  p1           6.12043e+00   3.81528e+00   0.00000e+00  -1.66377e-07
   3  p2          -8.43509e-01   7.80422e-02  -0.00000e+00  -6.64307e-06

 *** Break *** segmentation violation
Root > Function testfit() busy flag cleared

The starnge thing is if I type all the instruction one by one in the root
session I got no error, except it I don't type the line fitFcn->Draw();
before.

example if I type
...
[root] TF1 *fitFcn = new TF1("fitFcn",Background,0,450000,3);
[root] fitFcn->SetParameters(0.,1.,-0.5.);
[root] fitFcn->Draw();
[root] fluxbkg->Fit("fitFcn");
....
I have no no segvi error.
But if I type

[root] TF1 *fitFcn = new TF1("fitFcn",Background,0,450000,3);
[root] fitFcn->SetParameters(0.,1.,-0.5.);
[root] fluxbkg->Fit("fitFcn");
I got a
*** Break *** segmentation violation

The other thing is about the mnemat call. When thing are working well I
got an error when retrieveing the matrix.
[root] double matrix[3][3];
[root] gMinuit->mnemat(matrix,3);

Error: Can't call TMinuit::mnemat(matrix,3) in current scope
FILE:/tmp/fileOCWcoy_cint LINE:1
Possible candidates are...
filename       line:size busy function type and name  (in TMinuit)
(compiled)        0:0    0 public: virtual void mnemat(Double_t*
emat,Int_t ndim);
filename       line:size busy function type and name  (in TNamed)
filename       line:size busy function type and name  (in TObject)
*** Interpreter error recovered ***

Could please someone tell me what is wrong ? I surely made a mistake but I
can't figure out which.
Thanks in advance.



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:54 MET