Re: TF1 as a member

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Mar 26 1998 - 12:28:43 MET


Wouter Hulsbergen wrote:
> 
> Dear Root,
> I would like to create a member object TF1, in order to plot a member
> functions, like in
> 
> class A
> {
> public:
>   A() ;
>   Double_t fSquare(Double_t*, Double_t*) ;
> private
>   Double_t a;
>   TF1 gSquare ;
> };
> Double_t A::fSquare(Double_t* x, Double_t* par) { return a * *x * *x ; }
> A::A() : gSquare("gSquare",fSquare) {} ;
> 
> However, I get the compiler error
> Error 541: "nogeentest.C", line 12 # Nonstatic member function "double
>     A::fSquare(double *,double *)" is used incorrectly (must be either
> called
>     or used to form a pointer to member).
>     A::A() : gSquare("gSquare",fSquare) {} ;
>                                ^^^^^^^
> I tried a lot of other things, but didn't find anything that works. Can
> anybody tell me whether it is possible at all to create a TF1 from a
> member function, and if, how, and if not, why ?
> 
> Regards,
> Wouter

One of the TF1 constructors expect a pointer to a normal
static function of type
   Double_t func(Double_t *x, Double_t *par)
There is no constructor accepting a pointer to a class member function.
You should implement a static function as quoted above
and inside this function call your class member function.

Rene Brun



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:31 MET