Hi,
TMinuit::mnemat has the following signature:
void mnemat(Double_t *emat, Int_t ndim)
You cannot fill a TMatrixD directly from this function. Instead do
double matrix[2][2];
gMinuit->mnemat(&matrix[0[0],2);
see: http://root.cern.ch/root/htmldoc/TMinuit.html#TMinuit:mnemat
Rene Brun
On Thu, 4 Jul 2002, Avdhesh Chandra wrote:
>
> Hi,
> I am trying to get covariance matrix of the errors. I have a fit
> function which gives two paramertes, part of the code looks like
>
> ---------------------------------------------------
> TF1 *func_1 = new TF1("fitf",fitf,0.0,6.28,2);
> //Sets initial values and parameter names
> func_1->SetParameters(0.02,1.0);
> func_1->SetParNames("Constant","Offset");
> Dca_phi_1->Fit("fitf");
>
> TMatrixD A01(1,2); TMatrixD A02(2,2); TMatrixD A03(2,1);
> TMatrixD A11(1,2); TMatrixD A12(2,2); TMatrixD A13(2,1);
> TMatrixD B01(2,1); TMatrixD C01(1,1);
> TMatrixD B11(2,1); TMatrixD C11(1,1);
>
> gMinuit->mnemat(A02,2);
> gMinuit->mnemat(A12,2);
> double par10 = func_1->GetParameter("Constant") ;
> double par11 = func_1->GetParameter("Offset") ;
> double err_par10 = func_1->GetParError(0) ;
> double err_par11 = func_1->GetParError(1) ;
> -------------------------------------------------------
>
>
> it gives me following **ERROR** after running the code.
>
>
>
> --------------------------------------------------------------------------
> FCN=140.116 FROM MIGRAD STATUS=CONVERGED 48 CALLS 49
> TOTAL
> EDM=1.65745e-17 STRATEGY= 1 ERROR MATRIX
> ACCURATE
> EXT PARAMETER STEP FIRST
> NO. NAME VALUE ERROR SIZE DERIVATIVE
> 1 Constant 1.68390e-02 3.55273e-04 2.06067e-06 3.44811e-08
> 2 Offset 1.25291e+00 2.29010e-02 1.32831e-04 -2.51413e-07
> Error: Can't call TMinuit::mnemat(A02,2) in current scope
> FILE:/prj_root/837/ckm_1/avdhesh/beam_width/1ros/test.C LINE:198
> 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 ***
> -------------------------------------------------------------------
>
> I am not under standing why it is not working.
>
>
> one more thing is that, if i am writing to get error
>
> double err_par10 = func_1->GetParError("Constant") ;
> double err_par11 = func_1->GetParError("Offset") ;
>
> it does not works, insted of this i have to write
> double err_par10 = func_1->GetParError(0) ;
> double err_par11 = func_1->GetParError(1) ;
>
>
> while to get parameters
> double par10 = func_1->GetParameter("Constant") ;
> double par11 = func_1->GetParameter("Offset") ;
> works !
>
> Thanks for help
> Avdhesh
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:59 MET