Re: [ROOT] TFormula

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Jul 20 2004 - 10:44:53 MEST


Hi Michael,

3.05/07 effectively had the possibility to call TMath functions.
However, looking at the CVS commits following 3.05, I see a few protections
added in case the formula has more than 1 TMath function or a TMath function
with no arguments.

My recommendation to move to teh PRo version 4.00/08 still stands ::)

Rene Brun

"K.-Michael Aye" wrote:
> 
> Hi Rene,
> 
> thanks for your answer.
> I hate to be picky, but then the docs for 305 are wrong.
> This is from root doc305/TFormula.html#TFormula%3Adescription:
> 
> "  TMath functions can be part of the expression, eg:
> *-*     -  TMath::Landau(x)*sin(x)
> *-*     -  TMath::Erf(x)
> *-*
> "
> 
> Apart from that, just out of educational curiosity, how comes, that some
> TMath functions work, e.g.:
> 
> root [0] form= new TFormula("form","TMath::Power(x,4)")
> (class TFormula*)0x9040840
> root [1] form.Eval(2)
> (Double_t)1.60000000000000000e+01
> root [2]
> 
> Did you have to implement the TMath-functions by hand? Because if you
> wrote some kind of wrapper or so to include that functionality into
> TFormula, either all or none of the functions should work, or shouldn't
> they?
> As I said, I am just puzzled about that and wondered how the partial
> implementation has happened. Only because the power function worked, I
> came to the idea of using more TMath inside my stuff.
> 
> Cheers,
> Michael
> 
> Rene Brun wrote:
> > Hi Michael,
> >
> > Move to a more recent version (eg 4.00/08).
> > The possibility to call the TMath functions from TF1/TFormula was only
> > implemented a few months ago. With 4.00/08, I get:
> >
> > root [0] TFormula form("form","TMath::Sigma()*TMath::Power(x,4)");
> > root [1] form.Eval(1)
> > (Double_t)5.67040000000000030e-008
> > root [2] TFormula form1("form1","TMath::Sigma()*5")
> > root [3] form1.Eval(1)
> > (Double_t)2.83520000000000040e-007
> >
> > Rene Brun
> >
> > On
> > Mon, 19 Jul 2004, K.-Michael
> > Aye wrote:
> >
> >
> >>Hi!
> >>
> >>I get SEGV during runtime in compiled program and in CINT with this:
> >>
> >>TFormula form("form","TMath::Sigma()*TMath::Power(x,4)");
> >>
> >>If I replace it with the value of the SB-constant, it works fine.
> >>
> >>Also a declaration of
> >>TFormula form("form","TMath::Sigma()*5")
> >>doesn't work (I tried it for test purposes), so it seems the culprit is
> >>the TMath::Sigma function?
> >>
> >>I'm using Root 3.05/07 on gcc 3.2.2.
> >>
> >>Cheers,
> >>Michael
> >>
> >>
> >
> >
> 
> --
> K.-Michael Aye, University of Durham, Dept. of Physics
> Phone@Work: +44-191-334-3665, Fax@Work: +44-191-334-3521
> "We all declare for liberty, but in using the same word,
> we do not all mean the same thing." Abraham Lincoln



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:09 MET