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