I’m running a bunch of fits on a data set, defaulting to a Gaussian fit. However, sometimes that default fit fails to converge, in which case I would like to run a linear fit. I can’t seem to get the fit status to read out.
status = fit_hist.Fit("gaus","QS")
print "Status? ", status
if status==1:
status = fit_hist.Fit("x++","S")
print status
a quick look over the code tells met that ‘IsValid()’ should be ‘False’ in case of fit failure. Beyond that, you’re better of asking in the “Stat and Math Tool Support” sub-forum.
Big block of code here. I did IsValid() and Status() both came back True / 0. I also noticed a MinimizerType() function which the page says “Update the fit result with a new minimization status” which I played with a little, but haven’t been able to make different results appear. The MinimizerType() was not used in the block of code I’ve posted here:
**********
** 1683 **SET PRINT 2
**********
**********
** 1684 **SET NOGRAD
**********
PARAMETER DEFINITIONS:
NO. NAME VALUE STEP SIZE LIMITS
1 Constant 9.10623e+01 4.77619e-01 no limits
2 Mean 1.07437e+02 9.36248e+00 no limits
3 Sigma 5.59490e+01 3.03256e+01 0.00000e+00 5.59490e+02
**********
** 1685 **SET ERR 1
**********
**********
** 1686 **SET PRINT 2
**********
**********
** 1687 **SET STR 1
**********
NOW USING STRATEGY 1: TRY TO BALANCE SPEED AGAINST RELIABILITY
**********
** 1688 **MIGRAD 1345 0.01
**********
FIRST CALL TO USER FUNCTION AT NEW START POINT, WITH IFLAG=4.
START MIGRAD MINIMIZATION. STRATEGY 1. CONVERGENCE WHEN EDM .LT. 1.00e-05
FCN=21398.5 FROM MIGRAD STATUS=INITIATE 10 CALLS 11 TOTAL
EDM= unknown STRATEGY= 1 NO ERROR MATRIX
EXT PARAMETER CURRENT GUESS STEP FIRST
NO. NAME VALUE ERROR SIZE DERIVATIVE
1 Constant 9.10623e+01 4.77619e-01 4.77619e-01 6.14609e+02
2 Mean 1.07437e+02 9.36248e+00 9.36248e+00 -2.01411e+01
3 Sigma 5.59490e+01 3.03256e+01 1.87878e-01 6.09461e+04
NO ERROR MATRIX
FCN=4808 FROM MIGRAD STATUS=PROGRESS 32 CALLS 33 TOTAL
EDM=0 STRATEGY= 1 NO ERROR MATRIX
EXT PARAMETER CURRENT GUESS STEP FIRST
NO. NAME VALUE ERROR SIZE DERIVATIVE
1 Constant 2.63479e+01 4.77619e-01 -6.47143e+01 0.00000e+00
2 Mean 1.66445e+04 9.36248e+00 1.65371e+04 0.00000e+00
3 Sigma 3.44089e-01 3.03256e+01 -5.93897e-01 0.00000e+00
MIGRAD MINIMIZATION HAS CONVERGED.
MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.
START COVARIANCE MATRIX CALCULATION.
MINUIT WARNING IN HESSE
============== Second derivative enters zero, param 1
MINUIT WARNING IN HESSE
============== Second derivative zero for parameter1
MNHESS FAILS AND WILL RETURN DIAGONAL MATRIX.
FCN=4808 FROM MIGRAD STATUS=CONVERGED 43 CALLS 44 TOTAL
EDM=0 STRATEGY= 1 ERROR MATRIX UNCERTAINTY 100.0 per cent
EXT PARAMETER APPROXIMATE STEP FIRST
NO. NAME VALUE ERROR SIZE DERIVATIVE
1 Constant 2.63479e+01 6.75455e-01 -6.47143e+01 0.00000e+00
2 Mean 1.66445e+04 1.41421e+00 1.65371e+04 0.00000e+00
3 Sigma 3.44089e-01 3.90810e+02 -5.93897e-01 0.00000e+00
EXTERNAL ERROR MATRIX. NDIM= 25 NPAR= 3 ERR DEF=1
4.562e-01 0.000e+00 0.000e+00
0.000e+00 2.000e+00 0.000e+00
0.000e+00 0.000e+00 3.848e+02
ERR MATRIX APPROXIMATE
PARAMETER CORRELATION COEFFICIENTS
NO. GLOBAL 1 2 3
1 0.00000 1.000 0.000 0.000
2 0.00000 0.000 1.000 0.000
3 0.00000 0.000 0.000 1.000
ERR MATRIX APPROXIMATE
Info in <TMinuitMinimizer::Minimize>: Finished to run MIGRAD - status 0
**********
** 1689 **HESSE 1345
**********
START COVARIANCE MATRIX CALCULATION.
MINUIT WARNING IN HESSE
============== Second derivative zero for parameter1
MNHESS FAILS AND WILL RETURN DIAGONAL MATRIX.
FCN=4808 FROM HESSE STATUS=FAILED 11 CALLS 55 TOTAL
EDM=0 STRATEGY= 1 ERROR MATRIX UNCERTAINTY 100.0 per cent
EXT PARAMETER APPROXIMATE INTERNAL INTERNAL
NO. NAME VALUE ERROR STEP SIZE VALUE
1 Constant -1.52751e+03 6.75455e-01 -6.47143e+01 2.63479e+01
2 Mean 1.66445e+04 1.41421e+00 1.65371e+04 1.66445e+04
3 Sigma 3.44089e-01 3.90810e+02 -5.93897e-01 -1.52119e+00
EXTERNAL ERROR MATRIX. NDIM= 25 NPAR= 3 ERR DEF=1
4.562e-01 0.000e+00 0.000e+00
0.000e+00 2.000e+00 0.000e+00
0.000e+00 0.000e+00 3.848e+02
ERR MATRIX APPROXIMATE
PARAMETER CORRELATION COEFFICIENTS
NO. GLOBAL 1 2 3
1 0.00000 1.000 0.000 0.000
2 0.00000 0.000 1.000 0.000
3 0.00000 0.000 0.000 1.000
ERR MATRIX APPROXIMATE
Info in <TMinuitMinimizer::Minimize>: Finished to run HESSE - status 0
EXTERNAL ERROR MATRIX. NDIM= 3 NPAR= 3 ERR DEF=1
4.562e-01 0.000e+00 0.000e+00
0.000e+00 2.000e+00 0.000e+00
0.000e+00 0.000e+00 3.848e+02
FCN=4808 FROM HESSE STATUS=FAILED 11 CALLS 55 TOTAL
EDM=0 STRATEGY= 1 ERROR MATRIX UNCERTAINTY 100.0 per cent
EXT PARAMETER PARABOLIC MINOS ERRORS
NO. NAME VALUE ERROR NEGATIVE POSITIVE
1 Constant -1.52751e+03 6.75455e-01
2 Mean 1.66445e+04 1.41421e+00
3 Sigma 3.44089e-01 3.90810e+02
Status1? True
**********
** 1690 **SET PRINT 2
**********
**********
** 1691 **SET NOGRAD
**********
PARAMETER DEFINITIONS:
NO. NAME VALUE STEP SIZE LIMITS
1 Constant 9.10623e+01 6.75455e-01 no limits
2 Mean 1.07437e+02 1.41421e+00 no limits
3 Sigma 5.59490e+01 3.90810e+02 0.00000e+00 5.59490e+02
MINUIT WARNING IN PARAMETR
============== VARIABLE3 BROUGHT BACK INSIDE LIMITS.
**********
** 1692 **SET ERR 1
**********
**********
** 1693 **SET PRINT 2
**********
**********
** 1694 **SET STR 1
**********
NOW USING STRATEGY 1: TRY TO BALANCE SPEED AGAINST RELIABILITY
**********
** 1695 **MIGRAD 1345 0.01
**********
FIRST CALL TO USER FUNCTION AT NEW START POINT, WITH IFLAG=4.
START MIGRAD MINIMIZATION. STRATEGY 1. CONVERGENCE WHEN EDM .LT. 1.00e-05
FCN=21398.5 FROM MIGRAD STATUS=INITIATE 12 CALLS 13 TOTAL
EDM= unknown STRATEGY= 1 NO ERROR MATRIX
EXT PARAMETER CURRENT GUESS STEP FIRST
NO. NAME VALUE ERROR SIZE DERIVATIVE
1 Constant 9.10623e+01 6.75455e-01 6.75455e-01 6.14609e+02
2 Mean 1.07437e+02 1.41421e+00 1.41421e+00 -2.01233e+01
3 Sigma 5.59490e+01 3.90810e+02 1.10431e+00 6.09307e+04
NO ERROR MATRIX
FCN=4808 FROM MIGRAD STATUS=PROGRESS 34 CALLS 35 TOTAL
EDM=0 STRATEGY= 1 NO ERROR MATRIX
EXT PARAMETER CURRENT GUESS STEP FIRST
NO. NAME VALUE ERROR SIZE DERIVATIVE
1 Constant 2.63479e+01 6.75455e-01 -6.47143e+01 0.00000e+00
2 Mean 9.46690e+03 1.41421e+00 9.35946e+03 0.00000e+00
3 Sigma 3.41498e-01 3.90810e+02 -5.94085e-01 0.00000e+00
MIGRAD MINIMIZATION HAS CONVERGED.
MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.
START COVARIANCE MATRIX CALCULATION.
MINUIT WARNING IN HESSE
============== Second derivative enters zero, param 1
MINUIT WARNING IN HESSE
============== Second derivative zero for parameter1
MNHESS FAILS AND WILL RETURN DIAGONAL MATRIX.
FCN=4808 FROM MIGRAD STATUS=CONVERGED 45 CALLS 46 TOTAL
EDM=0 STRATEGY= 1 ERROR MATRIX UNCERTAINTY 100.0 per cent
EXT PARAMETER APPROXIMATE STEP FIRST
NO. NAME VALUE ERROR SIZE DERIVATIVE
1 Constant 2.63479e+01 9.55237e-01 -6.47143e+01 0.00000e+00
2 Mean 9.46690e+03 1.41421e+00 9.35946e+03 0.00000e+00
3 Sigma 3.41498e-01 3.90837e+02 -5.94085e-01 0.00000e+00
EXTERNAL ERROR MATRIX. NDIM= 25 NPAR= 3 ERR DEF=1
9.125e-01 0.000e+00 0.000e+00
0.000e+00 2.000e+00 0.000e+00
0.000e+00 0.000e+00 3.819e+02
ERR MATRIX APPROXIMATE
PARAMETER CORRELATION COEFFICIENTS
NO. GLOBAL 1 2 3
1 0.00000 1.000 0.000 0.000
2 0.00000 0.000 1.000 0.000
3 0.00000 0.000 0.000 1.000
ERR MATRIX APPROXIMATE
Info in <TMinuitMinimizer::Minimize>: Finished to run MIGRAD - status 0
**********
** 1696 **HESSE 1345
**********
START COVARIANCE MATRIX CALCULATION.
MINUIT WARNING IN HESSE
============== Second derivative zero for parameter1
MNHESS FAILS AND WILL RETURN DIAGONAL MATRIX.
FCN=4808 FROM HESSE STATUS=FAILED 11 CALLS 57 TOTAL
EDM=0 STRATEGY= 1 ERROR MATRIX UNCERTAINTY 100.0 per cent
EXT PARAMETER APPROXIMATE INTERNAL INTERNAL
NO. NAME VALUE ERROR STEP SIZE VALUE
1 Constant -1.52751e+03 9.55237e-01 -6.47143e+01 2.63479e+01
2 Mean 9.46690e+03 1.41421e+00 9.35946e+03 9.46690e+03
3 Sigma 3.41498e-01 3.90837e+02 -5.94085e-01 -1.52138e+00
EXTERNAL ERROR MATRIX. NDIM= 25 NPAR= 3 ERR DEF=1
9.125e-01 0.000e+00 0.000e+00
0.000e+00 2.000e+00 0.000e+00
0.000e+00 0.000e+00 3.819e+02
ERR MATRIX APPROXIMATE
PARAMETER CORRELATION COEFFICIENTS
NO. GLOBAL 1 2 3
1 0.00000 1.000 0.000 0.000
2 0.00000 0.000 1.000 0.000
3 0.00000 0.000 0.000 1.000
ERR MATRIX APPROXIMATE
Info in <TMinuitMinimizer::Minimize>: Finished to run HESSE - status 0
EXTERNAL ERROR MATRIX. NDIM= 3 NPAR= 3 ERR DEF=1
9.125e-01 0.000e+00 0.000e+00
0.000e+00 2.000e+00 0.000e+00
0.000e+00 0.000e+00 3.819e+02
FCN=4808 FROM HESSE STATUS=FAILED 11 CALLS 57 TOTAL
EDM=0 STRATEGY= 1 ERROR MATRIX UNCERTAINTY 100.0 per cent
EXT PARAMETER PARABOLIC MINOS ERRORS
NO. NAME VALUE ERROR NEGATIVE POSITIVE
1 Constant -1.52751e+03 9.55237e-01
2 Mean 9.46690e+03 1.41421e+00
3 Sigma 3.41498e-01 3.90837e+02
Status2? True
It seems to me that status.Status() should return an integer value, not a logical one -> see the Minimize method, for example.
BTW. “logical true” usually means a “non-zero value” (a “zero value” is a “logical false”).
[quote=“Wile E. Coyote”]It seems to me that status.Status() should return an integer value, not a logical one -> see the Minimize method, for example.
BTW. “logical true” usually means a “non-zero value”.[/quote]
Yes, Status() will always return 0 no matter the outcome of the fit. Which is odd, but I think 0 is intended to mean everything is fine, in this case.
Even though this is an old post, I could not find a good solution to this question on any forum.
So I am posting a solution I found years ago for other people in the same situation as me:
I was calling the Fit() method of the TGraphErrors/TH1/TH2… to perform the fit and I could not get the status as the output (verbose) and the status/isvalid did not match (always 0).
The key was to get the status from the global minuit instance performing the fit:
thanks.
indeed i was searching for almost all possible functions in the TFitResult class, only to realize that this function is a “global” one (after reading previous posting).
perhaps this is the only solution for now …