[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Status of evio and proposals



To all interested in CODA evio format,

Below I report on the current status of evio Version 1, and make a proposal for
Version 2.  The new version is motivated by the needs of Hall D.

Status
------

I'm about to check-in Steve Wood's version of evio.c, and a new version of
swap_byte.c (I fixed a number of bugs affecting swapping of doubles, banks in
segments, etc.).  Steve's evio.c handles 64-bit machines, i/o from/to pipes,
auto-gunzipping of input files, etc. (contact Steve for more details).

Proposal
--------

I propose to upgrade evio in a way completely backwards-compatible with version
1 with the exception that VAX float and double are no longer supported (I don't
think any data exists containng these data types).  I further want to add a new
fragment type and a number of new data types.


Tagsegment
----------

The new fragment type I call a "tagsegment".  It is the same the existing
segment except that 12-bits are assigned to the tag (instead of 8) and only 4
bits to the data-type (instead of 8).  Thus a tagsegment supports 4096 tags, but
only 16 data types.  Tagsegments can contain all data types except packets.

Segments and tagsegments have a 4-byte header (compared to 8 bytes for
banks)...if Hall D has 100 front end crates we would save 400 bytes per event
using segments instead of banks.  But segments only allow for 256 tags, not
enough for Hall D.  With tagsegments Hall D would save the 400 bytes but could
use 4096 tags.


Data types
----------

New data types are needed to be able to fully exploit tagsegments, and to fill
in some missing types.  VAX format will be eliminated.  Some existing types will
be duplicated to allow for full functionality using the 4-bit tagsegment types.

Missing are:  unsigned 4-byte int, and signed and unsigned 8-byte int.  

Data types in version 2 (in hex):

0   unknown (i.e. don't swap)
1   signed 4-byte int
2   4-byte float
3   char string
4   signed 2-byte int
5   unsigned 2-byte int
6   signed byte
7   unsigned byte
8   8-byte double
9   signed 8-byte int
A   unsigned 8-byte int
B   unsigned 4-byte int
C   tagsegment
D   segment
E   bank
F   repeating structure

10  bank
20  segment
30-37  packet
40  tagsegment (for symmetry?)


Only minor changes are needed to implement the above.  


Comments, criticisms, suggestions, etc. are welcome...


				Sincerely,
					Elliott
 

================================================================================

   Help feed the hungry, one click at a time:  http://www.thehungersite.com

    "Science plays a major role in satisfying the minor needs of mankind"

================================================================================
begin:vcard 
n:Wolin;Elliott 
tel;fax:757-269-5800
tel;home:757-229-2724
tel;work:757-269-7365
x-mozilla-html:FALSE
org:Jefferson Lab;Physics Department
version:2.1
email;internet:wolin@jlab.org
title:Physicist
note:A218 CEBAF Center
adr;quoted-printable:;;12000 Jefferson Ave MS12H=0D=0A;Newport News;VA;23606;US
x-mozilla-cpt:;21408
fn:Elliott Wolin
end:vcard