The reduce_switch task converts the raw SCUBA format into a more NDF-like format with proper variance and quality arrays (extracted by reduce_switch from the SCUBA data array), axes, history reporting, a title and units.
Here is an example of the reduce_switch output for a Mars pointing observation:
O10 <NDF>
DATA_ARRAY(37,32) <_REAL> -0.003304771,0.0002364833,0.00320935,
... 0.0003040197,0.001364953,-0.007496601
MORE <EXT> {structure}
FIGARO <FIGARO_EXT> {structure}
{structure is empty}
SCUCD <SCUCD_ST> {structure}
JIGL_X(16) <_REAL> 5.3766,10.6914,10.6914,5.3766,0,
... -10.6914,-5.3766,0,5.3766,-5.3766
JIGL_Y(16) <_REAL> -3.09,0,6.18,9.27,12.36,9.27,6.18,
... 6.18,0,-3.09,-6.18,-9.27,-9.27
DEC1 <_REAL> 0
DEC2 <_REAL> 0
LST_STRT(2,1,2,1) <_DOUBLE> 3.9425429572598,3.9440140603798,
3.9469952223685,3.9454089275179
RA1 <_REAL> 0
RA2 <_REAL> 0
SCUBA <SCUBA_ST> {structure}
BOL_CALB(16,9) <_REAL> 1.286,0.9311,0.9499,1.002,0.9585,
... 1.054,1.065,1.045,1,1,1,1,1,1,0
BOL_DU3(16,9) <_REAL> 57.08,45.9,36.15,24.64,14.55,3.62,
... -15.78,9.047,-54.65,0,0,0,0,0,0
BOL_DU4(16,9) <_REAL> -28.14,-35.91,-41.46,-49.62,
... 63.89,77.76,71.16,0,0,0,0,0,0
BOL_QUAL(16,9) <_INTEGER> 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
... 0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1
BOL_TYPE(16,9) <_CHAR*20> 'SHORT','SHORT','SHORT','SHORT',
... 'P...','P1350_DC','P1100_DC','BAD'
BOL_ADC(37) <_INTEGER> 7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,
... 8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9
BOL_CHAN(37) <_INTEGER> 1,2,3,4,7,8,9,10,11,13,14,15,16,1,
... 12,13,14,15,16,1,2,3,4,5,6,7,8,9
FLAT_ADC <_INTEGER> 0
FLAT_CHN <_INTEGER> 0
FLAT_IND <_INTEGER> 0
PHOT_BB <_INTEGER> 0
ISTART <_INTEGER> 0
NPIX <_INTEGER> 0
POINTER <_INTEGER> 0
DEM_PNTR(1,2,1) <_INTEGER> 1,17
FITS(171) <_CHAR*80> 'ACCEPT = 'PROMPT ' / ac...'
... 'WAVE_5 = ...','END'
REDS <SURF_EXTENSION> {structure}
BEAM_WT(3) <_REAL> 0,1,0
HISTORY <HISTORY> {structure}
CREATED <_CHAR*24> '1999-AUG-11 17:04:57.000'
CURRENT_RECORD <_INTEGER> 1
RECORDS(10) <HIST_REC> {array of structures}
Contents of RECORDS(1)
DATE <_CHAR*24> '1999-AUG-11 17:04:57.000'
COMMAND <_CHAR*29> 'REDUCE_SWITCH (SURF V1.4-3)'
USER <_CHAR*4> 'timj'
HOST <_CHAR*6> 'lapaki'
DATASET <_CHAR*33> '/local/jcmt/scratch/timj/orac/o10'
TEXT(3) <_CHAR*72> 'Parameters: IN=@10 MSG_FILTER='N...'
... 'Software: /star/bin/surf/redu...'
QUALITY <QUALITY> {structure}
QUALITY(37,32) <_UBYTE> 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
... 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
BADBITS <_UBYTE> 7
VARIANCE(37,32) <_REAL> 1.0950339E-6,7.1230471E-7,6.6492021E-7,
... 4.2760187E-9,7.4043317E-5,4.8094225E-6
AXIS(2) <AXIS> {array of structures}
Contents of AXIS(1)
DATA_ARRAY(37) <_REAL> 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
... 26,27,28,29,30,31,32,33,34,35,36,37
LABEL <_CHAR*9> 'Bolometer'
LABEL <_CHAR*8> 'Raw data'
TITLE <_CHAR*30> 'mars'
UNITS <_CHAR*5> 'Volts'
End of Trace.
The data arrays are now 2 dimensional, corresponding to the bolometer number and time axis. The axis information is written so that the integration number is reflected on the Y axis. Additionally, a new extension, REDS, is created to hold the relative beam weights; for maps these are always set to 0,1,0.
A photometry observation is slightly different from a map observation in that the output data array is now 3 dimensional rather than 2:
O107 <NDF>
MORE <EXT> {structure}
FIGARO <FIGARO_EXT> {structure}
{structure is empty}
SCUCD <SCUCD_ST> {structure}
JIGL_X(9) <_REAL> 0,2,2,0,-2,-2,-2,0,2
JIGL_Y(9) <_REAL> 0,0,2,2,2,0,-2,-2,-2
DEC1 <_REAL> 0
DEC2 <_REAL> 0
LST_STRT(2,1,8,1) <_DOUBLE> 1.8834042737017,1.8844116777459,
... 1.8981978240679,1.8971856029149
RA1 <_REAL> 0
RA2 <_REAL> 0
SCUBA <SCUBA_ST> {structure}
BOL_CALB(16,9) <_REAL> 1.286,0.9311,0.9499,1.002,0.9585,
... 1.054,1.065,1.045,1,1,1,1,1,1,0
BOL_DU3(16,9) <_REAL> 57.08,45.9,36.15,24.64,14.55,3.62,
... -15.78,9.047,-54.65,0,0,0,0,0,0
BOL_DU4(16,9) <_REAL> -28.14,-35.91,-41.46,-49.62,
... 63.89,77.76,71.16,0,0,0,0,0,0
BOL_QUAL(16,9) <_INTEGER> 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
... 0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1
BOL_TYPE(16,9) <_CHAR*20> 'SHORT','SHORT','SHORT','SHORT',
... 'P...','P1350_DC','P1100_DC','BAD'
BOL_ADC(130) <_INTEGER> 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
... 8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9
BOL_CHAN(130) <_INTEGER> 1,2,3,4,5,6,7,8,9,10,11,12,13,14,
... 12,13,14,15,16,1,2,3,4,5,6,7,8,9
FLAT_ADC <_INTEGER> 0
FLAT_CHN <_INTEGER> 0
FLAT_IND <_INTEGER> 0
PHOT_BB(3,2) <_INTEGER> 0,112,0,0,46,0
ISTART <_INTEGER> 0
NPIX <_INTEGER> 0
POINTER <_INTEGER> 0
DEM_PNTR(1,8,1) <_INTEGER> 1,10,19,28,37,46,55,64
FITS(171) <_CHAR*80> 'ACCEPT = 'not used' / ac...'
... 'WAVE_5 = ...','END'
REDS <SURF_EXTENSION> {structure}
BEAM_WT(3) <_REAL> 0.5,1,0.5
HISTORY <HISTORY> {structure}
CREATED <_CHAR*24> '1999-AUG-11 17:08:24.000'
CURRENT_RECORD <_INTEGER> 1
RECORDS(10) <HIST_REC> {array of structures}
Contents of RECORDS(1)
DATE <_CHAR*24> '1999-AUG-11 17:08:24.000'
COMMAND <_CHAR*29> 'REDUCE_SWITCH (SURF V1.4-3)'
USER <_CHAR*4> 'timj'
HOST <_CHAR*6> 'lapaki'
DATASET <_CHAR*34> '/local/jcmt/scratch/timj/orac/o107'
TEXT(3) <_CHAR*72> 'Parameters: IN=@107 MSG_FILTER='...'
... 'Software: /star/bin/surf/redu...'
DATA_ARRAY(130,72,3) <_REAL> -0.0002527004,-0.0006291242,
... 1.1537035E-5,0.001769435,0.001728294
QUALITY <QUALITY> {structure}
QUALITY(130,72,3) <_UBYTE> 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
... 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
BADBITS <_UBYTE> 7
VARIANCE(130,72,3) <_REAL> 3.6919182E-6,3.6207405E-6,4.2371025E-6,
... 1.3244949E-8,0.0002660675,2.1535034E-5
AXIS(3) <AXIS> {array of structures}
Contents of AXIS(1)
DATA_ARRAY(130) <_REAL> 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
... 122,123,124,125,126,127,128,129,130
LABEL <_CHAR*9> 'Bolometer'
LABEL <_CHAR*8> 'Raw data'
TITLE <_CHAR*30> 'hltau'
UNITS <_CHAR*5> 'Volts'
End of Trace.
The 3rd dimension corresponds to beam position. In most cases only beam 2 is used (the middle beam) but for two or three bolometer chopping the 1st and 3rd beams will be accessed. In general, the 1st and 3rd beams are simply scaled versions of the middle beam; the relative weighting of the beams is stored in the newly created BEAM_WT array in the REDS extension. In the above example, the middle beam is -0.5 times the left or right beams.
SURF Programming Interface