IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 34712 for trunk


Ignore:
Timestamp:
Nov 27, 2012, 11:47:39 AM (14 years ago)
Author:
Serge CHASTEL
Message:

ppMops implementation details

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppTranslate/documentation/ICD/PSDC-940-005.tex

    r34696 r34712  
    99\newcommand{\outformatversion}{%
    1010  \texttt{PS1\_DV3}}
     11
     12\newcommand{\commentFrom}[4]{%
     13  \mbox{ }\\\null\hfill\begin{tabular}{|p{4in}}
     14    \hline
     15    \emph{Comment from {#1} (#2)}: {#3}\\
     16    \hline
     17    Answer: {#4}\\
     18    \hline
     19  \end{tabular}}
     20
     21\newcommand{\commentFromSC}[3]{%
     22  \commentFrom{SC}{#1}{#2}{#3}}
    1123
    1224% basic document variables
     
    10001012\end{center}
    10011013
     1014%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     1015\newpage
     1016\section{\texttt{ppMops} Implementation Details}
     1017\label{sec-ppmops}
     1018
     1019\subsection{Source Code}
     1020\label{sec-ppmops-sourcecode}
     1021
     1022The \texttt{ppMops} source code can be found at
     1023\url{https://svn.pan-starrs.ifa.hawaii.edu/repo/ipp/trunk/ppTranslate}. The
     1024SVN revision of the analyzed code as well as the corresponding
     1025software version depends on the version of this document and can be
     1026found in the History subsection (see subsection
     1027\ref{sec-ppmops-sourcecodehistory}).
     1028
     1029\subsection{Source Code Analysis History}
     1030\label{sec-ppmops-sourcecodehistory}
     1031\begin{tabular}{|c|c|c|p{2in}|c|c|}
     1032  \hline
     1033  \parbox{.5in}{Doc Version} & Date & Author & Description & SVN Rev. & \parbox{.5in}{Software Version}\\
     1034  \hline
     1035  \hline
     1036  --- & 2012-09-14 & SC & Creation & 34439 & 3\footnotemark{}\\
     1037  \hline
     1038\end{tabular}\footnotetext{Modified version 3}
     1039
     1040\subsection{Main}
     1041Source code: \texttt{src/ppMops.c}.
     1042
     1043\texttt{ppMops} can be run on the command line independently from the
     1044IPP framework. It is functionnally made of four parts:
     1045\begin{enumerate}
     1046\item Analyzing the command-line arguments (see subsection
     1047  \ref{sec-implementation-args});
     1048\item Reading the detections from the input diff files and the exposure
     1049  parameters (see subsection \ref{sec-implementation-read});
     1050\item Removing the duplicated detections (see subsection
     1051  \ref{sec-implementation-merge});
     1052\item Writing the products (see subsection
     1053  \ref{sec-implementation-write});
     1054\end{enumerate}
     1055
     1056\subsection{Command-Line Arguments Analysis}
     1057\label{sec-implementation-args}
     1058
     1059Source code: \texttt{src/ppMopsArguments.c}.
     1060
     1061\subsubsection{Parameters}
     1062
     1063There are only two mandatory arguments:
     1064\begin{enumerate}
     1065\item The first argument is a filename. The associated file contains
     1066  the list of the names of all the diff files that will be used as
     1067  input. For simplicity, we will identify that list by:
     1068  \texttt{list\_of\_diffs\_inputs}.
     1069\item The second argument is the name of the output file. We will call
     1070  it \texttt{output\_file\_name}.
     1071\end{enumerate}
     1072
     1073The following parameters can be taken from the command line arguments
     1074options (if they are provided, otherwise they take the default value):
     1075\begin{itemize}
     1076\item \texttt{exp\_name}: exposure name (default: NULL);
     1077\item \texttt{exp\_id}: Exposure identifier (IPP internal; default: 0);
     1078\item \texttt{chip\_id}: Chip stage identifier (IPP internal; default: 0);
     1079\item \texttt{cam\_id}: Camera stage identifier (IPP internal; default: 0);
     1080\item \texttt{fake\_id}: Fake stage identifier (IPP internal; default: 0);
     1081\item \texttt{warp\_id}: Warp stage identifier (IPP internal; default: 0);
     1082\item \texttt{diff\_id}: Diff stage identifier (IPP internal; default: 0);
     1083\item \texttt{inverse}: Inverse subtraction (boolean; default: false);
     1084\item \texttt{zp}: Magnitude zero point (default: NAN);
     1085\item \texttt{zp\_error}: Error in magnitude zero point (default: NAN);
     1086\item \texttt{astrom\_rms}: Astrometric solution RMS (default: NAN);
     1087\item \texttt{version}: CMF file version (default: 0);
     1088\end{itemize}
     1089
     1090\subsubsection{Parameters Values Validation}
     1091\begin{itemize}
     1092\item If the list of input file names is empty, an error is displayed
     1093  and \texttt{ppMops} exits.
     1094\item There is no check on the validity of the different parameters
     1095  (values, files existence...).
     1096\end{itemize}
     1097
     1098\subsection{Reading Detections}
     1099\label{sec-implementation-read}
     1100
     1101Source code: \texttt{src/ppMopsRead.c}.
     1102
     1103Each file from the \texttt{list\_of\_diffs\_inputs} is opened. A
     1104\texttt{ppMopsDetections} object is populated from the data that are
     1105read from that file. The set (namely a \texttt{psArray}) of all the
     1106valid \texttt{ppMopsDetections} objects is the product of this part.
     1107
     1108The data which are extracted from each file are the following:
     1109\begin{itemize}
     1110\item From the header are extracted:
     1111  \begin{itemize}
     1112  \item \texttt{diffSkyfileId}: Its value is
     1113    associated to the keyword \texttt{IMAGEID}. If not present or 0, the
     1114    program exits with an error.
     1115  \item The current diff version is derived from the value associated
     1116    to EXTTYPE. If the \texttt{version} has not already been set, it
     1117    is set to the value which has just been read. If it was set at
     1118    some point (either through the command line, or from a previous
     1119    input), the current diff version value is checked against the
     1120    \texttt{version}. Different values will produce warning messages.
     1121  \item \texttt{raBoresight} is given the value associated to
     1122    \texttt{FPA.RA};
     1123  \item \texttt{decBoresight} is given the value associated to
     1124    \texttt{FPA.DEC};
     1125  \item \texttt{filter} is given the value associated to
     1126    \texttt{FPA.FILTER};
     1127  \item \texttt{airmass} is given the value associated to
     1128    \texttt{AIRMASS};
     1129  \item \texttt{exptime} is given the value associated to
     1130    \texttt{EXPTIME};
     1131  \item \texttt{posangle} is given the value associated to
     1132    \texttt{FPA.POSANGLE};
     1133  \item \texttt{alt} is given the value associated to
     1134    \texttt{FPA.ALT};
     1135  \item \texttt{az} is given the value associated to
     1136    \texttt{FPA.AZ};
     1137  \item \texttt{mjd} is computed from the \texttt{mjdobs} value
     1138    associated to \texttt{MJD-OBS} by: \[\mathtt{mjd} = \mathtt{mjdobs} +
     1139    \frac{\mathtt{exptime}}{2*3600*24}\]
     1140  \item \texttt{seeing} is initialized (note that it is modified in
     1141    the loop over the valid detections) using
     1142    $\mathtt{fwhm}_\mathtt{maj}$ (wrt $\mathtt{fwhm}_\mathtt{min}$)
     1143    associated to the keyword \texttt{FWHM\_MAJ} (wrt
     1144    \texttt{FWHM\_MIN});
     1145  \item \texttt{naxis1} is set to the value associated to
     1146    \texttt{IMNAXIS1}, that is the number of columns of the original
     1147    image;
     1148  \item \texttt{naxis2} is set to the value associated to
     1149    \texttt{IMNAXIS2}, that is the number of rows of the original
     1150    image;
     1151  \end{itemize}
     1152\item From the \texttt{SkyChip.psf} extension:
     1153  \begin{itemize}
     1154  \item This extension contains all the detections. One row is
     1155    associated to each detection.
     1156  \item A detection is rejected if at least one of the following
     1157    parameters has an non-finite value: \texttt{x}, \texttt{y},
     1158    \texttt{ra}, \texttt{dec}, \texttt{mag}, \texttt{magErr},
     1159    \texttt{xErr}, \texttt{yErr}, \texttt{scale}, \texttt{angle}.
     1160  \item A detection is rejected if its associated \texttt{flags}
     1161    matches:
     1162    {\small
     1163    \texttt{PM\_SOURCE\_MODE\_FAIL | PM\_SOURCE\_MODE\_BADPSF |
     1164      PM\_SOURCE\_MODE\_SATURATED | PM\_SOURCE\_MODE\_CR\_LIMIT |
     1165      PM\_SOURCE\_MODE\_SKY\_FAILURE}}
     1166  \item \texttt{x} is associated to the \texttt{X\_PSF} keyword;
     1167  \item \texttt{y} is associated to the \texttt{Y\_PSF} keyword;
     1168  \item \texttt{ra} is associated to the \texttt{RA\_PSF} keyword. It
     1169    is converted to radians;
     1170  \item \texttt{dec} is associated to the \texttt{DEC\_PSF} keyword. It
     1171    is converted to radians;
     1172  \item \texttt{mag} is computed from the value associated the
     1173    \texttt{PSF\_INST\_MAG} keyword, namely:
     1174    \[
     1175    \mathtt{mag} = \mathtt{PSF\_INST\_MAG} + \mathtt{zp}
     1176    \]
     1177    where \texttt{zp} is defined in the arguments list (see subsection
     1178    \ref{sec-implementation-args});
     1179  \item \texttt{magErr} is associated to the
     1180    \texttt{PSF\_INST\_MAG\_SIG} keyword;
     1181  \item \texttt{xErr} is associated to the \texttt{X\_PSF\_SIG}
     1182    keyword;
     1183  \item \texttt{yErr} is associated to the \texttt{Y\_PSF\_SIG}
     1184    keyword;
     1185  \item \texttt{scale} is associated to the \texttt{PLTSCALE}
     1186    keyword;
     1187  \item \texttt{angle} is associated to the \texttt{POSANGLE}
     1188    keyword;
     1189  \item \texttt{flags} is associated to the \texttt{FLAGS} keyword;
     1190  \item \texttt{raErr} is defined by:
     1191    \[
     1192    \mathtt{raErr} = \frac{\mathtt{scale}}{3600}
     1193    \sqrt{\cos^2(\mathtt{angle}) \mathtt{xErr}^2 +
     1194      \sin^2(\mathtt{angle}) \mathtt{yErr}^2}
     1195    \]
     1196  \item \texttt{decErr} is defined by:
     1197    \[
     1198    \mathtt{decErr} = \frac{\mathtt{scale}}{3600}
     1199    \sqrt{\sin^2(\mathtt{angle}) \mathtt{xErr}^2 +
     1200      \cos^2(\mathtt{angle}) \mathtt{yErr}^2}
     1201    \]
     1202  \end{itemize}
     1203\item \texttt{seeing} is defined as the product of the mean of
     1204  $\mathtt{fwhm}_\mathtt{maj}$ and $\mathtt{fwhm}_\mathtt{min}$ by the
     1205  mean of the \texttt{scale} values for valid detections, that is:
     1206  \[
     1207  \mathtt{seeing} = \frac{\mathtt{fwhm}_\mathtt{maj} +
     1208    \mathtt{fwhm}_\mathtt{min}}{2} \times \frac{\sum_{\mathtt{valid\
     1209        detections}}(scale)}{\#(\mathtt{valid\ detections})}
     1210  \]
     1211\item The number of valid detections is also kept (but not used).
     1212\item For each row of the \texttt{SkyChip.xfit} extension:
     1213  \begin{itemize}
     1214  \item This extension contains only a subset of the detections. Each
     1215    row contains the index of the current detection which is the value
     1216    associated to the keyword \texttt{IPP\_IDET};
     1217  \item Note that detections parameters whose index could not be found
     1218    in the \texttt{SkyChip.xfit} extension are set to NaN.
     1219  \item The following columns are extracted \texttt{X\_EXT},
     1220    \texttt{Y\_EXT}, \texttt{X\_EXT\_SIG}, \texttt{Y\_EXT\_SIG},
     1221    \texttt{EXT\_INST\_MAG}, \texttt{EXT\_INST\_MAG\_SIG},
     1222    \texttt{NPARAMS}, \texttt{EXT\_WIDTH\_MAJ}, \texttt{EXT\_WIDTH\_MIN},
     1223    \texttt{EXT\_THETA}, \texttt{EXT\_WIDTH\_MAJ\_ERR},
     1224    \texttt{EXT\_WIDTH\_MIN\_ERR}, and \texttt{EXT\_THETA\_ERR}. No check is
     1225    performed on them at this stage.
     1226  \end{itemize}
     1227\end{itemize}
     1228
     1229At the end of this stage, all input files have been used to populate a
     1230collection of sets of detections. Let us call that collection $({\cal
     1231  D}_{i})_{i \in \{1..n\}}$. Each of those sets contains data read
     1232from one file and it is important to note that only a few checks have
     1233been performed on the data (more precisely, only non-masked detections
     1234which have defined values have been inserted). The following cases can
     1235therefore happen: (1) Any ${\cal D}_i$ can be "empty", that is, does
     1236not contain any valdiated detection; (2) Some parameters like
     1237\texttt{seeing} can have an undefined value (e.g. \texttt{NaN}).
     1238
     1239\subsection{Merging Detections}
     1240\label{sec-implementation-merge}
     1241
     1242Source code: \texttt{src/ppMopsMerge.c}.
     1243
     1244That part of the code essentially uses a kd-tree implementation to
     1245compare distances between detections. The collection of sets of
     1246detections will be called $({\cal D}_{i})_{i \in \{1..n\}}$ (see
     1247previous section).
     1248
     1249\subsubsection{Checks}
     1250\label{sec-implementation-merge-checks}
     1251
     1252Checks are performed on data that have been extracted from FITS files
     1253headers. Namely, they are:
     1254\begin{itemize}
     1255\item \texttt{raBoresight} constancy across all the detections;
     1256\item \texttt{decBoresight} constancy across all the detections;
     1257\item \texttt{filter} constancy across all the detections;
     1258\item \texttt{airmass} constancy across all the detections;
     1259\item \texttt{exptime} constancy across all the detections;
     1260\item \texttt{posangle} constancy across all the detections;
     1261\item \texttt{alt} constancy across all the detections;
     1262\item \texttt{az} constancy across all the detections;
     1263\item \texttt{mjd} constancy across all the detections;
     1264\end{itemize}
     1265
     1266Any inconsistency displays an error and the program exits.
     1267
     1268\subsubsection{kd-Tree Merging}
     1269\label{sec-implementation-merge-kdtree}
     1270
     1271All valid detections are inserted into a kd-tree (using the
     1272\texttt{psTree} implementation). \texttt{ra} and \texttt{dec} are used
     1273as keys for the nearest neighbor search. An iteration over all valid
     1274detections is then performed.
     1275
     1276The detection in a 1 arcsec neighborhood around the current valid
     1277detection which is the closest to the image center is chosen as the
     1278best candidate for the source. Then, the best of the candidates is
     1279chosen as the source. All other detections are considered duplicates,
     1280and marked as invalid, then removed from the detections set to which
     1281they belong.
     1282
     1283Note that \texttt{numGood} which is supposed to give the number of
     1284valid detections is not updated.
     1285
     1286\subsection{Writing Final Product}
     1287\label{sec-implementation-write}
     1288
     1289Source code: \texttt{src/ppMopsWrite.c}.
     1290
     1291To resolve any ambiguity, we will note the parameter named
     1292\texttt{param} which was built for the set of detections ${\cal
     1293  D}_{i}$ will be denoted by ${\cal D}_{i}(\mathtt{param})$.
     1294
     1295Note that, except for the parameters that have been checked at the
     1296merge stage (see paragraph~\ref{sec-implementation-merge-checks}),
     1297there is no guarantee that ${\cal D}_{i}(\mathtt{param}) = {\cal
     1298  D}_{j}(\mathtt{param})$ when $i \neq j$. There is no guarantee to
     1299that ${\cal D}_{i}(\mathtt{param})$ is defined (in the mathematical
     1300sense), e.g. it could be \texttt{NaN}...
     1301
     1302%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     1303\subsubsection{Exposure Parameters: Header Details}
     1304\label{sec-implementation-write-header}
     1305
     1306The first set of detections among the $({\cal D}_{i})_i$ that contains
     1307at least one valid detection is chosen. To fix ideas, let us denote
     1308it by ${\cal D}_{i_0}$.
     1309
     1310The following parameters are written to the product FITS header:
     1311
     1312\begin{itemize}
     1313\item \texttt{SWSOURCE} (Software source): Constructed from the SVN
     1314  repository value. Generated when compiled.
     1315\item \texttt{SWVERSN} (Software version): Constructed from the SVN
     1316  version value. Generated when compiled.
     1317\item \texttt{EXP\_NAME} (Exposure name): Set by \texttt{exp\_name}
     1318  argument value;
     1319\item \texttt{EXP\_ID} (Exposure identifier): Set by \texttt{exp\_id}
     1320  argument value;
     1321\item \texttt{CHIP\_ID} (Chip stage identifier): Set by
     1322  \texttt{chip\_id} argument value;
     1323\item \texttt{CAM\_ID} (Cam stage identifier): Set by \texttt{cam\_id}
     1324  argument value;
     1325\item \texttt{FAKE\_ID} (Fake stage identifier): Set by
     1326  \texttt{fake\_id} argument value;
     1327\item \texttt{WARP\_ID} (Warp stage identifier): Set by
     1328  \texttt{warp\_id} argument value;
     1329\item \texttt{DIFF\_ID} (Diff stage identifier): Set by
     1330  \texttt{diff\_id} argument value;
     1331\item \texttt{DIFF\_POS} (Positive subtraction): Set by
     1332  \texttt{inverse} argument value;
     1333\item \texttt{MJD-OBS} (MJD of exposure midpoint): Set by ${\cal
     1334    D}_{i_0}(\mathtt{mjd})$. Uniqueness guaranteed by
     1335  \ref{sec-implementation-merge-checks};
     1336\item \texttt{RA} (Right Ascension of boresight): Set by ${\cal
     1337    D}_{i_0}(\mathtt{raBoresight})$. Uniqueness guaranteed by
     1338  \ref{sec-implementation-merge-checks};
     1339\item \texttt{DEC} (Declination of boresight): Set by ${\cal
     1340    D}_{i_0}(\mathtt{decBoresight})$. Uniqueness guaranteed by
     1341  \ref{sec-implementation-merge-checks};
     1342\item \texttt{TEL\_ALT} (Telescope altitude): Set by ${\cal
     1343    D}_{i_0}(\mathtt{alt})$. Uniqueness guaranteed by
     1344  \ref{sec-implementation-merge-checks};
     1345\item \texttt{TEL\_AZ} (Telescope azimuth): Set by ${\cal
     1346    D}_{i_0}(\mathtt{az})$. Uniqueness guaranteed by
     1347  \ref{sec-implementation-merge-checks};
     1348\item \texttt{EXPTIME} (Exposure time (sec)): Set by ${\cal
     1349    D}_{i_0}(\mathtt{exptime})$. Uniqueness guaranteed by
     1350  \ref{sec-implementation-merge-checks};
     1351\item \texttt{ROTANGLE} (Rotator position angle): Set by ${\cal
     1352    D}_{i_0}(\mathtt{rotangle})$. Uniqueness guaranteed by
     1353  \ref{sec-implementation-merge-checks};
     1354\item \texttt{FILTER} (Filter name): Set by ${\cal
     1355    D}_{i_0}(\mathtt{filter})$. Uniqueness guaranteed by
     1356  \ref{sec-implementation-merge-checks};
     1357\item \texttt{AIRMASS} (Airmass of exposure): Set by ${\cal
     1358    D}_{i_0}(\mathtt{airmass})$. Uniqueness guaranteed by
     1359  \ref{sec-implementation-merge-checks};
     1360\item \texttt{SEEING} (Mean seeing): Set by the median of defined (not
     1361  \texttt{NaN}, not \texttt{Infinity}) of $({\cal
     1362    D}_{i}(\mathtt{seeing}))_i$;
     1363  \commentFromSC{2012-09-18}{Check if it is what we
     1364    really expect. Take the example of 3 set of detections for which
     1365    \texttt{seeing} is defined, assuming the first one contains 1000
     1366    detections with a \texttt{seeing} of 1.0, the second one contains
     1367    10 detections with a \texttt{seeing} of 2.0, the third one 10
     1368    detections with a \texttt{seeing} of 3.0. Do we really want the
     1369    global \texttt{seeing} value to be 2.0?}{}
     1370\item \texttt{OBSCODE} (IAU Observatory code): Hard-coded value
     1371  defined in \texttt{src/ppMops.h} (value \texttt{F51});
     1372  \commentFromSC{2012-09-18}{I'm surprised that it's defined locally
     1373    and not in some high-level project header file}{}
     1374\item \texttt{MAGZP} (Magnitude zero point): Set by \texttt{zp}
     1375  argument value;
     1376\item \texttt{MAGZPERR} (Error in magnitude zero point): Set by
     1377  \texttt{zp\_error} argument value;
     1378\item \texttt{ASTRORMS} (Error in magnitude zero point): Set by
     1379  \texttt{astrom\_rms} argument value;
     1380\item \texttt{CMFVERSION} (CMF version): Set by \texttt{version}
     1381  argument value but possibly modified by first \texttt{EXTTYPE}
     1382  value;
     1383  \commentFromSC{2012-09-18}{Depends on the order of the input FITS
     1384    file and their \texttt{EXTTYPE} value (e.g. if \texttt{-version 0}
     1385    is used as argument and two files are used, one with
     1386    \texttt{EXTTYPE} of 1, the other with \texttt{EXTTYPE} of
     1387    2). However we do not expect to have different values for
     1388    \texttt{EXTTYPE}, do we?}{}
     1389\end{itemize}
     1390
     1391%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     1392\subsubsection{Detection Parameters: Extension Details}
     1393\label{sec-implementation-write-detection}
     1394
     1395If no detection is present in any detections set, an extension is
     1396still created and contains exactly one row of undefined values
     1397(\texttt{NaN} for floating-point data, 0 for integral types).
     1398
     1399To resolve any ambiguity, we will note the parameter named
     1400\texttt{param} which was built for the detection $j$ in the set of
     1401detections ${\cal D}_{i}$ will be denoted by ${\cal
     1402  D}_{ij}(\mathtt{param})$ where \texttt{param} was defined in
     1403paragraph~\ref{sec-implementation-read}. When the \texttt{param}
     1404parameter is the exact copy of the value associated to the keyword
     1405\texttt{INPUT\_KEY}, we will write it as ${\cal
     1406  D}_{ij}(\mathtt{INPUT\_KEY})$ (note the use of the uppercase
     1407letters).
     1408
     1409For each detection $j$ in each detections set ${\cal D}_{i}$, the
     1410following products are written to the output FITS file:
     1411\begin{itemize}
     1412\item \texttt{RA} associated to ${\cal D}_{ij}(\mathtt{ra})$ (which is
     1413  identical to ${\cal D}_{ij}(\mathtt{RA\_PSF})$);
     1414\item \texttt{RA\_ERR} associated to ${\cal D}_{ij}(\mathtt{raErr})$;
     1415\item \texttt{DEC} associated to ${\cal D}_{ij}(\mathtt{dec})$ (which
     1416  is identical to ${\cal D}_{ij}(\mathtt{DEC\_PSF})$);
     1417\item \texttt{DEC\_ERR} associated to ${\cal
     1418    D}_{ij}(\mathtt{decErr})$;
     1419\item \texttt{MAG} associated to ${\cal D}_{ij}(\mathtt{mag})$;
     1420\item \texttt{MAG\_ERR} associated to ${\cal D}_{ij}(\mathtt{magErr})$
     1421  (which is identical to ${\cal
     1422    D}_{ij}(\mathtt{PSF\_INST\_MAG\_SIG})$);
     1423\item \texttt{PSF\_CHI2} associated to ${\cal
     1424    D}_{ij}(\mathtt{PSF\_CHISQ})$;
     1425\item \texttt{PSF\_DOF} associated to ${\cal
     1426    D}_{ij}(\mathtt{PSF\_NDOF})$;
     1427\item \texttt{CR\_SIGNIFICANCE} associated to ${\cal
     1428    D}_{ij}(\mathtt{CR\_NSIGMA})$;
     1429\item \texttt{EXT\_SIGNIFICANCE} associated to ${\cal
     1430    D}_{ij}(\mathtt{EXT\_NSIGMA})$;
     1431\item \texttt{PSF\_MAJOR} associated to ${\cal
     1432    D}_{ij}(\mathtt{PSF\_MAJOR})$;
     1433\item \texttt{PSF\_MINOR} associated to ${\cal
     1434    D}_{ij}(\mathtt{PSF\_MINOR})$;
     1435\item \texttt{PSF\_THETA} associated to ${\cal
     1436    D}_{ij}(\mathtt{PSF\_THETA})$;
     1437\item \texttt{PSF\_QUALITY} associated to ${\cal
     1438    D}_{ij}(\mathtt{PSF\_QF})$;
     1439\item \texttt{PSF\_NPIX} associated to ${\cal
     1440    D}_{ij}(\mathtt{PSF\_NPIX})$;
     1441\item \texttt{MOMENTS\_XX} associated to ${\cal
     1442    D}_{ij}(\mathtt{MOMENTS\_XX})$;
     1443\item \texttt{MOMENTS\_XY} associated to ${\cal
     1444    D}_{ij}(\mathtt{MOMENTS\_XY})$;
     1445\item \texttt{MOMENTS\_YY} associated to ${\cal
     1446    D}_{ij}(\mathtt{MOMENTS\_YY})$;
     1447\item \texttt{N\_POS} associated to ${\cal
     1448    D}_{ij}(\mathtt{DIFF\_NPOS})$;
     1449\item \texttt{F\_POS} associated to ${\cal
     1450    D}_{ij}(\mathtt{DIFF\_FRATIO})$;
     1451\item \texttt{RATIO\_BAD} associated to ${\cal
     1452    D}_{ij}(\mathtt{DIFF\_NRATIO\_BAD})$;
     1453\item \texttt{RATIO\_MASK} associated to ${\cal
     1454    D}_{ij}(\mathtt{DIFF\_NRATIO\_MASK})$;
     1455\item \texttt{RATIO\_ALL} associated to ${\cal
     1456    D}_{ij}(\mathtt{DIFF\_NRATIO\_ALL})$;
     1457\item \texttt{FLAGS} associated to ${\cal D}_{ij}(\mathtt{FLAGS})$;
     1458\item \texttt{DIFF\_SKYFILE\_ID} associated to ${\cal
     1459    D}_{i}(\mathtt{diffSkyfileId})$ (that is, the \texttt{diff\_id} of
     1460  the file which was used to compute the difference);
     1461\item \texttt{IPP\_IDET} associated to ${\cal
     1462    D}_{ij}(\mathtt{IPP\_DET})$ (since it is the position of the
     1463  detection if the $i$th diff file, it is not very useful. However
     1464  gaps in the numbering show that detections have been removed.
     1465\item \texttt{PSF\_INST\_FLUX} associated to ${\cal
     1466    D}_{ij}(\mathtt{PSF\_INST\_FLUX})$;
     1467\item \texttt{PSF\_INST\_FLUX\_SIG} associated to ${\cal
     1468    D}_{ij}(\mathtt{PSF\_INST\_FLUX\_SIG})$;
     1469\item \texttt{AP\_MAG} associated to ${\cal D}_{ij}(\mathtt{AP\_MAG})$;
     1470\item \texttt{AP\_MAG\_RAW} associated to ${\cal
     1471    D}_{ij}(\mathtt{AP\_MAG\_RAW})$;
     1472\item \texttt{AP\_MAG\_RADIUS} associated to ${\cal
     1473    D}_{ij}(\mathtt{AP\_MAG\_RADIUS})$;
     1474\item \texttt{AP\_FLUX} associated to ${\cal D}_{ij}(\mathtt{AP\_FLUX})$;
     1475\item \texttt{AP\_FLUX\_SIG} associated to ${\cal
     1476    D}_{ij}(\mathtt{AP\_FLUX\_SIG})$;
     1477\item \texttt{PEAK\_FLUX\_AS\_MAG} associated to ${\cal
     1478    D}_{ij}(\mathtt{PEAK\_FLUX\_AS\_MAG})$;
     1479\item \texttt{CAL\_PSF\_MAG} associated to ${\cal
     1480    D}_{ij}(\mathtt{CAL\_PSF\_MAG})$;
     1481\item \texttt{CAL\_PSF\_MAG\_SIG} associated to ${\cal
     1482    D}_{ij}(\mathtt{CAL\_PSF\_MAG\_SIG})$;
     1483\item \texttt{SKY} associated to ${\cal D}_{ij}(\mathtt{SKY})$;
     1484\item \texttt{SKY\_SIGMA} associated to ${\cal D}_{ij}(\mathtt{SKY\_SIGMA})$;
     1485\item \texttt{PSF\_QF\_PERFECT} associated to ${\cal
     1486    D}_{ij}(\mathtt{PSF\_QF\_PERFECT})$;
     1487\item \texttt{MOMENTS\_R1} associated to ${\cal D}_{ij}(\mathtt{MOMENTS\_R1})$;
     1488\item \texttt{MOMENTS\_RH} associated to ${\cal D}_{ij}(\mathtt{MOMENTS\_RH})$;
     1489\item \texttt{KRON\_FLUX} associated to ${\cal D}_{ij}(\mathtt{KRON\_FLUX})$;
     1490\item \texttt{KRON\_FLUX\_ERR} associated to ${\cal
     1491    D}_{ij}(\mathtt{KRON\_FLUX\_ERR})$;
     1492\item \texttt{KRON\_FLUX\_INNER} associated to ${\cal
     1493    D}_{ij}(\mathtt{KRON\_FLUX\_INNER})$;
     1494\item \texttt{KRON\_FLUX\_OUTER} associated to ${\cal
     1495    D}_{ij}(\mathtt{KRON\_FLUX\_OUTER})$;
     1496\item \texttt{DIFF\_R\_P} associated to ${\cal
     1497    D}_{ij}(\mathtt{DIFF\_R\_P})$;
     1498\item \texttt{DIFF\_SN\_P} associated to ${\cal
     1499    D}_{ij}(\mathtt{DIFF\_SN\_P})$;
     1500\item \texttt{DIFF\_R\_M} associated to ${\cal
     1501    D}_{ij}(\mathtt{DIFF\_R\_M})$;
     1502\item \texttt{DIFF\_SN\_M} associated to ${\cal
     1503    D}_{ij}(\mathtt{DIFF\_SN\_M})$;
     1504\item \texttt{FLAGS2} associated to ${\cal D}_{ij}(\mathtt{FLAGS2})$;
     1505\item \texttt{N\_FRAMES} associated to ${\cal
     1506    D}_{ij}(\mathtt{N\_FRAMES})$;
     1507\item \texttt{PADDING} associated to ${\cal
     1508    D}_{ij}(\mathtt{PADDING})$;
     1509\item \texttt{X\_EXT} associated to ${\cal D}_{ij}(\mathtt{X\_EXT})$;
     1510\item \texttt{Y\_EXT} associated to ${\cal D}_{ij}(\mathtt{Y\_EXT})$;
     1511\item \texttt{X\_EXT\_SIG} associated to ${\cal
     1512    D}_{ij}(\mathtt{X\_EXT\_SIG})$;
     1513\item \texttt{Y\_EXT\_SIG} associated to ${\cal
     1514    D}_{ij}(\mathtt{Y\_EXT\_SIG})$;
     1515\item \texttt{EXT\_INST\_MAG} associated to ${\cal
     1516    D}_{ij}(\mathtt{EXT\_INST\_MAG})$;
     1517\item \texttt{EXT\_INST\_MAG\_SIG} associated to ${\cal
     1518    D}_{ij}(\mathtt{EXT\_INST\_MAG\_SIG})$;
     1519\item \texttt{NPARAMS} associated to ${\cal
     1520    D}_{ij}(\mathtt{NPARAMS})$;
     1521\item \texttt{EXT\_WIDTH\_MAJ} associated to ${\cal
     1522    D}_{ij}(\mathtt{EXT\_WIDTH\_MAJ})$;
     1523\item \texttt{EXT\_WIDTH\_MIN} associated to ${\cal
     1524    D}_{ij}(\mathtt{EXT\_WIDTH\_MIN})$;
     1525\item \texttt{EXT\_THETA} associated to ${\cal
     1526    D}_{ij}(\mathtt{EXT\_THETA})$;
     1527\item \texttt{EXT\_WIDTH\_MAJ\_ERR} associated to ${\cal
     1528    D}_{ij}(\mathtt{EXT\_WIDTH\_MAJ\_ERR})$;
     1529\item \texttt{EXT\_WIDTH\_MIN\_ERR} associated to ${\cal
     1530    D}_{ij}(\mathtt{EXT\_WIDTH\_MIN\_ERR})$;
     1531\item \texttt{EXT\_THETA\_ERR} associated to ${\cal
     1532    D}_{ij}(\mathtt{EXT\_THETA\_ERR})$;
     1533\end{itemize}
     1534
     1535\subsection{Testing}
     1536\label{sec-implementation-test}
     1537
     1538No test data have been provided.
     1539
     1540\commentFromSC{2012-09-18}{No data exists to test the software. It
     1541  would be good to make sure that the products are consistent at least
     1542  (1) From one software release to another; (2) From one software
     1543  execution to another; (3) To check if the product depends one the
     1544  order in which the input data are ingested and processed. Stress
     1545  tests could also be imagined, e.g. involving large data sets}{ }
     1546
     1547%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    10021548\newpage
    10031549\section{Obsolete Stuff?}
Note: See TracChangeset for help on using the changeset viewer.