22 int rep = (n > 1) ? n-1 : 0;
31 int rep = (n > 1) ? n-1 : 0;
40 int rep = (n > 1) ? n-1 : 0;
64 "<HDDM class=\"t\" version=\"1.0\">\n"
66 " <slab y=\"float\" repeat=\"*\">\n"
67 " <side end=\"int\" repeat=\"*\">\n"
68 " <hit t=\"float\" dE=\"float\" repeat=\"*\" />\n"
87 for (r = 0; r < rep; r++ )
107 for (r = 0; r < rep; r++ )
126 for (r = 0; r < rep; r++ )
174 int* buff = malloc(1000000);
179 ret = fread(buff,
sizeof(
int),1,fp->
fd);
184 ret -= fread(&
sp[1],
sizeof(
int),ret,fp->
fd);
194 void* ptrStack[10000];
195 void* (*unpacker)() = fp->
unpacker[0];
196 ptrStack[0] = (*unpacker)();
201 int* ptr = ptrStack[level - 1];
204 void** pp = (
void**) &ptr[ptrOffset];
206 ptrStack[level] = (*unpacker)();
207 *pp = ptrStack[level];
222 int* spp = (
int*) pp;
228 for (n = 0; n < *dpm; n++ )
242 int* spp = (
int*) pp;
248 for (n = 0; n < *dpm; n++ )
262 int* spp = (
int*) pp;
268 for (n = 0; n < *dpm; n++ )
282 int* spp = (
int*) pp;
297 int* spp = (
int*) pp;
312 int* buff = malloc(1000000);
322 ret = fwrite(buff,
sizeof(
int),*buff+1,fp->
fd);
334 level = strlen(strtok(line,
"<"));
335 strncpy(tag,strtok(NULL,
" >"),500);
345 if (strstr(strtok(line,
"\n"),
"/>") == 0)
353 return strstr(d,endTag);
362 while ((clevel =
getTag(c,ctag)) == dlevel)
365 if ((clevel == dlevel) && (strcmp(ctag,dtag) == 0))
367 int len =
index(c+1,
'\n') -
c;
368 if (strncmp(c,d,len) != 0)
373 if (strcmp(dtag,
"hit") == 0)
379 else if (strcmp(dtag,
"side") == 0)
385 else if (strcmp(dtag,
"slab") == 0)
391 else if (strcmp(dtag,
"forwardTOF") == 0)
397 else if (strcmp(dtag,
"HDDM") == 0)
409 while (
getTag(d,dtag) > dlevel)
438 fp->
fd = fopen(filename,
"r");
445 fp->
hddm = malloc(1000000);
448 while (strcmp(p,
"</HDDM>\n") != 0)
450 int len = strlen(fp->
hddm);
454 fgets(p,10000,fp->
fd);
464 fprintf(stderr,
"HDDM Error: ");
465 fprintf(stderr,
"input file data model ");
466 fprintf(stderr,
"does not match ");
467 fprintf(stderr,
"compiled code.\n");
468 fprintf(stderr,
"Please recompile.\n");
471 fp->
filename = malloc(strlen(filename) + 1);
480 fp->
fd = fopen(filename,
"w");
488 fp->
hddm = malloc(len + 1);
490 if (fwrite(fp->
hddm,1,len,fp->
fd) != len)
492 fprintf(stderr,
"HDDM Error: ");
493 fprintf(stderr,
"error writing to ");
494 fprintf(stderr,
"output file %s",filename);
497 fp->
filename = malloc(strlen(filename) + 1);
static int pack_t_Hits(t_Hits_t *pp, t_iostream *fp)
t_Sides_t * make_t_Sides(int n)
#define HDDM_STREAM_OUTPUT
t_iostream * open_t_HDDM(char *filename)
static int pack_t_ForwardTOF(t_ForwardTOF_t *pp, t_iostream *fp)
sprintf(text,"Post KinFit Cut")
t_iostream * init_t_HDDM(char *filename)
static char index(char c)
t_Slabs_t * make_t_Slabs(int n)
static int pack_t_Sides(t_Sides_t *pp, t_iostream *fp)
int flush_t_HDDM(t_HDDM_t *p, t_iostream *fp)
static int pack_t_HDDM(t_HDDM_t *pp, t_iostream *fp)
void *(* unpacker[10000])()
static int pack_t_Slabs(t_Slabs_t *pp, t_iostream *fp)
void close_t_HDDM(t_iostream *fp)
t_HDDM_t * read_t_HDDM(t_iostream *fp)
t_ForwardTOF_t * make_t_ForwardTOF()
static t_Sides_t * unpack_t_Sides()
static char * getEndTag(char *d, char *tag)
static int matches(char *d, char *c, t_iostream *fp)
#define HDDM_STREAM_INPUT
t_Hits_t * make_t_Hits(int n)
static t_ForwardTOF_t * unpack_t_ForwardTOF()
static t_Slabs_t * unpack_t_Slabs()
static t_Hits_t * unpack_t_Hits()
char HDDM_t_DocumentString[]
static t_HDDM_t * unpack_t_HDDM()
static int getTag(char *d, char *tag)