ARA ROOT Test BEd Software

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 doxygen 1.4.7