int read_events() { int ierr, i, j, lbl; int istr = 0; int nevt = 50; char filein[80]; char txtfile[80]; FILE *output; strcpy(filein,"testCInOut.io\0"); strcpy(txtfile,"testCInOutRead.txt\0"); output = fopen(txtfile,"w"); ierr = StdHepXdrReadOpen(filein, nevt, istr); for (i = 0; i < nevt; i++) { ierr = StdHepXdrRead(&lbl,istr); if (ierr == 0) { fprintf(output," at event %d with %d particles\n", hepevt_.nevhep, hepevt_.nhep); j = 17 + i; fprintf(output," momentum of particle %d is %.3f %.3f %.3f %.3f %.3f\n", j,hepevt_.phep[j][0],hepevt_.phep[j][1], hepevt_.phep[j][2],hepevt_.phep[j][3],hepevt_.phep[j][4]); } else { printf(" unexpected end of file after %d events\n",i); exit(0); } } printf(" %d events read\n",i); fprintf(output," %d events\n",i); StdHepXdrEnd(istr); return i; }
int main(int argc,char **argv) { char *argptr; int i,ntries=0,ret,gotANevent,written=0; int ilbl=1,istream=0,nparts=0;/*I guessed at istream */ int kludge_beam =-1; char *evtfile ="default.evt"; char outputfile[40]; FILE *outputfp=stdout; mc_evt_t mc_evt; if (argc == 1){ PrintUsage(argv[0]); exit (0); } else { /* good start */ for (i=1; i<argc; i++) { argptr = argv[i]; if ((*argptr == '-') && (strlen(argptr) > 1)) { argptr++; switch (*argptr) { case 'd': Debug =2; break; case 'n': nparts=atoi(++argptr); break; case 'g': kludge_beam=atoi(++argptr); fprintf(stderr,"Writing gamp format kludge beam of %d\n",kludge_beam); break; case 'N': ntries=atoi(++argptr); break; case 'o': sprintf(outputfile,"%s",++argptr); if(!(outputfp = fopen(outputfile,"w"))){ fprintf(stderr,"Fail to open output file!\n"); exit(-1); } break; case 'i': evtfile= ++argptr; break; case 'h': PrintUsage(argv[0]); exit(0); break; default: fprintf(stderr,"Unrecognized argument -%s\n\n",argptr); PrintUsage(argv[0]); exit(-1); break; } } } /* main code */ /* * Open and init a stdhep file. */ if(ret=StdHepXdrReadInit(evtfile,ntries, istream)){ /* some error must have occured */ fprintf(stderr,"err:StdHepXdrReadInit ret=%d\n",ret); exit(-1); } /* * Fill the mc_part_t structure from the HEPEVENT structure. */ for(i=0;i<ntries;i++){ if(ret=StdHepXdrRead(&ilbl,istream)){/* some error must have occured */ fprintf(stderr,"err:StdHepXdrRead ret=%d\n",ret); exit(-1); } fill_mc_parts(&mc_evt); if(kludge_beam>0) write_gamp_parts(outputfp,&mc_evt,kludge_beam); else write_mc_parts(outputfp,&mc_evt); if(!(++written %100)) fprintf(stderr,"McFast events Read: %d\r",written); } fprintf(stderr,"\nTotal McFast events Read: %d\n",written); /* * Close the StdHep file and exit. */ StdHepXdrEnd(istream); exit(0); } /* end of else /* good start */ } /* end of main */