1 package nom.tam.fits.header.extra; 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 import nom.tam.fits.header.FitsKey; 35 import nom.tam.fits.header.IFitsHeader; 36 37 /** 38 * <p> 39 * A Set of FITS Standard Extensions for Amateur Astronomical Processing Software Packages published by SBIG. 40 * </p> 41 * <p> 42 * Please note that SBIG has published a FITS Standard SBIGFITSEXT that SBIG with CCDOps, Software Bisque with CCDSoft 43 * and Diffraction Limited with MaximDl all agreed to and implemented. 44 * </p> 45 * <p> 46 * See <a href= "https://diffractionlimited.com/wp-content/uploads/2016/11/sbfitsext_1r0.pdf"> 47 * https://diffractionlimited.com/wp-content/uploads/2016/11/sbfitsext_1r0.pdf</a> 48 * </p> 49 * 50 * @author Attila Kovacs and Richard van Nieuwenhoven 51 * 52 * @see MaxImDLExt 53 */ 54 public enum SBFitsExt implements IFitsHeader { 55 56 /** 57 * Aperture Area of the Telescope used in square millimeters. Note that we are specifying the area as well as the 58 * diameter because we want to be able to correct for any central obstruction. 59 */ 60 APTAREA(VALUE.REAL, "[mm**2] telescope aperture area"), 61 62 /** 63 * Aperture Diameter of the Telescope used in millimeters. 64 */ 65 APTDIA(VALUE.REAL, "[mm] telescope aperture diameter"), 66 67 /** 68 * Upon initial display of this image use this ADU level for the Black level. 69 */ 70 CBLACK(VALUE.REAL, "[adu] black level counts"), 71 72 /** 73 * Temperature of CCD when exposure taken. 74 */ 75 CCD_TEMP("CCD-TEMP", VALUE.REAL, "[C] temperature of CCD"), 76 77 /** 78 * Altitude of the center of the image in +DDD MM SS.SSS format. 79 */ 80 CENTALT(VALUE.STRING, "DMS altitude of the center of the image"), 81 82 /** 83 * Azimuth of the center of the image in +DDD MM SS.SSS format. 84 */ 85 CENTAZ(VALUE.STRING, "DMS azimuth of the center of the image"), 86 87 /** 88 * Upon initial display of this image use this ADU level as the White level. For the SBIG method of displaying 89 * images using Background and Range the following conversions would be used: Background = CBLACK Range = CWHITE - 90 * CBLACK. 91 */ 92 CWHITE(VALUE.REAL, "[adu] white level counts"), 93 94 /** 95 * Total dark time of the observation. This is the total time during which dark current is collected by the 96 * detector. If the times in the extension are different the primary HDU gives one of the extension times. 97 * <p> 98 * units = UNITTIME 99 * </p> 100 * <p> 101 * default value = EXPTIME 102 * </p> 103 * <p> 104 * index = none 105 * </p> 106 */ 107 DARKTIME(VALUE.REAL, "[s] dark time"), 108 109 /** 110 * Electronic gain in e-/ADU. 111 */ 112 EGAIN(VALUE.REAL, "[ct/adu] electronic gain in electrons/ADU"), 113 114 /* 115 * Optional Keywords <p> The following Keywords are not defined in the FITS Standard but are defined in this 116 * Standard. They may or may not be included by AIP Software Packages adhering to this Standard. Any of these 117 * keywords read by an AIP Package must be preserved in files written. </p> 118 */ 119 120 /** 121 * Focal Length of the Telescope used in millimeters. 122 */ 123 FOCALLEN(VALUE.REAL, "[mm] focal length of telescope"), 124 125 /** 126 * This indicates the type of image and should be one of the following: 'Light Frame', 'Dark Frame', 'Bias Frame', 127 * 'Flat Field', or 'Tricolor Image'. 128 * 129 * @see #IMAGETYP_LIGHT_FRAME 130 * @see #IMAGETYP_DARK_FRAME 131 * @see #IMAGETYP_FLAT_FRAME 132 * @see #IMAGETYP_BIAS_FRAME 133 * @see #IMAGETYP_TRICOLOR_IMAGE 134 */ 135 IMAGETYP(VALUE.STRING, "type of image"), 136 137 /** 138 * This is the Declination of the center of the image in +DDD MM SS.SSS format. E.g. ‘+25 12 34.111’. North is + and 139 * South is -. 140 */ 141 OBJCTDEC(VALUE.STRING, "DMS declination of image center"), 142 143 /** 144 * This is the Right Ascension of the center of the image in HH MM SS.SSS format. E.g. ’12 24 23.123’. 145 */ 146 OBJCTRA(VALUE.STRING, "HMS right ascension of image center"), 147 148 /** 149 * Add this ADU count to each pixel value to get to a zero-based ADU. For example in SBIG images we add 100 ADU to 150 * each pixel to stop underflow at Zero ADU from noise. We would set PEDESTAL to -100 in this case. 151 */ 152 PEDESTAL(VALUE.REAL, "[adu] zero level counts"), 153 154 /** 155 * This string indicates the version of this standard that the image was created to ie ‘SBFITSEXT Version 1.0’. 156 */ 157 SBSTDVER(VALUE.STRING, "version of this standard"), 158 159 /** 160 * This is the setpoint of the cooling in degrees Celsius. If it is not specified the setpoint is assumed to be the 161 * ambient temperature. 162 */ 163 SET_TEMP("SET-TEMP", VALUE.REAL, "[C] setpoint of the cooling"), 164 165 /** 166 * Latitude of the imaging location in +DDD MM SS.SSS format. E.g. ‘+25 12 34.111’. North is + and South is -. 167 */ 168 SITELAT(VALUE.STRING, "DMS latitude of the imaging location"), 169 170 /** 171 * Longitude of the imaging location in +DDD MM SS.SSS format. E.g. ‘+25 12 34.111’. East is + and West is -. 172 */ 173 SITELONG(VALUE.STRING, "DMS longitude of the imaging location"), 174 175 /** 176 * Number of images combined to make this image as in track and accumulate or coadded images. 177 */ 178 SNAPSHOT(VALUE.INTEGER, "number of images combined"), 179 180 /** 181 * This indicates the name and version of the Software that initially created this file ie ‘SBIGs CCDOps Version 182 * 5.10’. 183 */ 184 SWCREATE(VALUE.STRING, "software name and version that created file"), 185 186 /** 187 * This indicates the name and version of the Software that modified this file ie ‘SBIGs CCDOps Version 5.10’ and 188 * the re can be multiple copies of this keyword. Only add this keyword if you actually modified the image and we 189 * suggest placing this above the HISTORY keywords corresponding to the modifications made to the image. 190 */ 191 SWMODIFY(VALUE.STRING, "list of software that modified file"), 192 193 /** 194 * If the image was auto-guided this is the exposure time in seconds of the tracker used to acquire this image. If 195 * this keyword is not present then the image was unguided or hand guided. 196 */ 197 TRAKTIME(VALUE.REAL, "[s] exposure time of the tracker"), 198 199 /** 200 * Binning factor in width. 201 */ 202 XBINNING(VALUE.INTEGER, "binning factor in width"), 203 204 /** 205 * Sub frame X position of upper left pixel relative to whole frame in binned pixel units. 206 */ 207 XORGSUBF(VALUE.INTEGER, "[pix] sub frame X position"), 208 209 /** 210 * Pixel width in microns (after binning). 211 */ 212 XPIXSZ(VALUE.REAL, "[um] pixel width"), 213 214 /** 215 * Binning factor in height. 216 */ 217 YBINNING(VALUE.INTEGER, "binning factor in height"), 218 219 /** 220 * Sub frame Y position of upper left pixel relative to whole frame in binned pixel units. 221 */ 222 YORGSUBF(VALUE.INTEGER, "[pix] sub frame Y position"), 223 224 /** 225 * Pixel height in microns (after binning). 226 */ 227 YPIXSZ(VALUE.REAL, "[um] pixel height"); 228 229 /** Standard {@link #IMAGETYP} value for a light frame. */ 230 public static final String IMAGETYP_LIGHT_FRAME = "Light Frame"; 231 232 /** Standard {@link #IMAGETYP} value for a bias frame. */ 233 public static final String IMAGETYP_BIAS_FRAME = "Bias Frame"; 234 235 /** Standard {@link #IMAGETYP} value for a dark frame. */ 236 public static final String IMAGETYP_DARK_FRAME = "Dark Frame"; 237 238 /** Standard {@link #IMAGETYP} value for a flat frame. */ 239 public static final String IMAGETYP_FLAT_FRAME = "Flat Frame"; 240 241 /** Standard {@link #IMAGETYP} value for a tricolor image. */ 242 public static final String IMAGETYP_TRICOLOR_IMAGE = "Tricolor Image"; 243 244 private final FitsKey key; 245 246 SBFitsExt(String key, VALUE valueType, String comment) { 247 this.key = new FitsKey(key == null ? name() : key, IFitsHeader.SOURCE.SBIG, HDU.IMAGE, valueType, comment); 248 } 249 250 SBFitsExt(VALUE valueType, String comment) { 251 this(null, valueType, comment); 252 } 253 254 @Override 255 public final FitsKey impl() { 256 return key; 257 } 258 259 }