00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <stdio.h>
00028 #include <unistd.h>
00029 #include <errno.h>
00030 #include <sys/types.h>
00031 #include <sys/stat.h>
00032 #include <fcntl.h>
00033 #include <assert.h>
00034
00035
00036 #include "StDaqLib/GENERIC/EventReader.hh"
00037 #include "StDaqLib/SVT/SVTV1P0.hh"
00038 #include "StDaqLib/SVT/SVTV1P0_Reader.hh"
00039
00040
00041
00042 int main(int argc, char *argv[])
00043 {
00044 int fd;
00045
00046
00047 u_char *(padlist[TPC_PADROWS]);
00048 long offset = 0L;
00049 int histogram[50] = {50*0};
00050
00051 if(argc<2)
00052 {
00053 printf("Usage: %s file.daq\n",argv[0]);
00054 exit(2);
00055 }
00056
00057 fd = open(argv[1],O_RDONLY);
00058
00059 if (fd == -1)
00060 {
00061 printf("Bad filename %s",argv[1]);
00062 exit(2);
00063 }
00064
00065 int eventNo;
00066 for (eventNo=0; eventNo < 1; eventNo++ )
00067 {
00068 EventReader *er = getEventReader(fd,offset,"log",0);
00069 if(!er)
00070 {
00071 printf("No event reader...\n");
00072 close(fd);
00073 exit(0);
00074
00075 }
00076
00077 er->printEventInfo();
00078
00079
00080
00081 if(offset != -1)
00082 offset = er->NextEventOffset();
00083 else
00084 offset = -1;
00085
00086
00087 SVTV1P0_Reader *dr = (SVTV1P0_Reader *)getDetectorReader(er, "SVT");
00088 if(!dr) {
00089 printf("No SVT reader\n");
00090 close(fd);
00091 assert(0);
00092 }
00093
00094
00095
00096
00097 for(int ii=1;ii<=3;ii++) {
00098 int lads[3] = { 8,12,16 };
00099
00100 for(int jj=1;jj<=lads[ii-1];jj++) {
00101 int wafs[3] = { 4,6,7 };
00102
00103 for(int kk=1;kk<=wafs[ii-1];kk++) {
00104
00105
00106
00107
00108 SVTV1P0_ZS_SR *zsr =
00109 (SVTV1P0_ZS_SR *)dr->getZeroSuppressedReader(ii,jj,kk);
00110
00111
00112
00113
00114 if (!zsr) {
00115
00116 continue;
00117 }
00118
00119
00120
00121 int nSeq, anode, hybrid;
00122 int nAnodes, nSpt;
00123 u_char *AnodeList;
00124 Sequence *Seq;
00125 SpacePt *Spt;
00126
00127 for(int ll=1;ll<=2;ll++) {
00128
00129
00130 nAnodes = zsr->getPadList(ll, &AnodeList);
00131
00132 fflush(stdout);
00133
00134 for(int an = 0;an<nAnodes;an++) {
00135
00136
00137 fflush(stdout);
00138 int ret = zsr->getSequences(ll, AnodeList[an], &nSeq, &Seq);
00139
00140 fflush(stdout);
00141
00142 for(int seq = 0;seq<nSeq;seq++) {
00143
00144 for(int iii=0;iii<Seq[seq].Length;iii++) {
00145 printf("%d %d %d %d %d %d %d\n",
00146 ii,jj,kk,ll,AnodeList[an],
00147 iii + Seq[seq].startTimeBin,
00148 Seq[seq].FirstAdc[iii]);
00149 }
00150 }
00151 }
00152 }
00153
00154 delete zsr;
00155
00156 }
00157 }
00158 }
00159 delete dr;
00160
00161 delete er;
00162 }
00163 close(fd);
00164 }