Changeset 1907 for trunk/src/Scantable.cpp
- Timestamp:
- 08/26/10 19:46:26 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/Scantable.cpp
r1881 r1907 1712 1712 } 1713 1713 1714 bool Scantable::getFlagtraFast(int whichrow) 1715 { 1716 uChar flag; 1717 Vector<uChar> flags; 1718 flagsCol_.get(uInt(whichrow), flags); 1719 for (int i = 0; i < flags.size(); i++) { 1720 if (i==0) { 1721 flag = flags[i]; 1722 } 1723 else { 1724 flag &= flags[i]; 1725 } 1726 return ((flag >> 7) == 1); 1727 } 1728 } 1729 1730 void Scantable::doPolyBaseline(const std::vector<bool>& mask, int order, int rowno, Fitter& fitter) 1731 { 1732 fitter.setExpression("poly", order); 1733 1734 std::vector<double> abcsd = getAbcissa(rowno); 1735 std::vector<float> abcs; 1736 for (int i = 0; i < abcsd.size(); i++) { 1737 abcs.push_back((float)abcsd[i]); 1738 } 1739 std::vector<float> spec = getSpectrum(rowno); 1740 std::vector<bool> fmask = getMask(rowno); 1741 for (int i = 0; i < fmask.size(); i++) { 1742 fmask[i] = fmask[i] && mask[i]; 1743 } 1744 fitter.setData(abcs, spec, fmask); 1745 1746 fitter.lfit(); 1747 } 1748 1749 void Scantable::polyBaseline(const std::vector<bool>& mask, int order, int rowno) 1750 { 1751 Fitter fitter = Fitter(); 1752 doPolyBaseline(mask, order, rowno, fitter); 1753 setSpectrum(fitter.getResidual(), rowno); 1754 } 1755 1756 void Scantable::polyBaseline(const std::vector<bool>& mask, int order, int rowno, int pars_ptr, int pars_size, int errs_ptr, int errs_size, int fmask_ptr, int fmask_size) 1757 { 1758 Fitter fitter = Fitter(); 1759 doPolyBaseline(mask, order, rowno, fitter); 1760 setSpectrum(fitter.getResidual(), rowno); 1761 1762 std::vector<float> pars = fitter.getParameters(); 1763 if (pars_size != pars.size()) { 1764 throw(AipsError("wrong pars size")); 1765 } 1766 float *ppars = reinterpret_cast<float*>(pars_ptr); 1767 for (int i = 0; i < pars_size; i++) { 1768 ppars[i] = pars[i]; 1769 } 1770 1771 std::vector<float> errs = fitter.getErrors(); 1772 if (errs_size != errs.size()) { 1773 throw(AipsError("wrong errors size")); 1774 } 1775 float *perrs = reinterpret_cast<float*>(errs_ptr); 1776 for (int i = 0; i < errs_size; i++) { 1777 perrs[i] = errs[i]; 1778 } 1779 1780 if (fmask_size != fmask.size()) { 1781 throw(AipsError("wrong fmask size")); 1782 } 1783 int *pfmask = reinterpret_cast<int*>(fmask_ptr); 1784 for (int i = 0; i < fmask_size; i++) { 1785 pfmask[i] = (fmask[i] ? 1 : 0); 1786 } 1787 } 1788 1714 1789 } 1715 1790 //namespace asap
Note: See TracChangeset
for help on using the changeset viewer.