Re: [ROOT] function compiling

From: Rene Brun (Rene.Brun@cern.ch)
Date: Mon Aug 12 2002 - 12:42:02 MEST


Hi Pietro,

In your example, replace the line;
  TF1 *sigma_hyp = new TF1("sigma_hyp","tanh(x-[0])",min,max,1);
by
  TF1 *sigma_hyp = new TF1("sigma_hyp","tanh(x-[0])",min,max);

The constructor where the number of parameters is given is for 
CINT interpreted functions, not for basic functions.

Rene Brun

On Mon, 12 Aug 2002, Pietro Govoni wrote:

> Dear rooters,
> I am creating some TF1 functions with a very simple macro; I cannot get
> why one of them does not compile when I run the macro, while if I try to
> create and plot it with on line commands I don't get any problem:
> 
> this is the error message:
> --------------------------
> 
> >root functions.C
>   *******************************************
>   *                                         *
>   *        W E L C O M E  to  R O O T       *
>   *                                         *
>   *   Version   3.03/07      18 July 2002   *
>   *                                         *
>   *  You are welcome to visit our Web site  *
>   *          http://root.cern.ch            *
>   *                                         *
>   *******************************************
> 
> Compiled for linux with thread support.
> 
> CINT/ROOT C/C++ Interpreter version 5.15.50, July 7 2002
> Type ? for help. Commands must be C++ statements.
> Enclose multiple statements between { }.
> root [0] 
> Processing functions.C...
> Function:sigma_hyp cannot be compiled
> 
> 
> 
> this is the code:
> -----------------
> 
> Double_t theta(Double_t *x, Double_t *par)
>   {
>     if (x[0] > par[0]) return 1;
>     else return 0;
>   }
> 
> void functions()
> {
> 
>   Double_t min = -10.;  // minimum of the formulas range
>   Double_t max = +10.;  // maximum of the formulas range
>   Double_t thres = 0.;  // coordinate of the formula half value point
> 
>   // the theta (step) function
> 
>   TF1 *step = new TF1("step",theta,min,max,1);
>   step->SetParameter(0,thres);
>   step->SetParNames("Threshold");
> 
>  // the sigma function with the hyperbolic tangent
> 
>   TF1 *sigma_hyp = new TF1("sigma_hyp","tanh(x-[0])",min,max,1);
>   sigma_hyp->SetParameter(0,thres);
>   sigma_hyp->SetParNames("Threshold");
> 
> 
>   // the sigma function with the exponential
> 
>   TF1 *sigma_exp = new TF1("sigma_exp","1/(exp(-1*x-1+[0])+1)",min,max);
>   sigma_exp->SetParameter(0,thres);
>   sigma_exp->SetParNames("Threshold");
> 
>   // graphics
>   
>   TCanvas *c1= new TCanvas("c1","functions",10,10,400,400);
>   c1->Divide(2,2);
>   c1->cd(1);
>   step->Draw(); 
>   c1->cd(2);
>   sigma_hyp->Draw(); 
>   c1->cd(3);
>   sigma_exp->Draw(); 
> }
> 
> 
> Do anybody have an explanation for this behaviour?
> Thanks in advance, regards
> 
> pietro
> 
> 
> 
> 



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:04 MET