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