A.4.6 Data and Methods of the Quantity Class

Fig. A.16 depicts the methods that are specific to quantities. These methods are only available after a handle of an Attr class has been cast into a handle of type Quantity via the castToQuantity function.

The method nextWafPoint is an iterator over all wafer points of the grid of this quantity. A wafer point (WafPoint) is an extension of a geometrical point that holds an arbitrary number of attribute values. A WafPoint does not inherit from Point, because on interfaces between segments there are several WafPoint instances (one for each segment), but only one instance of a geometrical point (c. f. Fig. A.17). Therefore, the nextWafPoint method needs additional information to disambiguate the Point $ \longrightarrow$ WafPoint relation. This information is present in the Quantity and stored in a container of type map as it is available in the C++ standard template library STL (Point_h2wpm, c. f. Fig. A.18).

Figure A.16: Data and methods of the Quantity class.
{\footnotesize\begin{verbatim}class WafPoint
...Interpolator() const;

Figure A.17: Interface between two segments. The thick line depicts the surfaces of the two segments. Thin lines depict the grid. The points at the interface have exactly the same coordinates but may hold a different number of quantities. Therefore the WAFER-STATE-SERVER distinguishes between a Point (holds only the geometrical information) and a WafPoint (holds geometrical information and quantities).
\begin{figure}\centering\psfig{file=pics/interface, width=0.6\linewidth}\par\end{figure}

Figure A.18: Map to translate a geometrical point into a Wafer point.
{\footnotesize\begin{verbatim}typedef map<Point_h, W...
...oint_h2wpm> Point_h2wpmh;\end{verbatim}}

getIndex returns the internal index of the quantity. It is used as index into the Val vector of the WafPoint.

getLocater returns the grid of that quantity.

The method replaceLocater is used in the update operation as described in Appendix A.3.

getInterpolator returns the Interpolator object of the quantity. An Interpolator defines an interface that is used from the getVal methods to interpolate within a grid element. Its purpose is to transparently separate the interpolation method (e.g. linear, logarithmic) from the grid element (to allow different interpolation mechanisms for different quantities). An instance of an Interpolator must be supplied whenever a new quantity is created. The instantiation of the Interpolator happens internally, for instance at the time when the WAFER-STATE-SERVER retrieves the data from a Reader object or when a new quantity is created on an existing segment (addQuantity). The Config object is thereby used to determine the interpolation mechanism for a given quantity.