blob: 7a6c5aa1fd139b0c5b5021aeb2f07807e98cea65 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
# SMW definitions.
# The SMW package (the SMW structure and routines) provide an interface
# between the MWCS and the ONEDSPEC packages. It provides translation
# between different image formats and a standard interface for the spectral
# tasks. The types of formats supported are MULTISPEC, EQUISPEC, and 1-3D
# simple linear WCS as well as some older formats.
#
# The SMW package also provides separating the MULTISPEC MWCS into groups to
# avoid limitations in the number of attributes allowed by MWCS. This is
# primarily required for dispersion correction.
define SMW_NSPLIT 500 # Number of spectra per WCS
define SMW_LEN (33 + $1) # Length of SMW structure
define SMW_FORMAT Memi[$1] # Spectrum format
define SMW_NSPEC Memi[$1+1] # Number of spectra
define SMW_NBANDS Memi[$1+2] # Number of associated bands
define SMW_TRANS Memi[$1+3] # Transposed image?
define SMW_PDIM Memi[$1+4] # Physical dimension
define SMW_PAXIS Memi[$1+$2+4] # Physical axes [3]
define SMW_LDIM Memi[$1+8] # Logical dimension
define SMW_LAXIS Memi[$1+$2+8] # Logical axes [3]
define SMW_LLEN Memi[$1+$2+11] # Logical axes lengths [3]
define SMW_NSUM Memi[$1+$2+14] # Logical summing factors [2]
define SMW_DTYPE Memi[$1+17] # Dispersion type
define SMW_W1 Memd[P2D($1+18)] # Coord of first phys pixel
define SMW_DW Memd[P2D($1+20)] # Coord interval per phys pixel
define SMW_Z Memd[P2D($1+22)] # Doppler factor
define SMW_NW Memi[$1+24] # Number of dispersion pixels
define SMW_APS Memi[$1+25] # Pointer to apertures
define SMW_BEAMS Memi[$1+26] # Pointer to beams
define SMW_APLOW Memi[$1+27] # Pointer to aplows
define SMW_APHIGH Memi[$1+28] # Pointer to aphighs
define SMW_APID Memi[$1+29] # Pointer to default apid
define SMW_APIDS Memi[$1+30] # Pointer to apids
define SMW_CTLP Memi[$1+31] # CT logical -> physical
define SMW_NMW Memi[$1+32] # Number of MWCS pointers
define SMW_MW Memi[$1+$2+33] # MWCS pointer(s)
# Spectrum formats
define SMW_FORMATS "|equispec|multispec|"
define SMW_ND 0 # N-dimensional linear WCS
define SMW_ES 1 # Equispec WCS
define SMW_MS 2 # Multispec WCS
# Coordinate transformation structure.
define SMW_CTLEN (6 + $1) # Length of SMW CT structure
define SMW_SMW Memi[$1] # SMW pointer
define SMW_CTTYPE Memi[$1+1] # Transformation type
define SMW_DAXIS Memi[$1+2] # Dispersion axis
define SMW_AAXIS Memi[$1+3] # Aperture axis
define SMW_CTL Memi[$1+4] # Logical/physical pointer
define SMW_NCT Memi[$1+5] # Number of CT pointers
define SMW_CT Memi[$1+$2+6] # Physical/world pointer
# Transformation types
define SMW_CTTYPES "|logical|physical|"
define SMW_WL 12 # World to logical
define SMW_WP 13 # World to physical
define SMW_LW 21 # Logical to world
define SMW_LP 23 # Logical to physical
define SMW_PW 31 # Physical to world
define SMW_PL 32 # Physical to logical
# SHDR - Spectrum header data structure
define LEN_SHDR 380
define LEN_SHDRS 79 # Length of strings
define IMNAME Memc[P2C($1)] # Spectrum image name
define IMSEC Memc[P2C($1+40)] # Spectrum image section
define TITLE Memc[P2C($1+80)] # Title
define LABEL Memc[P2C($1+120)] # Dispersion label
define UNITS Memc[P2C($1+160)] # Dispersion units
define FLABEL Memc[P2C($1+200)] # Flux label
define FUNITS Memc[P2C($1+240)] # Flux units
define IM Memi[$1+280] # IMIO pointer
define MW Memi[$1+281] # SMW pointer
define CTLW Memi[$1+282] # SMW logical -> world
define CTWL Memi[$1+283] # SMW world -> logical
define CTLW1 Memi[$1+284] # SMW logical -> world
define CTWL1 Memi[$1+285] # SMW world -> logical
define UN Memi[$1+286] # UNITS pointer for SX
define MWUN Memi[$1+287] # UNITS pointer of SMW
define FUN Memi[$1+288] # Flux units pointer
define FUNIM Memi[$1+289] # Flux units pointer for image
define LINDEX Memi[$1+$2+289] # Logical image index [2]
define PINDEX Memi[$1+$2+291] # Physical image index [2]
define APINDEX Memi[$1+294] # Aperture index
define AP Memi[$1+295] # Aperture ID
define APLOW Memr[P2R($1+296)+$2-1] # Aperture lower limit [2]
define APHIGH Memr[P2R($1+298)+$2-1] # Aperture upper limit [2]
define BEAM Memi[$1+300] # Beam ID
define OFLAG Memi[$1+301] # Spectrum object type flag
define IT Memr[P2R($1+302)] # Integ. time
define RA Memr[P2R($1+303)] # Right ascension
define DEC Memr[P2R($1+304)] # Declination
define UT Memr[P2R($1+305)] # Universal time
define ST Memr[P2R($1+306)] # Siderial time
define HA Memr[P2R($1+307)] # Hour angle
define AM Memr[P2R($1+308)] # Airmass
define W0 Memr[P2R($1+309)] # Starting wavelength
define W1 Memr[P2R($1+310)] # Ending wavelength
define WP Memr[P2R($1+311)] # Wavelength increment per pixel
define DC Memi[$1+312] # Dispersion correction
define EC Memi[$1+313] # Extinction correction
define FC Memi[$1+314] # Flux calibration
define RC Memc[P2C($1+315)] # Reddening correction
define NP1 Memi[$1+355] # First logical pixel
define NP2 Memi[$1+356] # Last logical pixel
define SN Memi[$1+357] # Number of pixels
define SPEC Memi[$1+$2+357] # Pointers to spectra
define SID Memi[$1+$2+364] # Pointers to spectra ID strings
define STYPE Memi[$1+$2+371] # Spectrum type
# Spectrum types and access modes.
define STYPES "|coordinates|spectrum|raw|background|sigma|continuum|"
define SH_NTYPES 6 # Number of spectrum types
define SHHDR 0 # Get header only
define SHX 1 # Get coordinates
define SHDATA 2 # Get spectrum
define SHRAW 3 # Get raw spectrum
define SHSKY 4 # Get sky
define SHSIG 5 # Get sigma
define SHCONT 6 # Get continuum
# Shorthand for pointers to spectra.
define SX SPEC($1,SHX) # Spectrum coordinates
define SY SPEC($1,SHDATA) # Spectrum pointer
define SR SPEC($1,SHRAW) # Raw spectrum pointer
define SS SPEC($1,SHSKY) # Sky pointer
define SE SPEC($1,SHSIG) # Sigma pointer
define SC SPEC($1,SHCONT) # Continuum pointer
# Object flag values
define SKY 0
define OBJECT 1
define ARC 2
define FLAT 3
# Dispersion correction
define DCNO -1
define DCLINEAR 0
define DCLOG 1
define DCFUNC 2
# Extinction correction
define ECNO -1
define ECYES 0
# Flux calibration
define FCNO -1
define FCYES 0
|