00001
00002
00003
00004
00005
00006
00007 #include <stdio.h>
00008 #include <sys/types.h>
00009
00010 #include <rtsLog.h>
00011 #include <DAQ_READER/daqReader.h>
00012 #include <DAQ_READER/daq_dta.h>
00013 #include <DAQ_TPX/daq_tpx.h>
00014
00015
00016
00017 int main(int argc, char *argv[])
00018 {
00019 rtsLogOutput(RTS_LOG_STDERR) ;
00020
00021
00022 daqReader *dr = new daqReader(argv[1]) ;
00023
00024
00025
00026 daq_tpx *tpx = new daq_tpx(dr) ;
00027 tpx->InitRun(123) ;
00028
00029
00030 while(dr->get(0,0)) {
00031
00032
00033 int got_adc_data = 0 ;
00034 daq_dta *dd, *sim_dta ;
00035
00036 #define DUMP_CLD_IN_FILE
00037 #ifdef DUMP_CLD_IN_FILE
00038
00039 dd = dr->det("tpx")->get("cld") ;
00040 while(dd && dd->iterate()) {
00041 for(u_int i=0;i<dd->ncontent;i++) {
00042
00043 printf("in file: row %2d: pad %f [%d:%d], tb %f [%d:%d], charge %d, flags 0x%X\n",dd->row,
00044 dd->cld[i].pad,
00045 dd->cld[i].p1,
00046 dd->cld[i].p2,
00047 dd->cld[i].tb,
00048 dd->cld[i].t1,
00049 dd->cld[i].t2,
00050 dd->cld[i].charge,
00051 dd->cld[i].flags) ;
00052
00053 }
00054
00055
00056
00057 }
00058
00059 #endif
00060
00061 dd = dr->det("tpx")->get("adc") ;
00062 if(dd == 0) {
00063 LOG(WARN,"No adc data in this event...") ;
00064 continue ;
00065 }
00066
00067
00068 sim_dta = dr->det("tpx")->put("adc_sim") ;
00069
00070
00071
00072 while(dd->iterate()) {
00073 got_adc_data = 1 ;
00074 daq_sim_adc_tb *sim_d = (daq_sim_adc_tb *) sim_dta->request(512) ;
00075
00076
00077 for(u_int i=0;i<dd->ncontent;i++) {
00078 sim_d[i].adc = dd->adc[i].adc ;
00079 sim_d[i].tb = dd->adc[i].tb ;
00080 sim_d[i].track_id = 0xFFFF ;
00081 }
00082
00083
00084 sim_dta->finalize(dd->ncontent,dd->sec,dd->row,dd->pad) ;
00085
00086 }
00087
00088 if(!got_adc_data) {
00089 LOG(WARN,"No ADC data in this event...") ;
00090 continue ;
00091 }
00092 LOG(NOTE,"Doing adc data...") ;
00093
00094
00095
00096
00097 dd = dr->det("tpx")->get("cld_sim") ;
00098 if(dd == 0) continue ;
00099
00100
00101 while(dd->iterate()) {
00102
00103
00104 for(u_int i=0;i<dd->ncontent;i++) {
00105 #if 0
00106 if(dd->sim_cld[i].cld.flags != 0) continue ;
00107 if((dd->sim_cld[i].cld.p2 - dd->sim_cld[i].cld.p1) != 2) continue ;
00108
00109 u_short tid = dd->sim_cld[i].track_id ;
00110
00111 daq_dta *dta = dr->det("tpx")->get("adc_sim") ;
00112 while(dta && dta->iterate()) {
00113 daq_sim_adc_tb *sim_d = (daq_sim_adc_tb *) dta->Void ;
00114
00115 for(int i=0;i<dta->ncontent;i++) {
00116 if(sim_d[i].track_id == tid) {
00117 printf("%5d %d %d %d %d\n",tid,dta->row,dta->pad,sim_d[i].tb,sim_d[i].adc) ;
00118 }
00119 }
00120 }
00121 #endif
00122
00123 #if 1
00124
00125 printf("rerun: row %2d: pad %f [%d:%d], tb %f [%d:%d], charge %d, flags 0x%X: track %d, Q %d\n",dd->row,
00126 dd->sim_cld[i].cld.pad,
00127 dd->sim_cld[i].cld.p1,
00128 dd->sim_cld[i].cld.p2,
00129 dd->sim_cld[i].cld.tb,
00130 dd->sim_cld[i].cld.t1,
00131 dd->sim_cld[i].cld.t2,
00132 dd->sim_cld[i].cld.charge,
00133 dd->sim_cld[i].cld.flags,
00134 dd->sim_cld[i].track_id,
00135 dd->sim_cld[i].quality) ;
00136 #endif
00137 }
00138 }
00139
00140
00141
00142 }
00143
00144 return 0 ;
00145 }