[ROOT] inheriting from TF2 and calling Eval

From: André Holzner (Andre.Georg.Holzner@cern.ch)
Date: Sat Mar 06 2004 - 17:37:27 MET


Hello,

I have a function inherting from TF2 (which calculates
a chi2 based on two parameters). I implemented
the calculation in the method

  virtual Double_t EvalPar(const Double_t *x, const Double_t *params)

in order to be able to call the Draw() method.
Now, if I want to get a single value, using the Method Eval(..)
in the interpreter interactively, it seems that this
method is not called. Looking at the CVS HEAD of TF1.cxx, I see
that TF1::EvalPar is explicitly called:

   Double_t TF1::Eval(Double_t x, Double_t y, Double_t z, Double_t t)
   {
     Double_t xx[4];
     xx[0] = x;
     xx[1] = y;
     xx[2] = z;
     xx[3] = t;

     InitArgs(xx,fParams);

     return TF1::EvalPar(xx,fParams);
   }

and thus bypassing the effect of the 'virtual' of the EvalPar method..

My question: Is there a reason why TF1::EvalPar is called explicitly ?
Where should I implement the calculation of my result value ?

best regards & thanks,

André



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