Re: Contour

From: Rene Brun <Rene.Brun_at_cern.ch>
Date: Mon, 3 Mar 2008 22:11:46 +0100


Yes, you can get the contour for any user defined TF1. See the fitcont.C example modified below

Rene Brun

double myfunc(double* x, double* par) {
return par[0]*TMath::Gaus(x[0],par[1],par[2]); }
void fitcont()
{

// Example illustrating how to draw the n-sigma contour of a Minuit fit.
// To get the n-sigma contour the ERRDEF parameter in Minuit has to set
// to n^2. The fcn function has to be set before the routine is called.
//
// WARNING!!! This test works only with TMinuit
//
// The TGraph object is created via the interpreter. The user must cast it
// to a TGraph*
// Author: Rene Brun

TCanvas *c1 = new TCanvas("c1");
TH1F *h = new TH1F("h","My histogram",100,-3,3); h->FillRandom("gaus",6000);
TF1 *f1 = new TF1("f1",myfunc,-3,3,3);
f1->SetParameters(100.,0.,1.);
h->Fit(f1);
c1->Update();

TCanvas *c2 = new TCanvas("c2","contours",10,10,600,800); c2->Divide(1,2);
c2->cd(1);
//get first contour for parameter 1 versus parameter 2 TGraph *gr12 = (TGraph*)gMinuit->Contour(40,1,2); gr12->Draw("alp");
c2->cd(2);
//Get contour for parameter 0 versus parameter 2 for ERRDEF=2 gMinuit->SetErrorDef(4); //note 4 and not 2! TGraph *gr2 = (TGraph*)gMinuit->Contour(80,0,2); gr2->SetFillColor(42);
gr2->Draw("alf");
//Get contour for parameter 0 versus parameter 2 for ERRDEF=1 gMinuit->SetErrorDef(1);
TGraph *gr1 = (TGraph*)gMinuit->Contour(80,0,2); gr1->SetFillColor(38);
gr1->Draw("lf");
}

Manuel Mussini wrote:
>
> Hi,
>
> I’m trying to plot a chi2 contour as described here:
>
> http://root.cern.ch/root/html/TMinuit.html#TMinuit:Contour
>
> the example fitcont.C works perfectly; is it possible to do the same
> thing using a user defined TF1 as fitting function?
>
> Is there an example to follow as tutorial?
>
> Thanks!
>
> Bye…
>
Received on Mon Mar 03 2008 - 22:11:58 CET

This archive was generated by hypermail 2.2.0 : Tue Mar 04 2008 - 11:50:01 CET