IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 21, 2005, 3:59:10 PM (21 years ago)
Author:
eugene
Message:

updates for cycle 5

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/pslib/psLibADD.tex

    r2779 r3070  
    1 %%% $Id: psLibADD.tex,v 1.56 2004-12-21 21:37:08 price Exp $
     1%%% $Id: psLibADD.tex,v 1.57 2005-01-22 01:57:42 eugene Exp $
    22\documentclass[panstarrs]{panstarrs}
    33
     
    16461646%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    16471647
    1648 \subsubsection{Missing and Todo}
     1648\subsection{Missing and Todo}
    16491649
    16501650\tbd{define SINC, LAGRANGE interpolation}
     
    16591659
    16601660\tbd{define Brent's method \& minimization bracketing}
     1661
     1662\section{Pan-STARRS Modules}
     1663
     1664\subsection{Object Models}
     1665
     1666\subsubsection{Real 2D Gaussian}
     1667
     1668This function is a two-dimensional Gaussian with an elliptical
     1669cross-section and a constant local background:
     1670\[
     1671f(x,y) = Z_o e^{-z} + S_o
     1672\]
     1673where
     1674\[
     1675z = \frac{(x - x_o)^2}{2\sigma_x^2} + \frac{(y-y_o)^2}{2\sigma_y^2} + (x-x_o) (y - y_o) \sigma_{xy}
     1676\]
     1677
     1678Below is the relationship between the \code{psModel} parameters and
     1679the function parameters, sample C-code implementing the function
     1680efficiently, and the value of the derivatives:
     1681
     1682\begin{verbatim}
     1683  param[0] = So;
     1684  param[1] = Zo;
     1685  param[2] = Xo;
     1686  param[3] = Yo;
     1687  param[4] = sqrt(2) / SigmaX;
     1688  param[5] = sqrt(2) / SigmaY;
     1689  param[6] = Sxy;
     1690
     1691  X = x[0] - param[2];
     1692  Y = x[1] - param[3];
     1693 
     1694  px = param[4]*X;
     1695  py = param[5]*Y;
     1696
     1697  z = 0.5*SQ(px) + 0.5*SQ(py) + param[6]*X*Y;
     1698  r = exp(-z);
     1699  f = param[1]*r + param[0];
     1700  /* f is the function value */
     1701
     1702  q = param[1]*r;
     1703  deriv[0] = +1;
     1704  deriv[1] = +r;
     1705  deriv[2] = q*(2*px*param[4] + param[6]*Y);
     1706  deriv[3] = q*(2*py*param[5] + param[6]*X);
     1707  deriv[4] = -2*q*px*X;
     1708  deriv[5] = -2*q*py*Y;
     1709  deriv[6] = -q*X*Y;
     1710\end{verbatim}
     1711
     1712The intial guess for the Gaussian parameters may be taken from the
     1713moments, peak value, and local sky.
     1714
     1715\subsubsection{Pseudo-Gaussian}
     1716
     1717This function is a polynomial approximation of a 2D Gaussian.  The
     1718function is very similar to the real Gaussian:
     1719\[
     1720f(x,y) = Z_o (1 + z + z^2/2 + z^3/6)^{-1} + S_o
     1721\]
     1722where
     1723\[
     1724z = \frac{(x - x_o)^2}{2\sigma_x^2} + \frac{(y-y_o)^2}{2\sigma_y^2} + (x-x_o) (y - y_o) \sigma_{xy}
     1725\]
     1726
     1727Below is the relationship between the \code{psModel} parameters and
     1728the function parameters, sample C-code implementing the function
     1729efficiently, and the value of the derivatives:
     1730
     1731\begin{verbatim}
     1732  param[0] = So;
     1733  param[1] = Zo;
     1734  param[2] = Xo;
     1735  param[3] = Yo;
     1736  param[4] = sqrt(2) / SigmaX;
     1737  param[5] = sqrt(2) / SigmaY;
     1738  param[6] = Sxy;
     1739
     1740  X = x[0] - param[2];
     1741  Y = x[1] - param[3];
     1742 
     1743  px = param[4]*X;
     1744  py = param[5]*Y;
     1745
     1746  z = 0.5*SQ(px) + 0.5*SQ(py) + param[6]*X*Y;
     1747  t = 1 + z + 0.5*z*z;
     1748  r = 1.0 / (t*(1 + z/3)); /* ~ exp (-Z) */
     1749  f = param[1]*r + param[0];
     1750  /* f is the function value */
     1751
     1752  /* note difference from a pure gaussian: q = param[1]*r */
     1753  q = param[1]*r*r*t;
     1754  deriv[0] = +1;
     1755  deriv[1] = +r;
     1756  deriv[2] = q*(2*px*param[4] + param[6]*Y);
     1757  deriv[3] = q*(2*py*param[5] + param[6]*X);
     1758  deriv[4] = -2*q*px*X;
     1759  deriv[5] = -2*q*py*Y;
     1760  deriv[6] = -q*X*Y;
     1761\end{verbatim}
     1762
     1763The intial guess for the Gaussian parameters may be taken from the
     1764moments, peak value, and local sky.
     1765
     1766\subsubsection{Waussian}
     1767
     1768The Waussian is a modified polynomial approximation of a 2D Gaussian,
     1769with non-linear polynomial terms having variable coefficients, rather
     1770than the Taylor series values of 1/2 and 1/6.  The
     1771function is very similar to the pseudo-Gaussian:
     1772\[
     1773f(x,y) = Z_o (1 + z + B_2 (z^2/2 + B_3 z^3/6))^{-1} + S_o
     1774\]
     1775where
     1776\[
     1777z = \frac{(x - x_o)^2}{2\sigma_x^2} + \frac{(y-y_o)^2}{2\sigma_y^2} + (x-x_o) (y - y_o) \sigma_{xy}
     1778\]
     1779
     1780Below is the relationship between the \code{psModel} parameters and
     1781the function parameters, sample C-code implementing the function
     1782efficiently, and the value of the derivatives.  Note the fudge factors
     1783of 100 in the derivatives of $B_2$ and $B_3$: these are included to
     1784slow the variation of these parameters, which are otherwise very
     1785sensitive to small errors.
     1786
     1787\begin{verbatim}
     1788  param[0] = So;
     1789  param[1] = Zo;
     1790  param[2] = Xo;
     1791  param[3] = Yo;
     1792  param[4] = Sx;
     1793  param[5] = Sy;
     1794  param[6] = Sxy;
     1795  param[7] = B2;
     1796  param[8] = B3;
     1797
     1798  X = x - param[2];
     1799  Y = y - param[2];
     1800 
     1801  px = param[4]*X;
     1802  py = param[5]*Y;
     1803
     1804  z = 0.5*SQ(px) + 0.5*SQ(py) + param[6]*X*Y;
     1805  t = 0.5*z*z*(1 + param[8]*z/3);
     1806  r = 1.0 / (1 + z + param[7]*t); /* ~ exp (-Z) */
     1807  f = param[1]*r + param[0];
     1808
     1809  /* note difference from gaussian: q = param[1]*r */
     1810  q = param[1]*r*r*(1 + param[7]*z*(1 + param[8]*z/2));
     1811  deriv[0] = +1;
     1812  deriv[1] = +r;
     1813  deriv[2] = q*(2*px*param[4] + param[6]*Y);
     1814  deriv[3] = q*(2*py*param[5] + param[6]*X);
     1815  deriv[4] = -2*q*px*X;
     1816  deriv[5] = -2*q*py*Y;
     1817  deriv[6] = -q*X*Y;
     1818  deriv[7] = -100*param[1]*r*r*t;
     1819  deriv[8] = -100*param[1]*r*r*param[7]*(z*z*z)/6;
     1820  /* the values of 100 dampen the swing of param[7,8] */
     1821\end{verbatim}
     1822
     1823\subsubsection{Twisted Gaussian}
     1824
     1825This function describes an object with power-law wings and a flattened
     1826core, where the core has a different contour from the wings. 
     1827
     1828\[
     1829f(x,y) = Z_{\rm pk} (1 + z_1 + z_2^M)^{-1} + Sky
     1830\]
     1831where
     1832\[
     1833z_1 = \frac{x^2}{2\sigma_{x,in}^2} + \frac{y^2}{2\sigma_{y,in}^2} + x y \sigma_{xy,in}
     1834z_2 = \frac{x^2}{2\sigma_{x,out}^2} + \frac{y^2}{2\sigma_{y,out}^2} + x y \sigma_{xy,out}
     1835\]
     1836
     1837\begin{verbatim}
     1838  param[0]  = So;
     1839  param[1]  = Zo;
     1840  param[2]  = Xo;
     1841  param[3]  = Yo;
     1842  param[4]  = SxInner;
     1843  param[5]  = SyInner;
     1844  param[6]  = SxyInner;
     1845  param[7]  = SxOuter;
     1846  param[8]  = SyOuter;
     1847  param[9]  = SxyOuter;
     1848  param[10] = N;
     1849
     1850  X = x - param[2];
     1851  Y = y - param[3];
     1852 
     1853  px1 = param[4]*X;
     1854  py1 = param[5]*Y;
     1855  px2 = param[7]*X;
     1856  py2 = param[8]*Y;
     1857
     1858  z1 = 0.5*SQ(px1) + 0.5*SQ(py1) + param[4]*X*Y;
     1859  z2 = 0.5*SQ(px2) + 0.5*SQ(py2) + param[9]*X*Y;
     1860
     1861  r  = 1.0 / (1 + z1 + pow(z2,param[10]));
     1862  f  = param[5]*r + param[6];
     1863
     1864  q1 = param[5]*SQ(r);
     1865  q2 = param[5]*SQ(r)*param[10]*pow(z2,(param[10]-1));
     1866
     1867  deriv[0] = +1;
     1868  deriv[1] = +r;
     1869  deriv[2] = q1*(2*px1*param[4] + param[6]*Y) + q2*(2*px2*param[7] + param[9]*Y);
     1870  deriv[3] = q1*(2*py1*param[5] + param[6]*X) + q2*(2*py2*param[8] + param[9]*X);
     1871
     1872  /* these fudge factors impede the growth of param[4] beyond param[7] */
     1873  f1 = fabs(param[7]) / fabs(param[4]);
     1874  f2 = (f1 < FSCALE) ? 1 : FFACTOR*(f1 - FSCALE) + 1;
     1875  deriv[4] = -2*q1*px1*X*f2;
     1876
     1877  /* these fudge factors impede the growth of param[5] beyond param[8] */
     1878  f1 = fabs(param[8]) / fabs(param[5]);
     1879  f2 = (f1 < FSCALE) ? 1 : FFACTOR*(f1 - FSCALE) + 1;
     1880  deriv[5] = -2*q1*py1*Y*f2;
     1881
     1882  deriv[6] = -q1*X*Y;
     1883
     1884  deriv[7] = -2*q2*px2*X;
     1885  deriv[8] = -2*q2*py2*Y;
     1886  deriv[9] = -q2*X*Y;
     1887  deriv[10] = -q1*ln(z2);
     1888\end{verbatim}
     1889
     1890The intial guess for the Gaussian parameters may be taken from the
     1891moments, peak value, and local sky.
     1892
     1893\tbd{future galaxy models to be implemented}
     1894
     1895\begin{verbatim}
     1896float Sersic()
     1897  param[0] = So;
     1898  param[1] = Zo;
     1899  param[2] = Xo;
     1900  param[3] = Yo;
     1901  param[4] = Sx;
     1902  param[5] = Sy;
     1903  param[6] = Sxy;
     1904  param[7] = Nexp;
     1905
     1906float SersicBulge()
     1907  param[0]  So;
     1908  param[1]  Zo;
     1909  param[2]  Xo;
     1910  param[3]  Yo;
     1911  param[4]  SxInner;
     1912  param[5]  SyInner;
     1913  param[6]  SxyInner;
     1914  param[7]  Zd;
     1915  param[8]  SxOuter;
     1916  param[9]  SyOuter;
     1917  param[10] = SxyOuter;
     1918  param[11] = Nexp;
     1919\end{verbatim}
    16611920
    16621921%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Note: See TracChangeset for help on using the changeset viewer.