KPL/IK MIMI Instrument Kernel ============================================================================== This instrument kernel (I-kernel) contains references to the mounting alignment, internal and FOV geometry for the Cassini Magnetospheric Imaging Instrument (MIMI). Version and Date ---------------------------------------------------------- The TEXT_KERNEL_ID stores version information of loaded project text kernels. Each entry associated with the keyword is a string that consists of four parts: the kernel name, version, entry date, and type. For example, the ISS I-kernel might have an entry as follows: TEXT_KERNEL_ID += 'CASSINI_ISS V0.0.0 29-SEPTEMBER-1999 IK' | | | | | | | | KERNEL NAME <-------+ | | | | | V VERSION <-------+ | KERNEL TYPE | V ENTRY DATE MIMI I-Kernel Version: \begindata TEXT_KERNEL_ID = 'CASSINI_MIMI V0.0.0 04-OCT-2000 IK' \begintext Version 0.0 -- October 4, 2000 -- Scott Turner -- Initial Prototype Release for Review References ---------------------------------------------------------- 1. ``Cassini Science Instruments and Investigations'', Revised Second Printing. Stephen J. Edberg. 2. ``Kernel Pool Required Reading'' 3. JPL Cassini Project Web Page describing the instruments. 4. Cassini/NAIF SPICE Workship, November 8-9, 1999. 5. Email from Jeff Boyer regarding necessary data for footprint calculations. 6. Cassini Spacecraft Frames Definition Kernel 7. CASPER MIMI I-kernel Version 4.0 Contact Information ---------------------------------------------------------- Direct questions, comments or concerns about the contents of this kernel to: Scott Turner, NAIF/JPL, (818)-345-3157, sturner@spice.jpl.nasa.gov Implementation Notes ---------------------------------------------------------- This file is used by the SPICE system as follows: programs that make use of this instrument kernel must ``load'' the kernel, normally during program initialization. Loading the kernel associates data items with their names in a data structure called the ``kernel pool''. The SPICELIB routine FURNSH and CSPICE routine furnsh_c load SPICE kernels as shown below: FORTRAN (SPICELIB) CALL FURNSH ( 'kernel_name' ) C (CSPICE) furnsh_c ( "kernel_name" ) In order for a program or subroutine to extract data from the pool, the SPICELIB routines GDPOOL and GIPOOL are used. See [2] for details. This file was created and may be updated with a text editor or word processor. Naming Conventions ---------------------------------------------------------- All names referencing values in this I-kernel start with the characters `INS' followed by the NAIF Cassini spacecraft ID number (-82) followed by a NAIF three digit code for the MIMI detectors. (CHEMS = 760, INCA = 761, LEMMS1 = 762 , LEMMS2 = 763 ). The remainder of the name is an underscore character followed by the unique name of the data item. For example, the MIMI_CHEMS boresight direction in the MIMI_CHEMS frame (``CASSINI_MIMI_CHEMS'' -- see [6] ) is specified by: INS-82760_BORESIGHT The upper bound on the length of the name of any data item is 32 characters. If the same item is included in more than one file, or if the same item appears more than once within a single file, the latest value supersedes any earlier values. MIMI description ---------------------------------------------------------- From [3]: The Magnetospheric Imaging Instrument (MIMI) will provide global images of Saturnian hot plasmas remotely and will perform comprehensive direct measurements of hot plasma, including charge state and elemental composition. The MIMI instrument consists of one set of electronics, the MIMI electronics box, servicing three detector heads that perform the various measurements: the low-energy magnetospheric measurements system (LEMMS), the charge-energy-mass spectrometer (CHEMS), and the ion and neutral camera (INCA). For information on these components, see below. (MIMI) The MIMI electronics box contains the data processing unit (DPU) and the digital processing electronics for all three detector heads. The low-energy magnetospheric measurements system (LEMMS) detector head will measure low- and high-energy proton, ion, and electron angular distributions. The LEMMS head is mounted on a scan platform capable of 180-degree rotations. The platform is mounted so that the rotation axis is oriented perpendicular to the spacecraft X axis and so that its extrapolation intersects the spacecraft Z axis. The charge-energy-mass spectrometer (CHEMS) head will measure the charge state and composition of ions in the most energetically important portion of the Saturnian magnetospheric plasma. The ion and neutral camera (INCA) will make two different types of measurements. It will obtain with very high sensitivity the three-dimensional distribution, velocities, and rough composition of magnetospheric and interplanetary ions for those regions in which the energetic ion fluxes are very low. The INCA instrument will also obtain remote images of the global distribution of the energetic neutral emission of hot plasmas in the Saturnian magnetosphere, measuring the composition and velocities of those energetic neutrals for each image pixel. MIMI Field of View Parameters ---------------------------------------------------------- The field of view parameters for the four detectors that constitute MIMI are: -- Charge-Energy-Mass Spectrometer (CHEMS) -- Ion and Neutral Camera (INCA) -- Low Energy Magnetospheric Measurements System 1 (LEMMS1) -- Low Energy Magnetospheric Measurements System 2 (LEMMS2) Circular FOVs: ------------ ------------------- Detector Diameter ------------ ------------------- LEMMS1 15.0 degrees LEMMS2 30.0 degrees ------------ ------------------- Rectangular FOVs: ------------ -------------------- -------------------- Detector Horizontal Vertical ------------ -------------------- -------------------- CHEMS 4.80 degrees 159.0 degrees INCA 90.0 degrees 120.0 degrees ------------ -------------------- -------------------- The keywords INS[ID]_FOV_FRAME, INS[ID]_FOV_SHAPE, INS[ID]_BORESIGHT, and INS[ID]_FOV_BOUNDARY_CORNERS defined below are used to describe the instrument field of view. Since the LEMMS detectors have a circular field of view and CHEMS and INCA have rectangular ones, the INS[ID]_FOV_SHAPE will either be 'CIRCLE' or 'RECTANGLE'. In the case of the LEMMS, INS[ID]_FOV_BOUNDARY_CORNERS contains a single vector that lies along the edge of the circular cone, and for CHEMS and INCA four vectors. All four FOV boresights lie along the Z-axis. Charge-Energy-Mass Spectrometer (CHEMS) FOV Definition Since CHEMS has a rectangular field of view, four boundary corner vectors must be computed. This requires two separate views. First consider looking down the X-axis in the CASSINI_MIMI_CHEMS frame at the X=0 plane which permits the computation of the Y components of the boundary corner vectors. In the plane the half angle of note is 79.5 degrees. ^ Y | ins | | /| | / | | / | | / o | |/ 79.5 | x---------------> X \ | Z ins \ | ins \ | \ | \| |-- 1.0 --| Plane X = 0 Y Component = +/- 1.0 * tan ( 79.5 degrees ) = +/- 5.395517174 Since the field of view is rectangular a similar computation yields the X components. This time look up the Y-axis at the Y=0 plane. The half angle of interest is 2.4 degrees. ^ X | ins | | /| | / | | / | | / o | |/ 2.40 | o---------------> Y \ | Z ins \ | ins \ | \ | \| |-- 1.0 --| Plane Y = 0 X Component = +/- 1.0 * tan ( 2.40 degrees ) = +/- 0.041912418 The boundary corner vectors as displayed below are normalized to unit length. Charge-Energy-Mass Spectrometer (CHEMS): \begindata INS-82760_FOV_FRAME = 'CASSINI_MIMI_CHEMS' INS-82760_FOV_SHAPE = 'RECTANGLE' INS-82760_BORESIGHT = ( 0.0000000000000000 0.0000000000000000 +1.0000000000000000 ) INS-82760_FOV_BOUNDARY_CORNERS = ( -0.0076377087452401 +0.9832262282573500 +0.1822302100968500 -0.0076377087452401 -0.9832262282573500 +0.1822302100968500 +0.0076377087452401 -0.9832262282573500 +0.1822302100968500 +0.0076377087452401 +0.9832262282573500 +0.1822302100968500 ) \begintext The angular extents of this FOV are computed by calculating the angular separation between the bisector of adjacent unit boundary corner vectors and the boresight. Below is some sample FORTRAN and C code that determines these half angles off the boresight. FORTRAN EXAMPLE C C Retrieve FOV parameters from the kernel pool. C CALL GETFOV ( -82760, 4, SHAPE, FRAME, BSGHT, N, BNDS ) C C Normalize the 3 boundary vectors C CALL UNORM ( BNDS(1,1), UNTBND(1,1), MAG ) CALL UNORM ( BNDS(1,2), UNTBND(1,2), MAG ) CALL UNORM ( BNDS(1,3), UNTBND(1,3), MAG ) C C Compute the bisectors. C CALL VADD ( UNTBND(1,1), UNTBND(1,2), VEC1 ) CALL VSCL ( 0.5, VEC1, VEC1 ) CALL VADD ( UNTBND(1,2), UNTBND(1,3), VEC2 ) CALL VSCL ( 0.5, VEC2, VEC2 ) C C Compute the angular separations C ANG1 = VSEP( BSGHT, VEC1 ) ANG2 = VSEP( BSGHT, VEC2 ) C C Separate the larger and smaller angles. C LRGANG = MAX( ANG1, ANG2) SMLANG = MIN( ANG1, ANG2) C EXAMPLE /* Define the string length parameter. */ #define STRSIZ 80 /* Retrieve the FOV parameters from the kernel pool. */ getfov_c( -82760, 4, STRSIZ, STRSIZ, shape, frame, bsght, &n, bnds ); /* Normalize the 3 boundary vectors. */ unorm_c ( &(bnds[0][0]), &(untbnd[0][0]), &mag ); unorm_c ( &(bnds[1][0]), &(untbnd[1][0]), &mag ); unorm_c ( &(bnds[2][0]), &(untbnd[2][0]), &mag ); /* Compute the angular separations. */ vadd_c ( &(untbnd[0][0]), &(untbnd[1][0]), vec1 ); vscl_c ( 0.5, vec1, vec1 ); vadd_c ( &(untbnd[1][0]), &(untbnd[2][0]), vec2 ); vscl_c ( 0.5, vec2, vec2 ); /* Compute the angular separations. */ ang1 = vsep_c( bsght, vec1); ang2 = vsep_c( bsght, vec2); /* Separate the larger and smaller angles. */ if ( ang1 > ang2 ) { lrgang = ang1; smlang = ang2; } else { lrgang = ang2; smlang = ang1; } Ion and Neutral Camera (INCA) FOV Definition Since INCA has a rectangular field of view, four boundary corner vectors must be computed. This requires two separate views. First consider looking down the X-axis in the CASSINI_MIMI_INCA frame at the X=0 plane which permits the computation of the Y components of the boundary corner vectors. In the plane the half angle of note is 60.0 degrees. ^ Y | ins | | /| | / | | / | | / o | |/ 60.0 | x---------------> X \ | Z ins \ | ins \ | \ | \| |-- 1.0 --| Plane X = 0 Y Component = +/- 1.0 * tan ( 60.0 degrees ) = +/- 1.732050808 Since the field of view is rectangular a similar computation yields the X components. This time look up the Y-axis at the Y=0 plane. The half angle of interest is 45.0 degrees. ^ X | ins | | /| | / | | / | | / o | |/ 45.0 | o---------------> Y \ | Z ins \ | ins \ | \ | \| |-- 1.0 --| Plane Y = 0 X Component = +/- 1.0 * tan ( 45.0 degrees ) = +/- 1.0 The boundary corner vectors as displayed below are normalized to unit length. Ion and Neutral Camera (INCA): \begindata INS-82761_FOV_FRAME = 'CASSINI_MIMI_INCA' INS-82761_FOV_SHAPE = 'RECTANGLE' INS-82761_BORESIGHT = ( 0.0000000000000000 0.0000000000000000 +1.0000000000000000 ) INS-82761_FOV_BOUNDARY_CORNERS = ( -0.4472135954999600 +0.7745966692414800 +0.4472135954999600 -0.4472135954999600 -0.7745966692414800 +0.4472135954999600 +0.4472135954999600 -0.7745966692414800 +0.4472135954999600 +0.4472135954999600 +0.7745966692414800 +0.4472135954999600 ) \begintext The angular extents of this FOV are computed by calculating the angular separation between the bisector of adjacent unit boundary corner vectors and the boresight. Below is some sample FORTRAN and C code that determines these half angles off the boresight. FORTRAN EXAMPLE C C Retrieve FOV parameters from the kernel pool. C CALL GETFOV ( -82761, 4, SHAPE, FRAME, BSGHT, N, BNDS ) C C Normalize the 3 boundary vectors C CALL UNORM ( BNDS(1,1), UNTBND(1,1), MAG ) CALL UNORM ( BNDS(1,2), UNTBND(1,2), MAG ) CALL UNORM ( BNDS(1,3), UNTBND(1,3), MAG ) C C Compute the bisectors. C CALL VADD ( UNTBND(1,1), UNTBND(1,2), VEC1 ) CALL VSCL ( 0.5, VEC1, VEC1 ) CALL VADD ( UNTBND(1,2), UNTBND(1,3), VEC2 ) CALL VSCL ( 0.5, VEC2, VEC2 ) C C Compute the angular separations C ANG1 = VSEP( BSGHT, VEC1 ) ANG2 = VSEP( BSGHT, VEC2 ) C C Separate the larger and smaller angles. C LRGANG = MAX( ANG1, ANG2) SMLANG = MIN( ANG1, ANG2) C EXAMPLE /* Define the string length parameter. */ #define STRSIZ 80 /* Retrieve the FOV parameters from the kernel pool. */ getfov_c( -82761, 4, STRSIZ, STRSIZ, shape, frame, bsght, &n, bnds ); /* Normalize the 3 boundary vectors. */ unorm_c ( &(bnds[0][0]), &(untbnd[0][0]), &mag ); unorm_c ( &(bnds[1][0]), &(untbnd[1][0]), &mag ); unorm_c ( &(bnds[2][0]), &(untbnd[2][0]), &mag ); /* Compute the angular separations. */ vadd_c ( &(untbnd[0][0]), &(untbnd[1][0]), vec1 ); vscl_c ( 0.5, vec1, vec1 ); vadd_c ( &(untbnd[1][0]), &(untbnd[2][0]), vec2 ); vscl_c ( 0.5, vec2, vec2 ); /* Compute the angular separations. */ ang1 = vsep_c( bsght, vec1); ang2 = vsep_c( bsght, vec2); /* Separate the larger and smaller angles. */ if ( ang1 > ang2 ) { lrgang = ang1; smlang = ang2; } else { lrgang = ang2; smlang = ang1; } Low Energy Magnetospheric Measurements System 1 (LEMMS1) Since the MIMI_LEMMS1 detector's FOV is circular and it's diameter is 15.0 degrees, looking down the X-axis in the CASSINI_MIMI_LEMMS1 frame, we have: (Note we are arbitrarily choosing a vector that terminates in the Z=1 plane.) ^ Y | ins | | /| | / | | / | | / o | |/ 7.50 | x---------------> X \ | Z ins \ | ins \ | \ | \| |-- 1.0 --| Plane X = 0 Now from here we see that the Y component of one 'boundary corner' vector is: Y Component = 1.0 * tan ( 7.50 degrees ) = 0.131652498 The boundary corner vector as displayed below is normalized to unit length. \begindata INS-82762_FOV_FRAME = 'CASSINI_MIMI_LEMMS1' INS-82762_FOV_SHAPE = 'CIRCLE' INS-82762_BORESIGHT = ( 0.0000000000000000 0.0000000000000000 +1.0000000000000000 ) INS-82762_FOV_BOUNDARY_CORNERS = ( 0.0000000000000000 +0.1305261922200500 +0.9914448613738100 ) \begintext The angular extent (radial) of the field of view can be computed by calculating the angular separation between the boundary corner vector and the boresight. Below is some sample FORTRAN and C code that will determine this angular size. FORTRAN EXAMPLE C C Retrieve FOV parameters. C CALL GETFOV ( -82762, 1, SHAPE, FRAME, BSGHT, N, BNDS ) C C Compute the angular separation. C ANGSIZ = VSEP( BSGHT, BNDS(1,1) ) C EXAMPLE /* Define the string length parameter. */ #define STRSIZ 80 /* Retrieve the field of view parameters. */ getfov_c( -82762, 1, STRSIZ, STRSIZ, shape, frame, bsght, &n, bnds ); /* Compute the angular separation. */ angsiz = vsep_c( bsght, &(bnds[0][0])); Low Energy Magnetospheric Measurements System 2 (LEMMS2) Since the MIMI_LEMMS2 detector's FOV is circular and it's diameter is 30.0 degrees, looking down the X-axis in the CASSINI_MIMI_LEMMS2 frame, we have: (Note we are arbitrarily choosing a vector that terminates in the Z=1 plane.) ^ Y | ins | | /| | / | | / | | / o | |/ 15.0 | x---------------> X \ | Z ins \ | ins \ | \ | \| |-- 1.0 --| Plane X = 0 Now from here we see that the Y component of one 'boundary corner' vector is: Y Component = 1.0 * tan ( 15.0 degrees ) = 0.267949192 The boundary corner vector as displayed below is normalized to unit length. \begindata INS-82763_FOV_FRAME = 'CASSINI_MIMI_LEMMS2' INS-82763_FOV_SHAPE = 'CIRCLE' INS-82763_BORESIGHT = ( 0.0000000000000000 0.0000000000000000 +1.0000000000000000 ) INS-82763_FOV_BOUNDARY_CORNERS = ( 0.0000000000000000 +0.2588190451025200 +0.9659258262890700 ) \begintext The angular extent (radial) of the field of view can be computed by calculating the angular separation between the boundary corner vector and the boresight. Below is some sample FORTRAN and C code that will determine this angular size. FORTRAN EXAMPLE C C Retrieve FOV parameters. C CALL GETFOV ( -82763, 1, SHAPE, FRAME, BSGHT, N, BNDS ) C C Compute the angular separation. C ANGSIZ = VSEP( BSGHT, BNDS(1,1) ) C EXAMPLE /* Define the string length parameter. */ #define STRSIZ 80 /* Retrieve the field of view parameters. */ getfov_c( -82763, 1, STRSIZ, STRSIZ, shape, frame, bsght, &n, bnds ); /* Compute the angular separation. */ angsiz = vsep_c( bsght, &(bnds[0][0])); MIMI Pixel Parameters ---------------------------------------------------------- These parameters describe the pixel structure associated with the instruments and their fields of views. In some cases this is a generalization of the notion of pixel, in that instead of representing pixels on a CCD they may represent a collection of individual detectors. Charge-Energy-Mass Spectrometer (CHEMS): \begindata INS-82760_FOV_CENTER_PIXEL = ( 0, 0 ) INS-82760_PIXEL_SAMPLES = ( 1 ) INS-82760_PIXEL_LINES = ( 1 ) \begintext Ion and Neutral Camera (INCA) \begindata INS-82761_FOV_CENTER_PIXEL = ( 0, 0 ) INS-82761_PIXEL_SAMPLES = ( 1 ) INS-82761_PIXEL_LINES = ( 1 ) \begintext Low Energy Magnetospheric Measurements System 1 (LEMMS1) \begindata INS-82762_FOV_CENTER_PIXEL = ( 0, 0 ) INS-82762_PIXEL_SAMPLES = ( 1 ) INS-82762_PIXEL_LINES = ( 1 ) \begintext Low Energy Magnetospheric Measurements System 2 (LEMMS2) \begindata INS-82763_FOV_CENTER_PIXEL = ( 0, 0 ) INS-82763_PIXEL_SAMPLES = ( 1 ) INS-82763_PIXEL_LINES = ( 1 ) \begintext Instrument Mode Timing ---------------------------------------------------------- The following values were provided as samples in [5]. These values are defined in [5] as follows: ``The initial values for the following keywords are given per instrument number: INS[instrument number]_[instrument acronym]_MODE_NAME INS[instrument number]_[instrument acronym]_TRIGGER_OFFSET INS[instrument number]_[instrument acronym]_CYCLE_DURATION INS..._MODE_NAME contains the name of the instrument mode for the INS..._TRIGGER_OFFSET and INS..._CYCLE_DURATION keywords. INS..._TRIGGER_OFFSET specifies the reference time of the first instrument frame (to be calculated for a footprint) relative to the time of transacting the corresponding TRIGGER command. The units are SFOC duration. INS..._CYCLE_DURATION specifies the duration between successive instrument frames (from the first one) for the INS..._MODE_NAME.'' Charge-Energy-Mass Spectrometer (CHEMS) \begindata INS-82760_MODE_NAME = 'NOMINAL' INS-82760_TRIGGER_OFFSET = '0:01:00.0' INS-82760_CYCLE_DURATION = '0:01:00.0' \begintext Ion and Neutral Camera (INCA) \begindata INS-82761_MODE_NAME = 'NOMINAL' INS-82761_TRIGGER_OFFSET = '0:01:00.0' INS-82761_CYCLE_DURATION = '0:01:00.0' \begintext Low Energy Magnetospheric Measurements System 1 (LEMMS1) \begindata INS-82762_MODE_NAME = 'NOMINAL' INS-82762_TRIGGER_OFFSET = '0:01:00.0' INS-82762_CYCLE_DURATION = '0:01:00.0' \begintext Low Energy Magnetospheric Measurements System 2 (LEMMS2) \begindata INS-82763_MODE_NAME = 'NOMINAL' INS-82763_TRIGGER_OFFSET = '0:01:00.0' INS-82763_CYCLE_DURATION = '0:01:00.0' \begintext NAIF ID Code to Name Mapping ---------------------------------------------------------- \begindata NAIF_BODY_NAME += ( 'CASSINI_MIMI_CHEMS' ) NAIF_BODY_CODE += ( -82760 ) NAIF_BODY_NAME += ( 'CASSINI_MIMI_INCA' ) NAIF_BODY_CODE += ( -82761 ) NAIF_BODY_NAME += ( 'CASSINI_MIMI_LEMMS1' ) NAIF_BODY_CODE += ( -82762 ) NAIF_BODY_NAME += ( 'CASSINI_MIMI_LEMMS2' ) NAIF_BODY_CODE += ( -82763 ) \begintext Platform ID ---------------------------------------------------------- The MIMI instruments are mounted on the Fields and Particles Palette, which is connected to the Cassini Spacecraft body. Therefore the values stored in the keywords below are -82000 \begindata INS-82760_PLATFORM_ID = ( -82000 ) INS-82761_PLATFORM_ID = ( -82000 ) INS-82762_PLATFORM_ID = ( -82000 ) INS-82763_PLATFORM_ID = ( -82000 ) \begintext