A slitless spectroscopy simulator was required to create realistic data of the upcoming Advanced Camera for Surveys (ACS) slitless spectroscopic modes. ACS is scheduled to be launched in 2001, and simulated data are needed to test future slitless spectroscopy extraction software. Our basic requirement was to have a simulator that could, based on our current knowledge of the instrument, generate both geometrically and photometrically realistic images. While this simulator would in principle be used mainly to generate ACS images, an effort was made to keep it general enough to be used to simulate other instruments. This ensured that the simulator would remain usable to generate ACS simulations even if the performances and/or the characteristics of the instrument were to change in the future.
Creating such a simulator can be facilitated greatly if one chooses a language which can easily handle complex data types such as arrays, and interpolated functions. In addition to these, Python has the advantage of being a free, well documented, and well supported language, which can be used on almost all known combinations of hardware and operating systems. While a scripting language, Python has also been shown to be very flexible and appropriate for both small and large projects. One thing that made Python attractive for this project was the existence of many Python extension packages which provide useful high-level data types. For example, we have made extensive use of the Python Numeric package, which allowed us to store images as sets of arbitrarily large arrays. Furthermore, input spectra and throughput curves were loaded as Interpolated functions using the Python Scientific module. This allowed us to treat them as if they were continuous functions, and not discrete datasets, allowing us to avoid all the problems associated with non-uniform sampling of the input spectra and throughput curves. The speed of an interpreted scripting language such as Python is somewhat lower than that of a low level C program. This drawback is, however, offset by the lowered development time that is achieved using a modern, feature rich, object oriented language which requires no compilation phase. Furthermore, in reality one can reach close to C performance with extensive use of Python's high level data types and functions, which operate at C language speed. For example, using Numeric array types, one can add two arrays with a simple Python declaration like .The actual work of adding up all the elements of the two arrays is done in the underlying, optimized C Numeric module, and performance becomes very close to that achieved by some stand-alone C code.
The program interface was kept as simple as possible. Every aspect of the simulator is controlled though the use of three simple text files containing the various simulation parameters. The first one contains a list of input objects (positions, spectral types, red-shifts, and reference magnitudes). The second one contains general simulation parameters such as mirror size, gain, pixel size, and a list of throughput files. Finally, the last configuration file contains a field-dependent polynomial description of the polynomial dispersion relation to apply to the input spectra.
The main feature of SLIM are (a) configuration using simple text files, (b) creating slitless simulations by dispersing a 1-D input spectrum and, at each wavelength, convolving it with a PSF of the appropriate shape and size, <c) an arbitrary number of throughput files can be used to simulate any combination of mirrors, windows, filters, dispersive elements, and detectors, (d) photometric zero points are computed on-the-fly using the input list of filters and throughputs and a spectrum of Vega, (e) arbitrary order polynomial descriptions of the dispersion relations can be used, allowing both near-linear (grism) and highly non-linear (prism) simulations to be generated, and field dependence to be accounted for, (f) no requirement for any a-priori sampling of the input spectrum or throughput files, and (g) producing ACS simulations that agree photometrically within 1 percent with the ACS ETC.
Several examples of spectra which were extracted from simulated ACS WFC grism images are shown in Figure 1. Figure 2 contains simulations of the HDF-N as seen in a three color direct image composite and with the GL800 grism when using the WFC. The same field as seen with the High Resolution Camera (HRC) is also shown. While providing a smaller field of view, the HRC has a higher resolution than WFC in both the direct and grism modes.