#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "ctk.h" #define DEBUGGETEVENT 0 extern off_t inData; /* inpugetEvent.ct file */ TRACKINGPAR Pars; /*----------------------------------------------------------------------------*/ int getEvent (TRACK_STRUCT * track) { /* temporarely get/read an event from a file rather */ /* than getting it from Carl's global event builder */ /* declarations */ static int nread = 0; int siz, i1, i, j, k1; int ii; PAYLOAD *ptinp; GEBDATA *ptgd; int checksum, *iptr; static int nchecksum = 0; char str[128]; #if (DEBUGGETEVENT) printf ("getEvent called\n"); fflush (stdout); #endif /* read the time coincidence event length; final format like this */ #if (DEBUGGETEVENT) printf ("inData=0x%x\n", inData); #endif siz = read (inData, (char *) &track->n, sizeof (int)); if (siz != sizeof (int)) { printf ("getEvent: return 1, siz=%i\n", siz); return (1); }; #if (DEBUGGETEVENT) printf ("track->n=%i\n", track->n); fflush (stdout); #endif ptgd = track->gd; ptinp = track->payload; #if (DEBUGGETEVENT) printf ("ptgd=%p,ptinp=%p\n", ptgd, ptinp); #endif for (i = 0; i < track->n; i++) { /* now read the data container info */ siz = read (inData, (char *) ptgd, sizeof (GEBDATA)); #if (DEBUGGETEVENT) printf ("siz=%i\n", siz); fflush (stdout); printf ("ptgd->length=%i\n", ptgd->length); printf ("ptgd->type=%i\n", ptgd->type); printf ("ptgd->timestamp=%lli\n", ptgd->timestamp); #endif /* sanity check */ if (ptgd->type < 1 || ptgd->type > MAX_GEB_TYPE) { printf ("\nptgd->length=%i\n", ptgd->length); printf ("ptgd->type=%i\n", ptgd->type); printf ("ptgd->timestamp=%lli\n", ptgd->timestamp); printf ("....geb type = %i is outside range of 1 to %i\n", ptgd->type, MAX_GEB_TYPE); printf ("....maybe you are not reading mode 2 or mode 1 data?, return code 3\n"); return (3); }; if (siz != sizeof (GEBDATA)) { printf ("cannot read GEBDATA, got siz=%i, not %i as expected\n", siz, sizeof (GEBDATA)); return (2); }; /* now read the real data */ memset ((void *) ptinp, 0, ptgd->length); siz = read (inData, (char *) ptinp, ptgd->length); #if (DEBUGGETEVENT) printf ("siz=%i\n", siz); fflush (stdout); #endif if (siz != ptgd->length) { printf ("getEvent: return 2\n"); return (2); } #if(0) /* very special trap */ if (ptgd->timestamp == 5411216) { printf ("input hit! ptgd->timestamp==5411216\n"); printf ("ptgd->length=%i\n", ptgd->length); printf ("ptgd->type=%i\n", ptgd->type); printf ("ptgd->timestamp=%lli\n", ptgd->timestamp); checksum = 0; iptr = (int *) ptinp; for (j = 0; j < (ptgd->length / sizeof (int)); j++) { checksum += *iptr; // printf ("%4i> %15i\n", j, *iptr); iptr++; }; printf ("^^^--- "); get_GEB_Type_str (ptgd->type, str); printf ("%s", str); printf ("TS=%20lli ", ptgd->timestamp); printf ("checksum=%15i, ", checksum); printf ("\n"); fflush (stdout); exit (0); }; #endif ptgd++; ptinp++; }; // printf ("read event # %i in\n", nread); // nread++; #if (DEBUGGETEVENT) printEvent (stdout, 0, track); #endif //trapbad ("getEvent",track); /* done */ return (0); }