This manual is primarily a technical manual. Currently the user-information is
covered by s()'s man-pages

This manual covers the design and organization of s()'s software. Each
section (except for section tt(main)) covers a class as encountered when
reading the sources starting at the tt(main) function.

In total almost 30 classes were defined. Starting from tt(main) only
tt(Simulator) is required.

At the other side of the spectrum there are several classes or comparable
elements which are used by many classes. These elements are defined in
separate header files:
    itemization(
    itt(enums/enums.h), containing enumeration values for errors and constant
        values;
    itt(typedefs/typedefs.h), defining short names for frequently used vectors
        (like tt(SizeVect) for tt(std::vector<size_t>))
    itt(globals/globals.h), a struct defining several static functions handling
        frquently encountered small computations (like tt(isZero) to determine
        whether a tt(double) value has a value that's closer to zero than a
        (compile time configurable) tolerance).
    )

These files are not further covered in this manual: they contain definitions
and trivial support functions, and the reader should refer for these files
themselves for further details.

    figure(outer)
        (The Outer Program Design)
        (OUTER)

The outline of the organization of the outer levels of the program is shown in
Figure ref(OUTER). tt(main) uses a tt(Simulator), and for each separate
analysis the tt(Simulator) creates an tt(Analysis) object, which in turn
creates a tt(Loop) object, doing all the hard work (hence the ellipsis in
Figure ref(OUTER)).

The configuration file defines elements that can be used in the analyses. Such
elements are, e.g., tt(Screening), containing screening parameters,
tt(Densities), containing parameters of breast densities, and tt(Incidence),
containing tumor incidence parameters. Objects of those classes are used by
tt(Loop).

It is quite possible that future versions of s() also supports different types
of simulations. It's likely that tt(Loop) itself then becomes a em(scenario)
as defined by Gamma et al. (1995), and that analysis specification files also
select the requested scenario(s) by specifying the requested simulation
type(s).
