\section{IMCA-CAT ADC Table at APS Sector 17}
%
\textit{Platforms: All}
\newline

The ADC table is designed to support a standard crystallography
goniostat.  At present, it is the support for an ADSC Quantum 105
detector system.  The geometry of the table is shown by the figure
below:
\begin{figure}
\MxPicture{adc_perspective_view}
\caption{IMCA-CAT ADC table geometry}
\end{figure}
The geometry is described further in a
\MxLink{docs/adc\_table.pdf}{technical note in PDF format}.
The note is also available in \MxLink{docs/adc\_table.ps}{Postscript}
if you prefer.

The MX table support for ADC tables uses two different kinds of records,
namely, an ADC specific table record described here and the generic
\MxInternalLink{table_motor}{table motor record}
described in the motor section.  

\subsection{Record Fields in the Record Description}

\begin{tabular}{|c|c|c|c|p{70mm}|}
\hline
\MxTextFieldName & \MxTextFieldType & \MxTextNumDimensions
	& \MxTextSizes & \MxTextDescription \\
\hline
\textit{name} & string & 1 & 16 & The name of the record \\
\hline
\textit{mx\_superclass} & recordtype & 0 & 0 & The string ``device'' \\
\hline
\textit{mx\_class} & recordtype & 0 & 0 & The string ``table'' \\
\hline
\textit{mx\_type} & recordtype & 0 & 0 & The string ``adc\_table'' \\
\hline
\textit{label} & string & 1 & 40 & A verbose description of the record. \\
\hline
\textit{acl\_description} & string & 1 & 40 &
	Placeholder for an access control list \textit{(not yet implemented)}.\\
\hline
\textit{motor\_record\_array} & record & 1 & 6 &
	The names of the raw motor records used by this table record
	listed in the order X1, Y1, Y2, Z1, Z2, and Z3.\\
\hline
\textit{m1} & double & 0 & 0 &
	Distance from the table zero point to the Z1 pivot point.\\
\hline
\textit{m2} & double & 0 & 0 &
	Distance from the table zero point to the Z2 pivot point.\\
\hline
\textit{m3} & double & 0 & 0 &
	Distance from the table zero point to the Z3 pivot point.\\
\hline
\textit{rx} & double & 0 & 0 &
	X component of the distance from the table zero point
	to the rotation center.\\
\hline
\textit{ry} & double & 0 & 0 &
	Y component of the distance from the table zero point
	to the rotation center.\\
\hline
\textit{rz} & double & 0 & 0 &
	Z component of the distance from the table zero point
	to the rotation center.\\
\hline
\end{tabular}

An example database for this table type would look like:

\begin{verbatim}
adsc_table device table adc_table "" ""  x1 y1 y2 z1 z2 z3 0.4 0.6 0.75 0.25 0.25 0.5
x1         device motor soft_motor "" "" 0 0 -20000000 20000000 0 -1 -1 0.001 0 um
y1         device motor soft_motor "" "" 0 0 -20000000 20000000 0 -1 -1 0.001 0 um
y2         device motor soft_motor "" "" 0 0 -20000000 20000000 0 -1 -1 0.001 0 um
z1         device motor soft_motor "" "" 0 0 -20000000 20000000 0 -1 -1 0.001 0 um
z2         device motor soft_motor "" "" 0 0 -20000000 20000000 0 -1 -1 0.001 0 um
z3         device motor soft_motor "" "" 0 0 -20000000 20000000 0 -1 -1 0.001 0 um
tx         device motor table_motor "" "" 0 0 -20000000 20000000 0 -1 -1 1 0 um adsc_table 1
ty         device motor table_motor "" "" 0 0 -20000000 20000000 0 -1 -1 1 0 um adsc_table 2
tz         device motor table_motor "" "" 0 0 -20000000 20000000 0 -1 -1 1 0 um adsc_table 3
troll      device motor table_motor "" "" 0 0 -20000000 20000000 0 -1 -1 1 0 urad adsc_table 4
tpitch     device motor table_motor "" "" 0 0 -20000000 20000000 0 -1 -1 1 0 urad adsc_table 5
tyaw       device motor table_motor "" "" 0 0 -20000000 20000000 0 -1 -1 1 0 urad adsc_table 6
\end{verbatim}

In this example, the \textit{adsc\_table} record is the actual table record
itself.  It is configured to use soft motors \textit{x1}, \textit{y1},
\textit{y2}, \textit{z1}, \textit{z2}, and \textit{z3} as the raw motors.
The table parameters for the example are set to \textit{m1 = 0.4},
\textit{m2 = 0.6}, \textit{m3 = 0.75}, \textit{rx = 0.25}, \textit{ry = 0.25},
and \textit{rz = 0.5}.

