|
[Rivet] Various things for Rivetcholm cholm at nbi.dkFri Jun 30 14:47:37 BST 2017
On 2017-06-30 14:44, cholm wrote: > Hi Andy et al, > > On 2017-06-30 13:59, Andy Buckley wrote: >> Hi Christian & al, ... >> As we've already discussed, some of your innovations aren't things >> that we'll want to pull into the main Rivet development line, Here, I'll go through some of the changes (by commit) to explain a little more what I did and why. - https://gitlab.cern.ch/cholm/myrivet/commit/4942653a6487cdd8acaefa1142f855b5a3c080ff Since a target machine may not have all FastJet plugins available, I check at configure time which we can use. At compile time, those that are not available will be ignored. At run-time, using an unsupported plugin on the target machine will cause an exception. This is done to allow Rivet to be build on any installation of FastJet (notably, Debian and Ubuntu, and other Debian-derivatives, do _not_ have all plugins available - probably due to licensing issues). If this is _not_ done like this, Rivet cannot be built without first installing a user build FastJet library. This is the patch that Andy doesn't like :-/ - https://gitlab.cern.ch/cholm/myrivet/commit/e2a419f18fe33b2b09550a19133af1ed34bb1fac Added more particle names to the database of particle names. The initialisation is moved to the implementation (.cc) file so we can cleanly use a macro for all this. - https://gitlab.cern.ch/cholm/myrivet/commit/819187938f91707bdc4daf125e6ae887b6742bab This is the culprit of the delayed-finalization strategy. Here, I add the member function Analysis::updateAnalysisObject which is used to propagate external analysis objects to the analyses. I also add a new finalize member function to AnalysisHandler that takes a vector of external data objects to be propagated to the analyses. - https://gitlab.cern.ch/cholm/myrivet/commit/ad11fea60f0274899aad16b510968c2456e3499a This is a merge commit that takes the above commits (and a few others) - https://gitlab.cern.ch/cholm/myrivet/commit/53bba6cc829ac47261377c15b2a76b14a6dd56de This commit introduces the applications rivet-runner and rivet-merger - the work-horses of the delayed finalization strategy. These tools are set up to work as filters - i.e., read from standard input and write on standard output, so that we may build pipelines of these. These are similar to rivet and yodamerge but has more functionality that these tools do not have and which are needed for delayed finalization. In particular rivet-merger can do far more than what yodamerge does. This commit also introduces the utility classes Runner and Merger used by rivet-runner and rivet-merger, respectively. Merger has no parallel in either YODA or Rivet. The Runner class, however, could be merged into the Run class without much hassle. The one crucial thing about that the Runner class is that it can add a pseudo analysis to store beam parameters so that we can build a fake event to initialize the analyses on when we do delayed-finalization. - https://gitlab.cern.ch/cholm/myrivet/commit/24af7c48d4139592c6c567c4403c937dacc1231b Another merge commit - https://gitlab.cern.ch/cholm/myrivet/commit/74de5943834e2aab7a3ce6487014140da8a1942e Adds the README-parallel.md file - https://gitlab.cern.ch/cholm/myrivet/commit/38f2d5a8b99a66b6fd0affebaad33bc2a013cfbb a merge commit - https://gitlab.cern.ch/cholm/myrivet/commit/3c04687bc1ebfc1f0b2d0c66aa1d956d18408297 Imports upstream changes - https://gitlab.cern.ch/cholm/myrivet/commit/79f9b96ca31d1d84953d233a53d034c2270feffe This commit unfortunately is a bit garbled. It adds the functionallity that Analysis::book... will always return pre-existing objects for all analysis object types. I also add a new AnalysisHandler::init method that will take care to set internal counters (such as event counter and x-section) from the passed externally read analysis objects. This is needed so that these values are properly set for those analyses that might need them. - https://gitlab.cern.ch/cholm/myrivet/commit/54176336a01bd5ebcba957845f3676b11d754e23 This commit came after merging with upstream. The changes are detailed in https://gitlab.cern.ch/cholm/myrivet/commit/53bba6cc829ac47261377c15b2a76b14a6dd56de This is the one to take for this. - https://gitlab.cern.ch/cholm/myrivet/commit/e1837f360ac0894ae9ed0ac4b14f24ddf6f49b0c Runner use the newly defined AnalysisHandler::init with an additional argument. - https://gitlab.cern.ch/cholm/myrivet/commit/72aa38c9e85bd0410910104a5db0db8d2cc85f75 https://gitlab.cern.ch/cholm/myrivet/commit/af8ce6cc4069ae83d7ad507b862afab0635acd59 https://gitlab.cern.ch/cholm/myrivet/commit/2bd36179a9c242d8bf2d2b846dde621dbb324d6d https://gitlab.cern.ch/cholm/myrivet/commit/f1dcb7658cadaf24830910d97705a4ebbf793922 Documentation fixes - https://gitlab.cern.ch/cholm/myrivet/commit/e407f3f3cb6c5096c5c7a1393b4afa7a53dae28d Import upstream changes - https://gitlab.cern.ch/cholm/myrivet/commit/b3800cf74f35030e80ffbe97d6c51a86024e24e6 https://gitlab.cern.ch/cholm/myrivet/commit/1c0f4df082df7e35b7d1da0d9697ff249eb25437 https://gitlab.cern.ch/cholm/myrivet/commit/43f3e96024f00606d4843f76c93a70781f394635 These commits adds an extra argument to AnalysisHandler::getData (and writeData) that allows use to select whether temporary objects should be written or not. This is needed if, in delayed-finalization, an analysis uses these temporary objects. Note, an analysis can flag an analysis object as temporary by setting the annotation "temporary" - https://gitlab.cern.ch/cholm/myrivet/commit/6ae5f45d7ebbac170d547afcd353e173dc041f0e Repeat of https://gitlab.cern.ch/cholm/myrivet/commit/74de5943834e2aab7a3ce6487014140da8a1942e - take this one. - https://gitlab.cern.ch/cholm/myrivet/commit/fc8ded223c77e1c527365e0a22815822eb27af58 More documentation - especially about the need to use CounterPtr rather than a double for caching sums or the like. - https://gitlab.cern.ch/cholm/myrivet/commit/7ca5dc88cbda1a1ed7725b9c7d756d7de2853dea A merge commit - https://gitlab.cern.ch/cholm/myrivet/commit/e8eb506ea696dd59d4cb04f8bca4b64bf1fd4bd2 https://gitlab.cern.ch/cholm/myrivet/commit/68341660b404bc5f42e0ea939d73fd32925e83e8 https://gitlab.cern.ch/cholm/myrivet/commit/f5e8d992e186edcc8781152ae1c6ddb5d3bb92e4 Add the class Url to be used for input specifications. This is convenient as it gives a standarized way of specifying things - e.g., weights and so on. The class is light-weight and implemented in standard C++ so no external dependencies. Note, it does _not_ provide access to remote files, only a way to specify where they are :-) - https://gitlab.cern.ch/cholm/myrivet/commit/937d3104dcbbec4b08927a40d08e2bb3b021850a Bug fixes to Merger class and a new test program to test it with. - https://gitlab.cern.ch/cholm/myrivet/commit/fe7297ec04bf26e98a53a0f6f4c110608a25651a In case the user didn't give any input, the Runner class will bark - better than to do nothing. - https://gitlab.cern.ch/cholm/myrivet/commit/5032247310465bef4d35851960d5f952b2f68d8b A minor fix to make sure we actually respect the user wish to set logging on some component. This was missed in the first go. - https://gitlab.cern.ch/cholm/myrivet/commit/01cbd0651a29558177cebb2613f631fe9811a5f4 This commit allows the user to specify the precision with which the outputs are produced. This is kinda important since we store beam parameters as floats which could round off important digits - e.g., if the PDG of one beam particle is 100822080 (Pb) it could become rounded to 100822000 if we do not have high enough precision. - https://gitlab.cern.ch/cholm/myrivet/commit/4cf612c011e1015cc37a4f3f9c9dd5723aa27a56 Minor documentation fixes in new code - https://gitlab.cern.ch/cholm/myrivet/commit/31b342091120f5c4ef04bbf1dcb96b100d8b69ef untie standard input from standard output so that the I/O library does not sync these up - we really don't need that since we're not running interactively. Should speed things up a bit. Also, we make a copy of std::cout so we may redirect std::cout to std::clog so that river-runner truly works as a filter. - https://gitlab.cern.ch/cholm/myrivet/commit/1f6d834b4eecaef60e5d1c0d49d670a4940332b4 In case we try to add incompatible stuff, make sure we don't fail but give a a warning. - https://gitlab.cern.ch/cholm/myrivet/commit/102a659aed526bd049683f0b120915453b82bddc This commit fixes the built system for the new structure where the experiment analyses are put in a separate directory. Originally, the makefiles used $(wildcard ) and so on, but had most of the directories screwed up. So what I did, is to introduce the script Analyses/makeMakefile.sh that will generate a Makefile for a given sub-directory of Analyses/ (or all if so instructed). In this way, we specify all that Autotools need to know up front, but can still easily generate a new Makefile should we add a new analyses. As an example. suppose we should add the analysis ALICE_2030_Z2f894nj1239g, we'd do cp ALICE_2030_Z2f894nj1239g.{cc,info,plot,ref} Analyses/pluginALICE (cd Analyses && ./makeMakefile.sh ALICE) autoreconf -i -f hg commit -m "Added analysis ALICE_2030_Z2f894nj1239g" . hg push BTW, I think you should really install loadable modules in $(pkglibdir) (e.g., /usr/lib/Rivet/) rather than in $(libdir) as not to pollute the namespace. One could even make a versioned directory if so needed plugindir = $(pkglibdir)/$(MAJOR).$(MINOR) and only load from there (and where the user may specify via rivet-runner -L<dir>) - https://gitlab.cern.ch/cholm/myrivet/commit/0ae0f9b015b4bff4739bdfb779d154291bb1dec8 Just another small bug fix to Runner - https://gitlab.cern.ch/cholm/myrivet/commit/df823a0a10eda2bc433367476b2bf4f2eb6b6b3f Added documentation of a parallel execution test I did and some notes on the implementation of delayed-finalization Hopefully the above list will make it easier for you to pick what you need. Yours, -- Christian Holm Christensen ------------------------------------------------- Niels Bohr Institute, Blegdamsvej 17, DK-2100 Copenhagen http://cern.ch/cholm, +4524618591
More information about the Rivet mailing list |