1 package nom.tam.fits.header;
2
3 /*
4 * #%L
5 * nom.tam FITS library
6 * %%
7 * Copyright (C) 1996 - 2024 nom-tam-fits
8 * %%
9 * This is free and unencumbered software released into the public domain.
10 *
11 * Anyone is free to copy, modify, publish, use, compile, sell, or
12 * distribute this software, either in source code form or as a compiled
13 * binary, for any purpose, commercial or non-commercial, and by any
14 * means.
15 *
16 * In jurisdictions that recognize copyright laws, the author or authors
17 * of this software dedicate any and all copyright interest in the
18 * software to the public domain. We make this dedication for the benefit
19 * of the public at large and to the detriment of our heirs and
20 * successors. We intend this dedication to be an overt act of
21 * relinquishment in perpetuity of all present and future rights to this
22 * software under copyright law.
23 *
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
27 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
28 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
29 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
30 * OTHER DEALINGS IN THE SOFTWARE.
31 * #L%
32 */
33
34 /**
35 * <p>
36 * This data dictionary contains FITS keywords that have been widely used within the astronomical community. It is
37 * recommended that these keywords only be used as defined here. These are the keywords that describe the data or the
38 * FITS file itself
39 * </p>
40 * <p>
41 * See <a href=
42 * "http://heasarc.gsfc.nasa.gov/docs/fcg/common_dict.html">http://heasarc.gsfc.nasa.gov/docs/fcg/common_dict.html</a>
43 * </p>
44 *
45 * @author Richard van Nieuwenhoven
46 */
47 public enum DataDescription implements IFitsHeader {
48 /**
49 * The value field shall contain a character string that uniquely defines the configuration state, or version, of
50 * the the software processing system that generated the data contained in the HDU. This keyword differs from the
51 * CREATOR keyword in that it give the name and version of the overall processing system and not just the name and
52 * version of a single program.
53 */
54 CONFIGUR(SOURCE.UNKNOWN, HDU.ANY, VALUE.STRING, "software configuration used to process the data"),
55
56 /**
57 * The value field shall contain a character string giving the name, and optionally, the version of the program that
58 * originally created the current FITS HDU. This keyword is synonymous with the PROGRAM keyword. Example: 'TASKNAME
59 * V1.2.3'
60 */
61 CREATOR(SOURCE.HEASARC, HDU.ANY, VALUE.STRING, "name of the software task that created the file"),
62
63 /**
64 * The value field shall contain a character string giving the the host file name used to record the original data.
65 */
66 FILENAME(SOURCE.NOAO, HDU.ANY, VALUE.STRING, "name of the file "),
67
68 /**
69 * The value field shall contain a character string giving the file type suffix of the host file name. The full file
70 * name typically consists of the root name (see ROOTNAME) followed by a file type suffix, separated by the period
71 * ('.') character.
72 */
73 FILETYPE(SOURCE.UNKNOWN, HDU.ANY, VALUE.STRING, "type of file"),
74
75 /**
76 * The value fields of this hierarchical set of indexed keywords shall contain character strings that classify the
77 * type of data contained in the HDU. The HDUCLAS1 keyword gives the highest, most general data classification, and
78 * the HDUCLAS2 and higher keywords provide progressively more detailed subclassifications of the data.
79 */
80 HDUCLASn(SOURCE.HEASARC, HDU.ANY, VALUE.STRING, "hierarchical classification of the data"),
81
82 /**
83 * The value field shall contain a character string that identifies the domain to which the associated HDUCLASn
84 * keywords apply. This keyword typically identifies the institution or project that has defined the allowed set of
85 * values for the associated hierarchical HDUCLASn keywords.
86 */
87 HDUCLASS(SOURCE.HEASARC, HDU.ANY, VALUE.STRING, "general identifier for the classification of the data"),
88
89 /**
90 * The value field shall contain a character string that gives a reference to a document that describes the allowed
91 * values that may be assigned to the HDUCLASn data classification keywords.
92 */
93 HDUDOC(SOURCE.HEASARC, HDU.ANY, VALUE.STRING, "reference to document describing the data format"),
94
95 /**
96 * This keyword is synonymous to the standard EXTLEVEL. It is recommended that the HDULEVEL and EXTLEVEL keywords
97 * should not both be given in the same HDU key, but if they are, then the HDULEVEL keyword will have precedence.
98 */
99 HDULEVEL(SOURCE.UNKNOWN, HDU.ANY, VALUE.INTEGER, "hierarchical level of the HDU"),
100
101 /**
102 * This keyword is synonymous to the standard EXTNAME keyword except. It is recommended that the HDUNAME and EXTNAME
103 * keywords should not both be given in the same HDU key, but if they are, then the HDUNAME keyword will have
104 * precedence.
105 */
106 HDUNAME(SOURCE.UNKNOWN, HDU.ANY, VALUE.STRING, "descriptive name of the HDU"),
107
108 /**
109 * This keyword is synonymous to the standard EXTVER keyword. It is recommended that the HDUVER and EXTVER keywords
110 * should not both be given in the same HDU key, but if they are, then the HDUVER keyword will have precedence.
111 */
112 HDUVER(SOURCE.UNKNOWN, HDU.ANY, VALUE.INTEGER, "version number of the HDU"),
113
114 /**
115 * The value field shall contain a character string that gives the specific version of the document referenced by
116 * HDUDOC.
117 */
118 HDUVERS(SOURCE.HEASARC, HDU.ANY, VALUE.STRING, "specific version of the document referenced by HDUDOC"),
119
120 /**
121 * The value field shall contain an integer giving the number of standard extensions contained in the FITS file.
122 * This keyword may only be used in the primary array key.
123 */
124 NEXTEND(SOURCE.STScI, HDU.PRIMARY, VALUE.INTEGER, "Number of standard extensions"),
125
126 /**
127 * The value field shall contain a character string giving the name, and optionally, the version of the program that
128 * originally created the current FITS HDU. This keyword is synonymous with the CREATOR keyword. Example: 'TASKNAME
129 * V1.2.3'
130 */
131 PROGRAM(SOURCE.UCOLICK, HDU.ANY, VALUE.STRING, "the name of the software task that created the file"),
132
133 /**
134 * The value field shall contain a character string giving the root of the host file name. The full file name
135 * typically consists of the root name followed by a file type suffix (see FILETYPE), separated by the period ('.')
136 * character.
137 */
138 ROOTNAME(SOURCE.UNKNOWN, HDU.ANY, VALUE.STRING, "rootname of the file"),
139
140 /**
141 * The value field of this indexed keyword shall contain a floating point number specifying the suggested bin size
142 * when producing a histogram of the values in column n. This keyword is typically used in conjunction the TLMINn
143 * and TLMAXn keywords when constructing a histogram of the values in column n, such that the histogram ranges from
144 * TLMINn to TLMAXn with the histogram bin size given by TDBINn. This keyword may only be used in 'TABLE' or
145 * 'BINTABLE' extensions.
146 */
147 TDBINn(SOURCE.CXC, HDU.TABLE, VALUE.REAL, "default histogram bin size for the column"),
148
149 /**
150 * The value field of this indexed keyword shall contain a floating point number specifying the maximum valid
151 * physical value represented in column n of the table, exclusive of any special values. This keyword may only be
152 * used in 'TABLE' or 'BINTABLE' extensions and is analogous to the DATAMAX keyword used for FITS images.
153 *
154 * @deprecated Use {@link Standard#TDMAXn} instead.
155 */
156 TDMAXn(SOURCE.HEASARC, HDU.TABLE, VALUE.REAL, "maximum value in the column"),
157
158 /**
159 * The value field of this indexed keyword shall contain a floating point number specifying the minimum valid
160 * physical value represented in column n of the table, exclusive of any special values. This keyword may only be
161 * used in 'TABLE' or 'BINTABLE' extensions and is analogous to the DATAMIN keyword used for FITS images.
162 *
163 * @deprecated Use {@link Standard#TDMINn} instead.
164 */
165 TDMINn(SOURCE.HEASARC, HDU.TABLE, VALUE.REAL, "minimum value in the column"),
166
167 /**
168 * The value field shall contain a character string giving a title that is suitable for display purposes, e.g., for
169 * annotation on images or plots of the data contained in the HDU.
170 */
171 TITLE(SOURCE.ROSAT, HDU.ANY, VALUE.STRING, "title for the observation or data"),
172
173 /**
174 * The value field of this indexed keyword shall contain a floating point number specifying the upper bound of the
175 * legal range of physical values that may be represented in column n of the table. The column may contain values
176 * that are greater than this legal maximum value but the interpretation of such values is not defined here. The
177 * value of this keyword is typically used as the maxinum value when constructing a histogram of the values in the
178 * column. This keyword may only be used in 'TABLE' or 'BINTABLE' extensions.
179 *
180 * @deprecated Use {@link Standard#TLMAXn} instead.
181 */
182
183 TLMAXn(SOURCE.HEASARC, HDU.TABLE, VALUE.REAL, "maximum legal value in the column"),
184 /**
185 * The value field of this indexed keyword shall contain a floating point number specifying the lower bound of the
186 * legal range of physical values that may be represented in column n of the table. The column may contain values
187 * that are less than this legal minimum value but the interpretation of such values is not defined here. The value
188 * of this keyword is typically used as the mininum value when constructing a histogram of the values in the column.
189 * This keyword may only be used in 'TABLE' or 'BINTABLE' extensions.
190 *
191 * @deprecated Use {@link Standard#TLMINn} instead.
192 */
193
194 TLMINn(SOURCE.HEASARC, HDU.TABLE, VALUE.REAL, "minimum legal value in the column"),
195 /**
196 * The value field shall contain a character string that defines the order in which the rows in the current FITS
197 * ASCII or binary table extension have been sorted. The character string lists the name (as given by the TTYPEn
198 * keyword) of the primary sort column, optionally followed by the names of any secondary sort column(s). The
199 * presence of this keyword indicates that the rows in the table have been sorted first by the values in the primary
200 * sort column; any rows that have the same value in the primary column have been further sorted by the values in
201 * the secondary sort column and so on for all the specified columns. If more than one column is specified by
202 * TSORTKEY then the names must be separated by a comma. One or more spaces are also allowed between the comma and
203 * the following column name. By default, columns are sorted in ascending order, but a minus sign may precede the
204 * column name to indicate that the rows are sorted in descending order. This keyword may only be used in 'TABLE' or
205 * 'BINTABLE' extensions. Example: TSORTKEY = 'TIME, RA, DEC'.
206 */
207 TSORTKEY(SOURCE.HEASARC, HDU.TABLE, VALUE.STRING, "defines the sort order of a table");
208
209 private final FitsKey key;
210
211 DataDescription(IFitsHeader.SOURCE status, HDU hdu, VALUE valueType, String comment) {
212 key = new FitsKey(name(), status, hdu, valueType, comment);
213 }
214
215 @Override
216 public final FitsKey impl() {
217 return key;
218 }
219 }