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 #include <sqlite3.h> 00016 #include <cstdlib> 00017 00018 00019 //sqlite includes 00020 #include <sqlite3.h> 00021 00022 #include "TString.h" 00023 #include "TObjArray.h" 00024 #include "TObjString.h" 00025 00026 AraGeomTool * AraGeomTool::fgInstance=0; 00027 Double_t AraGeomTool::nTopOfIce=1.48; 00028 00029 AraGeomTool::AraGeomTool() 00030 { 00031 //Default Constructor 00032 00033 //Read in the channel maps for the TestBed and Station1 00034 readChannelMapDb(0); 00035 readChannelMapDb(1); 00036 00037 } 00038 00039 AraGeomTool::~AraGeomTool() { 00040 //Default Destructor 00041 } 00042 00043 //______________________________________________________________________________ 00044 AraGeomTool* AraGeomTool::Instance() 00045 { 00046 //static function 00047 if(fgInstance) 00048 return fgInstance; 00049 00050 fgInstance = new AraGeomTool(); 00051 return fgInstance; 00052 } 00053 00054 int AraGeomTool::getRFChanByPolAndAnt(AraAntPol::AraAntPol_t antPol, int antNum, AraStationId_t stationId) 00055 { 00056 if(antNum<8 && antNum>=0) 00057 return fAntLookupTable[stationId][antPol][antNum]; 00058 return -1; 00059 } 00060 00061 00062 AraAntPol::AraAntPol_t AraGeomTool::getPolByRFChan(int rfChan, AraStationId_t stationId) 00063 { 00064 //RJN Should add a check here for safety 00065 return fStationInfo[stationId].fAntInfo[rfChan].polType; 00066 00067 00068 } 00069 00070 Int_t AraGeomTool::getAntNumByRFChan(int rfChan, AraStationId_t stationId) 00071 { 00072 //RJN Should add a check here for safety 00073 return fStationInfo[stationId].fAntInfo[rfChan].antPolNum; 00074 00075 } 00076 00077 00078 //FIXME //jpd this is most definitely a hack to make AraCanvasMaker work -> this will only 00079 //return the testbed lookup stuff not station1 00080 int AraGeomTool::getRFChanByPolAndAnt(AraAntPol::AraAntPol_t antPol, int antNum) 00081 { 00082 00083 if(antNum<8 && antNum>=0) 00084 return fAntLookupTable[0][antPol][antNum]; 00085 return -1; 00086 }//FIXME -- this just loads the stuff for station1 00087 00088 00089 00090 Double_t AraGeomTool::calcDeltaTInfinity(Double_t ant1[3], Double_t ant2[3],Double_t phiWave, Double_t thetaWave) 00091 { 00092 //Calc some cylindrical coordinates 00093 Double_t rho1=TMath::Sqrt(ant1[0]*ant1[0]+ant1[1]*ant1[1]); 00094 Double_t phi1=TMath::ATan2(ant1[1],ant1[0]); 00095 Double_t rho2=TMath::Sqrt(ant2[0]*ant2[0]+ant2[1]*ant2[1]); 00096 Double_t phi2=TMath::ATan2(ant2[1],ant2[0]); 00097 Double_t d1=TMath::Cos(thetaWave)*(ant1[2]*TMath::Tan(thetaWave)+rho1*TMath::Cos(phi1-phiWave)); 00098 Double_t d2=TMath::Cos(thetaWave)*(ant2[2]*TMath::Tan(thetaWave)+rho2*TMath::Cos(phi2-phiWave)); 00099 Double_t t1t2=(d2-d1)*nTopOfIce/TMath::C(); 00100 t1t2*=1e9; 00101 return t1t2; 00102 00103 } 00104 00105 //jd 00106 Double_t AraGeomTool::calcDeltaTInfinity(Int_t chan1, Int_t chan2,Double_t phiWave, Double_t thetaWave, AraStationId_t stationId) 00107 { 00108 if(chan1<0 || chan1>=TOTAL_ANTS_PER_ICRR) 00109 return 0; 00110 if(chan2<0 || chan2>=TOTAL_ANTS_PER_ICRR) 00111 return 0; 00112 return calcDeltaTInfinity(fStationInfo[stationId].fAntInfo[chan1].antLocation,fStationInfo[stationId].fAntInfo[chan2].antLocation,phiWave,thetaWave); 00113 } 00114 00115 Double_t AraGeomTool::calcDeltaTR(Double_t ant1[3], Double_t ant2[3], Double_t phiWave, Double_t thetaWave,Double_t R) 00116 { 00117 00118 Double_t xs=R*TMath::Cos(thetaWave)*TMath::Cos(phiWave); 00119 Double_t ys=R*TMath::Cos(thetaWave)*TMath::Sin(phiWave); 00120 Double_t zs=R*TMath::Sin(thetaWave); 00121 00122 00123 Double_t d1=TMath::Sqrt((xs-ant1[0])*(xs-ant1[0])+(ys-ant1[1])*(ys-ant1[1])+(zs-ant1[2])*(zs-ant1[2])); 00124 Double_t d2=TMath::Sqrt((xs-ant2[0])*(xs-ant2[0])+(ys-ant2[1])*(ys-ant2[1])+(zs-ant2[2])*(zs-ant2[2])); 00125 00126 Double_t t1t2=(d1-d2)*nTopOfIce/TMath::C(); 00127 t1t2*=1e9; 00128 return t1t2; 00129 00130 } 00131 00132 //jd 00133 Double_t AraGeomTool::calcDeltaTR(Int_t chan1, Int_t chan2, Double_t phiWave, Double_t thetaWave,Double_t R, AraStationId_t stationId) 00134 { 00135 if(chan1<0 || chan1>=TOTAL_ANTS_PER_ICRR) 00136 return 0; 00137 if(chan2<0 || chan2>=TOTAL_ANTS_PER_ICRR) 00138 return 0; 00139 return calcDeltaTR(fStationInfo[stationId].fAntInfo[chan1].antLocation,fStationInfo[stationId].fAntInfo[chan2].antLocation,phiWave,thetaWave,R); 00140 00141 } 00142 00143 //______________________________________________________________________________ 00144 00145 void AraGeomTool::readChannelMapDb(AraStationId_t stationId){ 00146 sqlite3 *db; 00147 char *zErrMsg = 0; 00148 sqlite3_stmt *stmt; 00149 00150 char calibDir[FILENAME_MAX]; 00151 char fileName[FILENAME_MAX]; 00152 char *calibEnv=getenv("ARA_CALIB_DIR"); 00153 if(!calibEnv) { 00154 char *utilEnv=getenv("ARA_UTIL_INSTALL_DIR"); 00155 if(!utilEnv) 00156 sprintf(calibDir,"calib"); 00157 else 00158 sprintf(calibDir,"%s/share/araCalib",utilEnv); 00159 } 00160 else { 00161 strncpy(calibDir,calibEnv,FILENAME_MAX); 00162 } 00163 sprintf(fileName, "%s/AntennaInfo.sqlite", calibDir); 00164 00165 //open the database 00166 // int rc = sqlite3_open_v2(fileName, &db, SQLITE_OPEN_READONLY, NULL); 00167 int rc = sqlite3_open(fileName, &db);; 00168 if(rc!=SQLITE_OK){ 00169 printf("AraGeomTool::readChannelMapDb(AraStationId_t stationId) - Can't open database: %s\n", sqlite3_errmsg(db)); 00170 sqlite3_close(db); 00171 return; 00172 } 00173 00174 const char *query; 00175 00176 //This is where we decide which table to access in the database 00177 if(stationId==ARA_TESTBED) query = "select * from TestBed"; 00178 if(stationId==ARA_STATION1) query = "select * from Station1"; 00179 00180 //prepare an sql statment which will be used to obtain information from the data base 00181 // rc=sqlite3_prepare_v2(db, query, strlen(query)+1, &stmt, NULL); 00182 rc=sqlite3_prepare(db, query, strlen(query)+1, &stmt, NULL); 00183 00184 if(rc!=SQLITE_OK){ 00185 printf("statement not prepared OK\n"); 00186 //should close the data base and exit the function 00187 sqlite3_close(db); 00188 return; 00189 } 00190 int row=0; 00191 while(1){ 00192 //printf("row number %i\n", row); 00193 rc=sqlite3_step(stmt); 00194 if(rc==SQLITE_DONE) break; 00195 int nColumns=sqlite3_column_count(stmt); 00196 00197 00198 for(int column=0;column<nColumns;column++){ 00199 00200 const char* temp; 00201 00202 switch(column){ 00203 case 0: //primary key - stationId+labChip+channel 00204 00205 break; 00206 case 1: //antDir 00207 00208 temp = (const char*)sqlite3_column_text(stmt, column); 00209 00210 if(strcmp (temp,"kReceiver")==0){ 00211 fStationInfo[stationId].fAntInfo[row].antDir=AraAntDir::kReceiver; 00212 //printf("fStationInfo[%i].fAntInfo[%i].antDir %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antDir); 00213 } 00214 00215 break; 00216 case 2: //chanNum 00217 00218 fStationInfo[stationId].fAntInfo[row].chanNum=sqlite3_column_int(stmt, column); 00219 00220 00221 //printf("fStationInfo[%i].fAntInfo[%i].chanNum %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].chanNum); 00222 00223 break; 00224 case 3: //daqChanType 00225 00226 temp = (const char*)sqlite3_column_text(stmt, column); 00227 if(strcmp (temp,"kDisconeChan")==0) fStationInfo[stationId].fAntInfo[row].daqChanType=AraDaqChanType::kDisconeChan; 00228 if(strcmp (temp,"kBatwingChan")==0) fStationInfo[stationId].fAntInfo[row].daqChanType=AraDaqChanType::kBatwingChan; 00229 00230 //printf("fStationInfo[%i].fAntInfo[%i].daqChanType %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].daqChanType); 00231 00232 break; 00233 case 4: //daqChanNum 00234 00235 fStationInfo[stationId].fAntInfo[row].daqChanNum=sqlite3_column_int(stmt, column); 00236 //printf("fStationInfo[%i].fAntInfo[%i].daqChanNum %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].daqChanNum); 00237 00238 break; 00239 case 5: //highPassFilterMhz 00240 00241 fStationInfo[stationId].fAntInfo[row].highPassFilterMhz=sqlite3_column_double(stmt, column); 00242 //printf("fStationInfo[%i].fAntInfo[%i].highPassFilterMhz %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].highPassFilterMhz); 00243 00244 break; 00245 case 6: //lowPassFilterMhz 00246 fStationInfo[stationId].fAntInfo[row].lowPassFilterMhz=sqlite3_column_double(stmt, column); 00247 //printf("fStationInfo[%i].fAntInfo[%i].lowPassFilterMhz %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].lowPassFilterMhz); 00248 00249 break; 00250 case 7: //daqTrigChan 00251 fStationInfo[stationId].fAntInfo[row].daqTrigChan=sqlite3_column_int(stmt, column); 00252 //printf("fStationInfo[%i].fAntInfo[%i].daqTrigChan %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].daqTrigChan); 00253 00254 break; 00255 case 8: //numLabChans 00256 00257 fStationInfo[stationId].fAntInfo[row].numLabChans=sqlite3_column_int(stmt, column); 00258 //printf("fStationInfo[%i].fAntInfo[%i].numLabChans %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].numLabChans); 00259 00260 break; 00261 case 9: //labChip 00262 00263 temp = (const char*)sqlite3_column_text(stmt, column); 00264 if(strcmp (temp,"kA")==0) fStationInfo[stationId].fAntInfo[row].labChip=AraLabChip::kA; 00265 if(strcmp (temp,"kB")==0) fStationInfo[stationId].fAntInfo[row].labChip=AraLabChip::kB; 00266 if(strcmp (temp,"kC")==0) fStationInfo[stationId].fAntInfo[row].labChip=AraLabChip::kC; 00267 00268 //printf("fStationInfo[%i].fAntInfo[%i].labChip %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].labChip); 00269 00270 break; 00271 case 10: //labChans[0] 00272 00273 fStationInfo[stationId].fAntInfo[row].labChans[0]=sqlite3_column_int(stmt, column)-1; 00274 //printf("fStationInfo[%i].fAntInfo[%i].labChans[0] %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].labChans[0]); 00275 00276 break; 00277 case 11: //labChans[1] 00278 00279 fStationInfo[stationId].fAntInfo[row].labChans[1]=sqlite3_column_int(stmt, column)-1; 00280 //printf("fStationInfo[%i].fAntInfo[%i].labChans[1] %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].labChans[1]); 00281 00282 break; 00283 case 12: //isDiplexed 00284 00285 fStationInfo[stationId].fAntInfo[row].isDiplexed=sqlite3_column_int(stmt, column); 00286 //printf("fStationInfo[%i].fAntInfo[%i].isDiplexed %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].isDiplexed); 00287 00288 break; 00289 case 13: //diplexedChans[0] 00290 00291 fStationInfo[stationId].fAntInfo[row].diplexedChans[0]=sqlite3_column_int(stmt, column); 00292 //printf("fStationInfo[%i].fAntInfo[%i].diplexedChans[0] %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].diplexedChans[0]); 00293 00294 break; 00295 case 14: //diplexedChans[1] 00296 00297 fStationInfo[stationId].fAntInfo[row].diplexedChans[1]=sqlite3_column_int(stmt, column); 00298 //printf("fStationInfo[%i].fAntInfo[%i].diplexedChans[1] %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].diplexedChans[1]); 00299 00300 break; 00301 case 15: //preAmpNum 00302 00303 fStationInfo[stationId].fAntInfo[row].preAmpNum=sqlite3_column_int(stmt, column); 00304 //printf("fStationInfo[%i].fAntInfo[%i].preAmpNum %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].preAmpNum); 00305 00306 break; 00307 case 16: //avgNoiseFigure 00308 00309 fStationInfo[stationId].fAntInfo[row].avgNoiseFigure=sqlite3_column_double(stmt, column); 00310 //printf("fStationInfo[%i].fAntInfo[%i].avgNoiseFigure %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].avgNoiseFigure); 00311 00312 break; 00313 case 17: //rcvrNum 00314 00315 fStationInfo[stationId].fAntInfo[row].rcvrNum=sqlite3_column_int(stmt, column); 00316 //printf("fStationInfo[%i].fAntInfo[%i].rcvrNum %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].rcvrNum); 00317 00318 break; 00319 case 18: //designator 00320 00321 temp = (const char*)sqlite3_column_text(stmt, column); 00322 strncpy(fStationInfo[stationId].fAntInfo[row].designator, temp, 3); 00323 //printf("fStationInfo[%i].fAntInfo[%i].designator %s\n", stationId, row, fStationInfo[stationId].fAntInfo[row].designator); 00324 00325 break; 00326 case 19: //antPolNum 00327 00328 fStationInfo[stationId].fAntInfo[row].antPolNum=sqlite3_column_int(stmt, column); 00329 //printf("fStationInfo[%i].fAntInfo[%i].antPolNum %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antPolNum); 00330 00331 break; 00332 case 20: //antType 00333 00334 temp = (const char*)sqlite3_column_text(stmt, column); 00335 if(strcmp (temp,"kBicone")==0) fStationInfo[stationId].fAntInfo[row].antType=AraAntType::kBicone; 00336 if(strcmp (temp,"kBowtieSlot")==0) fStationInfo[stationId].fAntInfo[row].antType=AraAntType::kBowtieSlot; 00337 if(strcmp (temp,"kDiscone")==0) fStationInfo[stationId].fAntInfo[row].antType=AraAntType::kDiscone; 00338 if(strcmp (temp,"kBatwing")==0) fStationInfo[stationId].fAntInfo[row].antType=AraAntType::kBatwing; 00339 if(strcmp (temp,"kFatDipole")==0) fStationInfo[stationId].fAntInfo[row].antType=AraAntType::kFatDipole; 00340 if(strcmp (temp,"kQuadSlot")==0) fStationInfo[stationId].fAntInfo[row].antType=AraAntType::kQuadSlot; 00341 00342 //printf("fStationInfo[%i].fAntInfo[%i].antType %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antType); 00343 00344 break; 00345 case 21: //polType 00346 00347 temp = (const char*)sqlite3_column_text(stmt, column); 00348 if(strcmp (temp,"kVertical")==0) fStationInfo[stationId].fAntInfo[row].polType=AraAntPol::kVertical; 00349 if(strcmp (temp,"kHorizontal")==0) fStationInfo[stationId].fAntInfo[row].polType=AraAntPol::kHorizontal; 00350 if(strcmp (temp,"kSurface")==0) fStationInfo[stationId].fAntInfo[row].polType=AraAntPol::kSurface; 00351 00352 //printf("fStationInfo[%i].fAntInfo[%i].AraAntPol %i\n", stationId, row, fStationInfo[stationId].fAntInfo[row].polType); 00353 00354 break; 00355 case 22: //locationName 00356 00357 temp = (const char*)sqlite3_column_text(stmt, column); 00358 strncpy(fStationInfo[stationId].fAntInfo[row].locationName, temp, 4); 00359 //printf("fStationInfo[%i].fAntInfo[%i].locationName %s\n", stationId, row, fStationInfo[stationId].fAntInfo[row].locationName); 00360 00361 00362 break; 00363 case 23: //antLocation[0] 00364 00365 fStationInfo[stationId].fAntInfo[row].antLocation[0]=sqlite3_column_double(stmt, column); 00366 //printf("fStationInfo[%i].fAntInfo[%i].antLocation[0] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antLocation[0]); 00367 00368 break; 00369 case 24: //antLocation[1] 00370 00371 fStationInfo[stationId].fAntInfo[row].antLocation[1]=sqlite3_column_double(stmt, column); 00372 //printf("fStationInfo[%i].fAntInfo[%i].antLocation[1] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antLocation[1]); 00373 00374 break; 00375 case 25: //antLocation[2] 00376 00377 fStationInfo[stationId].fAntInfo[row].antLocation[2]=sqlite3_column_double(stmt, column); 00378 //printf("fStationInfo[%i].fAntInfo[%i].antLocation[2] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antLocation[2]); 00379 00380 break; 00381 case 26: //cableDelay 00382 00383 fStationInfo[stationId].fAntInfo[row].cableDelay=sqlite3_column_double(stmt, column); 00384 //printf("fStationInfo[%i].fAntInfo[%i].cableDelay %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].cableDelay); 00385 00386 break; 00387 case 27: //debugHolePosition[0] 00388 00389 fStationInfo[stationId].fAntInfo[row].debugHolePosition[0]=sqlite3_column_double(stmt, column); 00390 //printf("fStationInfo[%i].fAntInfo[%i].debugHolePosition[0] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugHolePosition[0]); 00391 00392 break; 00393 case 28: //debugHolePosition[1] 00394 00395 fStationInfo[stationId].fAntInfo[row].debugHolePosition[1]=sqlite3_column_double(stmt, column); 00396 //printf("fStationInfo[%i].fAntInfo[%i].debugHolePosition[1] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugHolePosition[1]); 00397 00398 break; 00399 case 29: //debugHolePosition[2] 00400 00401 fStationInfo[stationId].fAntInfo[row].debugHolePosition[2]=sqlite3_column_double(stmt, column); 00402 //printf("fStationInfo[%i].fAntInfo[%i].debugHolePosition[2] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugHolePosition[2]); 00403 00404 break; 00405 case 30: //debugPreAmpDz 00406 00407 fStationInfo[stationId].fAntInfo[row].debugPreAmpDz=sqlite3_column_double(stmt, column); 00408 //printf("fStationInfo[%i].fAntInfo[%i].debugPreAmpDz %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugPreAmpDz); 00409 00410 break; 00411 case 31: //debugHolePositionZft 00412 00413 fStationInfo[stationId].fAntInfo[row].debugHolePositionZft=sqlite3_column_double(stmt, column); 00414 //printf("fStationInfo[%i].fAntInfo[%i].debugHolePositionZft %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugHolePositionZft); 00415 00416 break; 00417 case 32: //debugHolePositionZm 00418 00419 fStationInfo[stationId].fAntInfo[row].debugHolePositionZm=sqlite3_column_double(stmt, column); 00420 //printf("fStationInfo[%i].fAntInfo[%i].debugHolePositionZm %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugHolePositionZm); 00421 00422 break; 00423 case 33: //debugTrueAsBuiltPosition[0] 00424 00425 fStationInfo[stationId].fAntInfo[row].debugTrueAsBuiltPositon[0]=sqlite3_column_double(stmt, column); 00426 //printf("fStationInfo[%i].fAntInfo[%i].debugTrueAsBuiltPositon[0] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugTrueAsBuiltPositon[0]); 00427 00428 break; 00429 case 34: //debugTrueAsBuiltPosition[1] 00430 00431 fStationInfo[stationId].fAntInfo[row].debugTrueAsBuiltPositon[1]=sqlite3_column_double(stmt, column); 00432 //printf("fStationInfo[%i].fAntInfo[%i].debugTrueAsBuiltPositon[1] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugTrueAsBuiltPositon[1]); 00433 00434 break; 00435 case 35: //debugTrueAsBuiltPosition[2] 00436 00437 fStationInfo[stationId].fAntInfo[row].debugTrueAsBuiltPositon[2]=sqlite3_column_double(stmt, column); 00438 //printf("fStationInfo[%i].fAntInfo[%i].debugTrueAsBuiltPositon[2] %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugTrueAsBuiltPositon[2]); 00439 00440 break; 00441 case 36: //debugCableDelay2 00442 00443 fStationInfo[stationId].fAntInfo[row].debugCableDelay2=sqlite3_column_double(stmt, column); 00444 //printf("fStationInfo[%i].fAntInfo[%i].debugCableDelay2 %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugCableDelay2); 00445 00446 break; 00447 case 37: //debugFeedPointDelay 00448 00449 fStationInfo[stationId].fAntInfo[row].debugFeedPointDelay=sqlite3_column_double(stmt, column); 00450 //printf("fStationInfo[%i].fAntInfo[%i].debugFeedPointDelay %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugFeedPointDelay); 00451 00452 break; 00453 case 38: //debugTotalCableDelay 00454 00455 fStationInfo[stationId].fAntInfo[row].debugTotalCableDelay=sqlite3_column_double(stmt, column); 00456 //printf("fStationInfo[%i].fAntInfo[%i].debugTotalCableDelay %f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].debugTotalCableDelay); 00457 00458 break; 00459 case 40: //antOrient[0] 00460 00461 fStationInfo[stationId].fAntInfo[row].antOrient[0]=sqlite3_column_double(stmt, column); 00462 //printf("fStationInfo[%i].fAntInfo[%i].antOrient[0] %1.10f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antOrient[0]); 00463 00464 break; 00465 00466 case 41: //antOrient[1] 00467 00468 fStationInfo[stationId].fAntInfo[row].antOrient[1]=sqlite3_column_double(stmt, column); 00469 //printf("fStationInfo[%i].fAntInfo[%i].antOrient[1] %1.10f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antOrient[1]); 00470 00471 break; 00472 00473 case 42: //antOrient[2] 00474 00475 fStationInfo[stationId].fAntInfo[row].antOrient[2]=sqlite3_column_double(stmt, column); 00476 //printf("fStationInfo[%i].fAntInfo[%i].antOrient[2] %1.10f\n", stationId, row, fStationInfo[stationId].fAntInfo[row].antOrient[2]); 00477 00478 break; 00479 00480 00481 default: 00482 00483 break; 00484 00485 }//switch(column) 00486 00487 }//column 00488 00489 row++; 00490 00491 00492 }//while(1) 00493 //now insert the no of rfchannels 00494 00495 if(stationId==ARA_TESTBED) fStationInfo[0].numberRFChans=RFCHANS_TESTBED; 00496 if(stationId==ARA_STATION1) fStationInfo[1].numberRFChans=RFCHANS_STATION1; 00497 00498 //now need to destroy the sqls statement prepared earlier 00499 rc = sqlite3_finalize(stmt); 00500 if(rc!=SQLITE_OK) printf("error finlizing sql statement\n"); 00501 // printf("sqlite3_finalize(stmt) = %i\n", rc); 00502 00503 //now close the connection to the database 00504 rc = sqlite3_close(db); 00505 if(rc!=SQLITE_OK) printf("error closing db\n"); 00506 00507 00508 //Now check that we read it in OK 00509 00510 for(int ant=0;ant<fStationInfo[stationId].numberRFChans;++ant){ 00511 // fStationInfo[stationId].fAntInfo[ant].printAntennaInfo(); 00512 } 00513 00514 //Now let's populate the antenna lookups 00515 //fAntLookUpTable[stationId][AraAntPol][antPolNum]=chanNum-1 00516 00517 for(int ant=0;ant<fStationInfo[stationId].numberRFChans;++ant){ 00518 //printf("ant %i\t", ant);//FIXME//DEBUG 00519 switch(fStationInfo[stationId].fAntInfo[ant].polType){ 00520 case AraAntPol::kVertical: 00521 fAntLookupTable[stationId][0][fStationInfo[stationId].fAntInfo[ant].antPolNum]=fStationInfo[stationId].fAntInfo[ant].chanNum-1; 00522 //printf("antPolNum %i\t chanNum %i\t kVertical\n", fStationInfo[stationId].fAntInfo[ant].antPolNum, fStationInfo[stationId].fAntInfo[ant].chanNum-1);//FIXME//DEBUG 00523 break; 00524 case AraAntPol::kHorizontal: 00525 fAntLookupTable[stationId][1][fStationInfo[stationId].fAntInfo[ant].antPolNum]=fStationInfo[stationId].fAntInfo[ant].chanNum-1; 00526 //printf("antPolNum %i\t chanNum %i\t kHorizontal\n", fStationInfo[stationId].fAntInfo[ant].antPolNum, fStationInfo[stationId].fAntInfo[ant].chanNum-1);//FIXME//DEBUG 00527 break; 00528 case AraAntPol::kSurface: 00529 fAntLookupTable[stationId][2][fStationInfo[stationId].fAntInfo[ant].antPolNum]=fStationInfo[stationId].fAntInfo[ant].chanNum-1; 00530 //printf("antPolNum %i\t chanNum %i\t kSurface\n", fStationInfo[stationId].fAntInfo[ant].antPolNum, fStationInfo[stationId].fAntInfo[ant].chanNum-1);//FIXME//DEBUG 00531 break; 00532 default: 00533 std::cerr << "Unknown AraPolType\n"; 00534 00535 }//switch polType 00536 }//ant 00537 00538 00539 00540 } 00541 00542 bool AraGeomTool::isIcrrStation(AraStationId_t stationId){ 00543 00544 if(stationId==ARA_TESTBED||stationId==ARA_STATION1) return true; 00545 else return false; 00546 00547 } 00548 00549 bool AraGeomTool::isAtriStation(AraStationId_t stationId){ 00550 00551 if(isIcrrStation(stationId)) return false; 00552 else return true; 00553 00554 } 00555 00556 Int_t AraGeomTool::getStationCalibIndex(AraStationId_t stationId){ 00557 00558 switch(stationId){ 00559 00560 case ARA_TESTBED: 00561 return 0; 00562 break; 00563 case ARA_STATION1: 00564 return 1; 00565 break; 00566 case ARA_STATION1A: 00567 return 0; 00568 break; 00569 case ARA_STATION2: 00570 return 1; 00571 break; 00572 case ARA_STATION3: 00573 return 2; 00574 break; 00575 case ARA_STATION4: 00576 return 3; 00577 break; 00578 case ARA_STATION5: 00579 return 4; 00580 break; 00581 case ARA_STATION6: 00582 return 5; 00583 break; 00584 case ARA_STATION7: 00585 return 6; 00586 break; 00587 case ARA_STATION8: 00588 return 7; 00589 break; 00590 case ARA_STATION9: 00591 return 8; 00592 break; 00593 case ARA_STATION10: 00594 return 9; 00595 break; 00596 case ARA_STATION11: 00597 return 10; 00598 break; 00599 case ARA_STATION12: 00600 return 11; 00601 break; 00602 case ARA_STATION13: 00603 return 12; 00604 break; 00605 case ARA_STATION14: 00606 return 13; 00607 break; 00608 case ARA_STATION15: 00609 return 14; 00610 break; 00611 case ARA_STATION16: 00612 return 15; 00613 break; 00614 case ARA_STATION17: 00615 return 16; 00616 break; 00617 case ARA_STATION18: 00618 return 17; 00619 break; 00620 case ARA_STATION19: 00621 return 18; 00622 break; 00623 case ARA_STATION20: 00624 return 19; 00625 break; 00626 case ARA_STATION21: 00627 return 20; 00628 break; 00629 case ARA_STATION22: 00630 return 21; 00631 break; 00632 case ARA_STATION23: 00633 return 22; 00634 break; 00635 case ARA_STATION24: 00636 return 23; 00637 break; 00638 case ARA_STATION25: 00639 return 24; 00640 break; 00641 case ARA_STATION26: 00642 return 25; 00643 break; 00644 case ARA_STATION27: 00645 return 26; 00646 break; 00647 case ARA_STATION28: 00648 return 27; 00649 break; 00650 case ARA_STATION29: 00651 return 28; 00652 break; 00653 case ARA_STATION30: 00654 return 29; 00655 break; 00656 case ARA_STATION31: 00657 return 30; 00658 break; 00659 case ARA_STATION32: 00660 return 31; 00661 break; 00662 case ARA_STATION33: 00663 return 32; 00664 break; 00665 case ARA_STATION34: 00666 return 33; 00667 break; 00668 case ARA_STATION35: 00669 return 34; 00670 break; 00671 case ARA_STATION36: 00672 return 35; 00673 break; 00674 case ARA_STATION37: 00675 return 36; 00676 break; 00677 default: 00678 fprintf(stderr, "AraGeomTool::getStationCalibIndex -- Error - Unknown stationId %i\n", stationId); 00679 return -1; 00680 } 00681 } 00682 00683 void AraGeomTool::printStationName(AraStationId_t stationId){ 00684 00685 switch(stationId){ 00686 00687 case ARA_TESTBED: 00688 std::cout << "TESTBED\n"; 00689 break; 00690 case ARA_STATION1: 00691 std::cout << "STATION1\n"; 00692 break; 00693 case ARA_STATION1A: 00694 std::cout << "STATION1A\n"; 00695 break; 00696 case ARA_STATION2: 00697 std::cout << "STATION2\n"; 00698 break; 00699 case ARA_STATION3: 00700 std::cout << "STATION3\n"; 00701 break; 00702 case ARA_STATION4: 00703 std::cout << "STATION4\n"; 00704 break; 00705 case ARA_STATION5: 00706 std::cout << "STATION5\n"; 00707 break; 00708 case ARA_STATION6: 00709 std::cout << "STATION6\n"; 00710 break; 00711 case ARA_STATION7: 00712 std::cout << "STATION7\n"; 00713 break; 00714 case ARA_STATION8: 00715 std::cout << "STATION8\n"; 00716 break; 00717 case ARA_STATION9: 00718 std::cout << "STATION9\n"; 00719 break; 00720 case ARA_STATION10: 00721 std::cout << "STATION10\n"; 00722 break; 00723 case ARA_STATION11: 00724 std::cout << "STATION11\n"; 00725 break; 00726 case ARA_STATION12: 00727 std::cout << "STATION12\n"; 00728 break; 00729 case ARA_STATION13: 00730 std::cout << "STATION13\n"; 00731 break; 00732 case ARA_STATION14: 00733 std::cout << "STATION14\n"; 00734 break; 00735 case ARA_STATION15: 00736 std::cout << "STATION15\n"; 00737 break; 00738 case ARA_STATION16: 00739 std::cout << "STATION16\n"; 00740 break; 00741 case ARA_STATION17: 00742 std::cout << "STATION17\n"; 00743 break; 00744 case ARA_STATION18: 00745 std::cout << "STATION18\n"; 00746 break; 00747 case ARA_STATION19: 00748 std::cout << "STATION19\n"; 00749 break; 00750 case ARA_STATION20: 00751 std::cout << "STATION20\n"; 00752 break; 00753 case ARA_STATION21: 00754 std::cout << "STATION21\n"; 00755 break; 00756 case ARA_STATION22: 00757 std::cout << "STATION22\n"; 00758 break; 00759 case ARA_STATION23: 00760 std::cout << "STATION23\n"; 00761 break; 00762 case ARA_STATION24: 00763 std::cout << "STATION24\n"; 00764 break; 00765 case ARA_STATION25: 00766 std::cout << "STATION25\n"; 00767 break; 00768 case ARA_STATION26: 00769 std::cout << "STATION26\n"; 00770 break; 00771 case ARA_STATION27: 00772 std::cout << "STATION27\n"; 00773 break; 00774 case ARA_STATION28: 00775 std::cout << "STATION28\n"; 00776 break; 00777 case ARA_STATION29: 00778 std::cout << "STATION29\n"; 00779 break; 00780 case ARA_STATION30: 00781 std::cout << "STATION30\n"; 00782 break; 00783 case ARA_STATION31: 00784 std::cout << "STATION31\n"; 00785 break; 00786 case ARA_STATION32: 00787 std::cout << "STATION32\n"; 00788 break; 00789 case ARA_STATION33: 00790 std::cout << "STATION33\n"; 00791 break; 00792 case ARA_STATION34: 00793 std::cout << "STATION34\n"; 00794 break; 00795 case ARA_STATION35: 00796 std::cout << "STATION35\n"; 00797 break; 00798 case ARA_STATION36: 00799 std::cout << "STATION36\n"; 00800 break; 00801 case ARA_STATION37: 00802 std::cout << "STATION37\n"; 00803 break; 00804 default: 00805 std::cout <<"Unkown StationId\n"; 00806 break; 00807 } 00808 00809 } 00810 char* AraGeomTool::getStationName(AraStationId_t stationId){ 00811 00812 switch(stationId){ 00813 00814 case ARA_TESTBED: 00815 return "TESTBED"; 00816 break; 00817 case ARA_STATION1: 00818 return "STATION1"; 00819 break; 00820 case ARA_STATION1A: 00821 return "STATION1A"; 00822 break; 00823 case ARA_STATION2: 00824 return "STATION2"; 00825 break; 00826 case ARA_STATION3: 00827 return "STATION3"; 00828 break; 00829 case ARA_STATION4: 00830 return "STATION4"; 00831 break; 00832 case ARA_STATION5: 00833 return "STATION5"; 00834 break; 00835 case ARA_STATION6: 00836 return "STATION6"; 00837 break; 00838 case ARA_STATION7: 00839 return "STATION7"; 00840 break; 00841 case ARA_STATION8: 00842 return "STATION8"; 00843 break; 00844 case ARA_STATION9: 00845 return "STATION9"; 00846 break; 00847 case ARA_STATION10: 00848 return "STATION10"; 00849 break; 00850 case ARA_STATION11: 00851 return "STATION11"; 00852 break; 00853 case ARA_STATION12: 00854 return "STATION12"; 00855 break; 00856 case ARA_STATION13: 00857 return "STATION13"; 00858 break; 00859 case ARA_STATION14: 00860 return "STATION14"; 00861 break; 00862 case ARA_STATION15: 00863 return "STATION15"; 00864 break; 00865 case ARA_STATION16: 00866 return "STATION16"; 00867 break; 00868 case ARA_STATION17: 00869 return "STATION17"; 00870 break; 00871 case ARA_STATION18: 00872 return "STATION18"; 00873 break; 00874 case ARA_STATION19: 00875 return "STATION19"; 00876 break; 00877 case ARA_STATION20: 00878 return "STATION20"; 00879 break; 00880 case ARA_STATION21: 00881 return "STATION21"; 00882 break; 00883 case ARA_STATION22: 00884 return "STATION22"; 00885 break; 00886 case ARA_STATION23: 00887 return "STATION23"; 00888 break; 00889 case ARA_STATION24: 00890 return "STATION24"; 00891 break; 00892 case ARA_STATION25: 00893 return "STATION25"; 00894 break; 00895 case ARA_STATION26: 00896 return "STATION26"; 00897 break; 00898 case ARA_STATION27: 00899 return "STATION27"; 00900 break; 00901 case ARA_STATION28: 00902 return "STATION28"; 00903 break; 00904 case ARA_STATION29: 00905 return "STATION29"; 00906 break; 00907 case ARA_STATION30: 00908 return "STATION30"; 00909 break; 00910 case ARA_STATION31: 00911 return "STATION31"; 00912 break; 00913 case ARA_STATION32: 00914 return "STATION32"; 00915 break; 00916 case ARA_STATION33: 00917 return "STATION33"; 00918 break; 00919 case ARA_STATION34: 00920 return "STATION34"; 00921 break; 00922 case ARA_STATION35: 00923 return "STATION35"; 00924 break; 00925 case ARA_STATION36: 00926 return "STATION36"; 00927 break; 00928 case ARA_STATION37: 00929 return "STATION37"; 00930 break; 00931 default: 00932 return "Unkown StationId"; 00933 break; 00934 } 00935 00936 }
Generated on Mon Mar 18 16:00:44 2013 for ARA ROOT v3.4 Software by
