#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "ctk.h" #define DEBUG 0 #define ZEROSUPPRESS 1 /* globals */ extern ANAPAR Pars; extern CLUSTER_INTPTS Clstr[MAXCLUSTERHITS]; extern int nClusters; extern float rad2deg; extern off_t infile; /*--------------------------------------------------------*/ int getTrackedEvent (TRACK_STRUCT * track) { /* declarations */ static int nread = 0; int i, siz; PAYLOAD *ptinp; GEBDATA *ptgd; int printPAYLOAD (PAYLOAD *); int j, checksum, *iptr; static int nchecksum = 0; char str[128]; int get_GEB_Type_str (int, char str[]); /*---------------*/ /* read raw data */ /*---------------*/ /* get number of elements */ siz = read (infile, (void *) &track->n, sizeof (int)); if (siz != sizeof (int)) { printf ("getTrackedEvent returns 1, infile=%p\n", infile); return (1); }; assert (track->n < MAXTRACK); // printf("---> track->n=%i\n", track->n); // fflush(stdout); /* now read the elements */ ptgd = track->gd; ptinp = track->payload; for (i = 0; i < track->n; i++) { siz = read (infile, (char *) ptgd, sizeof (GEBDATA)); if (siz != sizeof (GEBDATA)) { printf ("getTrackedEvent returns 2\n"); return (2); }; // printf("read type %i data, size=%i\n", ptgd->type, ptgd->length); siz = read (infile, (char *) ptinp, ptgd->length); if (siz != ptgd->length) { printf ("getTrackedEvent returns 3\n"); return (3); }; #if(0) /* check long GEB_TYPE_S800_RAW payloads */ if (ptgd->type == GEB_TYPE_S800_RAW || 1) // if (ptgd->length>460) if (nchecksum < 10) { nchecksum++; checksum = 0; iptr = (int *) track->inp; for (j = 0; j < (ptgd->length / sizeof (int)); j++) { checksum += *iptr; printf ("%4i> %15i\n", j, *iptr); iptr++; }; get_GEB_Type_str (ptgd->type, str); printf ("^^%s:: length= %6i, TS=%20lli, checksum=%10i\n", str, ptgd->length, ptgd->timestamp, checksum); }; #endif ptgd++; ptinp++; }; /* count the events we have read */ Pars.evno++; //printf("read event # %i in\n", nread); //nread++; /* done */ //if(1)exit(0); return (0); }