Changes in trunk/src/SDMemTable.cc [22:18]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/SDMemTable.cc
r22 r18 65 65 beamSel_(0), 66 66 polSel_(0) { 67 Table tab("dummy"); 68 table_ = tab.copyToMemoryTable("dummy"); 67 name_ = String(name); 68 Table tab(name_); 69 table_ = tab.copyToMemoryTable(name_); 69 70 } 70 71 … … 74 75 this->polSel_= other.polSel_; 75 76 this->chanMask_ = other.chanMask_; 77 this->name_ = String("dummy"); 76 78 this->table_ = other.table_.copyToMemoryTable(String("dummy")); 77 79 // clear all rows() … … 89 91 beamSel_(0), 90 92 polSel_(0) { 93 name_ = String("SDMemTable"); 91 94 String exprs = String("select * from $1 where SCANID == ") 92 95 +String::toString(scanID); 93 96 cerr << exprs << endl; 94 97 Table t = tableCommand(exprs,tab); 95 table_ = t.copyToMemoryTable( "dummy");98 table_ = t.copyToMemoryTable(name_); 96 99 } 97 100 … … 116 119 // Now create a new table from the description. 117 120 118 SetupNewTable aNewTab( "dummy", td, Table::New);121 SetupNewTable aNewTab(name_, td, Table::New); 119 122 table_ = Table(aNewTab, Table::Memory, 0); 123 } 124 125 std::string SDMemTable::name() const { 126 return name_; 120 127 } 121 128 … … 199 206 return mask; 200 207 } 201 std::vector<float> SDMemTable::getSpectrum(Int whichRow) {208 std::vector<float> SDMemTable::getSpectrum(Int whichRow) const { 202 209 203 210 std::vector<float> spectrum; … … 215 222 } 216 223 return spectrum; 217 }218 void SDMemTable::getSpectrum(Vector<Float>& spectrum, Int whichRow=0) {219 ROArrayColumn<Float> spec(table_, "SPECTRA");220 Array<Float> arr;221 spec.get(whichRow, arr);222 spectrum.resize(arr.shape()(3));223 ArrayAccessor<Float, Axis<0> > aa0(arr);224 aa0.reset(aa0.begin(uInt(beamSel_)));//go to beam225 ArrayAccessor<Float, Axis<1> > aa1(aa0);226 aa1.reset(aa1.begin(uInt(IFSel_)));// go to IF227 ArrayAccessor<Float, Axis<2> > aa2(aa1);228 aa2.reset(aa2.begin(uInt(polSel_)));// go to pol229 230 ArrayAccessor<Float, Axis<0> > va(spectrum);231 for (ArrayAccessor<Float, Axis<3> > i(aa2); i != i.end(); ++i) {232 (*va) = (*i);233 va++;234 }235 }236 237 void SDMemTable::getMask(Vector<Bool>& mask, Int whichRow=0) const {238 ROArrayColumn<uChar> spec(table_, "FLAGTRA");239 Array<uChar> arr;240 spec.get(whichRow, arr);241 mask.resize(arr.shape()(3));242 243 ArrayAccessor<uChar, Axis<0> > aa0(arr);244 aa0.reset(aa0.begin(uInt(beamSel_)));//go to beam245 ArrayAccessor<uChar, Axis<1> > aa1(aa0);246 aa1.reset(aa1.begin(uInt(IFSel_)));// go to IF247 ArrayAccessor<uChar, Axis<2> > aa2(aa1);248 aa2.reset(aa2.begin(uInt(polSel_)));// go to pol249 250 Bool useUserMask = ( chanMask_.size() == arr.shape()(3) );251 252 ArrayAccessor<Bool, Axis<0> > va(mask);253 std::vector<bool> tmp;254 tmp = chanMask_; // WHY the fxxx do I have to make a copy here. The255 // iterator should work on chanMask_??256 std::vector<bool>::iterator miter;257 miter = tmp.begin();258 259 for (ArrayAccessor<uChar, Axis<3> > i(aa2); i != i.end(); ++i) {260 bool out =!static_cast<bool>(*i);261 if (useUserMask) {262 out = out && (*miter);263 miter++;264 }265 (*va) = out;266 va++;267 }268 224 } 269 225 … … 347 303 } 348 304 349 SDContainer SDMemTable::getSDContainer(uInt whichRow) const {350 ROScalarColumn<Double> mjd(table_, "TIME");351 ROScalarColumn<String> srcn(table_, "SRCNAME");352 ROArrayColumn<Float> spec(table_, "SPECTRA");353 ROArrayColumn<uChar> flags(table_, "FLAGTRA");354 ROArrayColumn<Float> ts(table_, "TSYS");355 ROScalarColumn<Int> scan(table_, "SCANID");356 ROScalarColumn<Double> integr(table_, "INTERVAL");357 358 SDContainer sdc(nBeam(),nIF(),nPol(),nChan());359 mjd.get(whichRow, sdc.timestamp);360 srcn.get(whichRow, sdc.sourcename);361 integr.get(whichRow, sdc.interval);362 scan.get(whichRow, sdc.scanid);363 Array<Float> spectrum;364 Array<Float> tsys;365 Array<uChar> flagtrum;366 spec.get(whichRow, spectrum);367 sdc.putSpectrum(spectrum);368 flags.get(whichRow, flagtrum);369 sdc.putFlags(flagtrum);370 ts.get(whichRow, tsys);371 sdc.putTsys(tsys);372 return sdc;373 }374 305 bool SDMemTable::putSDHeader(const SDHeader& sdh) { 375 306 table_.lock(); … … 391 322 cerr << "Table Header set" << endl; 392 323 return true; 393 }\ 394 395 SDHeader SDMemTable::getSDHeader() const { 396 SDHeader sdh; 397 table_.keywordSet().get("nBeam",sdh.nbeam); 398 table_.keywordSet().get("nIF",sdh.nif); 399 table_.keywordSet().get("nPol",sdh.npol); 400 table_.keywordSet().get("nChan",sdh.nchan); 401 table_.keywordSet().get("Observer", sdh.observer); 402 table_.keywordSet().get("Project", sdh.project); 403 table_.keywordSet().get("Obstype", sdh.obstype); 404 table_.keywordSet().get("AntennaName", sdh.antennaname); 405 table_.keywordSet().get("AntennaPosition", sdh.antennaposition); 406 table_.keywordSet().get("Equinox", sdh.equinox); 407 table_.keywordSet().get("FreqRefFrame", sdh.freqref); 408 table_.keywordSet().get("FreqRefVal", sdh.reffreq); 409 table_.keywordSet().get("Bandwidth", sdh.bandwidth); 410 table_.keywordSet().get("UTC", sdh.utc); 411 return sdh; 412 } 324 } 325 413 326 void SDMemTable::makePersistent(const std::string& filename) { 414 327 table_.deepCopy(filename,Table::New); … … 463 376 return n; 464 377 } 378 465 379 /* 466 380 void SDMemTable::maskChannels(const std::vector<Int>& whichChans ) {
Note:
See TracChangeset
for help on using the changeset viewer.