Re: [ROOT] Changing the ERRDEF parameter in MINUIT

From: Rene Brun (Rene.Brun@cern.ch)
Date: Mon Nov 24 2003 - 15:28:17 MET


Hi Alexander,

TH1::Fit is always setting ErrorDef=1.
I have introduced (CVS version only) a new function in TVirtualfitter
  static TVirtualFitter::SetErrorDef(Double_t errdef=1);

With this version, you can do, eg:

void seterr2() {
   TH1F *h = new TH1F("h","test",100,-3,3);
   h->FillRandom("gaus",1000);
   hpx->Fit("gaus","e");

   TVirtualFitter::SetErrorDef(2);
   hpx->Fit("gaus","e");
}
    
With your version, you can do something like:

void seterr() {
   TH1F *h = new TH1F("h","test",100,-3,3);
   h->FillRandom("gaus",1000);
   hpx->Fit("gaus","qe");
   TVirtualFitter *hFitter = TVirtualFitter::Fitter(h);
   Double_t eplus,eminus,eparab, globcc;
   printf("==ERRORS with ERRDEF=1\n");
   for (Int_t i=0;i<3;i++) {
      hFitter->GetErrors(i,eplus,eminus,eparab,globcc);
      printf("%d eplus= %g  eminus= %g, eparab= %g\n",i,eplus,eminus,eparab);
   }

   Double_t arglist[2];
   arglist[0] = 2;
   hFitter->ExecuteCommand("SET ERR",arglist,1);
   arglist[0] = 500;
   arglist[1] = 1e-7;
   hFitter->ExecuteCommand("MIGRAD",arglist,2);
   hFitter->ExecuteCommand("MINOS",arglist,0);
   printf("==ERRORS with ERRDEF = 2\n");
   for (Int_t i=0;i<3;i++) {
      hFitter->GetErrors(i,eplus,eminus,eparab,globcc);
      printf("%d eplus= %g  eminus= %g, eparab= %g\n",i,eplus,eminus,eparab);
   }
}
    
Rene Brun

Alexander Dietz wrote:
> 
> Hi,
> 
> to change the ERRDEF-parameter in MINUIT I tried the following:
> 
>   Double_t arglist[100];
> 
>   TH1F* h1=new TH1F("h1","h1",3,1,4);
>   h1->Fill(1,1);
>   h1->Fill(2,2);
>   h1->Fill(3,1);
>   h1->Draw();
> 
>   TVirtualFitter *hFitter = TVirtualFitter::Fitter(h1);
>   h1->Fit("pol0");   // Fit 1
> 
>   arglist[0]=1;
>   hFitter->ExecuteCommand("SET ERR",arglist,0.7);
>   gMinuit->SetErrorDef(0.7);
>   h1->Fit("pol0");   // Fit 2
> 
> But both fits gave the same errors!
> So how to change the ERRDEF -parameter?
> 
> Alexander Dietz



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:17 MET