Re: [ROOT] Accessing Minuit's error matrix using pyROOT

From: WLavrijsen@lbl.gov
Date: Wed Aug 04 2004 - 22:42:47 MEST


Topher,

> I can't do anything much with gMinuit though.  I'd have expected the
> following to print out the covariance matrix, for example:
> >>> gMinuit.mnexcm("SHO COV")
> Traceback (most recent call last):
>  File "<stdin>", line 1, in ?
> SystemError: NULL result without error in PyObject_Call
> Seems like all other (useful) methods of gMinuit have similar problems.
> GetName() works.

The mnexcm() function has the following signature:

  void mnexcm(const char* comand, Double_t* plist, Int_t llist, Int_t& ierflg)

calling it requires something like:

 from array import array
 plist = array('d',9*[0])
 ierflg = array('i',[0])

 gMinuit.mnexcm( "SHO COV", plist, 9, ierflg )

Admittedly, the error message that you got wasn't very helpful. This has been
fixed (should appear in CVS shortly).

> Another thing that doesn't work but should:
> >>> covm = ROOT.TMatrixD(3, 3, fitter.GetCovarianceMatrix())
> Traceback (most recent call last):
>  File "<stdin>", line 1, in ?
> TypeError: None of the 15 overloaded methods succeeded

This is a bug and has been fixed (should appear in CVS shortly). In the mean
time, you can do:

 covm = fitter.GetCovarianceMatrix()

and access the elements as a straight array: covm[0] through covm[8].

HTH,
  Wim
-- 
Wim.Lavrijsen@cern.ch   --   WLavrijsen@lbl.gov   --   www.lavrijsen.net

"Stop making excuses for your software."    --first step towards quality



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:09 MET