KPL/IK ASPERA Instrument kernel ============================================================================== This instrument kernel (I-kernel) contains Mars Express ASPERA sensor geometry parameters. Version and Date ---------------------------------------------------------------------------- Version 0.9 -- April 20, 2021 -- Ricardo Valles Blanco, ESAC/ESA Alfredo Escalante Lopez, ESAC/ESA Corrected minor typos and updated contact information for Mars Express PDS3 V2.0 release. Version 0.8 -- March 13, 2020 -- Marc Costa Sitja, ESAC/ESA Boris Semenov, NAIF/JPL Rudy Frahm, SWRI Corrected several typos, added clarification on IMA Sectors Directions definition usage and added an Addendum section to expand the information on using the SPICE implementation for IMA. Version 0.7 -- January 13, 2018 -- Marc Costa Sitja, ESAC/ESA Removed label from IK corrected several format issues. Version 0.6 -- October 6, 2008 -- J. Vazquez, MIG, SRE-OS/ESA Added "Overview" section. Version 0.5 -- September 13, 2004 -- Boris Semenov, NAIF/JPL Added a block specifying IMA sector layout with respect to the MEX_ASPERA_IMAS frame. Added discussion regarding IMA vs. IMAS frame provided by Rudy Frahm, SwRI. Updated IMA related comments. Version 0.4 -- March 14, 2004 -- Boris Semenov, NAIF/JPL Corrected NDP1 and NPD2 sector view directions. Version 0.3 -- November 24, 2003 -- Boris Semenov, NAIF/JPL Added SS1 and SS2 parameters. Version 0.2 -- September 9, 2003 -- Boris Semenov, NAIF/JPL Updated to match the frame and sector definitions established by the ASPERA team: -- replaced NDP with NPD1 and NPD2 -- re-defined the ELS, NPD, and IMA sector view directions to match the nomenclature established by the ASPERA team -- included view directions for all 16 x 16 IMA sectors -- added sector layout diagrams Version 0.1 -- July 18, 2003 -- Boris Semenov, NAIF/JPL Corrected spelling and grammar. Version 0.0 -- May 19, 2003 -- Boris Semenov, NAIF/JPL Initial release. References ---------------------------------------------------------------------------- 1. ``Kernel Pool Required Reading'' 2. ``C-kernel Required Reading'' 3. ``ASPERA-3'' ME-ASP-DS-0002, Draft Rev. 1, 23 April, 1999 4. Mars Express Frames Definition Kernel (FK), latest version. 5. ASPERA Sensor Numbering, by Stas Barabash, Latest Version, Aug 2003 6. E-mail from Rudy Frahm, SwRI; September 8, 2004. 7. ASPERA EAICD, MEX-ASPERA-PSA-ICD. 8. ``Description of the CALIB directory contents for an ASPERA-3 release.'', document available in any MEX-M-ASPERA3-2-EDR-IMA PDS3 data set: CALINFO.TXT 9. E-mail from Rudy Frahm, ``Operational change effects the ASPERA IK on Mars Express'', September 17, 2015. Contact Information ---------------------------------------------------------------------------- If you have any questions regarding this file contact the ESA SPICE Service at ESAC: Alfredo Escalante Lopez (+34) 91-8131-429 spice@sciops.esa.int, or NAIF at JPL: Boris Semenov (818) 354-8136 Boris.Semenov@jpl.nasa.gov Implementation Notes ---------------------------------------------------------------------------- Applications that need SPICE I-kernel data must ``load'' the I-kernel file, normally during program initialization. The SPICE routine FURNSH loads a kernel file into the pool as shown below. CALL FURNSH ( 'frame_kernel_name' ) -- FORTRAN furnsh_c ( "frame_kernel_name" ); -- C cspice_furnsh, frame_kernel_name -- IDL cspice_furnsh( 'frame_kernel_name' ) -- MATLAB furnsh( frame_kernel_name ) -- PYTHON* Loading the kernel using the SPICELIB routine FURNSH causes the data items and their associated values present in the kernel to become associated with a data structure called the ``kernel pool''. Once the file has been loaded, the SPICE routine GETFOV (getfov_c in C, cspice_getfov in IDL and MATLAB and cspice.getfov in PYTHON) can be used to retrieve FOV parameters for a given instrument or structure. The application program may obtain the value(s) for any other IK data item using the SPICELIB routines GDPOOL, GIPOOL, GCPOOL (gdpool_c, gipool_c, gcpool_c in C, cspice_gdpool, cspice_gipool, cspice_gcpool in IDL and MATLAB, cspice.gcpool in PYTHON). See [2] for details. This file was created with, and can be updated with a text editor or word processor. * SPICEYPY is a non-official, community developed Python wrapper for the NAIF SPICE toolkit. Its development is managed on Github. It is available at: https://github.com/AndrewAnnex/SpiceyPy Conventions for Specifying Data -------------------------------------------------------- Data items are specified using ``keyword=value'' assignments [1]. All keywords referencing values in this I-kernel start with the characters `INS' followed by the NAIF MEX instrument ID code, constructed using the spacecraft ID number (-41) followed by the NAIF three digit ID number for one of its sensors -- Electron Spectrometer, ELS (120), Neutral Particle Imager, NPI (130), Neutral Particle Detector 1, NPD1 (141), Neutral Particle Detector 2, NPD2 (142), Ion Mass Analyser, IMA (151), Ion Mass Analyser Sensor Head, IMAS (152), Solar Sensor 1, SS1 (161), or Solar Sensor 2, SS2 (162.) These IDs are defined in [4] as follows: Instrument name ID -------------------- ------ MEX_ASPERA -41100 MEX_ASPERA_ELS -41120 MEX_ASPERA_NPI -41130 MEX_ASPERA_NPD1 -41141 MEX_ASPERA_NPD2 -41142 MEX_ASPERA_IMA -41151 MEX_ASPERA_IMAS -41152 MEX_ASPERA_SS1 -41161 MEX_ASPERA_SS2 -41162 The remainder of the keyword is an underscore character followed by the unique name of the data item. For example, the number of sectors in the NPI aperture is specified by INS-41130_NUMBER_OF_SECTORS The upper bound on the length of all keywords is 32 characters. If a keyword is included in more then one file, or if the same keyword appears more than once within a single file, the last assignment supersedes any earlier assignments. Overview -------------------------------------------------------- From [7]: The Analyzer of Space Plasma and Energetic Atoms, 3rd version (ASPERA-3), aboard the Mars Express spacecraft is an instrument comprised of four different sensors (or detectors): the Electron Spectrometer (ELS), the Ion Mass Analyzer (IMA), the Neutral Particle Detector (NPD), and the Neutral Particle Imager (NPI). The general scientific objective of the ASPERA-3 experiment is to study the solar wind-atmosphere interaction and characterize the plasma and neutral gas environment in the near-Mars space through energetic neutral atom (ENA) imaging and local charged particle measurements. The studies are to address the fundamental question: How strongly do the interplanetary plasma and electromagnetic fields affect the Martian atmosphere? This question is directly related to the problem of Martian dehydration. The Neutral Particle Imager (NPI) provides measurements of the integral ENA flux (0.1 - 60 keV) with no mass and energy resolution but high angular resolution. The Neutral Particle Detector (NPD) provides measurements of the ENA flux, resolving velocity (0.1 - 10 keV) and mass (H and O) with a coarse angular resolution. The electron spectrometer (ELS) is a standard top-hat electrostatic analyzer in a very compact design. These three sensors are located on a scanning platform providing 4pi coverage (maximum possible). The instrument also contains an ion mass composition sensor, IMA (Ion Mass Analyzer). Mechanically, IMA is a separate unit connected by a cable to the ASPERA-3 main unit. IMA provides ion measurements in the energy range 0.01 - 40 keV/q for the main ion components H+, H2+, He+, O+, with 20-80 amu/q. Mounting Alignment -------------------------------------------------------- Refer to the latest version of the Mars Express Frames Definition Kernel (FK) [4] for the ASPERA reference frame definitions and mounting alignment information. Scanner Characteristics -------------------------------------------------------- The following essential parameters of the ASPERA main unit scanner are taken from [3]: ----------------------------- ----------- ------- Parameter name Value Unit ----------------------------- ----------- ------- maximum angle of rotation +/-100.00 deg angular position resolution 0.05 deg operational rotation rate 1.0/3.0/6.0 deg/sec maximum rotation rate 25.0 deg/sec ----------------------------- ----------- ------- The parameters are provided in the assignments below using the same units as in the table. \begindata INS-41111_ROTATION_RANGE = ( -100, 100 ) INS-41111_POSITION_ACCURACY = ( 0.05 ) INS-41111_ROTATION_RATE = ( 1.0, 3.0, 6.0 ) INS-41111_ROTATION_RATE_MAX = ( 25.0 ) \begintext Sensor Layout -------------------------------------------------------- This section contains assignments specifying the sensor layout by defining individual sector view directions for each of the ASPERA sensors -- ELS, NPI, NPD1, NPD2, IMA, SS1, and SS2. The combined aperture of each of the sensors is broken down into a number of equally or unequally spaced sectors to achieve the necessary spatial resolution within the sensor's sensor plane and in the direction normal to it (applicable for IMA only, since for the other sensors the cross-plane spatial resolution is achieved by scanning.) This table summarizes the individual sensor sector layout (based on [5]): --------- --------------------- --------------------- Sensor Number of Sectors Sector size, deg Name in-plane cross-plane in-plane cross-plane --------- -------- ----------- -------- ----------- ELS 16 1 22.5 4.0 NPI 32 1 11.25 9.0 NPD1 3 1 30.0 9.0 NPD2 3 1 30.0 9.0 IMA 16 16 22.5 5.625 SS1 1 1 90.0 2.0 SS2 1 1 90.0 2.0 --------- --------------------- --------------------- The parameters from the table are provided for each sensor using the following keywords: NUMBER_OF_SECTORS -- contains two integers for in-plane and cross-plane sector numbers SECTOR_SIZE -- contains two numbers for in-plane and cross-plane sector size, in degrees FRAME -- contains the name of the frame in which the sector view directions are defined SECTOR_DIRECTIONS -- contains sector center view directions for each sector in the sensor symmetry plane. (Note that this keyword does not provide the direction of all 320 IMA sectors but ONLY for the 16 located in the symmetry plane.) The order of vectors in the SECTOR_DIRECTIONS is different for different sensors. It is described for each particular sensor in that sensor's section of this IK. Section "IK Code Example" provided at the bottom of file includes a example C function and an example FORTRAN subroutine that can be used to retrieve values of these parameters for a specified sensor. ELS Sector Layout The ELS's 360.0 x 4.0 degrees aperture is split into 16 22.5 x 4.0 degrees sectors. All sector view directions are equally spaced within the YZ plane of the MEX_ASPERA_ELS frame. The "view direction" of each sector is inwards, from the sector position through the center of the aperture. The boundary between sectors "0" and "15" is coincident with the frame's Z axis, thus the sector "0" view direction is 11.25 degrees off the -Z axis towards -Y axis. This diagram illustrates ELS sector layout: ^ +Zels | S# indicate the sector "#" V7 | V8 position in the sensor V6 ....|.... V9 assembly. .' S15 | S0 `. V5 .' S14 | S1 `. V10 V# indicate the sector "#" . S13 | S2 . view direction. V4 . | . V11 .S12 | S3. For example, for . o--------------> +Yels Sector "1" the view .S11 / +Xels S4. direction is the vector V3 . / . V12 emanating from the .S10 / S5. aperture center through V2 . S9 / S6 . V13 the point designated `. / S8 S7 .' by "V1". V1/ ......... ' V14 / V0 V15 V View direction of sector "1" These keywords contain ELS sector parameters: \begindata INS-41120_NUMBER_OF_SECTORS = ( 16, 1 ) INS-41120_SECTOR_SIZE = ( 22.5, 4.0 ) INS-41120_FRAME = 'MEX_ASPERA_ELS' INS-41120_SECTOR_DIRECTIONS = ( 0.00000000 -0.19509032 -0.98078528 0.00000000 -0.55557023 -0.83146961 0.00000000 -0.83146961 -0.55557023 0.00000000 -0.98078528 -0.19509032 0.00000000 -0.98078528 0.19509032 0.00000000 -0.83146961 0.55557023 0.00000000 -0.55557023 0.83146961 0.00000000 -0.19509032 0.98078528 0.00000000 0.19509032 0.98078528 0.00000000 0.55557023 0.83146961 0.00000000 0.83146961 0.55557023 0.00000000 0.98078528 0.19509032 0.00000000 0.98078528 -0.19509032 0.00000000 0.83146961 -0.55557023 0.00000000 0.55557023 -0.83146961 0.00000000 0.19509032 -0.98078528 ) \begintext NPI Sensor Layout The NPI's 360.0 x 9.0 degrees aperture is split into 32 sectors. Each sector's aperture is 11.25 x 9.0 degrees and the sector view directions are 11.25 degrees apart. All sector view directions are equally spaced within the YZ plane of the MEX_ASPERA_NPI frame. The "view direction" of each sector is outwards, from center of the aperture through the sector position. The boundary between sectors "0" and "31" is coincident with the frame's Z axis, thus the "0" sector view direction is 5.625 degrees off the +Z axis towards +Y. This diagram illustrates NPI sector layout: +Znpi Sector "2" ^ view direction | ^ S# indicate the sector "#" V30 | V0 / position in the V28 ....|.... V2 assembly. .' S30 |S0 /`. V26 .'S28 | S2 `. V4 V# indicate the sector "#" .S26 | / S4 . view direction. V24 . | / . V6 .S24 |/ S6. For example, for . o--------------> +Ynpi Sector "2" the view .S22 +Xnpi S8. direction is the vector V22 . . V8 emanating from the .S20 S10. aperture center through V20 . S18 S12 . V10 the point designated `. S16 S14 .' by "V2". V18 ......... ' V12 V16 V14 These keywords contains NPI sector parameters: \begindata INS-41130_NUMBER_OF_SECTORS = ( 32, 1 ) INS-41130_SECTOR_SIZE = ( 11.25, 9.0 ) INS-41130_FRAME = 'MEX_ASPERA_NPI' INS-41130_SECTOR_DIRECTIONS = ( 0.00000000 0.09801714 0.99518473 0.00000000 0.29028468 0.95694034 0.00000000 0.47139674 0.88192126 0.00000000 0.63439328 0.77301045 0.00000000 0.77301045 0.63439328 0.00000000 0.88192126 0.47139674 0.00000000 0.95694034 0.29028468 0.00000000 0.99518473 0.09801714 0.00000000 0.99518473 -0.09801714 0.00000000 0.95694034 -0.29028468 0.00000000 0.88192126 -0.47139674 0.00000000 0.77301045 -0.63439328 0.00000000 0.63439328 -0.77301045 0.00000000 0.47139674 -0.88192126 0.00000000 0.29028468 -0.95694034 0.00000000 0.09801714 -0.99518473 0.00000000 -0.09801714 -0.99518473 0.00000000 -0.29028468 -0.95694034 0.00000000 -0.47139674 -0.88192126 0.00000000 -0.63439328 -0.77301045 0.00000000 -0.77301045 -0.63439328 0.00000000 -0.88192126 -0.47139674 0.00000000 -0.95694034 -0.29028468 0.00000000 -0.99518473 -0.09801714 0.00000000 -0.99518473 0.09801714 0.00000000 -0.95694034 0.29028468 0.00000000 -0.88192126 0.47139674 0.00000000 -0.77301045 0.63439328 0.00000000 -0.63439328 0.77301045 0.00000000 -0.47139674 0.88192126 0.00000000 -0.29028468 0.95694034 0.00000000 -0.09801714 0.99518473 ) \begintext NPD1 Sensor Layout The NPD1's 90.0 x 9.0 degrees aperture is split into 3 sectors that are 30 degrees apart. Each sector's aperture is 30.0 x 9.0 degrees. The "view direction" of each sector is outwards, from center of the aperture through the sector position. The view direction of sector "1" is along the MEX_ASPERA_NPD1 frame +Z axis. This diagram illustrates NPD1 sector layout: +Znpd1 +Ynpd1 S# indicate the sector "#" <. V0 .> position in the `. ..... .' assembly. V1. .' S0 . .' .`. . .' V# indicate the sector "#" . S1 . .' view direction. V2 . `. . .' . S2 `...' For example, for ...........o Sector "1" the view +Xnpd1 direction is the vector emanating from the aperture center through the point designated by "V1". These keywords contains NPD1 sector parameters: \begindata INS-41141_NUMBER_OF_SECTORS = ( 3, 1 ) INS-41141_SECTOR_SIZE = ( 30.0, 9.0 ) INS-41141_FRAME = 'MEX_ASPERA_NPD1' INS-41141_SECTOR_DIRECTIONS = ( 0.00000000 0.50000000 0.86602540 0.00000000 0.00000000 1.00000000 0.00000000 -0.50000000 0.86602540 ) \begintext NPD2 Sensor Layout The NPD2's 90.0 x 9.0 degrees aperture is split into 3 sectors that are 30 degrees apart. Each sector's aperture is 30.0 x 9.0 degrees. The "view direction" of each sector is outwards, from center of the aperture through the sector position. The view direction of sector "1" is along the MEX_ASPERA_NPD2 frame +Z axis. This diagram illustrates NPD2 sector layout: +Znpd2 S# indicate the sector "#" V0 .> position in the ..... .' assembly. . S0 `. .V1 . .'. V# indicate the sector "#" . S1 . view direction. . .' . V2 ..' S2 . For example, for o........... Sector "1" the view +Xnpd2 `. direction is the vector `. emanating from the `. aperture center through `. the point designated `. by "V1". `> +Ynpd2 These keywords contains NPD2 sector parameters: \begindata INS-41142_NUMBER_OF_SECTORS = ( 3, 1 ) INS-41142_SECTOR_SIZE = ( 30.0, 9.0 ) INS-41142_FRAME = 'MEX_ASPERA_NPD2' INS-41142_SECTOR_DIRECTIONS = ( 0.00000000 -0.50000000 0.86602540 0.00000000 0.00000000 1.00000000 0.00000000 0.50000000 0.86602540 ) \begintext SS1 Sensor Layout The SS1 has a single 90 x 2 degrees FOV centered around +Y axis of the MEX_ASPERA_SS1 frame. This whole FOV is assumed to be the SS1's only sector. This diagram illustrates SS1 sector layout: ^ +Zsaf | +Zss1 ^ | ' ..\.|....' .' \| '`. .' | ' `. .-> +Yss1 . |\ ' .-' . | \' .-' . . | o'+Xss1 . . o---''--..-----> +Ysaf . +Xsaf ''--.. . . . . . . `. .' ` ......... ' These keywords contains SS1 sector parameters: \begindata INS-41161_NUMBER_OF_SECTORS = ( 1, 1 ) INS-41161_SECTOR_SIZE = ( 90.0, 2.0 ) INS-41161_FRAME = 'MEX_ASPERA_SS1' INS-41161_SECTOR_DIRECTIONS = ( 0.00000000 1.00000000 0.00000000 ) \begintext These keywords contains formal SS1 FOV definition consistent with the GETFOV/getfov_c interfaces: \begindata INS-41161_FOV_FRAME = 'MEX_ASPERA_SS1' INS-41161_FOV_SHAPE = 'RECTANGLE' INS-41161_BORESIGHT = ( 0.00000000 1.00000000 0.00000000 ) INS-41161_FOV_CLASS_SPEC = 'ANGLES' INS-41161_FOV_REF_VECTOR = ( 0.00000000 0.00000000 1.00000000 ) INS-41161_FOV_REF_ANGLE = ( 45.0 ) INS-41161_FOV_CROSS_ANGLE = ( 1.0 ) INS-41161_FOV_ANGLE_UNITS = 'DEGREES' \begintext SS2 Sensor Layout The SS2 has a single 90 x 2 degrees FOV centered around +Y axis of the MEX_ASPERA_SS2 frame. This whole FOV is assumed to be the SS2's only sector. This diagram illustrates SS2 sector layout: ^ +Zsaf | ' | ^ +Zss2 '....|./.. .'' |/ `. +Yss2 <-. .' ' | `. V0`-. ' /| . .S0 `-. '/ | . . `x | . . ..--'' o--------------> +Ysaf --'' +Xss2 +Xsaf . . . . . . . `. .' ` ......... ' These keywords contains SS2 sector parameters: \begindata INS-41162_NUMBER_OF_SECTORS = ( 1, 1 ) INS-41162_SECTOR_SIZE = ( 90.0, 2.0 ) INS-41162_FRAME = 'MEX_ASPERA_SS2' INS-41162_SECTOR_DIRECTIONS = ( 0.00000000 1.00000000 0.00000000 ) \begintext These keywords contains formal SS2 FOV definition consistent with the GETFOV/getfov_c interfaces: \begindata INS-41162_FOV_FRAME = 'MEX_ASPERA_SS2' INS-41162_FOV_SHAPE = 'RECTANGLE' INS-41162_BORESIGHT = ( 0.00000000 1.00000000 0.00000000 ) INS-41162_FOV_CLASS_SPEC = 'ANGLES' INS-41162_FOV_REF_VECTOR = ( 0.00000000 0.00000000 1.00000000 ) INS-41162_FOV_REF_ANGLE = ( 45.0 ) INS-41162_FOV_CROSS_ANGLE = ( 1.0 ) INS-41162_FOV_ANGLE_UNITS = 'DEGREES' \begintext IMA Sensor Layout The IMA's 360.0 x 90.0 degrees aperture is split into 256 sectors -- 16 in-plane (azimuthal) by 16 cross-plane (polar) -- 22.5 x 5.625 degrees each. The sector view directions are equally spaced in in-plane and cross-plane directions. The "view direction" of each sector is inwards, from the sector position through the center of the aperture. In both dimensions -- in-plane and cross-plane -- the sectors are numbered from "0" to "15". In-plane, the boundary between azimuthal sectors "0" and "1" is coincident with the IMA frame's -Y axis/IMAS frame's -X axis, from which the sectors are counted CCW as seen from the tip of IMA frame's +X axis/IMAS frame's +Z axis. Cross plane, the polar sector "0" "layer" is closest to the IMA frame's -X axis/IMAS frame's -Z axis and the polar sector "15" "layer" is closest to the IMA frame's +X axis/IMAS frame's +Z axis. Please note that the 2-Dimensional grid defined below is based on nominal azimuthal and polar pitch. Due to operational reasons (IMA operating below 50eV) the sector directions differ and the polar angle becomes the central measurement plane, at an elevation of zero degrees or a polar angle of 90 degrees. This would require at least to additional sectors directions definitions which have not been included in this IK due to the time dependency of the values to apply (more information is available in [8]). Extended information on the above mentioned additional IMA sectors directions for operations below 50eV are provided in the last section of this file: ``IMA's Sector Directions Definitions Addendum''. This diagram illustrates in-plane (azimuthal) IMA sector layout: +Yimas ^ +Zima | A# indicate the azimuthal V5 | V4 sector "#" position in V6 ....|.... V3 the sensor assembly. .' A13 | A12 `. V7 .' A14 | A11`. V2 V# indicate the "#" sector . A15 | A10. view direction. V8 . | . V1 .A0 | A9. +Ximas For example, for . o--------------> +Yima Sector "11" the view .A1 / +Zimas A8. direction is the vector V9 . / +Xima . V0 emanating from the .A2 / A7. aperture center through V10 . / A6 . V15 the point designated `. / A4 A5 .' by "V11". V11 ......... ' V14 / V12 V13 V Azimuthal sector "11" view direction This diagram illustrates cross-plane (polar) IMA sector layout: +Yimas +Zima Polar Sector "3" ^ ^ view dir. A# indicate the polar V8 | V7 / sector "#" position in .----|----. V3 the sensor assembly. V15 ,-' P8|P7 `/. V0 .' | P3 `. `.P15 | / P0.' V# indicate the "#" sector `. | / .' view direction. `. | / .' `. | / .' For example, for polar `. |/+Ximas Sector "3" the view <-------------`o'+Yima direction is the vector +Zimas .' `. emanating from the +Xima .' `. aperture center through .' `. the point designated .' `. by "V2". .'P15 P0`. `. .' V15 `-. P8 P7 ,-' V0 `---------' V8 V7 As seen on the diagrams and pointed out in the text above the sector view direction can be defined in either IMA frame (MEX_ASPERA_IMA) or IMAS frame (MEX_ASPERA_IMAS). Originally only the IMA frame was defined in the MEX FK; the IMAS frame was added later for the reasons explained by Rudy Frahm (see [6]): The IMAS Frame -------------- The IMA frame is very useful in describing how data is related to the ASPERA instruments which are mounted on the scanner; however, it does not describe data in the frame of the instrument well. Due to the way that the IMA is designed, built, and operates, the sensor head of the IMA has a natural spherical coordinate system associated with its orientation. This spherical system best describes the way that IMA collects data. It is advantageous to organize data into the frame of the Sensor head for this purpose. This frame is called the IMAS, for IMA Sensor head. The IMAS frame is organized such that the +Z-imas points along the +X-ima axis, the +X-imas axis points along the +Y-ima axis, and the +Y-ima axis points along the +Z-ima axis. The IMAS system naturally produces the IMA polar angle directed opposite to the spherical polar angle of the IMAS frame and the IMA azimuthal angle in the same direction (with an offset) as the IMAS frame azimuthal angle. The difference between the IMA and IMAS frames is subtle. It involves spherical representation and the way in which the IMA operates. The IMA operates by taking data in a spherical system. Its pixels are similar to a bent trapezoid. The shape of this trapezoid has its parallel sides in an X-IMAS -- Y-IMAS plane. The non-parallel sides to the trapezoid lie along a meridian plane on the sensor head (Z-imas) axis. It is extremely difficult to describe the same meridian line from the IMAS frame using the IMA frame because every point is described by a unique set of IMA frame coordinate values. In a sense, the IMA frame requires describing a field-of-view which is at odd angles and each IMA pixel requires a unique description. The IMA frame can not easily describe the IMA pixel trapezoid because there is no spherical coordinate in the ima frame which aligns with any edge or side of the trapezoid. Thus, the IMAS frame is better oriented for describing objects within the IMA. Since the IMA frame was the only frame defined for the sensor in the earlier versions of the FK, the earlier IK contained just keywords specifying IMA sector layout with respect to it. When the IMAS frame was added, instead of re-defining all IMA parameters with respect to it (which would make the IK backward incompatible), a new, second set of definitions for the same sectors but relative to the IMAS frame was added. Thus, the two blocks of keywords below contain the same IMA sector parameters, except that in the first block they are defined relative to the MEX_ASPERA_IMA frame and are ``tagged'' with instrument ID -41151 while in the second block they are defined relative to the MEX_ASPERA_IMAS frame and are ``tagged'' with instrument ID -41152. In each block the sector directions are listed plane-by-plane, i.e. the first 16 vectors in the array are for azimuthal sectors "0" through "15" in polar plane "0". \begindata INS-41151_NUMBER_OF_SECTORS = ( 16, 16 ) INS-41151_SECTOR_SIZE = ( 22.5, 5.625 ) INS-41151_FRAME = 'MEX_ASPERA_IMA' INS-41151_SECTOR_DIRECTIONS = ( -0.67155895 0.72671396 -0.14455239 -0.67155895 0.72671396 0.14455239 -0.67155895 0.61607834 0.41165039 -0.67155895 0.41165039 0.61607834 -0.67155895 0.14455239 0.72671396 -0.67155895 -0.14455239 0.72671396 -0.67155895 -0.41165039 0.61607834 -0.67155895 -0.61607834 0.41165039 -0.67155895 -0.72671396 0.14455239 -0.67155895 -0.72671396 -0.14455239 -0.67155895 -0.61607834 -0.41165039 -0.67155895 -0.41165039 -0.61607834 -0.67155895 -0.14455239 -0.72671396 -0.67155895 0.14455239 -0.72671396 -0.67155895 0.41165039 -0.61607834 -0.67155895 0.61607834 -0.41165039 -0.59569930 0.78777412 -0.15669802 -0.59569930 0.78777412 0.15669802 -0.59569930 0.66784265 0.44623820 -0.59569930 0.44623820 0.66784265 -0.59569930 0.15669802 0.78777412 -0.59569930 -0.15669802 0.78777412 -0.59569930 -0.44623820 0.66784265 -0.59569930 -0.66784265 0.44623820 -0.59569930 -0.78777412 0.15669802 -0.59569930 -0.78777412 -0.15669802 -0.59569930 -0.66784265 -0.44623820 -0.59569930 -0.44623820 -0.66784265 -0.59569930 -0.15669802 -0.78777412 -0.59569930 0.15669802 -0.78777412 -0.59569930 0.44623820 -0.66784265 -0.59569930 0.66784265 -0.44623820 -0.51410274 0.84124760 -0.16733455 -0.51410274 0.84124760 0.16733455 -0.51410274 0.71317527 0.47652848 -0.51410274 0.47652848 0.71317527 -0.51410274 0.16733455 0.84124760 -0.51410274 -0.16733455 0.84124760 -0.51410274 -0.47652848 0.71317527 -0.51410274 -0.71317527 0.47652848 -0.51410274 -0.84124760 0.16733455 -0.51410274 -0.84124760 -0.16733455 -0.51410274 -0.71317527 -0.47652848 -0.51410274 -0.47652848 -0.71317527 -0.51410274 -0.16733455 -0.84124760 -0.51410274 0.16733455 -0.84124760 -0.51410274 0.47652848 -0.71317527 -0.51410274 0.71317527 -0.47652848 -0.42755509 0.88661939 -0.17635956 -0.42755509 0.88661939 0.17635956 -0.42755509 0.75163963 0.50222954 -0.42755509 0.50222954 0.75163963 -0.42755509 0.17635956 0.88661939 -0.42755509 -0.17635956 0.88661939 -0.42755509 -0.50222954 0.75163963 -0.42755509 -0.75163963 0.50222954 -0.42755509 -0.88661939 0.17635956 -0.42755509 -0.88661939 -0.17635956 -0.42755509 -0.75163963 -0.50222954 -0.42755509 -0.50222954 -0.75163963 -0.42755509 -0.17635956 -0.88661939 -0.42755509 0.17635956 -0.88661939 -0.42755509 0.50222954 -0.75163963 -0.42755509 0.75163963 -0.50222954 -0.33688985 0.92345256 -0.18368613 -0.33688985 0.92345256 0.18368613 -0.33688985 0.78286528 0.52309386 -0.33688985 0.52309386 0.78286528 -0.33688985 0.18368613 0.92345256 -0.33688985 -0.18368613 0.92345256 -0.33688985 -0.52309386 0.78286528 -0.33688985 -0.78286528 0.52309386 -0.33688985 -0.92345256 0.18368613 -0.33688985 -0.92345256 -0.18368613 -0.33688985 -0.78286528 -0.52309386 -0.33688985 -0.52309386 -0.78286528 -0.33688985 -0.18368613 -0.92345256 -0.33688985 0.18368613 -0.92345256 -0.33688985 0.52309386 -0.78286528 -0.33688985 0.78286528 -0.52309386 -0.24298018 0.95139237 -0.18924371 -0.24298018 0.95139237 0.18924371 -0.24298018 0.80655151 0.53892049 -0.24298018 0.53892049 0.80655151 -0.24298018 0.18924371 0.95139237 -0.24298018 -0.18924371 0.95139237 -0.24298018 -0.53892049 0.80655151 -0.24298018 -0.80655151 0.53892049 -0.24298018 -0.95139237 0.18924371 -0.24298018 -0.95139237 -0.18924371 -0.24298018 -0.80655151 -0.53892049 -0.24298018 -0.53892049 -0.80655151 -0.24298018 -0.18924371 -0.95139237 -0.24298018 0.18924371 -0.95139237 -0.24298018 0.53892049 -0.80655151 -0.24298018 0.80655151 -0.53892049 -0.14673047 0.97016976 -0.19297876 -0.14673047 0.97016976 0.19297876 -0.14673047 0.82247021 0.54955702 -0.14673047 0.54955702 0.82247021 -0.14673047 0.19297876 0.97016976 -0.14673047 -0.19297876 0.97016976 -0.14673047 -0.54955702 0.82247021 -0.14673047 -0.82247021 0.54955702 -0.14673047 -0.97016976 0.19297876 -0.14673047 -0.97016976 -0.19297876 -0.14673047 -0.82247021 -0.54955702 -0.14673047 -0.54955702 -0.82247021 -0.14673047 -0.19297876 -0.97016976 -0.14673047 0.19297876 -0.97016976 -0.14673047 0.54955702 -0.82247021 -0.14673047 0.82247021 -0.54955702 -0.04906767 0.97960388 -0.19485533 -0.04906767 0.97960388 0.19485533 -0.04906767 0.83046807 0.55490102 -0.04906767 0.55490102 0.83046807 -0.04906767 0.19485533 0.97960388 -0.04906767 -0.19485533 0.97960388 -0.04906767 -0.55490102 0.83046807 -0.04906767 -0.83046807 0.55490102 -0.04906767 -0.97960388 0.19485533 -0.04906767 -0.97960388 -0.19485533 -0.04906767 -0.83046807 -0.55490102 -0.04906767 -0.55490102 -0.83046807 -0.04906767 -0.19485533 -0.97960388 -0.04906767 0.19485533 -0.97960388 -0.04906767 0.55490102 -0.83046807 -0.04906767 0.83046807 -0.55490102 0.04906767 0.97960388 -0.19485533 0.04906767 0.97960388 0.19485533 0.04906767 0.83046807 0.55490102 0.04906767 0.55490102 0.83046807 0.04906767 0.19485533 0.97960388 0.04906767 -0.19485533 0.97960388 0.04906767 -0.55490102 0.83046807 0.04906767 -0.83046807 0.55490102 0.04906767 -0.97960388 0.19485533 0.04906767 -0.97960388 -0.19485533 0.04906767 -0.83046807 -0.55490102 0.04906767 -0.55490102 -0.83046807 0.04906767 -0.19485533 -0.97960388 0.04906767 0.19485533 -0.97960388 0.04906767 0.55490102 -0.83046807 0.04906767 0.83046807 -0.55490102 0.14673047 0.97016976 -0.19297876 0.14673047 0.97016976 0.19297876 0.14673047 0.82247021 0.54955702 0.14673047 0.54955702 0.82247021 0.14673047 0.19297876 0.97016976 0.14673047 -0.19297876 0.97016976 0.14673047 -0.54955702 0.82247021 0.14673047 -0.82247021 0.54955702 0.14673047 -0.97016976 0.19297876 0.14673047 -0.97016976 -0.19297876 0.14673047 -0.82247021 -0.54955702 0.14673047 -0.54955702 -0.82247021 0.14673047 -0.19297876 -0.97016976 0.14673047 0.19297876 -0.97016976 0.14673047 0.54955702 -0.82247021 0.14673047 0.82247021 -0.54955702 0.24298018 0.95139237 -0.18924371 0.24298018 0.95139237 0.18924371 0.24298018 0.80655151 0.53892049 0.24298018 0.53892049 0.80655151 0.24298018 0.18924371 0.95139237 0.24298018 -0.18924371 0.95139237 0.24298018 -0.53892049 0.80655151 0.24298018 -0.80655151 0.53892049 0.24298018 -0.95139237 0.18924371 0.24298018 -0.95139237 -0.18924371 0.24298018 -0.80655151 -0.53892049 0.24298018 -0.53892049 -0.80655151 0.24298018 -0.18924371 -0.95139237 0.24298018 0.18924371 -0.95139237 0.24298018 0.53892049 -0.80655151 0.24298018 0.80655151 -0.53892049 0.33688985 0.92345256 -0.18368613 0.33688985 0.92345256 0.18368613 0.33688985 0.78286528 0.52309386 0.33688985 0.52309386 0.78286528 0.33688985 0.18368613 0.92345256 0.33688985 -0.18368613 0.92345256 0.33688985 -0.52309386 0.78286528 0.33688985 -0.78286528 0.52309386 0.33688985 -0.92345256 0.18368613 0.33688985 -0.92345256 -0.18368613 0.33688985 -0.78286528 -0.52309386 0.33688985 -0.52309386 -0.78286528 0.33688985 -0.18368613 -0.92345256 0.33688985 0.18368613 -0.92345256 0.33688985 0.52309386 -0.78286528 0.33688985 0.78286528 -0.52309386 0.42755509 0.88661939 -0.17635956 0.42755509 0.88661939 0.17635956 0.42755509 0.75163963 0.50222954 0.42755509 0.50222954 0.75163963 0.42755509 0.17635956 0.88661939 0.42755509 -0.17635956 0.88661939 0.42755509 -0.50222954 0.75163963 0.42755509 -0.75163963 0.50222954 0.42755509 -0.88661939 0.17635956 0.42755509 -0.88661939 -0.17635956 0.42755509 -0.75163963 -0.50222954 0.42755509 -0.50222954 -0.75163963 0.42755509 -0.17635956 -0.88661939 0.42755509 0.17635956 -0.88661939 0.42755509 0.50222954 -0.75163963 0.42755509 0.75163963 -0.50222954 0.51410274 0.84124760 -0.16733455 0.51410274 0.84124760 0.16733455 0.51410274 0.71317527 0.47652848 0.51410274 0.47652848 0.71317527 0.51410274 0.16733455 0.84124760 0.51410274 -0.16733455 0.84124760 0.51410274 -0.47652848 0.71317527 0.51410274 -0.71317527 0.47652848 0.51410274 -0.84124760 0.16733455 0.51410274 -0.84124760 -0.16733455 0.51410274 -0.71317527 -0.47652848 0.51410274 -0.47652848 -0.71317527 0.51410274 -0.16733455 -0.84124760 0.51410274 0.16733455 -0.84124760 0.51410274 0.47652848 -0.71317527 0.51410274 0.71317527 -0.47652848 0.59569930 0.78777412 -0.15669802 0.59569930 0.78777412 0.15669802 0.59569930 0.66784265 0.44623820 0.59569930 0.44623820 0.66784265 0.59569930 0.15669802 0.78777412 0.59569930 -0.15669802 0.78777412 0.59569930 -0.44623820 0.66784265 0.59569930 -0.66784265 0.44623820 0.59569930 -0.78777412 0.15669802 0.59569930 -0.78777412 -0.15669802 0.59569930 -0.66784265 -0.44623820 0.59569930 -0.44623820 -0.66784265 0.59569930 -0.15669802 -0.78777412 0.59569930 0.15669802 -0.78777412 0.59569930 0.44623820 -0.66784265 0.59569930 0.66784265 -0.44623820 0.67155895 0.72671396 -0.14455239 0.67155895 0.72671396 0.14455239 0.67155895 0.61607834 0.41165039 0.67155895 0.41165039 0.61607834 0.67155895 0.14455239 0.72671396 0.67155895 -0.14455239 0.72671396 0.67155895 -0.41165039 0.61607834 0.67155895 -0.61607834 0.41165039 0.67155895 -0.72671396 0.14455239 0.67155895 -0.72671396 -0.14455239 0.67155895 -0.61607834 -0.41165039 0.67155895 -0.41165039 -0.61607834 0.67155895 -0.14455239 -0.72671396 0.67155895 0.14455239 -0.72671396 0.67155895 0.41165039 -0.61607834 0.67155895 0.61607834 -0.41165039 ) INS-41152_NUMBER_OF_SECTORS = ( 16, 16 ) INS-41152_SECTOR_SIZE = ( 22.5, 5.625 ) INS-41152_FRAME = 'MEX_ASPERA_IMAS' INS-41152_SECTOR_DIRECTIONS = ( 0.72671396 -0.14455239 -0.67155895 0.72671396 0.14455239 -0.67155895 0.61607834 0.41165039 -0.67155895 0.41165039 0.61607834 -0.67155895 0.14455239 0.72671396 -0.67155895 -0.14455239 0.72671396 -0.67155895 -0.41165039 0.61607834 -0.67155895 -0.61607834 0.41165039 -0.67155895 -0.72671396 0.14455239 -0.67155895 -0.72671396 -0.14455239 -0.67155895 -0.61607834 -0.41165039 -0.67155895 -0.41165039 -0.61607834 -0.67155895 -0.14455239 -0.72671396 -0.67155895 0.14455239 -0.72671396 -0.67155895 0.41165039 -0.61607834 -0.67155895 0.61607834 -0.41165039 -0.67155895 0.78777412 -0.15669802 -0.59569930 0.78777412 0.15669802 -0.59569930 0.66784265 0.44623820 -0.59569930 0.44623820 0.66784265 -0.59569930 0.15669802 0.78777412 -0.59569930 -0.15669802 0.78777412 -0.59569930 -0.44623820 0.66784265 -0.59569930 -0.66784265 0.44623820 -0.59569930 -0.78777412 0.15669802 -0.59569930 -0.78777412 -0.15669802 -0.59569930 -0.66784265 -0.44623820 -0.59569930 -0.44623820 -0.66784265 -0.59569930 -0.15669802 -0.78777412 -0.59569930 0.15669802 -0.78777412 -0.59569930 0.44623820 -0.66784265 -0.59569930 0.66784265 -0.44623820 -0.59569930 0.84124760 -0.16733455 -0.51410274 0.84124760 0.16733455 -0.51410274 0.71317527 0.47652848 -0.51410274 0.47652848 0.71317527 -0.51410274 0.16733455 0.84124760 -0.51410274 -0.16733455 0.84124760 -0.51410274 -0.47652848 0.71317527 -0.51410274 -0.71317527 0.47652848 -0.51410274 -0.84124760 0.16733455 -0.51410274 -0.84124760 -0.16733455 -0.51410274 -0.71317527 -0.47652848 -0.51410274 -0.47652848 -0.71317527 -0.51410274 -0.16733455 -0.84124760 -0.51410274 0.16733455 -0.84124760 -0.51410274 0.47652848 -0.71317527 -0.51410274 0.71317527 -0.47652848 -0.51410274 0.88661939 -0.17635956 -0.42755509 0.88661939 0.17635956 -0.42755509 0.75163963 0.50222954 -0.42755509 0.50222954 0.75163963 -0.42755509 0.17635956 0.88661939 -0.42755509 -0.17635956 0.88661939 -0.42755509 -0.50222954 0.75163963 -0.42755509 -0.75163963 0.50222954 -0.42755509 -0.88661939 0.17635956 -0.42755509 -0.88661939 -0.17635956 -0.42755509 -0.75163963 -0.50222954 -0.42755509 -0.50222954 -0.75163963 -0.42755509 -0.17635956 -0.88661939 -0.42755509 0.17635956 -0.88661939 -0.42755509 0.50222954 -0.75163963 -0.42755509 0.75163963 -0.50222954 -0.42755509 0.92345256 -0.18368613 -0.33688985 0.92345256 0.18368613 -0.33688985 0.78286528 0.52309386 -0.33688985 0.52309386 0.78286528 -0.33688985 0.18368613 0.92345256 -0.33688985 -0.18368613 0.92345256 -0.33688985 -0.52309386 0.78286528 -0.33688985 -0.78286528 0.52309386 -0.33688985 -0.92345256 0.18368613 -0.33688985 -0.92345256 -0.18368613 -0.33688985 -0.78286528 -0.52309386 -0.33688985 -0.52309386 -0.78286528 -0.33688985 -0.18368613 -0.92345256 -0.33688985 0.18368613 -0.92345256 -0.33688985 0.52309386 -0.78286528 -0.33688985 0.78286528 -0.52309386 -0.33688985 0.95139237 -0.18924371 -0.24298018 0.95139237 0.18924371 -0.24298018 0.80655151 0.53892049 -0.24298018 0.53892049 0.80655151 -0.24298018 0.18924371 0.95139237 -0.24298018 -0.18924371 0.95139237 -0.24298018 -0.53892049 0.80655151 -0.24298018 -0.80655151 0.53892049 -0.24298018 -0.95139237 0.18924371 -0.24298018 -0.95139237 -0.18924371 -0.24298018 -0.80655151 -0.53892049 -0.24298018 -0.53892049 -0.80655151 -0.24298018 -0.18924371 -0.95139237 -0.24298018 0.18924371 -0.95139237 -0.24298018 0.53892049 -0.80655151 -0.24298018 0.80655151 -0.53892049 -0.24298018 0.97016976 -0.19297876 -0.14673047 0.97016976 0.19297876 -0.14673047 0.82247021 0.54955702 -0.14673047 0.54955702 0.82247021 -0.14673047 0.19297876 0.97016976 -0.14673047 -0.19297876 0.97016976 -0.14673047 -0.54955702 0.82247021 -0.14673047 -0.82247021 0.54955702 -0.14673047 -0.97016976 0.19297876 -0.14673047 -0.97016976 -0.19297876 -0.14673047 -0.82247021 -0.54955702 -0.14673047 -0.54955702 -0.82247021 -0.14673047 -0.19297876 -0.97016976 -0.14673047 0.19297876 -0.97016976 -0.14673047 0.54955702 -0.82247021 -0.14673047 0.82247021 -0.54955702 -0.14673047 0.97960388 -0.19485533 -0.04906767 0.97960388 0.19485533 -0.04906767 0.83046807 0.55490102 -0.04906767 0.55490102 0.83046807 -0.04906767 0.19485533 0.97960388 -0.04906767 -0.19485533 0.97960388 -0.04906767 -0.55490102 0.83046807 -0.04906767 -0.83046807 0.55490102 -0.04906767 -0.97960388 0.19485533 -0.04906767 -0.97960388 -0.19485533 -0.04906767 -0.83046807 -0.55490102 -0.04906767 -0.55490102 -0.83046807 -0.04906767 -0.19485533 -0.97960388 -0.04906767 0.19485533 -0.97960388 -0.04906767 0.55490102 -0.83046807 -0.04906767 0.83046807 -0.55490102 -0.04906767 0.97960388 -0.19485533 0.04906767 0.97960388 0.19485533 0.04906767 0.83046807 0.55490102 0.04906767 0.55490102 0.83046807 0.04906767 0.19485533 0.97960388 0.04906767 -0.19485533 0.97960388 0.04906767 -0.55490102 0.83046807 0.04906767 -0.83046807 0.55490102 0.04906767 -0.97960388 0.19485533 0.04906767 -0.97960388 -0.19485533 0.04906767 -0.83046807 -0.55490102 0.04906767 -0.55490102 -0.83046807 0.04906767 -0.19485533 -0.97960388 0.04906767 0.19485533 -0.97960388 0.04906767 0.55490102 -0.83046807 0.04906767 0.83046807 -0.55490102 0.04906767 0.97016976 -0.19297876 0.14673047 0.97016976 0.19297876 0.14673047 0.82247021 0.54955702 0.14673047 0.54955702 0.82247021 0.14673047 0.19297876 0.97016976 0.14673047 -0.19297876 0.97016976 0.14673047 -0.54955702 0.82247021 0.14673047 -0.82247021 0.54955702 0.14673047 -0.97016976 0.19297876 0.14673047 -0.97016976 -0.19297876 0.14673047 -0.82247021 -0.54955702 0.14673047 -0.54955702 -0.82247021 0.14673047 -0.19297876 -0.97016976 0.14673047 0.19297876 -0.97016976 0.14673047 0.54955702 -0.82247021 0.14673047 0.82247021 -0.54955702 0.14673047 0.95139237 -0.18924371 0.24298018 0.95139237 0.18924371 0.24298018 0.80655151 0.53892049 0.24298018 0.53892049 0.80655151 0.24298018 0.18924371 0.95139237 0.24298018 -0.18924371 0.95139237 0.24298018 -0.53892049 0.80655151 0.24298018 -0.80655151 0.53892049 0.24298018 -0.95139237 0.18924371 0.24298018 -0.95139237 -0.18924371 0.24298018 -0.80655151 -0.53892049 0.24298018 -0.53892049 -0.80655151 0.24298018 -0.18924371 -0.95139237 0.24298018 0.18924371 -0.95139237 0.24298018 0.53892049 -0.80655151 0.24298018 0.80655151 -0.53892049 0.24298018 0.92345256 -0.18368613 0.33688985 0.92345256 0.18368613 0.33688985 0.78286528 0.52309386 0.33688985 0.52309386 0.78286528 0.33688985 0.18368613 0.92345256 0.33688985 -0.18368613 0.92345256 0.33688985 -0.52309386 0.78286528 0.33688985 -0.78286528 0.52309386 0.33688985 -0.92345256 0.18368613 0.33688985 -0.92345256 -0.18368613 0.33688985 -0.78286528 -0.52309386 0.33688985 -0.52309386 -0.78286528 0.33688985 -0.18368613 -0.92345256 0.33688985 0.18368613 -0.92345256 0.33688985 0.52309386 -0.78286528 0.33688985 0.78286528 -0.52309386 0.33688985 0.88661939 -0.17635956 0.42755509 0.88661939 0.17635956 0.42755509 0.75163963 0.50222954 0.42755509 0.50222954 0.75163963 0.42755509 0.17635956 0.88661939 0.42755509 -0.17635956 0.88661939 0.42755509 -0.50222954 0.75163963 0.42755509 -0.75163963 0.50222954 0.42755509 -0.88661939 0.17635956 0.42755509 -0.88661939 -0.17635956 0.42755509 -0.75163963 -0.50222954 0.42755509 -0.50222954 -0.75163963 0.42755509 -0.17635956 -0.88661939 0.42755509 0.17635956 -0.88661939 0.42755509 0.50222954 -0.75163963 0.42755509 0.75163963 -0.50222954 0.42755509 0.84124760 -0.16733455 0.51410274 0.84124760 0.16733455 0.51410274 0.71317527 0.47652848 0.51410274 0.47652848 0.71317527 0.51410274 0.16733455 0.84124760 0.51410274 -0.16733455 0.84124760 0.51410274 -0.47652848 0.71317527 0.51410274 -0.71317527 0.47652848 0.51410274 -0.84124760 0.16733455 0.51410274 -0.84124760 -0.16733455 0.51410274 -0.71317527 -0.47652848 0.51410274 -0.47652848 -0.71317527 0.51410274 -0.16733455 -0.84124760 0.51410274 0.16733455 -0.84124760 0.51410274 0.47652848 -0.71317527 0.51410274 0.71317527 -0.47652848 0.51410274 0.78777412 -0.15669802 0.59569930 0.78777412 0.15669802 0.59569930 0.66784265 0.44623820 0.59569930 0.44623820 0.66784265 0.59569930 0.15669802 0.78777412 0.59569930 -0.15669802 0.78777412 0.59569930 -0.44623820 0.66784265 0.59569930 -0.66784265 0.44623820 0.59569930 -0.78777412 0.15669802 0.59569930 -0.78777412 -0.15669802 0.59569930 -0.66784265 -0.44623820 0.59569930 -0.44623820 -0.66784265 0.59569930 -0.15669802 -0.78777412 0.59569930 0.15669802 -0.78777412 0.59569930 0.44623820 -0.66784265 0.59569930 0.66784265 -0.44623820 0.59569930 0.72671396 -0.14455239 0.67155895 0.72671396 0.14455239 0.67155895 0.61607834 0.41165039 0.67155895 0.41165039 0.61607834 0.67155895 0.14455239 0.72671396 0.67155895 -0.14455239 0.72671396 0.67155895 -0.41165039 0.61607834 0.67155895 -0.61607834 0.41165039 0.67155895 -0.72671396 0.14455239 0.67155895 -0.72671396 -0.14455239 0.67155895 -0.61607834 -0.41165039 0.67155895 -0.41165039 -0.61607834 0.67155895 -0.14455239 -0.72671396 0.67155895 0.14455239 -0.72671396 0.67155895 0.41165039 -0.61607834 0.67155895 0.61607834 -0.41165039 0.67155895 ) \begintext Platform ID --------------------------------------------------------------------------- This number is the NAIF instrument ID of the platform on which the different parts of the instrument are mounted. IMA is mounted on the IMA base while the other four sensors -- NPI, NPD1, NPD2, and ELS -- are attached to the scanner. \begindata INS-41120_PLATFORM_ID = ( -41111 ) INS-41130_PLATFORM_ID = ( -41111 ) INS-41141_PLATFORM_ID = ( -41111 ) INS-41142_PLATFORM_ID = ( -41111 ) INS-41151_PLATFORM_ID = ( -41150 ) INS-41152_PLATFORM_ID = ( -41150 ) \begintext IK Code Example --------------------------------------------------------------------------- This section contains an example code, in C and FORTRAN, illustrating how geometry parameters for a given sensor can be retrieved using appropriate SPICE routine. Both examples are presented as stand-alone functions with SPICE-style header, ready to be cut-n-paste and called from an application. C Example /* -Procedure getik ( Get ASPERA IK Data ) -Abstract Return IK data for a given ASPERA sensor. -Required_Reading KERNEL Required Reading (kernel.req) Latest ASPERA IK File (mex_aspera_vXX.ti -- version 5 or higher) Latest MEX FK File (mex_vXX.tf -- version 8 or higher) */ #include "SpiceUsr.h" #include void getik( ConstSpiceChar * sensor, SpiceChar * sensnm, SpiceInt * sensid, SpiceInt secnum[2], SpiceDouble secsiz[2], SpiceChar * secfrm, SpiceDouble * secdir ) /* -Brief_I/O Variable I/O Description -------- --- -------------------------------------------- sensor I Sensor acronym -- ELS,NPI,NPD1,NPD2,IMA,IMAS,SS1,SS2 sensnm O Full NAIF name of the sensor sensid O NAIF ID of the sensor secnum O Sector grid dimensions (in-plane, cross-plane) secsiz O Sector size, degrees (in-plane, cross-plane) secfrm O Frame in this in-plane view directions are defined secdir O Sector center view directions -Detailed Input N/A. -Detailed Output N/A. -Exceptions 1) If NAIF name <-> ID mapping for MEX instruments provided in the MEX FK file have not been loaded, then the error 'NOIDMAPPINGDATA' is signaled. 2) If any of the expected IK keywords provided in the ASPERA IK file have not been found in the POOL, then the error 'NOIKDATA' is signaled. 3) If not enough space should be provided for the sensnm, secfrm, secdir, then memory violations will occur. -Files MEX FK and ASPERA IK files must be loaded prior to calling this function. -Particulars MEX FK file loaded prior to calling this routine should contain MEX instrument naif <-> ID mappings. ASPERA IK file loaded prior to calling this routine should contain the following keywords for each of the sensors: INS#_NUMBER_OF_SECTORS INS#_SECTOR_SIZE INS#_FRAME INS#_SECTOR_DIRECTIONS -Examples In this example the function gets and prints out IK data for ELS. #include #include "SpiceUsr.h" void getik( ConstSpiceChar * sensor, SpiceChar * sensnm, SpiceInt * sensid, SpiceInt secnum[2], SpiceDouble secsiz[2], SpiceChar * secfrm, SpiceDouble * secdir ); int main( int argc, char * argv[] ) { SpiceChar sensnm [33]; SpiceInt sensid; SpiceInt secnum [2]; SpiceDouble secsiz [2]; SpiceChar secfrm [33]; SpiceDouble secdir [256][3]; SpiceInt i; /. Load MEX FK and ASPERA IK files. ./ furnsh_c( "../../../../fk/mex_v08.tf" ); furnsh_c( "../../../mex_aspera_v06.ti" ); /. Get ELS IK data. ./ getik( "ELS", sensnm, &sensid, secnum, secsiz, secfrm, ( SpiceDouble * ) secdir ); /. Report ELS IK data. ./ printf( "SENSOR NAIF NAME: %s \n", sensnm ); printf( "SENSOR NAIF ID: %ld \n", sensid ); printf( "NUMBER OF SECTORS: %ld %ld \n", secnum[0], secnum[1] ); printf( "SECTOR SIZE: %12.3f %12.3f\n", secsiz[0], secsiz[1] ); printf( "REFERENCE FRAME: %s \n", secfrm ); printf( "SECTOR VIEW DIRECTIONS: \n" ); for ( i = 0; i < secnum[0]*secnum[1]; i++ ) { printf( " %12.9f %12.9f %12.9f\n", secdir[i][0], secdir[i][1], secdir[i][2] ); } return(0); } -Restrictions N/A -Literature_References None. -Author_and_Institution B.V. Semenov (JPL) -Version -getik Version 1.2.0, 2003-NOV-22 (BVS) Updated comments to reflect that it also works for SS1 and SS2. -getik Version 1.1.0, 2003-SEP-10 (BVS) Updated to match corrected FK and IK. -getik Version 1.0.0, 2003-JUL-18 (BVS) Initial version -Index_Entries None. -& */ { /* Begin "get IK data */ SpiceChar ikkwd [33]; SpiceInt n; SpiceBoolean found; /* Since all IK variable names contain NAIF ID of the instrument, the inputs sensor acronym, NNN, needs to be expanded into its full name, MEX_ASPERA_NNN, which then can be uses to find the sensor's NAIF ID code. */ strcpy ( sensnm, "MEX_ASPERA_" ); strcat ( sensnm, sensor ); bodn2c_c ( sensnm, sensid, &found ); if ( ! found ) { setmsg_c ( "Cannot determine NAIF ID for #." ); errch_c ( "#", sensnm ); sigerr_c ( "NOIDMAPPINGDATA" ); } /* Now IK routines can be used to retrieve loaded data. First, retrieve the number of sectors provided in the INS-NNNNNN_NUMBER_OF_SECTORS keyword (here -NNNNNN is the NAIF ID of the sensor.) */ strcpy ( ikkwd, "INS#_NUMBER_OF_SECTORS" ); repmi_c ( ikkwd, "#", *sensid, 33, ikkwd ); gipool_c ( ikkwd, 0, 2, &n, secnum, &found ); if ( ! found ) { setmsg_c ( "Loaded IK does not contain #." ); errch_c ( "#", ikkwd ); sigerr_c ( "NOIKDATA" ); } /* Second, retrieve the sector size provided in the INS-NNNNNN_SECTOR_SIZE keyword. */ strcpy ( ikkwd, "INS#_SECTOR_SIZE" ); repmi_c ( ikkwd, "#", *sensid, 33, ikkwd ); gdpool_c ( ikkwd, 0, 2, &n, secsiz, &found ); if ( ! found ) { setmsg_c ( "Loaded IK does not contain #." ); errch_c ( "#", ikkwd ); sigerr_c ( "NOIKDATA" ); } /* Third, retrieve the frame in which sector view direction are defined. It is provided in the INS-NNNNNN_FRAME keyword. */ strcpy ( ikkwd, "INS#_FRAME" ); repmi_c ( ikkwd, "#", *sensid, 33, ikkwd ); gcpool_c ( ikkwd, 0, 1, 33, &n, secfrm, &found ); if ( ! found ) { setmsg_c ( "Loaded IK does not contain #." ); errch_c ( "#", ikkwd ); sigerr_c ( "NOIKDATA" ); } /* Last, retrieve the sector view directions provided in the INS-NNNNNN_SECTOR_DIRECTIONS keyword. */ strcpy ( ikkwd, "INS#_SECTOR_DIRECTIONS" ); repmi_c ( ikkwd, "#", *sensid, 33, ikkwd ); gdpool_c ( ikkwd, 0, (secnum[0]*secnum[1])*3, &n, secdir, &found ); if ( ! found ) { setmsg_c ( "Loaded IK does not contain #." ); errch_c ( "#", ikkwd ); sigerr_c ( "NOIKDATA" ); } } /* End of "get IK data" */ FORTRAN Example C$Procedure GETIK ( Get ASPERA IK Data ) SUBROUTINE GETIK ( SENSOR, SENSNM, SENSID, SECNUM, . SECSIZ, SECFRM, SECDIR ) C$ Abstract C C Return IK data for a given ASPERA sensor. C C$ Copyright C C Copyright (2003), California Institute of Technology. C U.S. Government sponsorship acknowledged. C C$ Required_Reading C C KERNEL Required Reading (kernel.req) C Latest ASPERA IK File (mex_aspera_vXX.ti -- version 5 or above) C Latest MEX FK File (mex_vXX.tf -- version 8 or above) C C$ Keywords C C KERNEL C UTILITY C C$ Declarations IMPLICIT NONE CHARACTER*(*) SENSOR CHARACTER*(*) SENSNM INTEGER SENSID INTEGER SECNUM ( 2 ) DOUBLE PRECISION SECSIZ ( 2 ) CHARACTER*(*) SECFRM DOUBLE PRECISION SECDIR ( 3, * ) C$ Brief_I/O C C VARIABLE I/O DESCRIPTION C -------- --- -------------------------------------------------- C SENSOR I Sensor acronym -- ELS,NPI,NPD1,NPD2,IMA,IMAS,SS1,SS2 C SENSNM O Full NAIF name of the sensor C SENSID O NAIF ID of the sensor C SECNUM O Sector grid dimensions (in-plane, cross-plane) C SECSIZ O Sector size, degrees (in-plane, cross-plane) C SECFRM O Frame in which view directions are defined C SECDIR O Sector center view directions C C$ Detailed_Input C C SENSOR ASPERA sensor acronym -- ELS, NPI, NPD1, NPD2, IMA, C SS1, or SS2. C C$ Detailed_Output C C SENSNM is the full NAIF name of the sensor indicated by C the input argument SENSOR. For example, the C acronym ELS maps to the full name MEX_ASPERA_ELS. C C SENSID is the NAIF integer ID code of the sensor. The C association of sensor names and codes is established C in the MEX frame kernel. C C SECNUM is an array of two integers giving the sector grid C dimensions (in-plane, cross-plane). C C SECSIZ is an array of two double precision numbers giving C the sector size in degrees (in-plane, cross-plane). C C SECFRM the name of the reference frame in which the view C directions are defined. C C SECDIR is an array of in-plane sector center view direction C vectors. The number of vectors is SECNUM(1)*SECNUM(2) C The Ith vector resides in array elements C C SECDIR(J,I) J = 1, 2, 3 C C$ Parameters C C None. C C$ Files C C MEX FK and ASPERA IK files must be loaded prior to calling this C subroutine. C C$ Exceptions C C 1) If NAIF name <-> ID mapping for MEX instruments provided in C the MEX FK file have not been loaded, then the error C NOIDMAPPINGDATA is signaled. C C 2) If any of the expected IK keywords provided in the ASPERA IK C file have not been found in the POOL, then the error NOIKDATA C is signaled. C C 3) If not enough space should be provided for the arguments C SENSNM, SECFRM, SECDIR, then memory violations will occur. C C$ Particulars C C The MEX FK file loaded prior to calling this routine should C contain MEX instrument <-> NAIF ID mappings. C C ASPERA IK file loaded prior to calling this routine should contain C the following keywords for each of the sensors: C C INS#_NUMBER_OF_SECTORS C INS#_SECTOR_SIZE C INS#_FRAME C INS#_SECTOR_DIRECTIONS C C$ Examples C C C In this example the program gets and prints out IK data for ELS. C C PROGRAM GETIK_EXAMPLE C IMPLICIT NONE C C C INTEGER NSEC C PARAMETER ( NSEC = 32 ) C C INTEGER NAMLEN C PARAMETER ( NAMLEN = 32 ) C C CHARACTER*(NAMLEN) SECFRM C CHARACTER*(NAMLEN) SENSNM C C DOUBLE PRECISION SECDIR ( 3, 256 ) C C INTEGER I C INTEGER J C INTEGER SECNUM ( 2 ) C DOUBLE PRECISION SECSIZ ( 2 ) C INTEGER SENSID C C C C C Load MEX FK and ASPERA IK files. C C C CALL FURNSH ( '../../../../fk/mex_v08.tf' ) C CALL FURNSH ( '../../../mex_aspera_v06.ti' ) C C C C C Get ELS IK data. C C C CALL GETIK( 'ELS', SENSNM, SENSID, SECNUM, C . SECSIZ, SECFRM, SECDIR ) C C C C C Report ELS IK data. C C C WRITE ( *, '(1X,2A )' ) 'SENSOR NAIF NAME: ', SENSNM C WRITE ( *, '(1X,A,I9 )' ) 'SENSOR NAIF ID: ', SENSID C WRITE ( *, '(1X,A,2I5 )' ) 'NUMBER OF SECTORS: ', SECNUM C WRITE ( *, '(1X,A,2F9.3 )' ) 'SECTOR SIZE: ', SECSIZ C WRITE ( *, '(1X,2A )' ) 'REFERENCE FRAME: ', SECFRM C WRITE ( *, '(1X,A )' ) 'SECTOR VIEW DIRECTIONS:' C C DO I = 1, SECNUM(1)*SECNUM(2) C WRITE ( *, '(1X,3F12.9)' ) ( SECDIR(J,I), J = 1, 3 ) C END DO C C END C C C$ Restrictions C C None. C C$ Author_and_Institution C C B.V. Semenov (JPL) C N.J. Bachman (JPL) C C$ Literature_References C C None. C C$ Version C C- GETIK Version 1.2.0, 22-NOV-2003 (BVS) C C Updated comments to reflect that it also works for SS1 C and SS2. C C- GETIK Version 1.1.0, 10-SEP-2003 (BVS) C C Updated to match corrected FK and IK. C C- GETIK Version 1.0.0, 15-AUG-2003 (BVS) (NJB) C C-& C C Local parameters C INTEGER NAMLEN PARAMETER ( NAMLEN = 32 ) C C Local variables C CHARACTER*(NAMLEN) IKKWD INTEGER N LOGICAL FOUND C C Since all IK variable names contain NAIF ID of the instrument, C the input sensor acronym, NNN, needs to be expanded into its C full name, MEX_ASPERA_NNN, which then can be used to find the C sensor's NAIF ID code. C SENSNM = 'MEX_ASPERA_' CALL SUFFIX ( SENSOR, 0, SENSNM ) CALL BODN2C ( SENSNM, SENSID, FOUND ) IF ( .NOT. FOUND ) THEN CALL SETMSG ( 'Cannot determine NAIF ID for #.' ) CALL ERRCH ( '#', SENSNM ) CALL SIGERR ( 'NOIDMAPPINGDATA' ) RETURN END IF C C Now IK routines can be used to retrieve loaded data. First, C retrieve the number of sectors provided in the C INS-NNNNNN_NUMBER_OF_SECTORS keyword (here -NNNNNN is the NAIF ID C of the sensor.) C IKKWD = 'INS#_NUMBER_OF_SECTORS' CALL REPMI ( IKKWD, '#', SENSID, IKKWD ) CALL GIPOOL ( IKKWD, 0, 2, N, SECNUM, FOUND ) IF ( .NOT. FOUND ) THEN CALL SETMSG ( 'Loaded IK does not contain #.' ) CALL ERRCH ( '#', IKKWD ) CALL SIGERR ( 'NOIKDATA' ) RETURN END IF C C Second, retrieve the sector size provided in the C INS-NNNNNN_SECTOR_SIZE keyword. C IKKWD = 'INS#_SECTOR_SIZE' CALL REPMI ( IKKWD, '#', SENSID, IKKWD ) CALL GDPOOL ( IKKWD, 0, 2, N, SECSIZ, FOUND ) IF ( .NOT. FOUND ) THEN CALL SETMSG ( 'Loaded IK does not contain #.' ) CALL ERRCH ( '#', IKKWD ) CALL SIGERR ( 'NOIKDATA' ) RETURN END IF C C Third, retrieve the frame in which sector view direction are C defined. It is provided in the INS-NNNNNN_FRAME keyword. C IKKWD = 'INS#_FRAME' CALL REPMI ( IKKWD, '#', SENSID, IKKWD ) CALL GCPOOL ( IKKWD, 0, 1, N, SECFRM, FOUND ) IF ( .NOT. FOUND ) THEN CALL SETMSG ( 'Loaded IK does not contain #.' ) CALL ERRCH ( '#', IKKWD ) CALL SIGERR ( 'NOIKDATA' ) RETURN END IF C C Last, retrieve the sector view directions provided in the C INS-NNNNNN_SECTOR_DIRECTIONS keyword. C IKKWD = 'INS#_SECTOR_DIRECTIONS ' CALL REPMI ( IKKWD, '#', SENSID, IKKWD ) CALL GDPOOL ( IKKWD, 0, SECNUM(1)*SECNUM(2)*3, N, SECDIR, FOUND ) IF ( .NOT. FOUND ) THEN CALL SETMSG ( 'Loaded IK does not contain #.' ) CALL ERRCH ( '#', IKKWD ) CALL SIGERR ( 'NOIKDATA' ) RETURN END IF END IMA Sector Directions Definitions Addendum --------------------------------------------------------------------------- The information provided in this section aims to provide to the user a better understanding of the appropriate usage of SPICE for the different operational modes of IMA. Nevertheless because of the dependencies and complexity involved no explicit definitions are provided. Please note that the definitions provided hereafter should be manually introduced by the user at her/his own risk. This information is derived from [9]. During the IMA voltage scan, the voltage is stepped from the highest voltage value to the lowest voltage value. The IMA voltages are proportional to the energy, so the voltage scan is often referred to as an energy scan. When the energy (the voltage) becomes less than 50 eV, a separate voltage controlling the polar angle direction is switched off. This effectively creates two different polar angle locations in the polar direction during one energy scan. For step energies above 50 eV (at the beginning of an energy scan), the polar angle value is as described in the ``IMA Sensor Layout'' section of this file. Below 50 eV (toward the end of the energy scan), the polar angle becomes the central measurement plane, at an elevation of zero degrees or a polar angle of 90 degrees. This change occurred at two different times. The first occurred beginning 27 October 2009 at 15:00:00.000 UTC and lasted until 28 October 2009 at 15:00:00.000 UTC. The second began from 16 November 2009 at 11:00:00.00 UTC and is the current operational scheme. During the low energy portion of the scan (below 50 eV), the IMA look directions should be as follows: INS-41151_NUMBER_OF_SECTORS = ( 16, 1 ) INS-41151_SECTOR_SIZE = ( 22.5, 5.625 ) INS-41151_FRAME = 'MEX_ASPERA_IMA' INS-41151_SECTOR_DIRECTIONS = ( 0.00000000 0.97960388 -0.19485533 0.00000000 0.97960388 0.19485533 0.00000000 0.83046807 0.55490102 0.00000000 0.55490102 0.83046807 0.00000000 0.19485533 0.97960388 0.00000000 -0.19485533 0.97960388 0.00000000 -0.55490102 0.83046807 0.00000000 -0.83046807 0.55490102 0.00000000 -0.97960388 0.19485533 0.00000000 -0.97960388 -0.19485533 0.00000000 -0.83046807 -0.55490102 0.00000000 -0.55490102 -0.83046807 0.00000000 -0.19485533 -0.97960388 0.00000000 0.19485533 -0.97960388 0.00000000 0.55490102 -0.83046807 0.00000000 0.83046807 -0.55490102 ) INS-41152_NUMBER_OF_SECTORS = ( 16, 1 ) INS-41152_SECTOR_SIZE = ( 22.5, 5.625 ) INS-41152_FRAME = 'MEX_ASPERA_IMAS' INS-41152_SECTOR_DIRECTIONS = ( 0.97960388 -0.19485533 0.00000000 0.97960388 0.19485533 0.00000000 0.83046807 0.55490102 0.00000000 0.55490102 0.83046807 0.00000000 0.19485533 0.97960388 0.00000000 -0.19485533 0.97960388 0.00000000 -0.55490102 0.83046807 0.00000000 -0.83046807 0.55490102 0.00000000 -0.97960388 0.19485533 0.00000000 -0.97960388 -0.19485533 0.00000000 -0.83046807 -0.55490102 0.00000000 -0.55490102 -0.83046807 0.00000000 -0.19485533 -0.97960388 0.00000000 0.19485533 -0.97960388 0.00000000 0.55490102 -0.83046807 0.00000000 0.83046807 -0.55490102 0.00000000 ) The energy scan occurs fastest, so the polar angle constantly jumps from the original polar angle value for the first part of the energy scan to the central measurement plane during the last part of the energy scan. This is repeated throughout the polar angle cycle. Thus, different polar angles are measured when above 50 eV and ions in the central measurement plane are measured below 50 eV with the same polar angle; the polar angle jumps back and forth at a rate of about 12 sec. The details of just when this occurs depends on the exact energy table used by IRF and the timing of when the instrument is active. This changing polar angle cannot be accommodated and the ASPERA3 team handles this by generating separate look directions for the central plane then for the scanning angle set. These are mainly used in different locations during the orbit. In the deep tail of Mars, IMA doesn't observe low energy ions, so the polar scanning data set is used. In the ionosphere, when the S/C is on the night side, IMA occasionally does observe high energy ions from the Mars plasma sheet simultaneously when observing low energy heavy ions from the ionosphere. At these times, the central plane pointing vectors are used for analyzing data below 50 eV and the polar scanning pointing vectors for the high energy plasma sheet ions. These changes were defined mainly for science reasons. When the spacecraft is around pericenter, most of the ions are heavy ions below 50 eV. At this location, the spacecraft is traveling with the highest velocity. So in order to detect ions at a faster rate from nearly the same angular position, IRF found it was operational desirable to shut off the polar angle deflection. IRF found that in the Mars ionosphere, knowledge of the rate of change in-plane below 50 eV was more significant than the knowledge of the rate of change out-of-plane. However, the opposite was true when the spacecraft was in the solar wind, where lighter ions are observed in the energy range of about 1 keV. Here angular scanning is significant in order to determine ions which are flowing in directions at various angles to the solar wind. End of IK file.