Ignore:
Timestamp:
09/14/10 12:17:16 (14 years ago)
Author:
Malte Marquarding
Message:

Ticket #206: use STFitEntry as return objetc instead of pointer wrnagling.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/polybatch/src/Scantable.cpp

    r1919 r1924  
    17501750}
    17511751
    1752 void Scantable::polyBaselineBatch(const std::vector<bool>& mask, int order, int rowno)
     1752void Scantable::polyBaselineBatch(const std::vector<bool>& mask, int order)
     1753{
     1754  Fitter fitter = Fitter();
     1755  for (uInt rowno=0; rowno < nrow(); ++rowno) {
     1756    doPolyBaseline(mask, order, rowno, fitter);
     1757    setSpectrum(fitter.getResidual(), rowno);
     1758  }
     1759}
     1760
     1761STFitEntry Scantable::polyBaseline(const std::vector<bool>& mask, int order, int rowno)
    17531762{
    17541763  Fitter fitter = Fitter();
    17551764  doPolyBaseline(mask, order, rowno, fitter);
    17561765  setSpectrum(fitter.getResidual(), rowno);
    1757 }
    1758 
    1759 void Scantable::polyBaseline(const std::vector<bool>& mask, int order, int rowno, long pars_ptr, long pars_size, long errs_ptr, long errs_size, long fmask_ptr, long fmask_size)
    1760 {
    1761   Fitter fitter = Fitter();
    1762   doPolyBaseline(mask, order, rowno, fitter);
    1763   setSpectrum(fitter.getResidual(), rowno);
    1764 
    1765   std::vector<float> pars = fitter.getParameters();
    1766   if (pars_size != pars.size()) {
    1767     throw(AipsError("wrong pars size"));
    1768   }
    1769   float *ppars = reinterpret_cast<float*>(pars_ptr);
    1770   for (int i = 0; i < pars_size; i++) {
    1771     ppars[i] = pars[i];
    1772   }
    1773 
    1774   std::vector<float> errs = fitter.getErrors();
    1775   if (errs_size != errs.size()) {
    1776     throw(AipsError("wrong errors size"));
    1777   }
    1778   float *perrs = reinterpret_cast<float*>(errs_ptr);
    1779   for (int i = 0; i < errs_size; i++) {
    1780     perrs[i] = errs[i];
    1781   }
    1782 
    1783   std::vector<bool> fmask = getMask(rowno);
    1784   if (fmask_size != fmask.size()) {
    1785     throw(AipsError("wrong fmask size"));
    1786   }
    1787   int *pfmask = reinterpret_cast<int*>(fmask_ptr);
    1788   for (int i = 0; i < fmask_size; i++) {
    1789     pfmask[i] = ((fmask[i] && mask[i]) ? 1 : 0);
    1790   }
     1766  return fitter.getFitEntry();
    17911767}
    17921768
Note: See TracChangeset for help on using the changeset viewer.