Rivet release 2.5.0

Posted July 7, 2016 by Rivet Developers ‐ 2 min read

We are very pleased to release Rivet 2.5.0 (and the 1.6 series of the YODA histogramming package), with three major new developments that we think you'll like.

We are very pleased to release Rivet 2.5.0 (and the 1.6 series of the YODA histogramming package), with three major new developments that we think you’ll like:

  • Addition of simple (but very flexible and efficient!) detector smearing machinery, mainly for use in BSM analyses.
  • Tools to easily calculate Lorentz transformations to boost into the beam centre-of-mass system (for fixed-target and cosmics analyses)
  • Elimination of the Boost library in favour of C++11. A technicality, but a nice one!

To use the beta, use the special bootstrap script, run in the usual fashion. Since the new release requires C++11, you will need to ensure that your environment has a capable compiler before running the script. Then it should “just work”. Let us know if you require assistance, and please provide feedback and suggestions for improvements. Now a few more details on the two new physics features:

Detector effect smearing

We have added new SmearedParticle and SmearedJet projection classes. Examples of these in use can be found in the new EXAMPLE_SMEAR analysis. They are very simple and flexible: the SmearedParticles projection can be wrapped around any particle-finding projection (e.g. a FinalState), while the SmearedJets wraps around any JetAlg — in practice this will almost certainly be FastJets. This nicely decouples the smearing from the usual physics object operations.

Beam boosts

To make Rivet friendlier for asymmetric beam analyses, we have removed an old feature which would automatically rotate the event to ensure that the +z beam was a proton. This was originally added to work-around a limitation in Fortran HERWIG for HERA analyses, but is now more of a problem than a solution. We have also provided tools to easily calculate a LorentzTransformation into the beam centre-of-mass frame — for example:

#include "Rivet/Projections/Beam.hh"
...
const LorentzTransform beamboost = beamCMSTransform(event);
Particles fsparticles = myfinalstate.particles();
for (Particle& p : fsparticles)
  p.transformBy(beamboost);

Something similar can be done to transform Jet objects into the beam frame — or by any LorentzTransform you happen to calculate. It’s not rocket science, but it is significantly more user-friendly than what’s been available so far. We hope to build frame-boost features directly into projections in future, which will be even more convenient, but that requires a bit of careful engineering and we hope that this stop-gap solution will make life easier for several users. Please try it out.