File indexing completed on 2025-08-02 08:21:01
0001 #include <daqONCSEvent.h>
0002
0003
0004 daqONCSEvent::daqONCSEvent (int * where, const int length
0005 , const int irun, const int etype, const int evtseq)
0006 {
0007 event_base = where;
0008 evthdr = ( evtdata_ptr ) where;
0009 evthdr->evt_type = etype;
0010 max_length = length;
0011 prepare_next (evtseq, irun);
0012 }
0013
0014
0015 int daqONCSEvent::prepare_next()
0016 {
0017 return prepare_next(-1,-1);
0018 }
0019
0020 int daqONCSEvent::prepare_next( const int evtseq, const int irun)
0021 {
0022
0023 evthdr->evt_length = EVTHEADERLENGTH;
0024
0025
0026 if ( evtseq < 0 )
0027 {
0028 evthdr->evt_sequence++;
0029 }
0030 else
0031 {
0032 evthdr->evt_sequence = evtseq;
0033 }
0034
0035
0036 if ( irun > 0 )
0037 {
0038 evthdr->run_number=irun;
0039 }
0040
0041 evthdr->date = 0;
0042 evthdr->time = time(0);
0043 evthdr->reserved[0] = 0;
0044 evthdr->reserved[1] = 0;
0045
0046
0047
0048 current = 0;
0049 left=max_length - EVTHEADERLENGTH ;
0050 return 0;
0051 }
0052
0053
0054 int daqONCSEvent::addSubevent(const int etype, daq_device *dev)
0055 {
0056 int len;
0057
0058 len = dev->put_data ( etype, &(evthdr->data[current]), left );
0059 if (left < 0) {
0060 return 0;
0061 }
0062 evthdr->evt_length += len;
0063 current += len;
0064 left -= len;
0065 return len;
0066 }
0067
0068
0069 int daqONCSEvent::formatHeader(int * where
0070 , const int id
0071 , const int hf
0072 , const int type)
0073 {
0074 subevtdata_ptr sevt = (subevtdata_ptr) where;
0075 sevt->sub_length = SEVTHEADERLENGTH;
0076
0077 sevt->sub_id = id;
0078 sevt->sub_type=type;
0079 sevt->sub_decoding = hf;
0080 sevt->reserved[0] = 0;
0081 sevt->reserved[1] = 0;
0082 return 4;
0083 }
0084