Fit example.
Author: Wim Lavrijsen
This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Wednesday, April 17, 2024 at 11:16 AM.
import ROOT
from os import path
from ROOT import TCanvas, TFile, TPaveText
from ROOT import gROOT, gBenchmark
c1 = TCanvas( 'c1', 'The Fit Canvas', 200, 10, 700, 500 )
c1.SetGridx()
c1.SetGridy()
c1.GetFrame().SetFillColor( 21 )
c1.GetFrame().SetBorderMode(-1 )
c1.GetFrame().SetBorderSize( 5 )
gBenchmark.Start( 'fit1' )
We connect the ROOT file generated in a previous tutorial
File = "py-fillrandom.root"
if (ROOT.gSystem.AccessPathName(File)) :
ROOT.Info("fit1.py", File+" does not exist")
exit()
fill = TFile(File)
The function "ls()" lists the directory contents of this file
fill.ls()
TFile** py-fillrandom.root TFile* py-fillrandom.root KEY: TFormula form1;1 abs(sin(x)/x) KEY: TF1 sqroot;1 x*gaus(0) + [3]*form1 KEY: TH1F h1f;1 Test random numbers
Get object "sqroot" from the file.
sqroot = gROOT.FindObject( 'sqroot' )
sqroot.Print()
Formula based function: sqroot sqroot : x*gaus(0) + [3]*form1 Ndim= 1, Npar= 4, Number= 0 Formula expression: x*[p0]*exp(-0.5*((x-[p1])/[p2])*((x-[p1])/[p2]))+[p3]*(abs(sin(x)/x))
Now fit histogram h1f with the function sqroot
h1f = gROOT.FindObject( 'h1f' )
h1f.SetFillColor( 45 )
h1f.Fit( 'sqroot' )
<cppyy.gbl.TFitResultPtr object at 0x9da9300>
**************************************** Minimizer is Minuit2 / Migrad Chi2 = 198.935 NDf = 190 Edm = 1.49283e-07 NCalls = 149 p0 = 33.1658 +/- 0.545703 p1 = 4.00667 +/- 0.0165304 p2 = 0.984663 +/- 0.0128238 p3 = 63.4464 +/- 1.33233
Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S Error in <TFitResultPtr>: TFitResult is empty - use the fit option S
We now annotate the picture by creating a PaveText object and displaying the list of commands in this macro
fitlabel = TPaveText( 0.6, 0.3, 0.9, 0.80, 'NDC' )
fitlabel.SetTextAlign( 12 )
fitlabel.SetFillColor( 42 )
fitlabel.ReadFile(path.join(str(gROOT.GetTutorialDir()), 'pyroot', 'fit1_py.py'))
fitlabel.Draw()
c1.Update()
gBenchmark.Show( 'fit1' )
fit1 : Real Time = 1.41 seconds Cpu Time = 0.99 seconds
Draw all canvases
from ROOT import gROOT
gROOT.GetListOfCanvases().Draw()