const char *myName;
int debug;
FILE *outF;
-static enum { unknown, ldc, gdc } workingAs;
-static enum { collider, fixedTarget } workingMode;
+typedef enum { unknown, ldc, gdc } workingAsType;
+typedef enum { collider, fixedTarget } workingModeType;
+workingAsType workingAs;
+workingModeType workingMode;
struct ldcDescriptorStruct {
eventLdcIdType id;
struct ldcDescriptorStruct *next;
}
if ( i < p->size ) {
int j = 0;
-
+
printf( "\n " );
while ( i != p->size ) {
printf( "%02x ", *((char *)p->data + p->size - j - 1) & 0xff );
void getLine( char *line, const int maxSize ) {
int read;
int c;
-
+
for ( read = 0; !feof( stdin ) && !ferror( stdin ) && read != maxSize; read++ ) {
if ( (line[read] = getchar()) == '\n' ) break;
}
} else {
struct ldcEventDescriptorStruct *q =
(struct ldcEventDescriptorStruct *)eventsTail;
-
+
q->next = p;
eventsTail = p;
}
} else {
struct gdcEventDescriptorStruct *q =
(struct gdcEventDescriptorStruct *)eventsTail;
-
+
q->next = p;
eventsTail = p;
}
void loadBuffer( struct payloadDescriptorStruct * const payload ) {
FILE *f;
int bytesRead;
-
+
if ( (f = fopen( payload->fileName, "r" )) == NULL ) {
fprintf( stderr,
"%s: line:%d payload file \"%s\" not found or not readable, errno:%d. ",
}
if ( payload == NULL ) {
FILE *f;
-
+
if ( (payload = (struct payloadDescriptorStruct *)malloc( sizeof( *payload ) ))
== NULL ) {
fprintf( stderr,
payload->fileSize = payload->size;
while ( (payload->size & 3) != 0 ) payload->size++;
fclose( f );
-
+
if ( bufferData ) {
loadBuffer( payload );
} else {
}
DBG_VERBOSE {
int b, n;
-
+
printf( "%d) Payload \"%s\" loaded at %p\n",
lineNo,
fileName,
printf( " CDH: blockLenght:%d=0x%08x ",
cdh->cdhBlockLength, cdh->cdhBlockLength );
if ( cdh->cdhBlockLength < sizeof( *cdh ) ) {
-#ifdef __APPLE__
printf( "TOO SMALL (minimum:%ld=0x%08lx)\n",
- sizeof( *cdh ), sizeof( *cdh ) );
-#else
- printf( "TOO SMALL (minimum:%d=0x%08x)\n",
- sizeof( *cdh ), sizeof( *cdh ) );
-#endif
+ (unsigned long)sizeof( *cdh ),
+ (unsigned long)sizeof( *cdh ) );
} else {
printf( "version:%d=0x%x ", cdh->cdhVersion, cdh->cdhVersion );
if ( cdh->cdhVersion != CDH_VERSION ) {
void parseGdc( char * const line ) {
char *p;
char *keyword;
-
+
p = line;
while ( (keyword = strtok_r( p, " \t", &p )) != NULL ) {
if ( strcasecmp( "id", keyword ) == 0 ) {
void parseLdc( char * const line ) {
char *p;
char *keyword;
-
+
p = line;
while ( (keyword = strtok_r( p, " \t", &p )) != NULL ) {
if ( strcasecmp( "id", keyword ) == 0 ) {
"UNKNOWN" );
if ( workingAs == gdc ) {
struct ldcDescriptorStruct *ldc;
-
+
printf( "LDCs (%d):", numOfLdcs );
for ( ldc = ldcsHead; ldc != NULL; ldc = ldc->next ) {
printf( " %d", ldc->id );
if ( workingAs == gdc ) {
struct ldcDescriptorStruct *ldc;
-
+
assert( ldcsHead != NULL );
assert( ldcsTail != NULL );
assert( ldcsTail->next == NULL );
void loadTimestamp( struct eventHeaderStruct * const ev ) {
time_t t;
-
+
if ( time( &t ) == (time_t)-1 ) {
fprintf( stderr,
"%s: failed to get system time errno:%d (%s)\n",
const long32 * const v = (long32 *)ev;
printf( "Writing %d bytes @ %p (%d)\n", size, ev, *v );
}
-
+
if ( (done = fwrite( ev, size, 1, outF )) != 1 ) {
fprintf( stderr,
"%s: failed to write event size:%d bytes, errno:%d (%s)\n",
struct eventHeaderStruct sev;
assert( workingAs == ldc || workingAs == gdc );
-
+
if ( !createSorEor ) return;
ev = (struct eventHeaderStruct *)event;
initEvent( ev );
currLdc = currGdc->head;
}
ev->eventLdcId = currLdc->id;
-
+
if ( workingAs == ldc ) {
loadTimestamp( ev );
outputEvent( ev, ev->eventSize );
struct ldcDescriptorStruct *ldc;
loadTimestamp( ev );
-
+
sev.eventSize = sizeof( sev ) + numOfLdcs * ev->eventSize;
sev.eventType = sor ? START_OF_RUN : END_OF_RUN ;
COPY_EVENT_ID( ev->eventId, sev.eventId );
outputEvent( ev, ev->eventSize );
}
}
-
+
ADD_EVENT_ID( ev->eventId, oneEventDelta );
ev->eventSize = ev->eventSize / 2;
ev->eventType = sor ? START_OF_RUN_FILES : END_OF_RUN_FILES;
struct ldcDescriptorStruct *ldc;
loadTimestamp( ev );
-
+
sev.eventSize = ev->eventSize;
sev.eventType = sor ? START_OF_RUN_FILES : END_OF_RUN_FILES;
COPY_EVENT_ID( ev->eventId, sev.eventId );
COPY_EVENT_ID( ev->eventId, sev.eventId );
COPY_SYSTEM_ATTRIBUTES( ev->eventTypeAttribute, sev.eventTypeAttribute );
SET_SYSTEM_ATTRIBUTE( sev.eventTypeAttribute, ATTR_SUPER_EVENT );
-
+
loadTimestamp( &sev );
ev->eventGdcId = currGdcId;
COPY_SYSTEM_ATTRIBUTES( ev->eventTypeAttribute, sev.eventTypeAttribute );
SET_SYSTEM_ATTRIBUTE( sev.eventTypeAttribute, ATTR_SUPER_EVENT );
loadTimestamp( &sev );
-
+
outputEvent( &sev, sizeof( sev ) );
for ( ldc = ldcsHead; ldc != NULL; ldc = ldc->next ) {
/* Step 1: load all buffers (if needed) and compose the GDC/LDC headers */
if ( workingAs == gdc ) {
struct ldcEventDescriptorStruct *ldc;
-
+
for( ldc = currGdc->head; ldc != NULL; ldc = ldc->next ) {
COPY_EVENT_ID( currEventId, ldc->header.eventId );
loadTimestamp( &ldc->header );
}
COPY_EVENT_ID( currEventId, currGdc->header.eventId );
loadTimestamp( &currGdc->header );
-
+
for( ldc = currGdc->head; ldc != NULL; ldc = ldc->next ) {
struct equipmentEventDescriptorStruct *eq;
int n;
/* Step 2: output the event */
if ( workingAs == gdc ) {
struct ldcEventDescriptorStruct *ldc;
-
+
outputEvent( &currGdc->header, sizeof( currGdc->header ) );
for( ldc = currGdc->head; ldc != NULL; ldc = ldc->next ) {
struct equipmentEventDescriptorStruct *eq;
-
+
outputEvent( &ldc->header, sizeof( ldc->header ) );
for ( eq = ldc->head; eq != NULL; eq = eq->next ) {
currGdc = (struct gdcEventDescriptorStruct *)eventsHead;
} else if ( workingAs == ldc ) {
struct equipmentEventDescriptorStruct *eq;
-
+
outputEvent( &currLdc->header, sizeof( currLdc->header ) );
-
+
for ( eq = currLdc->head; eq != NULL; eq = eq->next ) {
outputEvent( &eq->header, sizeof( eq->header ) );
outputEvent( eq->payload->data, eq->payload->size );
outFileName = arg;
} else if ( strcmp( "-#", argv[ arg ] ) == 0 ) {
int n;
-
+
if ( ++arg == argc ) exit( usage() );
if ( sscanf( argv[ arg ], "%d", &n ) != 1 ) exit( usage() );
if ( n < 0 ) exit( usage() );
static int softwareTriggerIndicator = FALSE;
int attr;
int trig;
-
+
if ( payloadDesc->size < CDH_SIZE ) {
fprintf( stderr,
"%s: payload too small got:%d CDH:%d\n",
gdc != NULL;
gdc = gdc->next ) {
struct ldcEventDescriptorStruct *ldc;
-
+
initEvent( &gdc->header );
gdc->header.eventSize = gdc->header.eventHeadSize;
gdc->header.eventType = PHYSICS_EVENT;
}
} else if ( workingAs == ldc ) {
struct ldcEventDescriptorStruct *ldc;
-
+
for ( ldc = (struct ldcEventDescriptorStruct *)eventsHead;
ldc != NULL;
ldc = ldc->next ) {