Ignore:
Timestamp:
04/07/06 09:41:02 (18 years ago)
Author:
mar637
Message:

fixed bug due to incorrect use of Table::rowNumbers (RTFM!).
added flagging

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/Scantable.cpp

    r999 r1000  
    578578}
    579579
    580 void Scantable::flag()
     580void Scantable::flag(const std::vector<bool>& msk)
    581581{
    582582  if ( selector_.empty() )
    583     throw(AipsError("Trying to flag whole scantable. Aborted."));
    584   TableVector<uChar> tvec(table_, "FLAGTRA");
    585   uChar userflag = 1 << 7;
    586   tvec = userflag;
     583    throw(AipsError("Trying to flag whole scantable."));
     584  if ( msk.size() == 0 ) {
     585    uChar userflag = 1 << 7;
     586    for ( uInt i=0; i<table_.nrow(); ++i) {
     587      Vector<uChar> flgs = flagsCol_(i);
     588      flgs = userflag;
     589      flagsCol_.put(i, flgs);
     590    }
     591    return;
     592  }
     593  if ( int(msk.size()) != nchan() ) {
     594    throw(AipsError("Mask has incorrect number of channels."));
     595  }
     596  for ( uInt i=0; i<table_.nrow(); ++i) {
     597    Vector<uChar> flgs = flagsCol_(i);
     598    if ( flgs.nelements() != msk.size() ) {
     599      throw(AipsError("Mask has incorrect number of channels."
     600                      " Probably varying with IF. Please flag per IF"));
     601    }
     602    std::vector<bool>::const_iterator it;
     603    uInt j = 0;
     604    uChar userflag = 1 << 7;
     605    for (it = msk.begin(); it != msk.end(); ++it) {
     606      if ( *it ) {
     607        flgs(j) = userflag;
     608      }
     609      ++j;
     610    }
     611    flagsCol_.put(i, flgs);
     612  }
    587613}
    588614
     
    762788      ROTableRow brow(bsubt);
    763789      const TableRecord& brec = brow.get(0);
    764       uInt row0 = bsubt.rowNumbers()[0];
     790      uInt row0 = bsubt.rowNumbers(table_)[0];
    765791      oss << setw(5) << "" <<  setw(4) << std::right << brec.asuInt("BEAMNO")<< std::left;
    766792      oss  << setw(4) << ""  << formatDirection(getDirection(row0)) << endl;
Note: See TracChangeset for help on using the changeset viewer.