EVIO is the event format that was developed as the native format for raw data generated by the CODA data acquisition toolkit. The goals of EVIO are:

EVIO is a hierarchical format where the basic building block is a structure known as a bank. Each bank has two parts, a header and a payload. The header contains meta information such as the length of the bank, the type of data in the payload and a numerical tag that is used in conjunction with a dictionary to provide a description of the payload. The payload of any particular bank is homogenous, that is a bank can contain integers, or real numbers or other banks but not a mixture. The ability to have a bank containing banks gives EVIO the flexibility to construct complex data structures. 

Version 1 of the CODA EVIO package, written in C, was in use at Jefferson Lab for over a decade.  It saw extensive use in Halls A and C, where all of the raw data for the 6 GeV program was written to disk in EVIO format. EVIO saw limited use in the Hall B with CLAS choosing to store their raw data in BOS/FPACK format. PRIMEX and the GlueX BCAL test also stored their raw data in EVIO format and EVIO has been used in experiments and test stands off the JLab site.


Versions 2 and 3 extended the EVIO API into C++ and Java. They could then take advantage of OO techniques. Mapping banks onto objects allows, for example, graphical visualization of the event structure and serialization into XML.


Version 4 has been developed as the raw data format for all of the experiments in the 12 GeV era to be used by all of the halls. The package is supported in C, C++ and Java. Extensions to the API improve support the use of EVIO to store the output from offline analysis and reconstruction code. The improved API also allows more flexibility in using EVIO to decode events offline.


Documentation and code.


The EVIO documentation and code are hosted on the CODA website



EVIO 4.3

Documentation in PDF format : Evio 4.3 Documentation


Download the code : Evio 4.3 Download