Re: problem with FitSlices

From: Lorenzo Moneta <Lorenzo.Moneta_at_cern.ch>
Date: Fri, 29 Jan 2010 15:36:25 +0100


Hi,

It looks to me that the projected histograms are empty or they have a number of bins with content > 0 (this is the number of fit points) that is less than the number of parameters. Your TH2 histograms does not have enough statistics. You should either group the bins (use the option G2, G3, G4, or G5) and/or you also could use a binned likelihood fit (option "L").

Best Regards

 Lorenzo  

On Jan 29, 2010, at 11:39 AM, Nicolas Produit wrote:

> Hi,
>
> I am using
> ROOT 5.26/00 (trunk_at_31882, Dec 14 2009, 20:18:36 on linuxx8664gcc)
>
> I do many FITSlicesY on many histograms and get something very strange:
> after many successful fits the FitSliceY is done and I can see the result of the fit on my console
> but then the aSlices output array contains an empty histograms.
> I can plot the result histogram, it exist but is indeed empty.
>
>
> TObjArray* aSlices=new TObjArray;
> if(!aSlices){
> printf("problem\n");
> }
> myfun->SetParameters(nhit/nbins,0.0,0.5,nhit/nbins/1000.,5.);
> printf("before fit slice %d %d\n",pixel,ii);
> h[ii]->FitSlicesY(myfun, 0, -1, 0, "", aSlices);
> printf("before fit %d %d\n",pixel,ii);
> slop->SetParameters(0.0,0.0);
> int ko=((TH1F*)((*aSlices)[1]))->Fit(slop,"q");
>
> Give this output:
> ...
> FCN=1.60878e-10 FROM MIGRAD STATUS=CONVERGED 339 CALLS 340 TOTAL
> EDM=3.21555e-10 STRATEGY= 1 ERR MATRIX NOT POS-DEF
> EXT PARAMETER APPROXIMATE STEP FIRST
> NO. NAME VALUE ERROR SIZE DERIVATIVE
> 1 p0 9.88330e+02 4.56812e+01 1.38693e-02 -2.25936e-07
> 2 p1 -1.73371e-01 2.77901e-02 6.89539e-06 -2.07903e-04
> 3 p2 4.99374e-01 1.46837e-02 4.49128e-06 -4.41477e-04
> 4 p3 -1.65957e+01 7.14736e+01 2.32748e-03 5.03670e-06
> 5 p4 -1.05566e+01 3.13626e+02 1.06632e-02 1.10618e-06
> FCN=6.10767 FROM MIGRAD STATUS=CONVERGED 179 CALLS 180 TOTAL
> EDM=2.80097e-10 STRATEGY= 1 ERROR MATRIX UNCERTAINTY 0.8 per cent
> EXT PARAMETER STEP FIRST
> NO. NAME VALUE ERROR SIZE DERIVATIVE
> 1 p0 9.45501e+02 3.50388e+01 2.57237e-03 8.78995e-07
> 2 p1 -1.98521e-01 1.48610e-02 5.00742e-06 1.38046e-05
> 3 p2 5.33704e-01 1.24525e-02 -6.23746e-06 8.47966e-04
> 4 p3 7.43089e-03 4.59031e+02 5.08263e-08 0.00000e+00
> 5 p4 1.25666e-02 7.81687e+00 -3.11800e-04 2.65406e-06
> before fit 7 36
> Warning in <Fit>: Fit data is empty
>
> The Warning comes from the call int ko=((TH1F*)((*aSlices)[1]))->Fit(slop,"q");
> in fact (*aSlices)[1] is indeed empty
> (*aSlices)[1] should contains the p1 entries that are listed on the screen.
>
> The h[ii] histo can be seen and is nice, there is no empty slices.
>
> This can be repeated and always has a problem at the same point after 36 FitSlices.
>
> I see in FitSlice code that
> if (nentries == 0 || nentries < cut) {delete hp; continue;}
> so nentries==0 in every slice will make this behavior
> f1->SetParameters(parsave);
> hp->Fit(f1,opt.Data());
> Int_t npfits = f1->GetNumberFitPoints(); if (npfits > npar && npfits >= cut)
> Now if npfits <= npar in every channel this can also create the problem.
>
> How is f1->GetNumberFitPoints() computed? can it be <= npar (5 in my case) if the slice has 60 bins?
> The fit result indicated CONVERGED for every slice.
>
> THank
>
>
> ---
> Nicolas Produit
> INTEGRAL Science Data Center Phone: +41 22 379 2140
> 16, Chemin d'Ecogia Fax: +41 22 379 2133
> CH-1290 Versoix www: http://isdc.unige.ch/~produit
>
>
>
Received on Fri Jan 29 2010 - 15:36:33 CET

This archive was generated by hypermail 2.2.0 : Fri Jan 29 2010 - 17:50:01 CET