problem with FitSlices

From: Nicolas Produit <Nicolas.Produit_at_unige.ch>
Date: Fri, 29 Jan 2010 11:39:42 +0100


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.

THanks

---
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 - 11:39:46 CET

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