Hi,
"Dr. John Krane" <jkrane@netzero.com> wrote concerning
Re: [ROOT] TMinuit with fcn as a member function of a class ? [Thu, 01 Apr 2004 08:29:31 -0600]
----------------------------------------------------------------------
> The global function was certainly my solution. It was just a wrapper to
> the member function. Give it a very similar name or put it in a
> namespace maybe? Not so bad.
>
> - J
>
> Jan CONRAD wrote:
>
> >Dear rooters,
> >
> > I try to use TMinuit inside a class and try to have fcn as a member
> >function of this class, i.e.: gMinuit->SetFCN(pointerToFCN). This seems
> >not to work, and was a known problem, I found a couple of mails some years
> >ago. I don't like the workaround (defining a global function).
> >
> >Is there any other solution to this problem ?
Yes, but it does involve using a global function of sort, but it's
declared static, so it's not accessible from outside it's compilation
unit:
// Header file
class MyFitfunction
{
static MyFitFunction* _instance;
MyFitFunction() {}
MyFitFunction(const MyFitFunction& o) {}
MyFitFunction& operator=(const MyFitFunction& o) { return *this; }
public:
static MyFitFunction& Instance();
Double_t Function(Int_t&, Double_t*, Double_t*, Int_t);
static void Use();
};
// Source
static myFitFunction(Int_t& a, Double_t* p, Double_t &f, Double_t* d, Int_t f)
{
MyFitFunction& fitFunc = MyFitFunction::Instance();
f = fitFunction.Function(a, p, d, f);
}
MyFitFunction* MyFitFunction::_instance = 0;
MyFitFunction* MyFitFunction::Instance()
{
if (!_instance) _instance = new MyFitFunction;
return _instance;
}
MyFitFunction::MyFitFunction()
{}
void MyFitFunction::Use()
{
gMinuit->SetFcn(myFitFunction);
}
Another way would be to use the Functor stuff from
www.moderncppdesign.com.
My 2 cents.
Yours,
___ | Christian Holm Christensen
|_| | -------------------------------------------------------------
| | Address: Sankt Hansgade 23, 1. th. Phone: (+45) 35 35 96 91
_| DK-2200 Copenhagen N Cell: (+45) 24 61 85 91
_| Denmark Office: (+45) 353 25 404
____| Email: cholm@nbi.dk Web: www.nbi.dk/~cholm
| |
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:07 MET