Path through a typical amplitude calibration and then observing cycle 1) Measure zero offsets (z tint_cycles 3) zero -> Z.dat 2) Measure hot load move hot load into beam autoset level (l 3 18000) check for convergence, etc. record attenuation -> Hot1_atten record load temperature -> Hot_temp totpwr -> Hot1.dat Hot1.spect = (Hot1.dat-Z.dat)*XFORM_MATRIX move hot load out of beam 3) Measure attenuation gain and sky (use sky for attenuation gain vs. attenuation measurement) First part of attenuator gain measurement totpwr -> Sky2.dat (no attenuation change) Sky2.spect = (Sky2.dat-Z.dat)*XFORM_MATRIX Now measure sky at observing attenuation: autoset level (l 3 18000) check for convergence, etc. record attenuation -> Sky1_atten record ambient temperature -> Cold_temp totpwr -> Sky1.dat Sky1.spect = (Sky1.dat-Z.dat)*XFORM_MATRIX Find attenuator gain correction compute gain correction for hot/sky meas for each frequency -> Atten_gain.spect = Sky1.spect/Sky2.spect 4) Observe nobs -> N1.dat N1.spect = (N1a.dat+N1b.dat)*XFORM_MATRIX (N1a,b are the two nod positions in the chop-nod cycle) (Scaling here will depend on integration time definitions, but time in header should be total time on both positions; i.e., if we only use data from one nod position, the header time should be half of the total observing time.) 5) Calibrate data to produce spectrum S S.spect = Hot_temp*N1.spect/(Atten_gain.spect*Hot1.spect - Sky1.spect) (see waspmath writeup for background here) 6) Final spectrum attach velocity and frequency information to spectrum attach other header information save in required formats (display with some other task) 7) Continue observing by looping back to 4)