Re: [ROOT] Fitter

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Oct 26 2000 - 08:24:14 MEST


Hi Ray,
Could you send me a working macro that I can execute?
Instead of Data *d, pass the 4 objects as arguments to FitAll or any other
similar
mods such that I can execute the code.

Rene Brun


Ray Fliller III wrote:
> 
>   Hello Rooters,
> 
>    I am using ROOT version 2.23/12 on Linux
> 
>    Is there a reason why when I call TGraph::Fit, in a loop, to fit
> different TGraphs with different functions I get a segmentation fault in
> my code??
> 
> Example
> 
> FitAll(Data *d)
> {
>   int i;
>   TString title;
>   char n[2];
>   float chisq,diff,ddiff;
> 
>   for(i=0;i<4;i++){
>     title="collin4";
>     sprintf(&n,"%i",i);
>     title+=n;
>     d->canvas->cd(i+1);
>     d->func[i]->SetRange(11,300);
>     d->graph[i]->Fit(title,"RB");
>   }
> }
> 
>   in my class data this is an array of 4 TGraphErrorss and 4 TF1s (named
> collin40,collin41,collin42,collin43)  If I do this by hand, all is
> happy.  Put it in a macro I get:
> 
> root [8] FitAll(move4)
>  **********
>  **    1 **SET ERR           1
>  **********
>  **********
>  **    5 **MIGRAD        5000        0.01
>  **********
>  MIGRAD MINIMIZATION HAS CONVERGED.
>  MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.
>  FCN=1135.12 FROM MIGRAD    STATUS=CONVERGED     346 CALLS         347
> TOTAL
>                      EDM=2.94214e-08    STRATEGY= 1      ERROR MATRIX
> ACCURATE
>   EXT PARAMETER                                   STEP         FIRST
>   NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE
>    1  Amplitude    1.00000e-00   1.80924e-10   5.00000e-01   4.54747e-12
>    2  Movement(m)   7.37671e+00   3.42481e+00   1.28569e-03  -1.61017e-03
>    3  Diffusion Rate(mm-mrad/s)^2   9.03821e-06   8.37974e-06
> 3.15019e-09   6.57012e+02
>    4  Zero time(s)   1.10661e+01   3.48938e-03   3.45107e-05  -3.02434e-02
>    5  Constant     1.95906e+03   4.29638e+00   4.44481e-02  -4.41191e-05
>  FCN=1135.12 FROM MIGRAD    STATUS=CONVERGED     346 CALLS         347
> TOTAL
>                      EDM=2.94214e-08    STRATEGY= 1      ERROR MATRIX
> ACCURATE
>   EXT PARAMETER                                   STEP         FIRST
>   NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE
>    1  Amplitude    1.00000e-00   1.80924e-10   5.00000e-01   4.54747e-12
>    2  Movement(m)   7.37671e+00   3.42481e+00   1.28569e-03  -1.61017e-03
>    3  Diffusion Rate(mm-mrad/s)^2   9.03821e-06   8.37974e-06
> 3.15019e-09   6.57012e+02
>    4  Zero time(s)   1.10661e+01   3.48938e-03   3.45107e-05  -3.02434e-02
>    5  Constant     1.95906e+03   4.29638e+00   4.44481e-02  -4.41191e-05
> 
>  *** Break *** segmentation violation
> Root > Function FitAll() busy flag cleared
> 
> It crashes at the i=1 call data->graph[i]->Fit(title,"RB")
> 
> All ranges, bounardaries, etc., are properly initialized.  Like I said,
> if I do this by hand (ie, I am the for statement), all is good, if ROOT
> is the for statment, all is anti-good.
> 
> Thanks for your help
> 
> ==============================================================================
> Ray Fliller: rfliller@bnl.gov      Office Phone: (631)-344-6124
> C-A Accelerator Physics
> Building 911
> Brookhaven National Lab
> Upton, NY 11973                    Office: Room 211
> ==============================================================================



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:36 MET