First Run
First run
So, we assume you’ve got Rivet installed and that the rivet
command is available in your executable path (i.e. the $PATH
environment variable). Now it’s time to run some events, make some analysis data, and plot the results.
Generating and analysing
The main interface to Rivet is the rivet
command. We will demonstrate how to use this to analyse HepMC events from a text file in the “IO_GenEvent” HepMC format.
Firstly, we recommend using a named pipe (or ‘FIFO’) so that your events
don’t create a huge file that takes all your disk space. The idea is that the
generator will push events into what looks like a file, and Rivet will read from it. However, this ‘file’
is a direct pipe between the two processes (just like the shell pipe in e.g. echo foo | less
), so no slow
filesystem access needs to take place, no disk space is occupied, and the system will automatically balance
the data flow between the writing and reading processes. All this is completely transparent to the user:
good old Unix! Here’s how you do it (with a fictional generator command, as an example):
> mkfifo fifo.hepmc
> my-generator --num-events=500000 --hepmc-output=fifo.hepmc &
> rivet --analysis=ANALYSIS_NAME fifo.hepmc
The backgrounding of the generator process – i.e. the &
character – is important: the generator will wait until the fifo.hepmc
pipe is being read by Rivet, so unless it is backgrounded you will never get the terminal focus back to run rivet
!
If you have trouble with this FIFO approach, try writing a few – 10 or so – events to a normal file and look at the file (e.g. with emacs, less, gedit or any other text editor). If your generator is writing the events to file properly your HepMC file should consist of a short header, followed by lots of largely numeric lines starting with a letter (E, P, V in particular). If you don’t see this, something has gone wrong “upstream” and you should fix it before blaming the FIFO or Rivet ;-)
Checking the data
By default, Rivet outputs its histograms in the YODA text format. To get a clearer view of the data values in histogram bins, you can use the yoda2flat
script, e.g. yoda2flat Rivet.yoda - | less
.
There is also a yoda2root
command which provides the data as ROOT histogram (or TGraph
) objects for those of a ROOTy disposition.