LCOV - code coverage report
Current view: top level - singledish/SingleDish - BaselineTable.h (source / functions) Hit Total Coverage
Test: casacpp_coverage.info Lines: 9 9 100.0 %
Date: 2024-12-11 20:54:31 Functions: 9 9 100.0 %

          Line data    Source code
       1             : //# BaselineTable.cc: this code defines baseline table
       2             : //# Copyright (C) 2015
       3             : //# National Astronomical Observatory of Japan
       4             : //#
       5             : //# This library is free software; you can redistribute it and/or modify it
       6             : //# under the terms of the GNU Library General Public License as published by
       7             : //# the Free Software Foundation; either version 2 of the License, or (at your
       8             : //# option) any later version.
       9             : //#
      10             : //# This library is distributed in the hope that it will be useful, but WITHOUT
      11             : //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      12             : //# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
      13             : //# License for more details.
      14             : //#
      15             : //# You should have received a copy of the GNU Library General Public License
      16             : //# along with this library; if not, write to the Free Software Foundation,
      17             : //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
      18             : //#
      19             : //# Correspondence concerning AIPS++ should be addressed as follows:
      20             : //#        Internet email: casa-feedback@nrao.edu.
      21             : //#        Postal address: AIPS++ Project Office
      22             : //#                        National Radio Astronomy Observatory
      23             : //#                        520 Edgemont Road
      24             : //#                        Charlottesville, VA 22903-2475 USA
      25             : //#
      26             : //# $Id$
      27             : #ifndef SD_BASELINETABLE_H
      28             : #define SD_BASELINETABLE_H
      29             : 
      30             : #include <casacore/casa/aips.h>
      31             : #include <casacore/casa/Arrays/Vector.h>
      32             : #include <casacore/casa/Logging/LogIO.h>
      33             : #include <casacore/measures/Measures/MEpoch.h>
      34             : #include <casacore/measures/TableMeasures/ScalarMeasColumn.h>
      35             : #include <casacore/ms/MeasurementSets/MeasurementSet.h>
      36             : #include <casacore/tables/Tables/Table.h>
      37             : #include <casacore/tables/Tables/ScalarColumn.h>
      38             : #include <casacore/tables/Tables/ArrayColumn.h>
      39             : #include <libsakura/sakura.h>
      40             : 
      41             : #define BaselineType_kPolynomial     0
      42             : #define BaselineType_kChebyshev      1
      43             : #define BaselineType_kCubicSpline    2
      44             : #define BaselineType_kSinusoid       3
      45             : #define BaselineType_kNumElements    4
      46             : 
      47             : namespace casa {
      48             : 
      49             : class BaselineTable {
      50             : public:
      51             :   BaselineTable() {;}
      52             :   BaselineTable(const casacore::MeasurementSet& parent);
      53             :   BaselineTable(const casacore::String &name);
      54             : 
      55             :   virtual ~BaselineTable();
      56             : 
      57             :   void setup();
      58             :   const casacore::String& name() const {return name_;};
      59             : 
      60             :   const casacore::Table& table() const { return table_; }
      61             :   casacore::Table table() { return table_; }
      62             :   void attach();
      63             :   void attachBaseColumns();
      64             :   void attachOptionalColumns();
      65             : 
      66         512 :   casacore::uInt nrow() {return table_.nrow();}
      67             : 
      68          31 :   casacore::uInt getScan(casacore::uInt irow) const {return scanCol_.get(irow);}
      69          62 :   casacore::uInt getBeam(casacore::uInt irow) const {return beamCol_.get(irow);}
      70          31 :   casacore::uInt getAntenna(casacore::uInt irow) const {return antCol_.get(irow);}
      71          62 :   uint getSpw(casacore::uInt irow) const {return static_cast<uint>(ifCol_.get(irow));}
      72          31 :   double getTime(casacore::uInt irow) const {return static_cast<double>(timeCol_.get(irow));}
      73             : 
      74             :   bool getApply(casacore::uInt irow, casacore::uInt ipol) const;
      75             :   std::vector<bool> getMask(casacore::uInt irow, casacore::uInt ipol);
      76             :   uint getBaselineType(casacore::uInt irow, casacore::uInt ipol) const;
      77             :   int getFPar(casacore::uInt irow, casacore::uInt ipol) const;
      78             : 
      79             :   void setdata(casacore::uInt irow, casacore::uInt scanno, casacore::uInt beamno, 
      80             :                casacore::uInt antno, casacore::uInt ifno, 
      81             :                casacore::uInt freqid, casacore::Double time, 
      82             :                casacore::Array<casacore::Bool> apply,
      83             :                casacore::Array<casacore::uInt> ftype, 
      84             :                casacore::Array<casacore::Int> fpar, 
      85             :                casacore::Array<casacore::Float> ffpar, 
      86             :                casacore::Array<casacore::uInt> mask,
      87             :                casacore::Array<casacore::Float> res,
      88             :                casacore::Array<casacore::Float> rms, 
      89             :                casacore::uInt nchan, 
      90             :                casacore::Array<casacore::Float> cthres,
      91             :                casacore::Array<casacore::uInt> citer, 
      92             :                casacore::Array<casacore::Bool> uself,
      93             :                casacore::Array<casacore::Float> lfthres, 
      94             :                casacore::Array<casacore::uInt> lfavg, 
      95             :                casacore::Array<casacore::uInt> lfedge);
      96             :   void appenddata(casacore::uInt scanno, casacore::uInt beamno, 
      97             :                   casacore::uInt antno, casacore::uInt ifno, 
      98             :                   casacore::uInt freqid, casacore::Double time, 
      99             :                   casacore::Array<casacore::Bool> apply,
     100             :                   casacore::Array<casacore::uInt> ftype, 
     101             :                   casacore::Array<casacore::Int> fpar, 
     102             :                   casacore::Array<casacore::Float> ffpar, 
     103             :                   casacore::Array<casacore::uInt> mask,
     104             :                   casacore::Array<casacore::Float> res,
     105             :                   casacore::Array<casacore::Float> rms, 
     106             :                   casacore::uInt nchan, 
     107             :                   casacore::Array<casacore::Float> cthres,
     108             :                   casacore::Array<casacore::uInt> citer, 
     109             :                   casacore::Array<casacore::Bool> uself,
     110             :                   casacore::Array<casacore::Float> lfthres, 
     111             :                   casacore::Array<casacore::uInt> lfavg, 
     112             :                   casacore::Array<casacore::uInt> lfedge);
     113             :   void appendbasedata(int scanno, int beamno, int antno, int ifno, 
     114             :                       int freqid, casacore::Double time);
     115             :   void setresult(casacore::uInt irow, 
     116             :                  casacore::Vector<casacore::Float> res, 
     117             :                  casacore::Array<casacore::Float> rms);
     118             :   void save(const std::string &filename);
     119             :   casacore::uInt nchan(casacore::uInt ifno);
     120             : 
     121             :   casacore::Matrix<casacore::Bool> getApply() {return applyCol_.getColumn();}
     122             :   void setApply(int irow, int ipol, bool apply);
     123             :   casacore::Matrix<casacore::Int> getFuncParam() {return fparCol_.getColumn();}
     124         122 :   casacore::Matrix<casacore::Int> getFuncParam(casacore::uInt irow) {return fparCol_.get(irow);}
     125             :   casacore::Matrix<casacore::Float> getFuncFParam() {return ffparCol_.getColumn();}
     126          40 :   casacore::Matrix<casacore::Float> getFuncFParam(casacore::uInt irow) {return ffparCol_.get(irow);}
     127             :   casacore::Matrix<casacore::uInt> getMaskList() {return maskCol_.getColumn();}
     128             :   casacore::Matrix<casacore::uInt> getMaskList(casacore::uInt irow) {return maskCol_.get(irow);}
     129             :   casacore::Matrix<casacore::Float> getResult() {return resCol_.getColumn();}
     130         430 :   casacore::Matrix<casacore::Float> getResult(casacore::uInt irow) {return resCol_.get(irow);}
     131             :   casacore::Matrix<casacore::Float> getRms() {return rmsCol_.getColumn();}
     132             :   casacore::Vector<casacore::uInt> getNChan() {return nchanCol_.getColumn();}
     133             :   casacore::uInt getNChan(int irow);
     134             :   casacore::Matrix<casacore::Float> getClipThreshold() {return cthresCol_.getColumn();}
     135             :   casacore::Matrix<casacore::uInt> getClipIteration() {return citerCol_.getColumn();}
     136             :   casacore::Matrix<casacore::Bool> getUseLineFinder() {return uselfCol_.getColumn();}
     137             :   casacore::Matrix<casacore::Float> getLineFinderThreshold() {return lfthresCol_.getColumn();}
     138             :   casacore::Matrix<casacore::uInt> getLineFinderChanAvg() {return lfavgCol_.getColumn();}
     139             :   casacore::Matrix<casacore::uInt> getLineFinderEdge() {return lfedgeCol_.getColumn();}
     140             : 
     141             : private:
     142             :   void setbasedata(casacore::uInt irow, casacore::uInt scanno, casacore::uInt beamno, casacore::uInt antno, 
     143             :                    casacore::uInt ifno, casacore::uInt freqid, casacore::Double time);
     144             :   casacore::Table table_, originaltable_;
     145             :   casacore::ScalarColumn<casacore::uInt> scanCol_, beamCol_, antCol_, ifCol_, freqidCol_;
     146             :   casacore::ScalarColumn<casacore::Double> timeCol_;
     147             :   casacore::MEpoch::ScalarColumn timeMeasCol_;
     148             :   static const casacore::String name_;
     149             : 
     150             :   casacore::ArrayColumn<casacore::Bool> applyCol_;
     151             :   casacore::ArrayColumn<casacore::uInt> ftypeCol_;
     152             :   casacore::ArrayColumn<casacore::Int> fparCol_;
     153             :   casacore::ArrayColumn<casacore::Float> ffparCol_;
     154             :   casacore::ArrayColumn<casacore::uInt> maskCol_;
     155             :   casacore::ArrayColumn<casacore::Float> resCol_;
     156             :   casacore::ArrayColumn<casacore::Float> rmsCol_;
     157             :   casacore::ScalarColumn<casacore::uInt> nchanCol_;
     158             :   casacore::ArrayColumn<casacore::Float> cthresCol_;
     159             :   casacore::ArrayColumn<casacore::uInt> citerCol_;
     160             :   casacore::ArrayColumn<casacore::Bool> uselfCol_;
     161             :   casacore::ArrayColumn<casacore::Float> lfthresCol_;
     162             :   casacore::ArrayColumn<casacore::uInt> lfavgCol_;
     163             :   casacore::ArrayColumn<casacore::uInt> lfedgeCol_;
     164             : 
     165             :   std::vector<bool> getMaskFromMaskList(casacore::uInt const nchan, casacore::Vector<casacore::uInt> const& masklist);
     166             : };
     167             : 
     168             : }
     169             : 
     170             : #endif

Generated by: LCOV version 1.16