Skip to content

JeffersonLab/evio

EVIO 6 SOFTWARE PACKAGE

EVIO stands for EVent Input/Output, a unique data format developed by Jefferson Lab used by typical detector readout systems at the lab. This software repository allows one to read & write .evio and .ev format data, within either a C/C++ or Java programming environment.

Useful Links

Documentation on GitHub:

Software Library Documentation:

Getting Started

C/C++ Library

The C and C++ libraries are build using cmake. To build C/C++ code from this repository:

git clone https://github.com/JeffersonLab/evio/
cd evio; mkdir build
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --target install --parallel

Note that during the cmake configure step (first of two cmake commands above), one can also include the following special flags:

  • C_ONLY : build C lib only, skip C++ (default -DC_ONLY=0)
  • MAKE_EXAMPLES: build example/test programs (default -DMAKE_EXAMPLES=0)
  • USE_FILESYSTEMLIB: ue C++17 instead of Boost (default -DUSE_FILESYSTEMLIB=0)
  • DISRUPTOR_FETCH: allow CMake to download Disruptor if not found (default -DDISRUPTOR_FETCH=1)
  • CODA_INSTALL: installs in this base directory. If not used, then the env variable $CODA location is next checked. Otherwise defaults to ${CMAKE_HOST_SYSTEM_NAME}-${CMAKE_HOST_SYSTEM_PROCESSOR}, typically something like [evio_directory]/Linux-x86_64.

One can still also use scons instead of cmake to build the evio C/C++ library, though this feature will not be supported in future releases.

Prerequisites

C++ 17 or higher, cmake, lz4, boost_system, boost_thread, and boost_chrono. Compilation can be done using clang or gcc (gcc 11 or higher recommended). If LZ4 is not already configured, it can be installed from LZ4 on github. Installation of boost libraries are typically system-specific (e.g. using a command like yum, dbn, rpm, apt-get, etc.).

Java Library

The Java version of evio (internally org.jlab.coda.jevio) can also be used for reading & writing .evio format files. A "fat" jar file with all dependencies is included in the java/jars folder, the only thing strictly required to run and execute et in Java.

Java 17 is the default version used, however the Java evio library should be compatible with all java versions 8 and higher (note this has not been rigorously tested). If one wants to create a new jar file for any reason (e.g. to modify Java versions), do:

git clone https://github.com/JeffersonLab/evio/
cd evio
./gradlew

Prerequisites

Gradle and an installation of Java on your system.

Running on "ifarm" at JLab will not work unless you install java yourself. Note that the default java versions on the farm will be too old to work. See downloads from OpenJDK or Oracle.

Further Information

The EVIO package was created by the Data Acquisition (DAQ) group and is maintained by the Experimental Physics Software and Computing Infrastructure (EPSCI) group at the Thomas Jefferson National Accelerator Facility (JLab). It has been developed by many authors over the years.

Other Links:

The EVIO-6 data format is closely related to the HIPO data format, following the same data framework to the record level. Beyond this level, they differ in the way data is stored as well as the software used to read and write to these respective .evio and .hipo formats. More information on the HIPO data format can be found at https://github.com/gavalian/hipo, or from the CLAS12 Software Project Coordinator.

Contact: Jon Zarling (jzarling@jlab.org)

Copyright

For any issues regarding use and copyright, read the license file.

About

Event Input/Output

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 11