[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: New source and binary Debian packages for ROOT.



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Chris Roat wrote:
> On 1/25/06, Ricardo Yanez <Ricardo.Yanez@calel.org> wrote:

>>In sarge, the metapackage gcc installs gcc 3.3. The packages I compiled (using
>>Christian Holm's debian/) used that version of gcc/g++. I suppose they were put in
>>the stable part of the repository(?).

> IMHO, dependencies of the ROOT packages should be kept to sarge,
> unless there is some code-critical reason to do otherwise - even if
> the packages are kept in unstable repositories.  This way, there is
> the greatest chance of getting the broadest user base.

- From what Ricardo said, though, it sounds like the ROOT packages
available for Sarge were in fact compiled in Sarge using g++ 3.3.  Are
you sure you weren't installing ROOT packages from the unstable repository?

> This all said, the g++ mixup was only minor inconvenience.  The real
> part of this thread is asking the appropriate way to link against
> libMinuit if it is destined not to live in standard shared-library
> land.  For now, I've just added soft-links by hand...

This is a good point and I think it needs to be fixed somehow in the
packages.  The basic issue is based on the fact that libRooFit includes
a class RooMinuit whose implementation uses a static pointer
"_theFitter" (line 68 of roofit/src/RooMinuit.cxx) to a TVirtualFitter.
 This itself is OK.  The problem is that when _theFitter is initialized
(line 121), it is done so using the TFitter::TFitter(int) constructor,
which is only found in the libMinuit.so plugin.

Fortunately it looks like the ROOT authors already have a mechanism in
place to select a fitter from a plugin using the TVirtualFitter base
class.  So I suggest that RooMinuit.cxx be fixed to use it.
Specifically, replace the current lines 120-122:

	if (_theFitter) delete _theFitter ;
	_theFitter = new TFitter(nPar*2) ;
	_theFitter->SetObjectFit(this) ;

by the following single line:

	_theFitter = TVirtualFitter::Fitter(this, nPar*2);

Once this is done, I think libRooFit will not need to be dynamically
linked against libMinuit (any version), and should automatically load
whatever fitter plugin happens to be installed.

This change may have other ramifications that need to be dealt with, so
any fix should be tested thoroughly!

best regards,

- --
Kevin B. McCarty <kmccarty@princeton.edu>   Physics Department
WWW: http://www.princeton.edu/~kmccarty/    Princeton University
GPG: public key ID 4F83C751                 Princeton, NJ 08544
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFD17PhfYxAIk+Dx1ERAl+zAJ4uOwvMuyKoxH4nCOsTQiqtdzerzgCgz7cy
ByJv6h1hzaDCc3XURfMcmhM=
=ud39
-----END PGP SIGNATURE-----



Reply to: