[Rivet] RivetGun news: dynamic rivetgun reinstated, run params from file...

Andy Buckley andy.buckley at durham.ac.uk
Mon Jul 2 16:12:42 BST 2007


Hi everyone,

A few bits of news about the development of RivetGun, now that we've
released Rivet:


DYNAMIC VERSION OF rivetgun REINSTATED

I finally got around to reinstating the runtime dynamic loading version
of rivetgun-static, which has been lagging behind for quite a while.

The latest SVN head versions of RivetGun now build (but don't install)
two dynamic versions of the rivetgun executable, rivetgun-ltdl and
rivetgun-dlopen. I think that the -ltdl version might work on SL
systems, but it certainly doesn't work on Ubuntu (see below for the
reason). The -dlopen version works well as far as I've tested, which is
to say that I've generated 5000 LEP1-type events and looked at the
corresponding Rivet histograms.

Please have a go yourself - this version of the rivetgun interface has
always been intended to become the main one, rather than rivetgun-static.


INTERACTION WITH GENSER

I'd also be interested to hear any ideas of how we can make rivetgun
integrate with the GENSER libraries, especially where this runtime
dynamic loading is concerned. The dynamic library loading is done using
the LD_LIBRARY_PATH, runpath and rpath fields in libraries, and just
uses the library name rather than the ful path. Forcing use of the full
path according to the GENSER scheme would vastly reduce our portability,
so I wouldn't be keen on doing that.

I think we should encourage GENSER to make micro-version specific
symlinks to the generator libraries, e.g. libpythia6408.so ->
pythia/6408/libpythia.so. I did mention (about a year ago!) that we need
GENSER to provide .so versions of the Fortran generator libraries as
well - is that now happening?


OTHER CHANGES

You'll also find a few other improvements in the rivetgun interface,
both for the static and dynamic versions since most of the code is
common to all three. The main one as far as I'm concerned is that you
can now specify run conditions such as random seed, beam types and
momenta as if they were generator parameters starting with "RG:". To
assist this, you can now specify more than one -P param file options,
and the colon has been replace with an = in the -p form, since Pythia 8
uses colons in the param names.


SOME DETAILS FOR THE KEEN

Ideally, we'd be using the LTDL compatibility library for runtime
dynamic loading, but LTDL doesn't export symbols between libraries by
default and we'll have to wait a while before they add that feature - a
new function called lt_dlopen_advise - to the stable release of
libtool/LTDL. Raw dlopen, though, has bitfield flags to influence the
symbol visibility and load time, but isn't as portable. So, in the
meantime I've made a "Loader" interface in RivetGun which will either
use LTDL or raw dlopen based on link time symbol resolution: the only
difference between rivetgun-{ltdl,dlopen} is the Loader implementation
that it gets linked against. Have a look at src/Loader*.cc if this sort
of thing interests you :-)


Cheers,
Andy


More information about the Rivet mailing list