Index: trunk/doc/release.2015/ps1.analysis/analysis.tex
===================================================================
--- trunk/doc/release.2015/ps1.analysis/analysis.tex	(revision 40600)
+++ trunk/doc/release.2015/ps1.analysis/analysis.tex	(revision 40602)
@@ -118,4 +118,6 @@
 
 \note{define psfQF, psfQFperfect}
+\note{identify when each PM\_SOURCE\_MODE bit is raised}
+\note{map PM\_SOURCE\_MODE bits from this paper to PSPS paper}
 
 The 1.8m Pan-STARRS\,1 telescope is located on the summit of Haleakala
@@ -505,5 +507,112 @@
 \end{table*}
 
-% \subsection{Output Formats}
+\subsection{Informational and Warning Bit Flags}
+
+During the \ippprog{psphot} analysis, there are a wide variety of
+conditions which are identified by the analysis software.  As part of
+the output data for each detected source, two fields are provided
+which encode these conditions as bit values in the two 32-bin
+integers.  The following two tables list the individual bit values in
+these two fields.  These informational and warning bits are described
+in more detail later in this article.
+%
+Table~\ref{tab:det_flag_values} lists the flags recorded in the output
+field \ippmisc{FLAGS}.  When data from \ippprog{psphot} is loaded into
+a DVO database \citep{magnier2017.calibration}, these values are
+stored in the field \code{Measure.photFlags} and exposed in the public
+database \citep[PSPS][]{flewelling2017} in the fields
+\code{Detection.infoFlag}, \code{StackObjectThin.XinfoFlag} (where
+\code{X} is one of {$grizy$}), and
+\code{ForcedWarpMeasurement.FinfoFlag}.
+%
+Table~\ref{tab:det_flag2_values} lists the flags recorded in the
+output field \ippmisc{FLAGS2}.  When data from \ippprog{psphot} is
+loaded into a DVO database \citep{magnier2017.calibration}, these
+values are not currently loaded, but they are exposed in PSPS in the fields
+\code{Detection.infoFlag2}, \code{StackObjectThin.XinfoFlag2} (where
+\code{X} is one of {$grizy$}), and
+\code{ForcedWarpMeasurement.FinfoFlag2}.
+
+\begin{table*}
+\begin{center}
+\footnotesize
+\caption{\label{tab:det_flag_values} \nocode{psphot} Detection Flag Values \#1} % \vspace{-0.5cm}
+\begin{tabular}{lrl}
+\hline
+\hline
+{\bf Flag Name} & {\bf Flag Value} & {\bf Description} \\
+\hline
+    PM\_SOURCE\_MODE\_PSFMODEL         	  & 0x00000001 & Source fitted with a psf model (linear or non-linear) \\
+    PM\_SOURCE\_MODE\_EXTMODEL         	  & 0x00000002 & Source fitted with an extended-source model \\
+    PM\_SOURCE\_MODE\_FITTED           	  & 0x00000004 & Source fitted with non-linear model (PSF or EXT; good or bad) \\
+    PM\_SOURCE\_MODE\_FAIL             	  & 0x00000008 & Fit (non-linear) failed (non-converge, off-edge, run to zero) \\
+    PM\_SOURCE\_MODE\_POOR             	  & 0x00000010 & Fit succeeds, but low-SN, high-Chisq, or large (for PSF -- drop?) \\
+    PM\_SOURCE\_MODE\_PAIR             	  & 0x00000020 & Source fitted with a double psf \\
+    PM\_SOURCE\_MODE\_PSFSTAR          	  & 0x00000040 & Source used to define PSF model \\
+    PM\_SOURCE\_MODE\_SATSTAR          	  & 0x00000080 & Source model peak is above saturation \\
+    PM\_SOURCE\_MODE\_BLEND            	  & 0x00000100 & Source is a blend with other sources \\
+    PM\_SOURCE\_MODE\_EXTERNAL         	  & 0x00000200 & Source based on supplied input position \\
+    PM\_SOURCE\_MODE\_BADPSF           	  & 0x00000400 & Failed to get good estimate of object's PSF \\
+    PM\_SOURCE\_MODE\_DEFECT           	  & 0x00000800 & Source is thought to be a defect \\
+    PM\_SOURCE\_MODE\_SATURATED        	  & 0x00001000 & Source is thought to be saturated pixels (bleed trail) \\
+    PM\_SOURCE\_MODE\_CR\_LIMIT           & 0x00002000 & Source has crNsigma above limit \\
+    PM\_SOURCE\_MODE\_EXT\_LIMIT          & 0x00004000 & Source has extNsigma above limit \\
+    PM\_SOURCE\_MODE\_MOMENTS\_FAILURE    & 0x00008000 & could not measure the moments \\
+    PM\_SOURCE\_MODE\_SKY\_FAILURE        & 0x00010000 & could not measure the local sky \\
+    PM\_SOURCE\_MODE\_SKYVAR\_FAILURE     & 0x00020000 & could not measure the local sky variance \\
+    PM\_SOURCE\_MODE\_BELOW\_MOMENTS\_SN  & 0x00040000 & moments not measured due to low S/N \\
+    PM\_SOURCE\_MODE\_BIG\_RADIUS         & 0x00100000 & poor moments for small radius, try large radius \\
+    PM\_SOURCE\_MODE\_AP\_MAGS            & 0x00200000 & source has an aperture magnitude \\
+    PM\_SOURCE\_MODE\_BLEND\_FIT          & 0x00400000 & source was fitted as a blend \\
+    PM\_SOURCE\_MODE\_EXTENDED\_FIT       & 0x00800000 & full extended fit was used \\
+    PM\_SOURCE\_MODE\_EXTENDED\_STATS     & 0x01000000 & extended aperture stats calculated \\
+    PM\_SOURCE\_MODE\_LINEAR\_FIT         & 0x02000000 & source fitted with the linear fit \\
+    PM\_SOURCE\_MODE\_NONLINEAR\_FIT      & 0x04000000 & source fitted with the non-linear fit \\
+    PM\_SOURCE\_MODE\_RADIAL\_FLUX        & 0x08000000 & radial flux measurements calculated \\
+    PM\_SOURCE\_MODE\_SIZE\_SKIPPED       & 0x10000000 & size could not be determined \\
+    PM\_SOURCE\_MODE\_ON\_SPIKE           & 0x20000000 & peak lands on diffraction spike \\
+    PM\_SOURCE\_MODE\_ON\_GHOST           & 0x40000000 & peak lands on ghost or glint \\
+    PM\_SOURCE\_MODE\_OFF\_CHIP           & 0x80000000 & peak lands off edge of chip \\
+\hline
+\end{tabular}
+\end{center}
+\end{table*}
+
+\begin{table*}
+\begin{center}
+\footnotesize
+\caption{\label{tab:det_flag2_values} \nocode{psphot} Detection Flag Values \#2} % \vspace{-0.5cm}
+\begin{tabular}{lrl}
+\hline
+\hline
+{\bf Flag Name} & {\bf Flag Value} & {\bf Description} \\
+\hline
+PM\_SOURCE\_MODE2\_DIFF\_WITH\_SINGLE 	   & 0x00000001 & diff source matched to a single positive detection \\
+PM\_SOURCE\_MODE2\_DIFF\_WITH\_DOUBLE 	   & 0x00000002 & diff source matched to positive detections in both images \\
+PM\_SOURCE\_MODE2\_MATCHED          	   & 0x00000004 & source generated based on another image \\
+PM\_SOURCE\_MODE2\_ON\_SPIKE         	   & 0x00000008 & $> 25\%$ of (PSF-weighted) pixels land on diffraction spike \\
+PM\_SOURCE\_MODE2\_ON\_STARCORE      	   & 0x00000010 & $> 25\%$ of (PSF-weighted) pixels land on starcore \\
+PM\_SOURCE\_MODE2\_ON\_BURNTOOL      	   & 0x00000020 & $> 25\%$ of (PSF-weighted) pixels land on burntool \\
+PM\_SOURCE\_MODE2\_ON\_CONVPOOR      	   & 0x00000040 & $> 25\%$ of (PSF-weighted) pixels land on convpoor \\
+PM\_SOURCE\_MODE2\_PASS1\_SRC              & 0x00000080 & source detected in first pass analysis \\
+PM\_SOURCE\_MODE2\_HAS\_BRIGHTER\_NEIGHBOR & 0x00000100 & peak is not the brightest in its footprint \\
+PM\_SOURCE\_MODE2\_BRIGHT\_NEIGHBOR\_1     & 0x00000200 & $flux_{\rm n} / (r^2 flux_{\rm p}) > 1$ \\
+PM\_SOURCE\_MODE2\_BRIGHT\_NEIGHBOR\_10    & 0x00000400 & $flux_{\rm n} / (r^2 flux_{\rm p}) > 10$ \\
+PM\_SOURCE\_MODE2\_DIFF\_SELF\_MATCH   	   & 0x00000800 & positive detection match is probably this source \\
+PM\_SOURCE\_MODE2\_SATSTAR\_PROFILE        & 0x00001000 & saturated source is modeled with a radial profile \\
+PM\_SOURCE\_MODE2\_ECONTOUR\_FEW\_PTS      & 0x00002000 & too few points to measure the elliptical contour \\
+PM\_SOURCE\_MODE2\_RADBIN\_NAN\_CENTER     & 0x00004000 & radial bins failed with too many NaN center bin \\
+PM\_SOURCE\_MODE2\_PETRO\_NAN\_CENTER      & 0x00008000 & petrosian radial bins failed with too many NaN center bin \\
+PM\_SOURCE\_MODE2\_PETRO\_NO\_PROFILE      & 0x00010000 & petrosian not build because radial bins missing \\
+PM\_SOURCE\_MODE2\_PETRO\_INSIG\_RATIO     & 0x00020000 & insignificant measurement of petrosian ratio \\
+PM\_SOURCE\_MODE2\_PETRO\_RATIO\_ZEROBIN   & 0x00040000 & petrosian ratio in the 0th bin (likely bad) \\
+PM\_SOURCE\_MODE2\_EXT\_FITS\_RUN          & 0x00080000 & we attempted to run extended fits on this source \\
+PM\_SOURCE\_MODE2\_EXT\_FITS\_FAIL         & 0x00100000 & at least one of the model fits failed \\
+PM\_SOURCE\_MODE2\_EXT\_FITS\_RETRY        & 0x00200000 & one of the model fits was re-tried with new window \\
+PM\_SOURCE\_MODE2\_EXT\_FITS\_NONE         & 0x00400000 & ALL of the model fits failed \\
+\hline
+\end{tabular}
+\end{center}
+\end{table*}
 
 \subsection{Image Preparation}
@@ -1296,5 +1405,8 @@
 radial bin, we determine the median of the log-flux.  This median
 profile is then interpolated to generate the full radial flux
-distribution.
+distribution.  Note that in the case of very saturated stars, pixels
+in the central regions are largely masked, because they are
+saturated.  Thus in these cases, the psf-weighted masked fraction (see
+Section~\ref{XX}) is generally quite low or 0.0.
 
 % logRdel = 0.1
@@ -2572,2 +2684,72 @@
 % ppImage
 % ppSub
+
+
+kukui: foreach f (`grep PM_SOURCE ~/src/kukui/panstarrs/ipp-trunk/psModules/src/objects/pmSourceMasks.h | grep -v "^#" | prcol 1`) 
+foreach? echo --- $f ---
+foreach? grep $f */*.tex
+foreach? end
+--- PM_SOURCE_MODE_DEFAULT ---
+--- PM_SOURCE_MODE_PSFMODEL ---
+--- PM_SOURCE_MODE_EXTMODEL ---
+--- PM_SOURCE_MODE_FITTED ---
+--- PM_SOURCE_MODE_FAIL ---
+ps1.analysis/analysis.tex:flags the object with the bad bit \code{PM_SOURCE_MODE_FAIL}.  It is
+ps1.analysis/analysis.tex:non-linear PSF fit (\code{PM_SOURCE_MODE_FAIL}).
+--- PM_SOURCE_MODE_POOR ---
+ps1.analysis/analysis.tex:the flag bit (\code{PM_SOURCE_MODE_POOR}).
+--- PM_SOURCE_MODE_PAIR ---
+--- PM_SOURCE_MODE_PSFSTAR ---
+--- PM_SOURCE_MODE_SATSTAR ---
+ps1.analysis/analysis.tex:non-linear PSF model fit (\code{PM_SOURCE_MODE_SATSTAR}).  Among these
+ps1.analysis/analysis.tex:saturated stars (\code{PM_SOURCE_MODE_SATSTAR}).  These model fits
+--- PM_SOURCE_MODE_BLEND ---
+--- PM_SOURCE_MODE_EXTERNAL ---
+--- PM_SOURCE_MODE_BADPSF ---
+--- PM_SOURCE_MODE_DEFECT ---
+--- PM_SOURCE_MODE_SATURATED ---
+--- PM_SOURCE_MODE_CR_LIMIT ---
+--- PM_SOURCE_MODE_EXT_LIMIT ---
+--- PM_SOURCE_MODE_MOMENTS_FAILURE ---
+--- PM_SOURCE_MODE_SKY_FAILURE ---
+--- PM_SOURCE_MODE_SKYVAR_FAILURE ---
+--- PM_SOURCE_MODE_BELOW_MOMENTS_SN ---
+--- PM_SOURCE_MODE_BIG_RADIUS ---
+--- PM_SOURCE_MODE_AP_MAGS ---
+--- PM_SOURCE_MODE_BLEND_FIT ---
+--- PM_SOURCE_MODE_EXTENDED_FIT ---
+--- PM_SOURCE_MODE_EXTENDED_STATS ---
+--- PM_SOURCE_MODE_LINEAR_FIT ---
+--- PM_SOURCE_MODE_NONLINEAR_FIT ---
+--- PM_SOURCE_MODE_RADIAL_FLUX ---
+--- PM_SOURCE_MODE_SIZE_SKIPPED ---
+--- PM_SOURCE_MODE_ON_SPIKE ---
+--- PM_SOURCE_MODE_ON_GHOST ---
+--- PM_SOURCE_MODE_OFF_CHIP ---
+--- PM_SOURCE_MODE2_DEFAULT ---
+--- PM_SOURCE_MODE2_DIFF_WITH_SINGLE ---
+ps1.analysis/analysis.tex:\code{PM_SOURCE_MODE2_DIFF_WITH_SINGLE = 0x00000001} is raised, while
+--- PM_SOURCE_MODE2_DIFF_WITH_DOUBLE ---
+ps1.analysis/analysis.tex:\code{PM_SOURCE_MODE2_DIFF_WITH_DOUBLE = 0x00000002} raised. 
+--- PM_SOURCE_MODE2_MATCHED ---
+--- PM_SOURCE_MODE2_ON_SPIKE ---
+--- PM_SOURCE_MODE2_ON_STARCORE ---
+--- PM_SOURCE_MODE2_ON_BURNTOOL ---
+--- PM_SOURCE_MODE2_ON_CONVPOOR ---
+--- PM_SOURCE_MODE2_PASS1_SRC ---
+--- PM_SOURCE_MODE2_HAS_BRIGHTER_NEIGHBOR ---
+--- PM_SOURCE_MODE2_BRIGHT_NEIGHBOR_1 ---
+--- PM_SOURCE_MODE2_BRIGHT_NEIGHBOR_10 ---
+--- PM_SOURCE_MODE2_DIFF_SELF_MATCH ---
+ps1.analysis/analysis.tex:$\sigma$, then the bit \code{PM_SOURCE_MODE2_DIFF_SELF_MATCH =
+--- PM_SOURCE_MODE2_SATSTAR_PROFILE ---
+--- PM_SOURCE_MODE2_ECONTOUR_FEW_PTS ---
+--- PM_SOURCE_MODE2_RADBIN_NAN_CENTER ---
+--- PM_SOURCE_MODE2_PETRO_NAN_CENTER ---
+--- PM_SOURCE_MODE2_PETRO_NO_PROFILE ---
+--- PM_SOURCE_MODE2_PETRO_INSIG_RATIO ---
+--- PM_SOURCE_MODE2_PETRO_RATIO_ZEROBIN ---
+--- PM_SOURCE_MODE2_EXT_FITS_RUN ---
+--- PM_SOURCE_MODE2_EXT_FITS_FAIL ---
+--- PM_SOURCE_MODE2_EXT_FITS_RETRY ---
+--- PM_SOURCE_MODE2_EXT_FITS_NONE ---
