View Javadoc
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 }