Fixing Pointing Errors in Mosaic Imaging

Roy Gal
Updated 1 May 2009

If you cannot get msccmatch to produce a reasonable WCS, maybe the telescope pointing is off. You can check this by using
msctvmark
to overlay coordinates from a catalog with known astrometry on your mosaic image. First, retrieve such a catalog from USNO:
cl> epar mscgetcat
PACKAGE = mscred
   TASK = mscgetcatalog

input   =              lfc267s  List of Mosaic files
output  =           testusno.cat   Output file of sources
(magmin =                  14.) Minimum magnitude
(magmax =                  20.) Maximum magnitude
(catalog=         NOAO:USNO-A2) Catalog
(rmin   =                  22.) Minimum radius (arcmin)
(mode   =                   ql)
Exit with :go to execute.

Overlay the catalog on an image:

cl> mscdispl lfc267s fr=1
cl> epar msctvmark
PACKAGE = mscred
   TASK = msctvmark

coords  =         testusno.cat  List of coordinates
frame   =                    1  Display frame
(output =                     ) Output file of pixel coordinates and labels
(fields =                1,2,3) Fields for RA, DEC, and ID
(wcs    =                world) Coordinate type (logical|physical|world)
(mark   =               circle) Mark type
(radii  =                   10) Radii of concentric circles
(lengths=                    0) Lengths and width of concentric rectangles
(font   =               raster) Default font
(color  =                  204) Gray level of marks to be drawn
(label  =                   no) Label the marked coordinates
(nxoffse=                    0) X offset in display pixels of number
(nyoffse=                    0) Y offset in display pixels of number
(pointsi=                    3) Size of mark type point in display pixels
(txsize =                    1) Size of text and numbers in font units
(mode   =                   ql)
Exit with :go to execute. Circles will be drawn at the locations where the USNO objects should be. You should be able to recognize the patterns; I have found them offset by as much as 4 arcminutes. If it appears that the pointing is off, you can find the approximate offset using msczero. However, msczero requires a DATASEC header keyword that is not in the images. We make a little script to do this:
% foreach i (`cat nums.list`)
% foreach j (1 2 3 4 5 6)
% echo hedit lfc$i\s.fits\[$j\] DATASEC \[1:2048,1:4096\] add+ >> datasec.cl
% end
% end
Now we run this script in IRAF, prep for msczero, and run it:
cl> cl < datasec.cl
cl> set disable_wcs_maps=""   
cl> flpr
cl> epar msczero
PACKAGE = mscred
   TASK = msczero
    
input   =              lfc167s  List of mosaic exposures
(extname=                     ) Extension name pattern
(nframes=                    2) Number of frames to use
(cbox   =                   11) Centering box size (see imcntr)
(mark   =                  yes) Mark display?
(logfile=              default) Log file for measurements

                                # MSCTVMARK Parameters
coords  =         testusno.cat  List of coordinates
(fields =                1,2,3) Fields for RA, DEC, and ID
(wcs    =                world) Coordinate type (logical|physical|world)
(mtype  =               circle) Mark type
radii   =                   20  Radii of concentric circles
color   =                  204  Gray level of marks to be drawn
label   =                   no  Label the marked coordinates
(nxoffse=                   20) X offset in display pixels of number
(nyoffse=                    0) Y offset in display pixels of number
(pointsi=                    3) Size of mark type point in display pixels
(txsize =                    2) Size of text and numbers in font units

                                # Task query and internal parameters
ra      =         14:29:00.514  RA (hours)
dec     =          42:45:35.50  DEC (degrees)
id      =                       Identification
mag     =                       Magnitude limit
update  =                   no  Update WCS zero point?
updcoord=                  yes  Update coordinate file?
(fd1    =                     )
(fd2    =                     )
(mode   =                   ql)
:go to execute as usual. Hit "m". The locations of USNO stars will be marked with circles; they will be offset if the pointing is wrong. Place your cursor on a circle and hit "s". Then place the cursor on the location of the star that the circle corresponds to and hit "z". Hit "m" to mark again - now the circles should match the star locations much better. If it looks ok, hit "q" to quit. Note the ra, dec offsets written to the screen.
Now, we set the WCS in the image headers, but applying this offset. If the pointing is wrong all night long (and wrong in the same way for all images!) you can do this in one pass:
cl> epar mscsetwcs
PACKAGE = mscred
   TASK = mscsetwcs

images  =                lfc*s  Mosaic images
database= mscdb$palomar/lfc/lfc-I.db  WCS database
(ra     =                   ra) Right ascension keyword (hours)
(dec    =                  dec) Declination keyword (degrees)
(equinox=              equinox) Epoch keyword (years)
(ra_offs=                  96.) RA offset (arcsec)
(dec_off=                 115.) Dec offset (arcsec)
(extlist=                     )
(mode   =                   ql)

:go to execute. Note the ra_off and dec_off are set based on the results of msczero. At this point, you can continue with msccmatch and it should work (though 2 passes may still be needed).