lhef 0.3.1

Read and write files in the Les Houches Event File format
Documentation
# lhef

A library for interacting with files in the Les Houches Event File (LHEF) format.

Lhef supports both reading and writing via the `Reader` and `Writer`
structs. Information about the generator run is provided in a `HEPRUP`
object and each event is stored in a `HEPEUP` object. These structs
correspond to the Fortran common blocks of the same names in the
[original proposal](https://arxiv.org/abs/hep-ph/0109068v1), but contain
extra `info` fields corresponding to the "optional information"
specified in the LHEF standard.

As of now, only [version 1.0](https://arxiv.org/abs/hep-ph/0609017) of
the LHEF format</a> is fully supported. Files in [version
2.0](http://www.lpthe.jussieu.fr/LesHouches09Wiki/index.php/LHEF_for_Matching)
and [3.0](https://phystev.cnrs.fr/wiki/2013:groups:tools:lhef3) are
parsed exactly like for version 1.0. This means that the additional XML
tags have to be extracted manually from the `info` fields of the
`HEPRUP` and `HEPEUP` objects.

# Usage

Add this to your Cargo.toml:

```toml
[dependencies]
lhef = "0.3"
```

# Examples

```rust,no_run
use lhef::Reader;
use std::fs::File;
use std::io::BufReader;

let input = BufReader::new(File::open("events.lhe")?);

let mut reader = Reader::new(input)?;

println!("Information in comment header:\n{}", reader.header());
println!("Information in xml header:\n{:?}", reader.xml_header());
println!("Generator run information:\n{:?}", reader.heprup());

let event = reader.event()?;
if let Some(event) = event {
    println!("Found an event: {:?}", event);
}
```