|
[Rivet] RivetGun news: dynamic rivetgun reinstated, run params from file...Andy Buckley andy.buckley at durham.ac.ukMon 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 |