Re: [ROOT] ROOT 2.23.12: bug in TF1 and TF2 when calling compiled function

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Apr 04 2000 - 12:02:02 MEST


Hi Matt,
We give an example in $ROOTSYS/test/stress.cxx. Look at test stress1.

I will extend the description of the example in the TF1 class to show
how to proceed interactively and in compiled mode.

Rene Brun

Matthew D. Langston wrote:
> 
> I believe I have found a bug in ROOT 2.23.12 with TF1 and TF2.  It
> appears that a TF1 or a TF2 can't call a user defined function that is
> loaded from a shared library under Linux.
> 
> For example, when I take the example out of the class description for
> TF1 (see http://root.cern.ch/root/html/TF1.html#TF1:description) and run
> it only through the CINT interpreter, the example works properly,
> However, when I compile the function "myfunction" and put it into a
> shared library, then ROOT segvios (i.e. the error message is ubiquitous
> " *** Break *** segmentation violation").
> 
> For reference, I have cut-and_pasted the example from the class
> description for TF1 here.  Has anyone else seen this problem?  It seems
> like it could be a significant problem if one needed to use a compiled
> function to do a fit using Minuit (which is my case).
> 
> -------------macro myfunc.C-----------------------------
> Double_t myfunction(Double_t *x, Double_t *par)
> {
>    Float_t xx =x[0];
>    Double_t f = TMath::Abs(par[0]*sin(par[1]*xx)/xx);
>    return f;
> }
> void myfunc()
> {
>    TF1 *f1 = new TF1("myfunc",myfunction,0,10,2);
>    f1->SetParameters(2,1);
>    f1->SetParNames("constant","coefficient");
>    f1->Draw();
> }
> void myfit()
> {
>    TH1F *h1=new TH1F("h1","test",100,0,10);
>    h1->FillRandom("myfunc",20000);
>    TF1 *f1=gROOT->GetFunction("myfunc");
>    f1->SetParameters(800,1);
>    h1.Fit("myfunc");
> }
> --------end of macro myfunc.C---------------------------------
> 
>  In an interactive session you can do:
>    Root > .L myfunc.C
>    Root > myfunc();
>    Root > myfit();
> 
> --
> Matthew D. Langston
> SLD, Stanford Linear Accelerator Center
> langston@SLAC.Stanford.EDU
> 650.926.3279



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