AraEvent/AraGeomTool.cxx
00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 #include "AraGeomTool.h" 00011 #include <iostream> 00012 #include <fstream> 00013 #include <cstring> 00014 #include <zlib.h> 00015 00016 #include <cstdlib> 00017 00018 #include "TString.h" 00019 #include "TObjArray.h" 00020 #include "TObjString.h" 00021 #include <sqlite3.h> 00022 00023 AraGeomTool * AraGeomTool::fgInstance=0; 00024 Double_t AraGeomTool::nTopOfIce=1.48; 00025 00026 AraGeomTool::AraGeomTool() 00027 { 00028 //Default Constructor 00029 00030 //jpd read in the channel maps for the TestBed and Station1 00031 readChannelMapDb(0); 00032 readChannelMapDb(1); 00033 00034 } 00035 00036 AraGeomTool::~AraGeomTool() { 00037 //Default Destructor 00038 } 00039 00040 //______________________________________________________________________________ 00041 AraGeomTool* AraGeomTool::Instance() 00042 { 00043 //static function 00044 if(fgInstance) 00045 return fgInstance; 00046 00047 fgInstance = new AraGeomTool(); 00048 return fgInstance; 00049 } 00050 00051 //jpd 00052 int AraGeomTool::getRFChanByPolAndAnt(AraAntPol::AraAntPol_t antPol, int antNum, int stationId) 00053 { 00054 if(antNum<8 && antNum>=0) 00055 return fAntLookupTable[stationId][antPol][antNum]; 00056 return -1; 00057 00058 } 00059 00060 00061 //jpd this is most definitely a hack to make AraCanvasMaker work -> this will only 00062 //return the testbed lookup stuff not station1 00063 int AraGeomTool::getRFChanByPolAndAnt(AraAntPol::AraAntPol_t antPol, int antNum) 00064 { 00065 00066 if(antNum<8 && antNum>=0) 00067 return fAntLookupTable[0][antPol][antNum]; 00068 return -1; 00069 } 00070 00071 00072 00073 Double_t AraGeomTool::calcDeltaTInfinity(Double_t ant1[3], Double_t ant2[3],Double_t phiWave, Double_t thetaWave) 00074 { 00075 //Calc some cylindrical coordinates 00076 Double_t rho1=TMath::Sqrt(ant1[0]*ant1[0]+ant1[1]*ant1[1]); 00077 Double_t phi1=TMath::ATan2(ant1[1],ant1[0]); 00078 Double_t rho2=TMath::Sqrt(ant2[0]*ant2[0]+ant2[1]*ant2[1]); 00079 Double_t phi2=TMath::ATan2(ant2[1],ant2[0]); 00080 Double_t d1=TMath::Cos(thetaWave)*(ant1[2]*TMath::Tan(thetaWave)+rho1*TMath::Cos(phi1-phiWave)); 00081 Double_t d2=TMath::Cos(thetaWave)*(ant2[2]*TMath::Tan(thetaWave)+rho2*TMath::Cos(phi2-phiWave)); 00082 Double_t t1t2=(d2-d1)*nTopOfIce/TMath::C(); 00083 t1t2*=1e9; 00084 return t1t2; 00085 00086 } 00087 00088 //jd 00089 Double_t AraGeomTool::calcDeltaTInfinity(Int_t chan1, Int_t chan2,Double_t phiWave, Double_t thetaWave, int stationId) 00090 { 00091 if(chan1<0 || chan1>=TOTAL_ANTS_PER_ICRR) 00092 return 0; 00093 if(chan2<0 || chan2>=TOTAL_ANTS_PER_ICRR) 00094 return 0; 00095 return calcDeltaTInfinity(fStationInfo[stationId].fAntInfo[chan1].antLocation,fStationInfo[stationId].fAntInfo[chan2].antLocation,phiWave,thetaWave); 00096 } 00097 00098 Double_t AraGeomTool::calcDeltaTR(Double_t ant1[3], Double_t ant2[3], Double_t phiWave, Double_t thetaWave,Double_t R) 00099 { 00100 00101 Double_t xs=R*TMath::Cos(thetaWave)*TMath::Cos(phiWave); 00102 Double_t ys=R*TMath::Cos(thetaWave)*TMath::Sin(phiWave); 00103 Double_t zs=R*TMath::Sin(thetaWave); 00104 00105 00106 Double_t d1=TMath::Sqrt((xs-ant1[0])*(xs-ant1[0])+(ys-ant1[1])*(ys-ant1[1])+(zs-ant1[2])*(zs-ant1[2])); 00107 Double_t d2=TMath::Sqrt((xs-ant2[0])*(xs-ant2[0])+(ys-ant2[1])*(ys-ant2[1])+(zs-ant2[2])*(zs-ant2[2])); 00108 00109 Double_t t1t2=(d1-d2)*nTopOfIce/TMath::C(); 00110 t1t2*=1e9; 00111 return t1t2; 00112 00113 } 00114 00115 //jd 00116 Double_t AraGeomTool::calcDeltaTR(Int_t chan1, Int_t chan2, Double_t phiWave, Double_t thetaWave,Double_t R, int stationId) 00117 { 00118 if(chan1<0 || chan1>=TOTAL_ANTS_PER_ICRR) 00119 return 0; 00120 if(chan2<0 || chan2>=TOTAL_ANTS_PER_ICRR) 00121 return 0; 00122 return calcDeltaTR(fStationInfo[stationId].fAntInfo[chan1].antLocation,fStationInfo[stationId].fAntInfo[chan2].antLocation,phiWave,thetaWave,R); 00123 00124 } 00125 00126 //______________________________________________________________________________ 00127 00128 void AraGeomTool::readChannelMapDb(Int_t stationId){ 00129 sqlite3 *db; 00130 char *zErrMsg = 0; 00131 sqlite3_stmt *stmt; 00132 00133 char calibDir[FILENAME_MAX]; 00134 char fileName[FILENAME_MAX]; 00135 char *calibEnv=getenv("ARA_CALIB_DIR"); 00136 if(!calibEnv) { 00137 char *utilEnv=getenv("ARA_UTIL_INSTALL_DIR"); 00138 if(!utilEnv) 00139 sprintf(calibDir,"calib"); 00140 else 00141 sprintf(calibDir,"%s/share/araCalib",utilEnv); 00142 } 00143 else { 00144 strncpy(calibDir,calibEnv,FILENAME_MAX); 00145 } 00146 00147 //jpd this is where we would decide to have a different database 00148 sprintf(fileName, "%s/AntennaInfo.sqlite", calibDir); 00149 //if(stationId==1) sprintf(fileName, "%s/AntennaInfo.sqlite", calibDir); 00150 00151 //open the database 00152 00153 int rc = sqlite3_open(fileName, &db); 00154 if(rc!=SQLITE_OK){ 00155 printf("AraGeomTool::readChannelMapDb(Int_t stationId) - Can't open database: %s\n", sqlite3_errmsg(db)); 00156 sqlite3_close(db); 00157 return; 00158 } 00159 00160 const char *query; 00161 00162 //jpd this is where we decide which table to access in the database 00163 if(stationId==0) query = "select * from TestBed"; 00164 if(stationId==1) query = "select * from Station1"; 00165 00166 // printf("Database query set to '%s'\n", query); 00167 00168 //prepare an sql statment which will be used to obtain information from the data base 00169 rc=sqlite3_prepare(db, query, strlen(query)+1, &stmt, NULL); 00170 00171 if(rc!=SQLITE_OK){ 00172 printf("statement not prepared OK\n"); 00173 //should close the data base and exit the function 00174 sqlite3_close(db); 00175 return; 00176 } 00177 int row=0; 00178 while(1){ 00179 00180 //printf("row number %i\n", row); 00181 rc=sqlite3_step(stmt); 00182 if(rc==SQLITE_DONE) break; 00183 int nColumns=sqlite3_column_count(stmt); 00184 00185 00186 for(int column=0;column<nColumns;column++){ 00187 00188 const char* temp; 00189 00190 switch(column){ 00191 case 0: //primary key - stationId+labChip+channel 00192 00193 break; 00194 case 1: //antDir 00195 00196 temp = (const char*)sqlite3_column_text(stmt, column); 00197 00198 if(strcmp (temp,"kReceiver")==0){ 00199 fStationInfo[stationId].fAntInfo[row].antDir=AraAntDir::kReceiver; 00200 //printf("fStationInfo[%i].fAntInfo[%i].antDir %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antDir); 00201 } 00202 00203 break; 00204 case 2: //chanNum 00205 00206 fStationInfo[stationId].fAntInfo[row].chanNum=sqlite3_column_int(stmt, column); 00207 00208 00209 //printf("fStationInfo[%i].fAntInfo[%i].chanNum %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].chanNum); 00210 00211 break; 00212 case 3: //daqChanType 00213 00214 temp = (const char*)sqlite3_column_text(stmt, column); 00215 if(strcmp (temp,"kDisconeChan")==0) fStationInfo[stationId].fAntInfo[row].daqChanType=AraDaqChanType::kDisconeChan; 00216 if(strcmp (temp,"kBatwingChan")==0) fStationInfo[stationId].fAntInfo[row].daqChanType=AraDaqChanType::kBatwingChan; 00217 00218 //printf("fStationInfo[%i].fAntInfo[%i].daqChanType %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].daqChanType); 00219 00220 break; 00221 case 4: //daqChanNum 00222 00223 fStationInfo[stationId].fAntInfo[row].daqChanNum=sqlite3_column_int(stmt, column); 00224 //printf("fStationInfo[%i].fAntInfo[%i].daqChanNum %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].daqChanNum); 00225 00226 break; 00227 case 5: //highPassFilterMhz 00228 00229 fStationInfo[stationId].fAntInfo[row].highPassFilterMhz=sqlite3_column_double(stmt, column); 00230 //printf("fStationInfo[%i].fAntInfo[%i].highPassFilterMhz %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].highPassFilterMhz); 00231 00232 break; 00233 case 6: //lowPassFilterMhz 00234 fStationInfo[stationId].fAntInfo[row].lowPassFilterMhz=sqlite3_column_double(stmt, column); 00235 //printf("fStationInfo[%i].fAntInfo[%i].lowPassFilterMhz %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].lowPassFilterMhz); 00236 00237 break; 00238 case 7: //daqTrigChan 00239 fStationInfo[stationId].fAntInfo[row].daqTrigChan=sqlite3_column_int(stmt, column); 00240 //printf("fStationInfo[%i].fAntInfo[%i].daqTrigChan %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].daqTrigChan); 00241 00242 break; 00243 case 8: //numLabChans 00244 00245 fStationInfo[stationId].fAntInfo[row].numLabChans=sqlite3_column_int(stmt, column); 00246 //printf("fStationInfo[%i].fAntInfo[%i].numLabChans %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].numLabChans); 00247 00248 break; 00249 case 9: //labChip 00250 00251 temp = (const char*)sqlite3_column_text(stmt, column); 00252 if(strcmp (temp,"kA")==0) fStationInfo[stationId].fAntInfo[row].labChip=AraLabChip::kA; 00253 if(strcmp (temp,"kB")==0) fStationInfo[stationId].fAntInfo[row].labChip=AraLabChip::kB; 00254 if(strcmp (temp,"kC")==0) fStationInfo[stationId].fAntInfo[row].labChip=AraLabChip::kC; 00255 00256 //printf("fStationInfo[%i].fAntInfo[%i].labChip %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].labChip); 00257 00258 break; 00259 case 10: //labChans[0] 00260 00261 fStationInfo[stationId].fAntInfo[row].labChans[0]=sqlite3_column_int(stmt, column)-1; 00262 //printf("fStationInfo[%i].fAntInfo[%i].labChans[0] %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].labChans[0]); 00263 00264 break; 00265 case 11: //labChans[1] 00266 00267 fStationInfo[stationId].fAntInfo[row].labChans[1]=sqlite3_column_int(stmt, column)-1; 00268 //printf("fStationInfo[%i].fAntInfo[%i].labChans[1] %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].labChans[1]); 00269 00270 break; 00271 case 12: //isDiplexed 00272 00273 fStationInfo[stationId].fAntInfo[row].isDiplexed=sqlite3_column_int(stmt, column); 00274 //printf("fStationInfo[%i].fAntInfo[%i].isDiplexed %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].isDiplexed); 00275 00276 break; 00277 case 13: //diplexedChans[0] 00278 00279 fStationInfo[stationId].fAntInfo[row].diplexedChans[0]=sqlite3_column_int(stmt, column); 00280 //printf("fStationInfo[%i].fAntInfo[%i].diplexedChans[0] %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].diplexedChans[0]); 00281 00282 break; 00283 case 14: //diplexedChans[1] 00284 00285 fStationInfo[stationId].fAntInfo[row].diplexedChans[1]=sqlite3_column_int(stmt, column); 00286 //printf("fStationInfo[%i].fAntInfo[%i].diplexedChans[1] %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].diplexedChans[1]); 00287 00288 break; 00289 case 15: //preAmpNum 00290 00291 fStationInfo[stationId].fAntInfo[row].preAmpNum=sqlite3_column_int(stmt, column); 00292 //printf("fStationInfo[%i].fAntInfo[%i].preAmpNum %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].preAmpNum); 00293 00294 break; 00295 case 16: //avgNoiseFigure 00296 00297 fStationInfo[stationId].fAntInfo[row].avgNoiseFigure=sqlite3_column_double(stmt, column); 00298 //printf("fStationInfo[%i].fAntInfo[%i].avgNoiseFigure %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].avgNoiseFigure); 00299 00300 break; 00301 case 17: //rcvrNum 00302 00303 fStationInfo[stationId].fAntInfo[row].rcvrNum=sqlite3_column_int(stmt, column); 00304 //printf("fStationInfo[%i].fAntInfo[%i].rcvrNum %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].rcvrNum); 00305 00306 break; 00307 case 18: //designator 00308 00309 temp = (const char*)sqlite3_column_text(stmt, column); 00310 strncpy(fStationInfo[stationId].fAntInfo[row].designator, temp, 3); 00311 //printf("fStationInfo[%i].fAntInfo[%i].designator %s\n", stationId, row, fStationInfo[stationId].fAntInfo[row].designator); 00312 00313 break; 00314 case 19: //antPolNum 00315 00316 fStationInfo[stationId].fAntInfo[row].antPolNum=sqlite3_column_int(stmt, column); 00317 //printf("fStationInfo[%i].fAntInfo[%i].antPolNum %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antPolNum); 00318 00319 break; 00320 case 20: //antType 00321 00322 temp = (const char*)sqlite3_column_text(stmt, column); 00323 if(strcmp (temp,"kBicone")==0) fStationInfo[stationId].fAntInfo[row].antType=AraAntType::kBicone; 00324 if(strcmp (temp,"kBowtieSlot")==0) fStationInfo[stationId].fAntInfo[row].antType=AraAntType::kBowtieSlot; 00325 if(strcmp (temp,"kDiscone")==0) fStationInfo[stationId].fAntInfo[row].antType=AraAntType::kDiscone; 00326 if(strcmp (temp,"kBatwing")==0) fStationInfo[stationId].fAntInfo[row].antType=AraAntType::kBatwing; 00327 if(strcmp (temp,"kFatDipole")==0) fStationInfo[stationId].fAntInfo[row].antType=AraAntType::kFatDipole; 00328 if(strcmp (temp,"kQuadSlot")==0) fStationInfo[stationId].fAntInfo[row].antType=AraAntType::kQuadSlot; 00329 00330 //printf("fStationInfo[%i].fAntInfo[%i].antType %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antType); 00331 00332 break; 00333 case 21: //polType 00334 00335 temp = (const char*)sqlite3_column_text(stmt, column); 00336 if(strcmp (temp,"kVertical")==0) fStationInfo[stationId].fAntInfo[row].polType=AraAntPol::kVertical; 00337 if(strcmp (temp,"kHorizontal")==0) fStationInfo[stationId].fAntInfo[row].polType=AraAntPol::kHorizontal; 00338 if(strcmp (temp,"kSurface")==0) fStationInfo[stationId].fAntInfo[row].polType=AraAntPol::kSurface; 00339 00340 //printf("fStationInfo[%i].fAntInfo[%i].AraAntPol %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].polType); 00341 00342 break; 00343 case 22: //locationName 00344 00345 temp = (const char*)sqlite3_column_text(stmt, column); 00346 strncpy(fStationInfo[stationId].fAntInfo[row].locationName, temp, 4); 00347 //printf("fStationInfo[%i].fAntInfo[%i].locationName %s\n", stationId, row, fStationInfo[stationId].fAntInfo[row].locationName); 00348 00349 00350 break; 00351 case 23: //antLocation[0] 00352 00353 fStationInfo[stationId].fAntInfo[row].antLocation[0]=sqlite3_column_double(stmt, column); 00354 //printf("fStationInfo[%i].fAntInfo[%i].antLocation[0] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antLocation[0]); 00355 00356 break; 00357 case 24: //antLocation[1] 00358 00359 fStationInfo[stationId].fAntInfo[row].antLocation[1]=sqlite3_column_double(stmt, column); 00360 //printf("fStationInfo[%i].fAntInfo[%i].antLocation[1] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antLocation[1]); 00361 00362 break; 00363 case 25: //antLocation[2] 00364 00365 fStationInfo[stationId].fAntInfo[row].antLocation[2]=sqlite3_column_double(stmt, column); 00366 //printf("fStationInfo[%i].fAntInfo[%i].antLocation[2] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antLocation[2]); 00367 00368 break; 00369 case 26: //cableDelay 00370 00371 fStationInfo[stationId].fAntInfo[row].cableDelay=sqlite3_column_double(stmt, column); 00372 //printf("fStationInfo[%i].fAntInfo[%i].cableDelay %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].cableDelay); 00373 00374 break; 00375 case 27: //debugHolePosition[0] 00376 00377 fStationInfo[stationId].fAntInfo[row].debugHolePosition[0]=sqlite3_column_double(stmt, column); 00378 //printf("fStationInfo[%i].fAntInfo[%i].debugHolePosition[0] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugHolePosition[0]); 00379 00380 break; 00381 case 28: //debugHolePosition[1] 00382 00383 fStationInfo[stationId].fAntInfo[row].debugHolePosition[1]=sqlite3_column_double(stmt, column); 00384 //printf("fStationInfo[%i].fAntInfo[%i].debugHolePosition[1] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugHolePosition[1]); 00385 00386 break; 00387 case 29: //debugHolePosition[2] 00388 00389 fStationInfo[stationId].fAntInfo[row].debugHolePosition[2]=sqlite3_column_double(stmt, column); 00390 //printf("fStationInfo[%i].fAntInfo[%i].debugHolePosition[2] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugHolePosition[2]); 00391 00392 break; 00393 case 30: //debugPreAmpDz 00394 00395 fStationInfo[stationId].fAntInfo[row].debugPreAmpDz=sqlite3_column_double(stmt, column); 00396 //printf("fStationInfo[%i].fAntInfo[%i].debugPreAmpDz %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugPreAmpDz); 00397 00398 break; 00399 case 31: //debugHolePositionZft 00400 00401 fStationInfo[stationId].fAntInfo[row].debugHolePositionZft=sqlite3_column_double(stmt, column); 00402 //printf("fStationInfo[%i].fAntInfo[%i].debugHolePositionZft %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugHolePositionZft); 00403 00404 break; 00405 case 32: //debugHolePositionZm 00406 00407 fStationInfo[stationId].fAntInfo[row].debugHolePositionZm=sqlite3_column_double(stmt, column); 00408 //printf("fStationInfo[%i].fAntInfo[%i].debugHolePositionZm %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugHolePositionZm); 00409 00410 break; 00411 case 33: //debugTrueAsBuiltPosition[0] 00412 00413 fStationInfo[stationId].fAntInfo[row].debugTrueAsBuiltPositon[0]=sqlite3_column_double(stmt, column); 00414 //printf("fStationInfo[%i].fAntInfo[%i].debugTrueAsBuiltPositon[0] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugTrueAsBuiltPositon[0]); 00415 00416 break; 00417 case 34: //debugTrueAsBuiltPosition[1] 00418 00419 fStationInfo[stationId].fAntInfo[row].debugTrueAsBuiltPositon[1]=sqlite3_column_double(stmt, column); 00420 //printf("fStationInfo[%i].fAntInfo[%i].debugTrueAsBuiltPositon[1] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugTrueAsBuiltPositon[1]); 00421 00422 break; 00423 case 35: //debugTrueAsBuiltPosition[2] 00424 00425 fStationInfo[stationId].fAntInfo[row].debugTrueAsBuiltPositon[2]=sqlite3_column_double(stmt, column); 00426 //printf("fStationInfo[%i].fAntInfo[%i].debugTrueAsBuiltPositon[2] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugTrueAsBuiltPositon[2]); 00427 00428 break; 00429 case 36: //debugCableDelay2 00430 00431 fStationInfo[stationId].fAntInfo[row].debugCableDelay2=sqlite3_column_double(stmt, column); 00432 //printf("fStationInfo[%i].fAntInfo[%i].debugCableDelay2 %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugCableDelay2); 00433 00434 break; 00435 case 37: //debugFeedPointDelay 00436 00437 fStationInfo[stationId].fAntInfo[row].debugFeedPointDelay=sqlite3_column_double(stmt, column); 00438 //printf("fStationInfo[%i].fAntInfo[%i].debugFeedPointDelay %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugFeedPointDelay); 00439 00440 break; 00441 case 38: //debugTotalCableDelay 00442 00443 fStationInfo[stationId].fAntInfo[row].debugTotalCableDelay=sqlite3_column_double(stmt, column); 00444 //printf("fStationInfo[%i].fAntInfo[%i].debugTotalCableDelay %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugTotalCableDelay); 00445 00446 break; 00447 case 39: //antOrient 00448 00449 temp = (const char*)sqlite3_column_text(stmt, column); 00450 if(strcmp (temp,"kEastWest")==0) fStationInfo[stationId].fAntInfo[row].antOrient=AraSurfaceOrientation::kEastWest; 00451 00452 //printf("fStationInfo[%i].fAntInfo[%i].antOrient %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antOrient); 00453 00454 break; 00455 default: 00456 break; 00457 00458 }//switch(column) 00459 00460 }//column 00461 00462 row++; 00463 00464 00465 }//while(1) 00466 //now insert the no of rfchannels 00467 00468 //jpd RFCHANS_TESTBED (16) and RFCHANS_STATION1 (20) defined in araIcrrDefines.h 00469 00470 if(stationId==0) fStationInfo[0].numberRFChans=RFCHANS_TESTBED; 00471 if(stationId==1) fStationInfo[1].numberRFChans=RFCHANS_STATION1; 00472 00473 //now need to destroy the sqls statement prepared earlier 00474 rc = sqlite3_finalize(stmt); 00475 if(rc!=SQLITE_OK) printf("error finlizing sql statement\n"); 00476 // printf("sqlite3_finalize(stmt) = %i\n", rc); 00477 00478 //now close the connection to the database 00479 rc = sqlite3_close(db); 00480 if(rc!=SQLITE_OK) printf("error closing db\n"); 00481 00482 00483 //jpd now check that we read it in OK 00484 00485 for(int ant=0;ant<fStationInfo[stationId].numberRFChans;++ant){ 00486 // fStationInfo[stationId].fAntInfo[ant].printAntennaInfo(); 00487 } 00488 00489 //jpd now let's populate the antenna lookups 00490 //fAntLookUpTable[stationId][AraAntPol][antPolNum]=chanNum-1 00491 for(int ant=0;ant<fStationInfo[stationId].numberRFChans;++ant){ 00492 switch(fStationInfo[stationId].fAntInfo[ant].polType){ 00493 case AraAntPol::kVertical: 00494 fAntLookupTable[stationId][0][fStationInfo[stationId].fAntInfo[ant].antPolNum]=fStationInfo[stationId].fAntInfo[ant].chanNum-1; 00495 break; 00496 case AraAntPol::kHorizontal: 00497 fAntLookupTable[stationId][1][fStationInfo[stationId].fAntInfo[ant].antPolNum]=fStationInfo[stationId].fAntInfo[ant].chanNum-1; 00498 break; 00499 case AraAntPol::kSurface: 00500 fAntLookupTable[stationId][2][fStationInfo[stationId].fAntInfo[ant].antPolNum]=fStationInfo[stationId].fAntInfo[ant].chanNum-1; 00501 break; 00502 default: 00503 std::cerr << "Unknown AraPolType\n"; 00504 00505 }//switch polType 00506 }//ant 00507 00508 00509 00510 } 00511 00512
Generated on Wed Aug 8 16:20:07 2012 for ARA ROOT Test Bed Software by
