Re: [ROOT] Base class ambiguity

From: Rene Brun (Rene.Brun@cern.ch)
Date: Sat Mar 02 2002 - 04:48:52 MET


Hi Miha,

I will make these functions virtual.

Rene Brun


On Fri, 1 Mar 2002 miha.puc@marvin.fmf.uni-lj.si wrote:

> Thank you, Rene.
> But this solves only the problem with FillRandom since it accasses 
> function via gROOT->GetListOfFunctions()->FindObject("functionname").
> 
> The problem with TH1::Fit remains since in uses gF1 defined in TH1.cxx. In 
> TH1::Fit also gF1->GetParameter(i) is called and because 
> TFormula::GetParameter(...) in NOT virtual I cant't 
> override it and provide 
> my own.
> 
> Would it be feasible to make TFormula::GetParameter virtual. 
> The same is true for TFormula::GetNpar, TFormula::GetParNumber, 
> TF1::GetParError, TF1::GetParErrors and others that do not deal with 
> parameters?
> 
> Regards, Miha.
> 
> 
> On Wed, 27 Feb 2002, Rene Brun wrote:
> 
> > Hi Miha,
> > 
> > In your TModelFunction constructor, add the following statement:
> >    gROOT->GetListOfFunctions()->Add(this);
> > 
> > see example in:
> > TF1::TF1(const char *name, Double_t xmin, Double_t xmax, Int_t npar)
> > 
> > Rene Brun
> > 
> > 
> > On Wed, 27 Feb 2002 miha.puc@marvin.fmf.uni-lj.si wrote:
> > 
> > > Hi!
> > > 
> > > Ok. Thank you. And here is another problem:
> > > In TModelFunction I override TF1's EvalPar and some other methods. But 
> > > when I fit or FillRandom a histogram with a TModelFunction the 
> > > TF1::EvalPar is called which is not what I want. 
> > > 
> > > Is there a solution?
> > > 
> > > When I call TH1's Add, Divide or Multipy with TModelFunction::EvalPar is 
> > > called which is OK.
> > > Also Draw() method works well for TModelFunction objects.
> > > 
> > > I use Version   3.03/00   6 February 2002. 
> > > 
> > > Miha
> > > 
> > > 
> > > On Tue, 26 Feb 2002, Rene Brun wrote:
> > > 
> > > > Hi Miha,
> > > > 
> > > > The message from the compiler is clear. Both TF1 and TDataSet
> > > > derive from TObject. Do not mix apples and oranges.
> > > > Use TDataSet as a member of your class instead.
> > > > 
> > > > Rene Brun
> > > > 
> > > > On Tue, 26 Feb 2002 miha.puc@marvin.fmf.uni-lj.si wrote:
> > > > 
> > > > > Hi!
> > > > > I have a class 
> > > > > class TModelFunction : public TF1, public TDataSet { .....
> > > > > 
> > > > > and when compiling I get messages like
> > > > > 
> > > > > TModelFunction.cxx:121: type `TObject' is ambiguous base class for type 
> > > > > `TModelFunction'
> > > > > TModelFunction.cxx:121: type `TModelFunction' is ambiguous baseclass of 
> > > > > `TObject'
> > > > > 
> > > > > line 121 is:
> > > > > _Foo = (TModelFunction *) (fList->After(_Foo));
> > > > > where _Foo is a pointer to TModelFunction object.
> > > > > 
> > > > > What shall I do?
> > > > > 
> > > > > Regards,
> > > > > Miha
> > > > > -- 
> > > > > 
> > > > > 
> > > > 
> > > > 
> > > 
> > > -- 
> > > 
> > 
> > 
> 
> -- 
> 



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:43 MET