Re: SetParLimits bug

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Jul 29 1999 - 09:15:04 MEST


Hi Matt,
Currently TH1::Fit has a special case when setting parameter limits that
are both equal to zero.
To fix a parameter, you only have to specify the lower>=upper limit.
In your case do;
e1.SetParLimits(1,1,1);
e1.SetParameter(1,exconst);

Rene Brun


Matt Fritts wrote:
> 
> I've been having a minor problem with a fitting macro I've been writing. I
> wanted to include an option to set a constant to zero, but it's not
> working. I can illustrate the problem with this test macro:
> 
> {
> Float_t exconst;
> 
> Float_t x[5], y[5], xe[5], ye[5];
> for(int l=0;l<5;l++){
>  x[l]=l;
>  y[l]=11*pow(l,2)-330*l+2500;
>  xe[l]=.2;
>  ye[l]=2.5;
> }
> 
> //  define fit function  //
> TF1 *e1 = new TF1("e1","[0]*x+[1]",.5,15);
> 
> //  set guess parameters  //
> e1.SetParameter(0,2000);
> e1.SetParameter(1,1);
> 
> printf("Enter constant: ");
> scanf("%f",&exconst);
> e1.SetParLimits(1,exconst,exconst);
> e1.SetParameter(1,exconst);
> 
> gre = new TGraphErrors(5,x,y,xe,ye);
> gre.Fit("e1");
> }
> 
> The macro will fix parameter 1 properly for any entered value except zero.
> If zero is entered, it fits parameter 1. (At least in Root Version 2.21/08.)
> 
> By the way, thanks for the help with the download.
> 
> -Matt Fritts



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:36 MET