The updating of the S800 DAQ software to use individual crate readout with USB modules (Weiner CC-USB and VM-USB) has resulted in the need for intermediary software to provide the interface between the USB format data streams and the standard NSCL format data stream expected by code such as SpecTcl. The event builder provides this interface. It receives parallel, timestamped subevent streams via tcp from the readout gui and orders them by timestamp into completed formatted events. This completed event stream is buffered into 8192 byte NSCL standard buffers, available on tcp port 9002 on the S800 spdaq machine, currently spdaq48.
In it's current form, the code is command line driven and automatically connects to the readout gui upon startup. Starting a run will begin the event building process, and statistics will be updated to the terminal. Typical output:
Starting run number 22, title: Co60 source with 6 microsecond ADC gate In Buffers: 1813438, Out Buffers: 3080040, Evts: 135631854, Partial Evts: 0, Skipped Evts: 0 Ending run number 22, title: Co60 source with 6 microsecond ADC gate
|In Buffers||Total number of buffers recieved from the parallel USB data streams|
|Out Buffers||Number of NSCL standard buffers outputted to tcp port 9002|
|Evts||Number of events processed|
|Partial Evts||Number of events for which one of the controllers did not report a subevent. This number should stay very close to zero.|
|Skipped Evts||Number of events that were too large to fit in a standard 8192 byte NSCL buffer. These events are discarded.|
If an event is received that does not have it's complete list of expected subevents, that event is outputted as normal, but with the data associated with the missing subevent outputted as zero, following the standard S800 data format. This is typically observed when a scalar readout interrupts an event stack readout resulting in missing CAMAC data. This type of interruption is now handled gracefully by the latest CC-USB firmware, but the capability to handle this case remains within the event builder code. For this reason this number should stay very close to zero over the course of a run, and if it doesn't, the user should follow the normal procedures to obtain S800 support to diagnose the problem.
The NSCL standard buffer size of 8192 bytes is typically sufficient to store a number of events. However, if the number of samples in the CRDCs is set high for a particular experiment, there can be a case when a burst of noise or similar will result in a large amount of data being read from the STAR electronics. It is possible that this event would be so large that 8192 bytes is not sufficient to contain all of the data, and in this case that event will be discarded and processing will continue with the next event.