Mask Making for Keck Spectrographs


The object of the game: to manufacture and uniquely identify slitmasks for the DEIMOS and LRIS spectrographs.

The players come in three flavours: humans, hardware, and software.

Player Role Whose Responsibility?
The Humans    
The Observer an astronomer with a research program involving a catalog of objects in an area of the sky, to be observed on or near a certain date.
The Mask Miller a technical staff member who uses a mill to manufacture slitmasks from pre-cut sheet metal stock. Milling can take place at either location. if both mills are active then some telephone coordination is required to prevent duplication.
The Configurer a technical staff member whose job it is to load the instrument with the right removable elements for the night -- including slitmasks. Keck
The Mavens the group of people responsible for making sure this all works, i.e. the code authors (Allen, Clarke, Phillips, at Lick) and the instrument scientist (Wirth, at Keck).
The Hardware    
The Instrument a spectrograph with a mechanical slit mask exchanging mechanism used during the observing night to switch slitmasks as needed. Currently, either DEIMOS or LRIS. Keck
The Mill a CNC mill capable of accepting G-code language files on floppy disks. There are currently two of these: one at Lick Observatory in CA and one at Keck Observatory in HI. Another mill may someday be in operation at Keck (one at HQ as well as one on the summit). The master database is at Lick and the remote mills must update it to keep everyone informed as to who milled what when. each institution maintains its own
The Bar Code Labels are very particularly sized to fit in a prescribed area on DEIMOS masks. They are also specially rated for low-temperature and vacuum applications. They come from Express Inc in La Jolla. each institution maintains its own supply
The Bar Code Guns we got these from Symbolics. They are Model P300FZY, dumb but so far fairly reliable. Lick supplied Keck. one spare exists at Lick
The Mask a thin sheet of metal. As well as having slitlets cut in it (hopefully in the right places), it is engraved with some identifying information (short nickname, mill sequence code, which mill manufactured it) and has an unique bar code label permanently affixed to it after cleaning and QA. Masks can be milled at Lick or at Keck. The barcode label numbering sequence is shared by both institutions so duplicates should never happen. Lick has made all DEIMOS masks for the first year of observing. Keck should start to make DEIMOS as well as LRIS masks soon. Lick supplied precut mask stock for DEIMOS.
The Mill-PC a fairly dumb Linux PC whose job it is to sit next to the Mill, offering a friendly GUI enabling the Miller to read the mask database and generate floppies to feed to the Mill. The Mill-PC also hosts the bar gun used to scan bar codes after masks are milled and labelled. The Mill-PCs are zorro (at Lick) and slitmaskpc (at Keck). The Keck Mill-PC is sometimes referred to in our docs as zorro-II or zorro2. each institution supplies its own PC and spare. Lick responsible for application software and updates.
The Database a Sybase engine used to store and process (among other things) mask design data and instrument configuration data. There are two of these, one at Keck in HI and one at Lick in CA. The Lick server is known as YAKUZA and the Keck server as KSUMMIT. The Lick server runs on a dedicated Linux machine called oyabun living in a secure computer room. The Keck server runs on a dedicated older Solaris machine called waiaha in the K2 computer room at the Keck summit. The Keck server is a "slave" of the Lick server and the esssential data are copied from Lick to Keck daily. Lick responsible for master db, update process, data management. Keck responsible for keeping waiaha up and running, basic maintenance, network access from Lick.
The WebServer an Apache httpd running on a dedicated host called osiris living in the secure machine room at Lick. Observers interact with this web server to submit mask designs and to check on the status of their masks. Not to be confused with the totally independent Keck webserver which offers instrument schedules, etc. However, Keck bears some responsibility for smooth operation: they coordinate or confirm the authorisation of domains or hosts for new mask system users, and provide Lick with IP addresses for any hosts which lack a PTR entry but require access. Lick
zeitaku a host in CA, the home of several important 'housekeeping' cron jobs that keep the mask milling data up to date and inform various human players of various conditions (normal and abnormal). Lick
The Software    
DSIMULATOR an astrometric mask design program. The Observer or his/her proxy runs this program to generate a DEIMOS Mask Design File (MDF), which is then submitted for milling. The Observer downloads his/her own copy of DSIMULATOR, builds it, and runs it locally at the home institution. Lick (Phillips) is author and provides upgrades. Wirth to be responsible for observer questions/support?
The Mask Web Pages a set of cgibins written using cgitcl and running on osiris at Lick. These pages are the official mechanism for the Observer to submit a mask design (or several at a time) in the canonical file format. Lick
MillMasks the Miller's GUI, which displays the list of unmilled masks recently submitted, writes floppies, and accepts scans of barcodes to mark masks as successfully milled. This GUI can run on either Mill-PC and always updates the local copy of the database. The copy that runs at Keck also, by indirect means, sends information back to Lick to update the master database (YAKUZA). (An obsolete action left in place as an audit trail, is to leave files in a special directory where GetMaskNews would have been able to find them.) Lick
MaskKeeper a cron job that runs on zeitaku in CA. It checks the current state of the master database and informs the appropriate people about newly-submitted masks, newly-milled masks, masks with problems. It repairs such elementary problems as 'mask with duplicate GUIname' and notifies the appropriate people that the repair has been made. It also maintains the 2-letter "mill sequence" code assigned to every new mask blueprint. Lick
GetMaskNews (OBSOLETE) a cron job that runs on zeitaku. It retrieves from zorro-II in HI, information about masks milled and scanned at Keck. It checks the information for validity and then updates the master database. Lick
VerifyNews (OBSOLETE) a cron job that runs on zorro-II in HI, which looks for evidence that GetMaskNews has left for it on the local disk, and cleans up (or doesn't) accordingly. Lick
testSanity a utility which tests a mask design file (MDF) for correct format and internal consistency. It is run by one of the cgi-bins during the mask submission process. Lick
ingestMask a utility which eats an MDF and turns it into SQL insert statements, thus ingesting the mask design information into the master database. It is run by one of the cgi-bins during the mask submission process. Lick
dbMaskOut a utility which extracts the mask design information from a database (usually the Keck slave copy) into various output files. The primary output product is a "FITS chunk", a valid FITS file containing all the information associated with a mask. During DEIMOS observing these files are appended to images taken through masks. Secondary products include "ali" files for automatic slitmask alignment (DEIMOS only) and DS9 overlay files (not currently useful). A FITS chunk file can be (and is) also fed to fits2ncc to generate Gcode language files. In other words, MillMasks uses dbMaskOut. So does GenMaskData, and MaskKeeper (which generates mask data files in order to detect any errors from the CNC Gcode emitter well before milling time). Lick
fits2ncc a utility which converts a FITS chunk generated by dbMaskOut into a Gcode file for milling. fits2ncc is really a mere shell script wrapper around the old C-source executable acpncc. acpncc relies upon the envar INSTRUME to know which instrument it should generated mill code for. Each instrument has one or more 'millcf' files which may be found in KROOT/data/millcf. These files initialise parameters for the Gcode generation. In the case of DEIMOS masks an additional boilerplate Gcode file is picked up which contains instructions for milling the 'hotdog' cutout. Lick
Dremel a DEIMOS daemon. Among other things, it controls the automatic scanning of all the masks inside DEIMOS (part of the configuration process) and the generation of config files and FITS chunks. It relies on the KSUMMIT copy of the database being at least current enough to contain the masks for tonight's observing. The Configurer interacts with Dremel via a bar gun attached to DEIMOS, and via a panel in the DEIMOS main instrument GUI. Lick
GenMaskData a high-level script wrapper around dbMaskOut. It is run by dremel: it's fed a temporary datafile generated by dremel after scanning masks, and forked off independently to handle the generation and propagation of mask datafiles for observing. It runs dbMaskOut for all masks loaded in the instrument, installs the resulting ali and fits files in the right place on keamano, and rdists them to polo. Lick
Database Xerox a set of interlocking cron jobs which overwrite most of the content of the KSUMMIT server's 'metabase' database with the content from YAKUZA. The cron jobs run on waiaha and zeitaku. Lick

de@ucolick.org
webmaster@ucolick.org
De Clarke
UCO/Lick Observatory
University of California
Santa Cruz, CA 95064
Tel +1 408 459 2630
Fax +1 408 454 9863