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.
Documentation on GitHub:
Software Library Documentation:
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$CODAlocation 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.
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.).
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
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.
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)
For any issues regarding use and copyright, read the license file.