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