Re: [ROOT] fixing a parameter

From: Rene Brun (Rene.Brun@cern.ch)
Date: Mon Apr 14 2003 - 14:38:41 MEST


Hi Justin,

Predefined functions such as "gaus","poln" and "expo" compute the initial
values of their parameters automatically. You can prevent this by doing
in your example:
  pol1->SetNumber(0);

Rene Brun

Justin Findlay wrote:
> 
> Hi,
> 
> Setting parameter limits equal in a TF1 seems to cause a fit to logically
> fail.  pol1::p0 will always become the number, 288.074, for the profile
> histogram, fixpar.C, no matter what fixing value I choose.  Setting
> ParLimits tolerably apart works, however.
> 
> hand built root-3.5.3 on:
> redhat-8.0
> gcc (GCC) 3.2 20020903 (Red Hat Linux 8.0 3.2-7)
> AMD Athlon(tm) Processor 1994.691 MHz 256 KB cache
> 
> running root on a terminal with:
> 8.0 Mb memory
> redhat-6.1 ctwm /*no desktop, only the window manager*/
> vt100 xterm
> 
> bash-2.05b$ root -b -q fixpar.C fixpar.cpp
> 
> ...
> 
> root [0]
> Processing fixpar.C...
> 
> Processing scripts/fixpar.cpp...
> Note: File "iostream" already loaded
> 288.074
> 288.074
> 1.1
> 
> /*fixpar.cpp*/
> {
> #include <iostream>
> 
> using namespace std;
> 
> htemp->Fit( "pol1", "q" );
> 
> pol1->FixParameter( 0, 1.0 );
> htemp->Fit( "pol1", "q" );
> cout << pol1->GetParameter( 0 ) << endl;
> 
> pol1->SetParLimits( 0, 1.0, 1.0 );
> htemp->Fit( "pol1", "q" );
> cout << pol1->GetParameter( 0 ) << endl;
> 
> pol1->SetParLimits( 0, 0.9, 1.1 );
> htemp->Fit( "pol1", "q" );
> cout << pol1->GetParameter( 0 ) << endl;
> }
> 
> Justin
> 
>   --------------------------------------------------------------------------------
>                Name: fixpar.C
>    fixpar.C    Type: Plain Text (TEXT/PLAIN)
>            Encoding: BASE64
> 
>                  Name: fixpar.cpp
>    fixpar.cpp    Type: Plain Text (TEXT/PLAIN)
>              Encoding: BASE64



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:10 MET