#include #include #include "io.h" #include "hbooklib.h" #define PAWC_SIZE 500000 /*----------------------------------------- HBook end ------------- */ int hbookend() { int icycle=0; Hrout(0,&icycle," "); Hrend("EXP"); return 0; } /*----------------------------------------- Histo init ------------- */ int histoinit(){ Hbook1(1,"Delay1 ", 72, -0.5, 71.5, 0.); Hbook1(2,"Delay1 ", 72, -0.5, 71.5, 0.); Hbook1(3,"Delay1 ", 72, -0.5, 71.5, 0.); Hbook1(4,"Delay1 ", 72, -0.5, 71.5, 0.); } int hbookinit(char *filename) { char *opt="NX"; int record_size=1024; int istat; char *ldir="EXP"; Hlimit(PAWC_SIZE); Hropen(1, ldir, filename, opt, &record_size, &istat); if (istat) { fprintf(stderr, "Error in opening file %s\n", filename); return -1; } return 0; } int histo_hapd(unsigned short*p){ int i,j; short buf[72]; for( i=0; i<18; i++ ) { for( j=0; j<4; j++ ) { buf[j*4+i] = (p[i]>>(4*j)) & 0xf; } } for( i=0; i<72; i++ ) printf("%d ",buf[i] & 0x1); printf("\n"); for( i=0; i<72; i++ ) printf("%d ",buf[i] & 0x2); printf("\n"); for( i=0; i<72; i++ ) printf("%d ",buf[i] & 0x4); printf("\n"); for( i=0; i<72; i++ ) printf("%d ",buf[i] & 0x8); printf("\n"); for( i=0; i<72; i++ ) { for( j=0; j<4; j++ ) if (buf[i] & (1<> 16)|((b & 0xff)<<16)|(b & 0xff00)); b=(((b & 0xff000000)>> 24)|((b & 0xff0000)>> 8)| ((b & 0xff)<<24) | ((b & 0xff00)<< 8)); return b; } short swap(short b){ b=(((b & 0xff00)>> 8)|((b & 0xff)<<8)); return b; } short swap8(short *b){ short tmp; tmp=b[0]; b[0]=b[1]; b[1]=tmp; return 0; } int test_endian(void){ short int a=0x1000; char *b; b=(char *)&a; if (*(b+1)==0x10) { return 1; } else { return 0 ;} } int main(int argc , char ** argv){ int little_endian=test_endian(); int type; int run; int event; int n,j,nb; int flag,off; char buf[1000000]; char filename[256]; short *p=(short *) buf; int *mode=(int *) &p[2]; char ss[128]; static int size=sizeof(short); int nread; FILE *fp=NULL; if (argc<3){ fprintf(stderr,"%s \n",argv[0]); exit(1); } fp=fopen(argv[1],"r"); if (fp==NULL){ printf("Cannot Open File %s\n",argv[0]); } sprintf(filename,"%s.hbook",argv[1]); hbookinit(filename); histoinit(); flag=atoi(argv[2]); printf("IsLittleEndian %d\n", little_endian); printf("size %d\n",size); nread=8; while (!feof(fp)){ fread(buf, size,nread,fp); if (flag && little_endian) for (j=0;j5){ printf("Unknown record %d\n",p[1]); exit(1); } n=p[0]-nread; //printf("Bytes to read %d\n",n); if (n>0){ nb=fread(buf,size,n,fp); if (flag && little_endian) for (j=0;j