You can also download the most recent version of the ISDS white paper , which describes the ISDS and its usage.
In reverse chronological order extending back to 2001 September 1, the revisions to ISDSv1.x include the following:
Updated the EU conversions for six PDU telemetry points (three currents on each side), to bring them into conformity with IRAC-SAO-SPEC-004, Rev.A, the IRAC Housekeeping Telemetry Specification Document.
There were also a few entries for the ZVPHSFHE and ZVPHSFLE (these are two detector clock rail voltages, high and low, respectively) that were updated.
Both changes were very minor and will have no impact on the simulated science data -- only on the headers of the ISDS output FITS files.
Updated the side B heater current EU conversions to bring them into conformity with the latest release of IRAC/TM02-8002.
This change is very minor and will have no impact on the simulated science data -- only on the headers of the ISDS output FITS files.
Changed the definition of SPOT_ROLL_OFFSET to 90 from -90 degrees. It became apparent that the 90-degree rotation applied by iracsim to the input truthimages was in the opposite sense to what SPOTv6.0 was using.
Changed the definition of ARRAY_OFFSETY to 6.22 from -6.22 arcminutes -- this to flip FOV2 to the opposite side of FOV1 now that the sense of the truthimage rotation has flipped by 180 degrees. This was needed to accommodate the above change.
At the request of the GOODS team: added a new parameter called rotate_arrays to iracsim. Setting this parameter to YES will tell iracsim to simulate the very small differential angles between the four IRAC detectors by applying the corresponding rotation to the respective truthimages. Setting rotate_arrays=NO, however, will tell iracsim to apply only the 90-degree rotation used to align the truthimages with the detector rows and columns. In effect, this allows the user to hard-wire the simulated FOVs so that all detectors are used as if they were perfectly aligned to each other and to the focal plane.
Finally, the SSC found that finite-bandwidth effect was being applied in the opposite sense to which it is seen in the real IRAC -- decreasing along the detector rows instead of increasing along them. This has been corrected in the current version (all four FPAs were modified).
SAO has not tested any of the above changes yet!
Because there were so many changes, including the addition of a new command parameter, the version number was advanced to 1.4 with this upgrade, which was sent to the SSC for verification today.
Changed row/column definitions for iracsim. The SSC had determined that iracsim was swapping them when calculating rasters for simulated mapping observations; this came to light when carefully examining rasters that weren't square.
Distributed this version of the ISDS to the SSC for testing. SSC verified that row/column definitions are now correct but some geometry problems remain.
Revised the aorexpand program to attempt to correct a bug which manifested when FOV=2 was selected in an AOR. The aorexpand code worked for all IRAC mapping AORs, and for single-pointed AORs with FOV=1 or FOV=BOTH, but produced bad output for single-pointed AORs when FOV=2. This was due to a failure to insert an IRAC_UPDATE_TIME command after the first PCS command. iracsim uses IRAC_UPDATE_TIME to initialize itself at the start of a simulation. The problem should now be fixed and is awaiting re-test.
A workaround exists. It would be to insert by hand the IRAC_UPDATE_TIME command once and only once in any AOR which lacks it. It should be placed immediately following the first PCS command, i.e., the initial slew.
The SSC (M. Im) discovered that the ISDS was setting the BARREL shift to 3 for all exposures. This has been corrected. The output FITS files' headers will now contain a barrel shift parameter having an integer value from 0 to 6 inclusive, depending on the Fowler number.
The SSC (J. Surace) found that, after the 90-degree correction to the definition of spacecraft roll angle was implemented (see note for 2002 January 18), an error was introduced into the FOV offsets for single-point observations. The error was that aorexpand offset in the wrong direction (but by the right amount) when trying to slew to bring FOV2 onto the position first viewed by FOV1.
This problem seems to have been corrected -- but these roll angles and offsets are slightly tricky so I'm not 100% confident it's all shaken out yet. There was a sign error in the SinglePoint() subroutine of the aot.cpp file.
Changed the method by which dark charge is simulated.
The SSC discovered that for InSb arrays, the ISDS was redundantly muxbleeding hot pixels in the dark frames. Rather than screen for each hot pixel (which might require ad-hoc updates) in the darks, the ISDS was changed so that the dark frames are now added to the output images _after_ muxbleed is simulated. In prior ISDS versions, the order was reversed.
Implemented charge diffusion. Now the channel 1 and 2 images will be blurred by a 0.465 FWHM Gaussian during array readout if the user chooses to simulate charge diffusion by setting iracsim.diffusion=yes.
To use this version of the code the user will have to 'unlearn iracsim' because it required adding a new parameter (iracsim.diffusion) to the iracsim.par file.
Updated the first four elements in the lookup table governing the channel 1 and 2 multiplexer bleed. Until today the ISDS had been using the original lookup table elements instead of the revised elements. Only the first four elements were affected.
A logical error in the cycling dither table progression has been fixed. The error caused aorexpand to repeat a dither pattern once it reached the end of the dither table. This was a problem, for example, when long AORs with many dithers exhausted the 101-position cycling dither table. There was no problem for AORs with fewer than 101 dithers, or for any dither pattern other than cycling dithers.
Replaced cycling dither offset table with the one currently used by SPOTv5. At some point the table for this particular suite of offsets had been changed; now aorexpand is in conformity with SPOTv5.
The Reuleaux patterns were all verified to be correct.
Substantially improved the implementation of fluctuating offset. If the user now selects bias = yes, iracsim will simulate three types of constant offset in the data:
1. A slow drift in the overall level of 1 e- per hour
2. A randomly fluctuating offset of magnitude 10 e-
3. The so-called first-frame effect, which accounts for
delay time, channel, and Fowler number.
The first-frame effect is still somewhat crude, but can be
refined later when the data are further analyzed.
Revised the gain in channel 1 to 3.3 e-/ADU from 3.7 e-/ADU, an 11 percent change resulting directly from the change in channel 1 detector bias to -2.75 V.
Advanced the code version to 1.3.
Implemented a simulation of the finite time required for the detector readout. Because each pixel read takes 10 us, IRAC takes 164 ms to read out the full array (pixels are read in groups of four at a time). Hence the period of time during which photons are collected before the first Fowler readout is different for each set of four pixels. Thereafter -- for all Fowler reads after the first -- each pixel collects photons for the same amount of time. However for just that first read, the first four pixels effectively have 164 ms less integration time than the last four pixels.
For Fowler 1 observations, and for short exposure times like 0.4 s or 2.0 s, this can be a significant effect. Hence simulator now implements a treatment of this differential integration time.
Advanced the code version to 1.2Beta, patchlevel 2.
Corrected a logical error which effectively was multiplying the preamp gains into the simulated data twice. Although small in absolute terms (of order 1 percent) this error meant that in the presence of a strong background the preamp gain differences could be greater than the noise. This problem is now fixed.
Preamp gains will now be treated as wholly represented by the flat fields.
Advanced the code version to 1.2Beta, patchlevel 1.
(See also Jan. 16)
Modified the way the code handles the placement and relative orientation of the two IRAC FOVs. The changes were made in order bring the ISDS into conformity with SPOT v5.
Two things have been changed:
1. an extra 90-degree rotation will be applied to the input truthimages because the SPOT definition of spacecraft roll angle is 90 degrees offset from what one would define as position angle for a typical astronomical image.
2. the placement of IRAC FOV2 relative to FOV1 has changed to be consistent with the ISDS definitions of detector array rows and columns. This simply meant placing FOV2 on the opposite side of FOV1 from where it had been in earlier versions of the ISDS.
As an example of the new convention: If the truthimages have CROTA=0, i.e., are configured with a position angle of zero, and the user specifies a spacecraft roll angle of zero degrees when expanding the SPOT file for a given AOR, iracsim will rotate the truthimages by approximately 90 degrees to achieve the desired alignment. The rotation will always be 90 degrees different than what you would naively expect because of the definition of roll angle in SPOT.
Advanced the code version to 1.2Beta.
Corrected a bug which occasionally caused the output filenames to be named in a manner that conflicted with the SIRTF standard. The bug incremented the exposure ID with each repeat, when in fact it should only increment when a new exposure command (with an arbitrary number of repeats) is issued. This is now fixed.
Corrected a bug in the implementation of cosmic rays, which caused the cosmic ray templates to be clipped to artificially low levels under very high background conditions, e.g., simulations of the galactic plane.
Advanced the code version to 1.1Beta, patchlevel 1.
Modified several files within the iracsim program to implement more realistic cosmic ray simulations. Advanced the code version to 1.1Beta.
Now, the user must specify a cosmic ray incidence rate, in units of hits/second/detector, instead of the less flexible yes/no switch that was in versions 1.0 and earlier of the ISDS. Users can choose crrate=0.0 to avoid including any cosmic rays in the simulation. The default is one event per second per detector.
The ISDS will now calculate the total number of events in each exposure, and add the corresponding number of cosmic ray templates to the simulated output images. The ISDS has a library of 100 templates for InSb and SiAs cosmic rays; this library will be cycled through if more than 100 cosmic rays are to appear in any particular image. The placement of each template within an image is random, but because the simulated cosmic rays tend to be in the center of the 16x16 pixel template images, there will be a tendency for the periphery of the simulated output data (within 8 pixels of the edge) to be relatively free of simulated cosmic rays.
This implementation uses different templates for cosmic rays in the InSb channels than it does in the SiAs channels, because the differences in substrate geometry cause the cosmic rays to look very different in the two types of detector. Cosmic rays in the longer-wavelength SiAs channels tend to affect several pixels. In the InSb channels typically only one pixel is affected by a hit.
Note that cosmic rays in these test data did NOT necessarily saturate the detectors.
Because the templates are merely masked subsections of array data from instrument testing in late 2000 (SiAs) and 1997 (InSb), there are many templates which contain multiple cosmic rays. Thus the cosmic ray rate chosen by the user will under-estimate the actual numbers of events. The SiAs templates were taken from 50.0 s IRAC channel four dark frames but are applied to both channels 3 and 4. Similarly, the InSb templates applied to both channels 1 and 2 were taken from channel 1 dark frames only. This was done under the assumption that InSb channels would behave similarly under cosmic ray bombardment, likewise for the SiAs channels.
This new implementation of aorexpand was tested with HI_DYNAMIC_RANGE = yes and no, and for repeats larger than 1. It hasn't yet been tested with iracsim.
Discovered and corrected a bug in the barrel shift arithmetic for frame times of 2, 12, and 30 s, i.e., all Fowler 4 and 8 frames. (All other frame times (0.4 s, 50 s, 100 s, 200 s) and Fowler numbers were handled correctly.) The effect of the bug was to erroneously magnify sky flux and dark charge by a factor of 4, though the noise properties were kept in proportion. So the SNRs should have been OK in the output, even though the absolute levels were too high.
Put 30 s dark charge frame for channel 3 into library tar file (it was accidentally omitted from prior versions) and released this as iracsim_images20011207.tar to the SSC.
Corrected a problem with the clipping algorithm that was allowing output pixels to acquire values greater than the maximum possible value of 65536. This was negatively impacting the muxbleed-correction algorithm, which quite reasonably expects no pixels higher than 65536. The fix was tested and verified by J.Surace.
Added an average 50 second channel 4 dark frame to the image library. This frame is an average of 238 50 s channel 4 darks taken during functional testing at Ball in 2001 October and during multiple runs of example AORs from the GOODS Legacy program during the three-day stability test in 2001 November, also at Ball.
Replaced the channel 1 dark frames with better versions. Although the prior versions were perfectly valid dark charge frames, the new ones were derived from test data taken with the new detector bias setting of -2.75 V instead of the old setting -3.0 V. The dark charge pattern is quite different with the new bias setting. Corrected a bug in the 1.0beta release which caused dark charge to be almost a factor of 4 too high in the output simulated images. Verified that dark charge was at correct level for 100.0 s and 12.0 s exposures in all four channels.
The FITS headers of the output images were modified slightly, to conform better to CTDv2.5.70. Specifically, channels A0746D00, A0748D00, A0750D00, and A0751D00 were added to the headers of raw data. These are, respectively, ADSPSEL_DN, AGLBINT_DN, AFPACER_DN, and ASHPOS_DN.
The BCD-flavored FITS headers were also augmented, with the addition of ADSPDSEL, ADSPERR, AGLBINT, AFPACER, and ASHPOS. Three additional, redundant, time-related keywords were also added for the convenience of SAO pipeline development. These were ACHDTIM1, ACHDTIM2, and ACHDTIM3, which are redundant with ACDHTIMC and ACDHTIMF.
Reduced the (distracting) verbosity of the DN2EU conversion software.
Advanced the simulated time from 2001 May to 2001 October to ensure SSC pipelines aren't depending on a special date.
Implemented somewhat more realistic advancing time indices AINTBEG, ATIMEEND. These two parameters will now increment within an AOR, but the time period they cover will overlap with data from other simulated AORs.
This version of the ISDS was released to the SSC for testing, with the intention of making it available to the Legacy teams as the official Beta release. It is a shared-risk release with known bugs. This release will be called v1.0 Beta.
J. Surace figured out that the sense of simulated spacecraft rotation had the wrong sign. This was corrected.
The ISDS was released to the SSC for testing, with the intention of making it available to the Legacy teams as the official Beta release.
J. Surace figured out that the sense of simulated spacecraft rotation had the wrong sign. This was corrected.
A bug was corrected which caused ROLL angle not to be properly passed through to the subroutines that calculate the RA/DEC of each dither and slew. This was an order-of-execution type error. The code was retested today and successfully demonstrated correct spacecraft roll angle pass-through.
Roll angle is now held constant throughout each AOR, as per plans for flight operations and scheduling. Prior versions of aorexpand had gradualling increased the roll angle during an AOR to correspond to the average expected rate of change for the spacecraft. The new approach more closely approximates what IRAC will see in flight.
Corrected a bug which caused AORs specifying no dither pattern to be simulated with a five-point dither -- effectively quintupling the amount of data simulated.
The aorexpand program will now insert into its header an indication of whether high dynamic range is used.
Added a header parameter called JY2DN that contains the conversion from the input truthimage units of Jy/arcsec to the output FITS file units of DN.
Corrected a bug in the simulation of the image flipping due to the reflection by the dichroic. Now the truthimages in channels 3 and 4 will be flipped vertically. When not using rawimage mode images in these channels will appear upside down.
Refined the routine in iracsim that warns a user about possible projection of the simulated frames OFF of the input truthimage.
Implemented a RESTART option, controlled by a user-settable parameter of iracsim. This allows the user to restart using already-rotated buffer images instead of having to re-rotate them every time iracsim is run.
In the BCD-flavored output FITS files, the TARGETNA parameter will contain the name of the input .isds file.
In the output FITS files, the ACDHTIM_C_DN and ACDHTIM_F_DN parameters have been renamed ACDHTIMC and ACDHTIMF.
Fixed the bug which was creating duplicate sets of NAXIS keywords in the output FITS file headers.
Changed the location of the rotated truthimages created at the outset by iracsim. They are now created in the user-specified output directory (variable 'output' in the iracsim parameter file) -- this will prevent collisions between rotated truthimages created by multiple simultaneous users of iracsim.
Added warning message to iracpoint.x to alert user to bad matches between truthimage and AOR coordinate systems; iracsim now checks to see if a slew or dither is likely to be too large.
Implemented capability for iracsim to handle different numbers of repeats for different channels in the same IRAC_DOIT command.
Updated help files for aorexpand and iracsim.
Tested yesterday's interface modifications.
Changed interface spec -- now CDELT1, CDELT2, and CRVAL1 must all be in decimal degrees. Used to be (nonstandardly) arcsec, arcsec, and hours, resp.
Modified aorexpand so it passes through a user-assigned AOR identification number, which is used as part of the output FITS file names.
Updated the average gain (e- per ADU) of the InSb channels to 3.7 from 3.5, as per B. Glaccum's advice.
Corrected a bug in the implementation of the flat fields. Identical to bug in distortion() routine from 9/20.
Implemented superior gain maps from Rick Arendt. Removed fiber from channel 3 gain map by hand.
Corrected a bug in makebuf() routine from iracutil.x which garbled some diagnostic output. A format problem.
Corrected a bug in distortion() routine from iracutil.x which misaligned the photometric distortion map.
Had to tweak the ReadSpot routine in aot.cpp in several places in order to get it to read the SPOT v5 format output files. Tested the new code, and found it works.
Discovered that the bug reported below on Sept. 14 was NOT in fact an error, it was due to an output format change within SPOT. So aot.cpp was revised a second time to make it capable of reading either v4 or v5 SPOT files.
Corrected a cut-and-paste bug in aot.cpp that erroneously caused the simulated RA/DEC to be zero for IRAC raster maps.
Implemented roll angle in iracsim, using the passed-through roll angle specified by aorexpand.
Implemented photometric distortion in iracsim.
Implemented different measured rotation angles for each array.
Implemented different measured pixel sizes (1.21, 1.207, 1.213, and 1.209 arcsec on a side) for each array.