Re: [ROOT] Fitting a Histogram

From: Rene Brun (Rene.Brun@cern.ch)
Date: Sun Jul 14 2002 - 11:05:05 MEST


Hi Alexander,


On Mon, 8 Jul 2002, Alexander Dietz wrote:

> Hello Rooters,
> 
> I want to understand how the fitting is done in ROOT. When I am fitting
> data to a model I use the Maximum Likelihood fitting method (i.e.
> 'H1FitLikelihood' in TH1.cc).
> 
> 1. What is the mathematical background of this fitting method? Can
> somebody give me the formula(s)? And uses it Gaussian or Poisson
> statistics? And if yes, is it possible to change it?

The comments in H1FitLikelihood say:
//     Basically, it forms the likelihood by determining the Poisson
//     probability that given a number of entries in a particular bin,
//     the fit would predict it's value.  This is then done for each bin,
//     and the sum of the logs is taken as the likelihood.

The code is trivial. Look at the statements:
            icu  = Int_t(cu);
            fsub = -fu +icu*TMath::Log(fu);
            fobs = hFitter->GetSumLog(icu);

where cu is the bin content
fu is the value of the function at the center of the bin
GetSumLog is a function returning the sum of the logs from a precomputed
table.

> 
> 2. It should be possible to specify a user-defined fitting function using
> 'TVirtualFitter::Fitter(myhist)->SetFCN(MyFittingFunction)'. But how must
> this function made of? How must it work? What is the meaning of the
> parameters in 'extern void MyFittingFunction(Int_t &npar, Double_t *gin,
> Double_t &f, Double_t *u, Int_t flag);'?

Yes, you can specify a user fitting model (via option "U"). See comments
in TH1::Fit on how to do it.
The interface SetFCN is based on the MINUIT interface. See more details
at:

http://wwwinfo.cern.ch/asdoc/minuit/minmain.html
http://wwwinfo.cern.ch/asdoc/minuit/node14.html

Rene Brun

> 
> Thanks much in advance for helping me,
> 
>    A. Dietz
> 
> 
> 



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:59 MET