File indexing completed on 2025-08-03 08:20:42
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include <time.h>
0010
0011 #include "testEventiterator.h"
0012 #include <stdlib.h>
0013
0014 #include "oncsEvent.h"
0015
0016 testEventiterator::~testEventiterator()
0017 {
0018 delete R;
0019 }
0020
0021 testEventiterator::testEventiterator()
0022 {
0023 R = new simpleRandom(876565);
0024 current_event = 0;
0025
0026 typedef struct evt_data
0027 {
0028 int evt_length;
0029 int evt_type;
0030 int evt_sequence;
0031 int run_number;
0032 int date;
0033 int time;
0034 int reserved[2];
0035 int data[];
0036 } *e_ptr;
0037
0038 typedef struct subevt_data
0039 {
0040 int sub_length;
0041 short sub_id;
0042 short sub_type;
0043 short sub_decoding;
0044 short sub_padding;
0045 int reserved;
0046 int data[];
0047 } *s_ptr;
0048
0049
0050
0051 current_event = 0;
0052
0053 e_ptr e = (e_ptr) e_data;
0054
0055 e->evt_length = 8;
0056 e->evt_type = 1;
0057 e->evt_sequence = 1;
0058 e->run_number = 1331;
0059 e->date = 0;
0060 e->time = time(0);
0061 e->reserved[0] = 0;
0062 e->reserved[1] = 0;
0063
0064 e_sequence = & e->evt_sequence;
0065 e_time = &e->time;
0066
0067
0068 s_ptr s1001 = (s_ptr) e->data;
0069
0070 s1001->sub_length = 4;
0071 s1001->sub_id = 1001;
0072 s1001->sub_type = 4;
0073 s1001->sub_decoding = 6;
0074 s1001->sub_padding = 0;
0075 s1001->reserved = 0;
0076
0077
0078 for (int i = 0; i < 20; i++)
0079 {
0080 s1001->data[i] = i;
0081 s1001->sub_length++;
0082 }
0083
0084 e->evt_length += s1001->sub_length;
0085
0086
0087 s_ptr s1002 = (s_ptr) &s1001->data[20];
0088 s1002->sub_length = 4;
0089 s1002->sub_id = 1002;
0090 s1002->sub_type = 2;
0091 s1002->sub_decoding = 5;
0092 s1002->sub_padding = 0;
0093 s1002->reserved = 0;
0094
0095 short *x = (short *) &s1002->data;
0096
0097 for (int i = 0; i < 64; i++)
0098 {
0099 x[i] = i;
0100 }
0101
0102 s1002->sub_length+=32;
0103 e->evt_length += s1002->sub_length;
0104
0105
0106 s_ptr s1003 = (s_ptr) &s1002->data[32];
0107 s1003->sub_length = 8;
0108 s1003->sub_id = 1003;
0109 s1003->sub_type = 4;
0110 s1003->sub_decoding = 6;
0111 s1003->sub_padding = 0;
0112 s1003->reserved = 0;
0113
0114 e_1003values = &(s1003->data[0]);
0115
0116 s1003->data[0] = 0;
0117 s1003->data[1] = 0;
0118 s1003->data[2] = 0;
0119 s1003->data[3] = 0;
0120
0121 e->evt_length += s1003->sub_length;
0122
0123 }
0124
0125
0126 void
0127 testEventiterator::identify (OSTREAM &os) const
0128 {
0129 os << getIdTag() << std::endl;
0130
0131 };
0132
0133 const char *
0134 testEventiterator::getIdTag () const
0135 {
0136 return " -- testEventiterator (standard) ";
0137 };
0138
0139
0140
0141 Event *
0142 testEventiterator::getNextEvent()
0143 {
0144
0145 *e_sequence = ++current_event;
0146 *e_time = time(0);
0147 float scale = 10;
0148
0149 for ( int i = 0; i < 4; i++)
0150 {
0151 e_1003values[i] = R->gauss(0 , scale );
0152 scale *= 10.;
0153 }
0154
0155 Event *e = new oncsEvent(e_data);
0156 e->convert();
0157
0158 return e;
0159 }