Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:20:53

0001 //
0002 // testEventIterator   mlp 9/11/96
0003 //
0004 // this iterator delivers test-type Event objects which can
0005 // be used to debug the analysis software which uses the events
0006 // delivered. The events contain 1 frame and one packet
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;   // we have the length
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 }