STScI Logo

COS
CALCOS v2.8.5 Release Notes

---------------- CALCOS v2.8.5 ----------------------------------

relevant PRs:
61783, 61914, 62091, 62433, 62590, 62666, 62810, 62890,
62895, 62936, 62937, 62938, 62939, 62942, 62997
relevant Trac tickets:
328, 330, 367, 394, 406, 408, 411, 415,
416, 417, 419, 420, 421, 422, 423, 425,

If there's an association file, calcos now checks for a conflict between
exptype in the primary header and the memtype column in the association
table.  In particular, if exptype = WAVECAL but memtype is not one of
the wavecal types, or vice versa, that's an error.

For data with obstype = imaging and tagflash = auto or uniformly spaced,
calcos will find the image of the wavecal aperture and shift the data
so the image of the WCA will be at x,y = 600,606.
For data with obstype = imaging and exptype = wavecal, calcos will
process the data as an image, with no correction for the location of
the image of the WCA.

If photcorr is PERFORM but aperture is WCA or FCA, photcorr will be
reset to OMIT.

In the optional file to override shift1 (the option --shift filename), the
flash number is now one indexed instead of zero indexed.  This was done
to agree with the flash number that is printed to the trailer file, and
because it is more likely to be what a user would expect.  A bug in the
test for blank lines in the shift file has also been fixed.

A corrtag file can now be given as input to calcos.  If a corrtag file is
part of an association, the value in the MEMNAME column of the association
table should be the complete corrtag file name, not just the rootname
(because if it's just the rootname, calcos will look for the raw file
and then complain that the calibrated file already exists).

In the near future, the syntax in Python for dividing integers will
be changed from 'a / b' to 'a // b'.  All the Python code for calcos uses
the new syntax, and a statement was added to all relevent files to check
for inadvertent use of '/' for integers.

A bug in the extraction of 1-D spectra for auto or GO wavecals was fixed.
The offset in the cross-dispersion direction was not being taken into
consideration, and the spectrum was being extracted at the nominal
location.  Since the extraction width is large, this went unnoticed until
recently, but now the actual location of the spectrum is significantly
different from during thermal vac.

When smoothing the background in the 1-D spectral extraction step, if the
shift in the dispersion direction is large enough, the range of pixels over
which the data will be smoothed could extend beyond the borders of the image,
resulting in an exception.  The range of pixels is now truncated at the image
borders.

The values of some header keywords are now rounded to four decimal places.

For spectroscopic wavecal (or tagflash) data, calcos now explicitly checks
whether a lamp was on.  If a lamp was on but keyword LAMPUSED is NONE
(which can be the case for tagflash data), the value of keyword LAMPPLAN
will be copied to LAMPUSED.  If keyword LAMPPLAN is not present in the
header (it's a new keyword), however, a message to that effect will be
printed and LAMPUSED will not be modified.

For tagflash = UNIFORMLY SPACED, the LMP_ON2 keyword is currently one
second too small, and calcos used to rely on the difference between
LMP_ON1 and LMP_ON2 to determine the initial estimates of the turn-on
and turn-off times for all flashes.  The one-second offset accumulated
so that after about five flashes the calculated turn-off times were
outside the buffer, and the turn-off times reported by calcos were
wrong.  The binning of lamp counts has been reduced from one second
to 0.2 second, and the code for finding uniformly spaced flashes has
been modified to compute the flash spacing using the median of the
intervals between flashes.

The code for determining the normalization between a wavecal spectrum
and the template was modified.  The previous scheme didn't work for the
case that there were only one or two emission lines that were significantly
above the noise.  The noise is now truncated to zero, and whatever remains
is used to find the normalization.  Also, cases have been encountered
where the normalization is not the same for all NUV stripes, so the
factor is now computed separately for each stripe, instead of finding
the median of the factors and using that one value for all stripes.