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