ARA ROOT v3.4 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 #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 doxygen 1.4.7