###set ( $DEBUG = 1 )
## ------------------------------------------------------------------------
## ------------------------------------------------------------------------
## Parse the various macro files...
#parse( "vcore.vmac" ) ##Core constants and values
#parse( "utils.vmac" ) ##Generic utilities
#parse( "general.vmac" ) ##Common PDS macros
#parse( "image.vmac" ) ##Image macros
#parse( "surface.vmac" ) ##Surface macros
#parse( "mission_factory.vmac" )##Load mission-specific macros
## ------------------------------------------------------------------------
## Set some needed variables
#set ($PID_FULL = "#getPidFullname()" )
#if ( $CONST_TRUE.equals("#isStandardMissionFilename()") )
## Filename spec is in play, we can parse the filename
#set ($PID = "#createPidFromVersionedName($PID_FULL)" )
#set ($VERSION_ID = "#getPIDVersionCheckLabel($PID_FULL)")
#set ($INSTRUMENT_NAME = "#getInstrumentName($PID)")
#set ($INSTRUMENT_ID = "#getInstrumentId($PID)")
#set ($PLANET_DAY_NUMBER = "#getPlanetDayNumberOrSol($PID)" )
#set ($PRODUCT_TYPE = "#getProductType($PID)" )
#set ($IS_MOSAIC = "#isMosaic($PID)")
#set ($IS_DATATYPE_FLOAT = "#isFloatDataType()")
#set ($IS_THUMBNAIL = "#isThumbnail($PID)")
#set ($PROCESSING_LEVEL = "#getProcessingLevelCheckLabel($PRODUCT_TYPE $IS_MOSAIC)" )
#set ($COMPRESSION_NAME = "#getCompressionName()" )
#else
## Filename spec is NOT in play, so do not made decisions on filename solely
## Note: Some of the macros that are still enabled check the label, which is
## why we still call them.
#set ($PID = "#createPidFromVersionlessName($PID_FULL)" )
#set ($VERSION_ID = "#getPIDVersionCheckLabel($PID_FULL)")
#if ( $CONST_UNKNOWN.equals($VERSION_ID))
#set ($VERSION_ID = '1' )
#end
## Set defaults for these
#set ($PRODUCT_TYPE = '' )
#set ($IS_MOSAIC = $CONST_FALSE )
#set ($IS_DATATYPE_FLOAT = $CONST_FALSE )
#set ($IS_THUMBNAIL = $CONST_FALSE )
#set ($COMPRESSION_NAME = '')
## These macros still check label before looking at PID argument
#set ($INSTRUMENT_NAME = "#getInstrumentName($PID)")
#set ($INSTRUMENT_ID = "#getInstrumentId($PID)")
#set ($PLANET_DAY_NUMBER = "#getPlanetDayNumberOrSol($PID)" )
#set ($PROCESSING_LEVEL = "#getProcessingLevelCheckLabel($PRODUCT_TYPE $IS_MOSAIC)" )
#end
#set ($LID_PREFIX = "#getProductLidPrefixCheckLabel($PID)" )
#set ($LID_COLLECTION = "#getProductLidCollectionCheckLabel($PID)" )
#set ($LID_BROWSE_COLLECTION = "#getBrowseLidCollectionCheckLabel($PID)" )
## For use with the Title element, optMosaicStr will be
## rendered as either 'Mosaic' or ''
#if ($IS_MOSAIC eq $CONST_TRUE)
#set ( $optMosaicStr = "Mosaic" )
#end
#set ($INPUT_FILE_NAME = "#getInputFilename()" )
#set ($INPUT_FILE_EXTEN = "#getFileExtension( $INPUT_FILE_NAME )" )
## Translated filename extension as determined by the mission.
## Default case just returns the passed-in argument.
#set ($LEGAL_FILE_EXTEN = "#msn_getLegalFileExtension( $INPUT_FILE_EXTEN )" )
#set ($SPECIAL_PROC_FLAG = "#msn_getSpecialProcessingFlag($INPUT_FILE_NAME)" )
##============================================
## Create the mission-specific prolog section
##
#generateProlog($MSN_PROLOG_VERSION_DICT)
#generateLID( $LID_PREFIX $LID_COLLECTION $PID )
${VERSION_ID}.0
$MSN_IDENTIFICATION_AREA_TITLE_PREFIX $INSTRUMENT_ID.toUpperCase() $PRODUCT_TYPE $!optMosaicStr Observational Product - $PID
$MSN_MODEL_VERSION
Product_Observational
#debug("IDENTIFICATION.PRODUCT_ID")
$IDENT.PRODUCT_ID
#if ( $CONST_TRUE.equals("#isStandardMissionFilename()") )
VICAR PRODUCT_ID
#else
Product Id
#end
## Removed evil Modification_History.... yayyyy!!! Retaining the dead code
## in case someone squawks.
##
##
## $date.get("yyyy-MM-dd")
## ${VERSION_ID}.0
## Current version, date product label was created
##
##
Observational Intent
## start_date_time and stop_date_time required, so add nil-checks
#if ( $IDENT.START_TIME )
#getZuluTime( $!IDENT.START_TIME.toString() )
#else
#getNodeWithValueOrAsNil( $IDENT 'START_TIME' 'start_date_time' '' $CONST_TRUE )
#end
#if ( $IDENT.STOP_TIME )
#getZuluTime( $!IDENT.STOP_TIME.toString() )
#else
#getNodeWithValueOrAsNil( $IDENT 'STOP_TIME' 'stop_date_time' '' $CONST_TRUE )
#end
#debug("IDENTIFICATION.LOCAL_MEAN_SOLAR_TIME")
#splitSolarTimeSol( $!IDENT.LOCAL_MEAN_SOLAR_TIME.toString() $CONST_TIME )
#debug("IDENTIFICATION.LOCAL_TRUE_SOLAR_TIME")
$!IDENT.LOCAL_TRUE_SOLAR_TIME
#debug("IDENTIFICATION.SOLAR_LONGITUDE")
$!IDENT.SOLAR_LONGITUDE
Science
$PROCESSING_LEVEL
#getScienceFacetsSection()## section
#getInvestigationArea()
#getObservingSystem()
#getTargetIdentification()
##Include mission-specific entries for this section
#msn_generateMissionAreaSection( $PID )
######################################
## Cartography Discipline Area
######################################
## -------------------
## Cartography section associated with IMAGE_MAP_PROJECTION (added Nov'21)
## PDS rules does not prevent us from having two sibling Cartography sections, and the new one goes first
#if ( $label.IMAGE_MAP_PROJECTION )
#set ($imp_node = $label.IMAGE_MAP_PROJECTION )
#set ($imp_map_proj_type = $!imp_node.MAP_PROJECTION_TYPE.toString() )
$PID
cartography_parameters_to_image_object
$!imp_node.WESTERNMOST_LONGITUDE
$!imp_node.EASTERNMOST_LONGITUDE
$!imp_node.MAXIMUM_LATITUDE
$!imp_node.MINIMUM_LATITUDE
$text.capitalize($imp_map_proj_type)
#if ( $imp_map_proj_type.toLowerCase().equals('equirectangular') )
$!imp_node.LATITUDE_ORIGIN
$!imp_node.CENTER_LATITUDE
$!imp_node.CENTER_LONGITUDE
#end
Coordinate Pair
## yes, resolution and scale are swapped below, sigh... ##
$imp_node.MAP_SCALE
$imp_node.MAP_SCALE
$imp_node.MAP_RESOLUTION
$imp_node.MAP_RESOLUTION
#if ( $imp_node.MAP_SCALE && $imp_node.SAMPLE_PROJECTION_OFFSET && $imp_node.LINE_PROJECTION_OFFSET )
## Trent, is sample==x and line==y? Also, are these labels equivalent? In a subpixel sense?##
#set ( $imp_map_scale = $imp_node.MAP_SCALE.toString() )
#set ( $imp_samp_off = $imp_node.SAMPLE_PROJECTION_OFFSET.toString() )
#set ( $imp_line_off = $imp_node.LINE_PROJECTION_OFFSET.toString() )
#set ( $imp_ul_corn_x = $math.add($imp_samp_off, '0.5') )
#set ( $imp_ul_corn_x = $math.mul($imp_ul_corn_x, $imp_map_scale) )
#set ( $imp_ul_corn_x = $math.mul($imp_ul_corn_x, '-1.0') )
#set ( $imp_ul_corn_y = $math.add($imp_line_off, '0.5') )
#set ( $imp_ul_corn_y = $math.mul($imp_ul_corn_y, $imp_map_scale) )
$imp_ul_corn_x
$imp_ul_corn_y
#end
#if ( $imp_node.COORDINATE_SYSTEM_NAME )
$text.capitalize($imp_node.COORDINATE_SYSTEM_NAME.toString())
#end
#if ( $IDENT.TARGET_NAME )
$text.capitalize($IDENT.TARGET_NAME.toString()) ## or if you have a better way to get "Mars" ##
#end
$imp_node.A_AXIS_RADIUS
$imp_node.B_AXIS_RADIUS
$imp_node.C_AXIS_RADIUS
#if ( $imp_node.POSITIVE_LONGITUDE_DIRECTION )
#set ( $imp_pld_val = $imp_node.POSITIVE_LONGITUDE_DIRECTION.toString() )
#if ( $imp_pld_val.toLowerCase().equals('east') )
#set ( $imp_pld_val = 'Positive East' )
#end
$imp_pld_val
#end
#if ( $imp_node.COORDINATE_SYSTEM_TYPE )
$text.capitalize($imp_node.COORDINATE_SYSTEM_TYPE.toString())
#end
#end
## -------------------
## Cartography section associated with SURFACE_PROJECTION_PARMS
#set ( $mapProjection = '' )
#if ( $label.SURFACE_PROJECTION_PARMS && $label.SURFACE_PROJECTION_PARMS.MAP_PROJECTION_TYPE )
#set ( $mapProjection = $!label.SURFACE_PROJECTION_PARMS.MAP_PROJECTION_TYPE.toString() )
#end
#if ( $mapProjection != '')
$PID
cartography_parameters_to_image_object
#set ( $mapProjection = $text.capitalize($mapProjection.replace("-"," ")) )
$mapProjection Lander Map Projection
#debug ( "SURFACE_PROJECTION_PARMS.MAP_PROJECTION_TYPE" )
$mapProjection.replace(' ','_')
#if ( !$mapProjection )
#set ( $mapProjection = "NA" )
#elseif ( $mapProjection.equals("Orthographic") )
#set ( $mapProjection = "Orthographic_Lander" )
#end
#cartMapProjTagOpen( $mapProjection )
#if ( $mapProjection.equals("Polar") )
#debug ( "SURFACE_PROJECTION_PARMS.MAP_RESOLUTION" )
$!label.SURFACE_PROJECTION_PARMS.MAP_RESOLUTION[0]
#else
#debug ( "SURFACE_PROJECTION_PARMS.MAP_RESOLUTION" )
$!label.SURFACE_PROJECTION_PARMS.MAP_RESOLUTION[0]
$!label.SURFACE_PROJECTION_PARMS.MAP_RESOLUTION[1]
#end
#debug ( "SURFACE_PROJECTION_PARMS.MAP_SCALE")
$!label.SURFACE_PROJECTION_PARMS.MAP_SCALE[0]
$!label.SURFACE_PROJECTION_PARMS.MAP_SCALE[1]
## Use pollNodes to provide a backup unit if one not found
#pollNodes( $label.SURFACE_PROJECTION_PARMS 'X_AXIS_MAXIMUM' 'cart:x_axis_maximum' 'm' $CONST_TRUE )
#pollNodes( $label.SURFACE_PROJECTION_PARMS 'X_AXIS_MINIMUM' 'cart:x_axis_minimum' 'm' $CONST_TRUE )
#pollNodes( $label.SURFACE_PROJECTION_PARMS 'Y_AXIS_MAXIMUM' 'cart:y_axis_maximum' 'm' $CONST_TRUE )
#pollNodes( $label.SURFACE_PROJECTION_PARMS 'Y_AXIS_MINIMUM' 'cart:y_axis_minimum' 'm' $CONST_TRUE )
#debug ( "SURFACE_PROJECTION_PARMS.MAXIMUM_ELEVATION" )
$!label.SURFACE_PROJECTION_PARMS.MAXIMUM_ELEVATION
#debug ( "SURFACE_PROJECTION_PARMS.MINIMUM_ELEVATION" )
$!label.SURFACE_PROJECTION_PARMS.MINIMUM_ELEVATION
#debug ( "SURFACE_PROJECTION_PARMS.PROJECTION_AZIMUTH" )
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_AZIMUTH
#debug ( "SURFACE_PROJECTION_PARMS.PROJECTION_ELEVATION" )
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_ELEVATION
#debug ( "SURFACE_PROJECTION_PARMS.PROJECTION_ELEVATION_LINE" )
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_ELEVATION_LINE
#debug ( "SURFACE_PROJECTION_PARMS.START_AZIMUTH" )
## $!label.SURFACE_PROJECTION_PARMS.START_AZIMUTH
#getNodeValueNotNil( $label.SURFACE_PROJECTION_PARMS 'START_AZIMUTH' 'cart:start_azimuth' 'deg')
#debug ( "SURFACE_PROJECTION_PARMS.STOP_AZIMUTH" )
## $!label.SURFACE_PROJECTION_PARMS.STOP_AZIMUTH
#getNodeValueNotNil( $label.SURFACE_PROJECTION_PARMS 'STOP_AZIMUTH' 'cart:stop_azimuth' 'deg')
#debug ( "SURFACE_PROJECTION_PARMS.ZERO_ELEVATION_LINE" )
$!label.SURFACE_PROJECTION_PARMS.ZERO_ELEVATION_LINE
#debug ( "SURFACE_PROJECTION_PARMS.PROJECTION_AXIS_OFFSET" )
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_AXIS_OFFSET
#debug ( "SURFACE_PROJECTION_PARMS.REFERENCE_AZIMUTH" )
$!label.SURFACE_PROJECTION_PARMS.REFERENCE_AZIMUTH
#if ( $mapProjection.equals("Polar") )
#debug ( "SURFACE_PROJECTION_PARMS.LINE_PROJECTION_OFFSET" )
$!label.SURFACE_PROJECTION_PARMS.LINE_PROJECTION_OFFSET
#debug ( "SURFACE_PROJECTION_PARMS.SAMPLE_PROJECTION_OFFSET" )
$!label.SURFACE_PROJECTION_PARMS.SAMPLE_PROJECTION_OFFSET
#else
#debug ( "SURFACE_PROJECTION_PARMS.LINE_PROJECTION_OFFSET" )
$!label.SURFACE_PROJECTION_PARMS.LINE_PROJECTION_OFFSET
#debug ( "SURFACE_PROJECTION_PARMS.SAMPLE_PROJECTION_OFFSET" )
$!label.SURFACE_PROJECTION_PARMS.SAMPLE_PROJECTION_OFFSET
#end
#debug ( "SURFACE_PROJECTION_PARMS.PROJECTION_ORIGIN_VECTOR" )
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_ORIGIN_VECTOR[0]
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_ORIGIN_VECTOR[1]
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_ORIGIN_VECTOR[2]
#debug ( "SURFACE_PROJECTION_PARMS.PROJECTION_X_AXIS_VECTOR" )
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_X_AXIS_VECTOR[0]
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_X_AXIS_VECTOR[1]
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_X_AXIS_VECTOR[2]
#debug ( "SURFACE_PROJECTION_PARMS.PROJECTION_Y_AXIS_VECTOR" )
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_Y_AXIS_VECTOR[0]
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_Y_AXIS_VECTOR[1]
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_Y_AXIS_VECTOR[2]
#debug ( "SURFACE_PROJECTION_PARMS.PROJECTION_Z_AXIS_VECTOR" )
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_Z_AXIS_VECTOR[0]
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_Z_AXIS_VECTOR[1]
$!label.SURFACE_PROJECTION_PARMS.PROJECTION_Z_AXIS_VECTOR[2]
#debug ( "SURFACE_PROJECTION_PARMS.CAMERA_ROTATION_AXIS_VECTOR" )
$!label.SURFACE_PROJECTION_PARMS.CAMERA_ROTATION_AXIS_VECTOR[0]
$!label.SURFACE_PROJECTION_PARMS.CAMERA_ROTATION_AXIS_VECTOR[1]
$!label.SURFACE_PROJECTION_PARMS.CAMERA_ROTATION_AXIS_VECTOR[2]
#debug ("SURFACE_PROJECTION_PARMS.LINE_CAMERA_MODEL_OFFSET" )
$!label.SURFACE_PROJECTION_PARMS.LINE_CAMERA_MODEL_OFFSET
#debug ("SURFACE_PROJECTION_PARMS.SAMPLE_CAMERA_MODEL_OFFSET" )
$!label.SURFACE_PROJECTION_PARMS.SAMPLE_CAMERA_MODEL_OFFSET
#cartMapProjTagClose( $mapProjection )
#debug("SURFACE_PROJECTION_PARMS.REFERENCE_COORD_SYSTEM_NAME")
#debug("SURFACE_PROJECTION_PARMS.REFERENCE_COORD_SYSTEM_INDEX")
#set ( $coordSystemName = "" )
#set ( $coordSystemIndex = "" )
#set ( $coordSystemName = $label.SURFACE_PROJECTION_PARMS.REFERENCE_COORD_SYSTEM_NAME )
#set ( $coordSystemIndex = $label.SURFACE_PROJECTION_PARMS.REFERENCE_COORD_SYSTEM_INDEX )
#getCoordinateSpaceReference( $coordSystemName $coordSystemIndex "cart" "SURFACE_PROJECTION_PARMS" )
#if ($label.SURFACE_MODEL_PARMS)
#debug("SURFACE_MODEL_PARMS.SURFACE_MODEL_TYPE")
#set ($surfaceModelType = $label.SURFACE_MODEL_PARMS.SURFACE_MODEL_TYPE.toString())
#if ($surfaceModelType.contains("SPHERE"))
#set ($surfaceModel = "Spherical")
$!surfaceModel
#debug("SURFACE_MODEL_PARMS.SURFACE_NORMAL_VECTOR")
$!label.SURFACE_MODEL_PARMS.SURFACE_NORMAL_VECTOR[0]
## check if it the surface model type has an intersection count
#if (! $surfaceModelType.equals("SPHERE1"))
#set ($length = $surfaceModelType.length() - 1)
#set ($count = $surfaceModelType.charAt($length))
$!count
#end
#debug("SURFACE_MODEL_PARMS.SURFACE_GROUND_LOCATION")
$!label.SURFACE_MODEL_PARMS.SURFACE_GROUND_LOCATION[0]
$!label.SURFACE_MODEL_PARMS.SURFACE_GROUND_LOCATION[1]
$!label.SURFACE_MODEL_PARMS.SURFACE_GROUND_LOCATION[2]
#else
#set ($surfaceModel = "Planar")
$!surfaceModel
#debug("SURFACE_MODEL_PARMS.SURFACE_NORMAL_VECTOR")
$!label.SURFACE_MODEL_PARMS.SURFACE_NORMAL_VECTOR[0]
$!label.SURFACE_MODEL_PARMS.SURFACE_NORMAL_VECTOR[1]
$!label.SURFACE_MODEL_PARMS.SURFACE_NORMAL_VECTOR[2]
#debug("SURFACE_MODEL_PARMS.SURFACE_GROUND_LOCATION")
$!label.SURFACE_MODEL_PARMS.SURFACE_GROUND_LOCATION[0]
$!label.SURFACE_MODEL_PARMS.SURFACE_GROUND_LOCATION[1]
$!label.SURFACE_MODEL_PARMS.SURFACE_GROUND_LOCATION[2]
#end
#debug("SURFACE_MODEL_PARMS.REFERENCE_COORD_SYSTEM_NAME")
#debug("SURFACE_MODEL_PARMS.REFERENCE_COORD_SYSTEM_INDEX")
#set ( $coordSystemName = "" )
#set ( $coordSystemIndex = "" )
#set ( $coordSystemName = $!label.SURFACE_MODEL_PARMS.REFERENCE_COORD_SYSTEM_NAME )
#set ( $coordSystemIndex = $!label.SURFACE_MODEL_PARMS.REFERENCE_COORD_SYSTEM_INDEX )
#getCoordinateSpaceReference( $coordSystemName $coordSystemIndex "cart" "SURFACE_MODEL_PARMS" )
#end
#end
######################################
## Display Discipline Area
######################################
#defaultDisplaySettings( $label $PID )
######################################
## Geometry Discipline Area
######################################
#getGeometrySection()
######################################
## Image Discipline Area
######################################
$PID
imaging_parameters_to_image_object
## Arguments for:= macros: Brightness, Pointing and Radiometric correction macros
#set ($derivedImgParamsName = "DERIVED_IMAGE_PARMS")
#set ($derivedImgParamsNode = $label.get($derivedImgParamsName))
#set ($derivedImageType = "")
#if($label.DERIVED_IMAGE_PARMS.DERIVED_IMAGE_TYPE)
#set ($derivedImageType = $label.DERIVED_IMAGE_PARMS.DERIVED_IMAGE_TYPE.toString())
#end
## Get the name-node pair for IMAGE_REQUEST_PARMS
#set ($imgReqParamsName = "IMAGE_REQUEST_PARMS")
#set ($imgReqParamsNode = $label.get($imgReqParamsName))
## Get the name-node pair for INSTRUMENT_STATE_PARMS
#set ($insStParamsName = "INSTRUMENT_STATE_PARMS")
#set ($insStParamsNode = $label.get($insStParamsName))
## Get the name-node pair for COMPRESSION_PARMS
#set ($cmprsParamsName = "COMPRESSION_PARMS")
#set ($cmprsParamsNode = $label.get($cmprsParamsName))
## Get the name-node pair for IMAGE
#set ($imageName = "IMAGE")
#set ($imageNode = $IMAGE )
#generateBrightCorrMosaic($derivedImgParamsNode $derivedImgParamsName $derivedImageType $IS_MOSAIC)
##...
#conditionalImageTypeProductFlag( $!IDENT.IMAGE_TYPE 'COL_SUM' )
#if($label.INSTRUMENT_STATE_PARMS.CFA_TYPE)
## If INSTRUMENT_STATE_PARMS.CFA_TYPE exists, get values from it
#set ( $arrayType = "")
#if ( $!label.INSTRUMENT_STATE_PARMS.CFA_TYPE.toString().equals("BAYER_RGGB") )
#set ( $arrayType = "Bayer RGGB")
#else
#set ( $arrayType = $text.capitalize($!label.INSTRUMENT_STATE_PARMS.CFA_TYPE.toString().replace('_',' ')) )
#end
#set ( $processing_venue = "" )
#set ( $processing_venue = $!label.INSTRUMENT_STATE_PARMS.CFA_VENUE.toString().replace('_',' ') )
#set ( $processing_venue = $text.capitalize($processing_venue) )
#set ( $processing_algorithm = "" )
#set ( $processing_algorithm = $!label.INSTRUMENT_STATE_PARMS.BAYER_METHOD.toString().replace('_',' ') )
#set ( $processing_algorithm = $text.capitalize($processing_algorithm) )
$!processing_venue
$!processing_algorithm
$!arrayType
#getCFAstate()
#elseif ($label.INSTRUMENT_STATE_PARMS.BAYER_MODE)
## If INSTRUMENT_STATE_PARMS.CFA_TYPE does exist, then we will check
## $label.INSTRUMENT_STATE_PARMS.BAYER_MODE and get values from that
#set ( $cfa_bayer_mode = "" )
#set ( $tmp_frame_id = "" )
#set ( $tmp_filter = "" )
#set ( $cfa_bayer_mode = $!label.INSTRUMENT_STATE_PARMS.BAYER_MODE.toString().toUpperCase() )
#set ( $tmp_frame_id = $!IDENT.FRAME_ID.toString() )
#set ( $tmp_filter = $!label.INSTRUMENT_STATE_PARMS.FILTER_NUMBER.toString() )
#set ( $cfa_proc_ven = "")
#set ( $cfa_proc_alg = "")
## Handle venue logic
#if ( $cfa_bayer_mode != 'RAW_BAYER')
#if ( $cfa_bayer_mode.contains("ONBOARD") )
#set ( $cfa_proc_ven = "Onboard" )
#else
#set ( $cfa_proc_ven = "Ground" )
#end
#end
## Handle alogrithm logic by passing it off to a macro that hides the UGLY
#set ( $cfa_proc_alg = "#getCfaAlgorithmViaIspBayerMode( $cfa_bayer_mode $tmp_frame_id $tmp_filter )" )
$!cfa_proc_ven
$!cfa_proc_alg
Bayer RGGB
#getCFAstate()
#end
#debug ( "DERIVED_IMAGE_PARMS.COLOR_SPACE" )
$!label.DERIVED_IMAGE_PARMS.COLOR_SPACE
#debug ( "INSTRUMENT_STATE_PARMS.COLOR_COMPONENT" )
$!label.INSTRUMENT_STATE_PARMS.COLOR_COMPONENT
#debug ( "DERIVED_IMAGE_PARMS.ILLUMINANT" )
$!label.DERIVED_IMAGE_PARMS.ILLUMINANT
#debug ( "DERIVED_IMAGE_PARMS.ENCODED_DISPLAY_GAMMA" )
$!label.DERIVED_IMAGE_PARMS.ENCODED_DISPLAY_GAMMA
#debug ( "DERIVED_IMAGE_PARMS.COLOR_DN_SCALING_METHOD" )
$!label.DERIVED_IMAGE_PARMS.COLOR_DN_SCALING_METHOD
#debug ( "DERIVED_IMAGE_PARMS.COLOR_DN_SCALING_FACTOR" )
$!label.DERIVED_IMAGE_PARMS.COLOR_DN_SCALING_FACTOR
#if ($label.INSTRUMENT_STATE_PARMS.ONBOARD_RESPONSIVITY)
#debug ( "$label.INSTRUMENT_STATE_PARMS.ONBOARD_RESPONSIVITY" )
$!label.INSTRUMENT_STATE_PARMS.ONBOARD_RESPONSIVITY[0]
$!label.INSTRUMENT_STATE_PARMS.ONBOARD_RESPONSIVITY[1]
$!label.INSTRUMENT_STATE_PARMS.ONBOARD_RESPONSIVITY[2]
#end
#if ($label.INSTRUMENT_STATE_PARMS.ONBOARD_COLOR_MATRIX)
#debug ( "$label.INSTRUMENT_STATE_PARMS.ONBOARD_COLOR_MATRIX" )
$!label.INSTRUMENT_STATE_PARMS.ONBOARD_COLOR_MATRIX[0]
$!label.INSTRUMENT_STATE_PARMS.ONBOARD_COLOR_MATRIX[1]
$!label.INSTRUMENT_STATE_PARMS.ONBOARD_COLOR_MATRIX[2]
$!label.INSTRUMENT_STATE_PARMS.ONBOARD_COLOR_MATRIX[3]
$!label.INSTRUMENT_STATE_PARMS.ONBOARD_COLOR_MATRIX[4]
$!label.INSTRUMENT_STATE_PARMS.ONBOARD_COLOR_MATRIX[5]
$!label.INSTRUMENT_STATE_PARMS.ONBOARD_COLOR_MATRIX[6]
$!label.INSTRUMENT_STATE_PARMS.ONBOARD_COLOR_MATRIX[7]
$!label.INSTRUMENT_STATE_PARMS.ONBOARD_COLOR_MATRIX[8]
#end
#debug("INSTRUMENT_STATE_PARMS.DETECTOR_FIRST_LINE")
$!label.INSTRUMENT_STATE_PARMS.DETECTOR_FIRST_LINE
#debug("INSTRUMENT_STATE_PARMS.DETECTOR_FIRST_LINE_SAMPLE")
$!label.INSTRUMENT_STATE_PARMS.DETECTOR_FIRST_LINE_SAMPLE
#debug("INSTRUMENT_STATE_PARMS.DETECTOR_LINES")
$!label.INSTRUMENT_STATE_PARMS.DETECTOR_LINES
## samples can be under either label, but not both, so it is safe to just call both.
#debug("INSTRUMENT_STATE_PARMS.DETECTOR_SAMPLES")
$!label.INSTRUMENT_STATE_PARMS.DETECTOR_SAMPLES
#debug("INSTRUMENT_STATE_PARMS.DETECTOR_LINE_SAMPLES")
$!label.INSTRUMENT_STATE_PARMS.DETECTOR_LINE_SAMPLES
#debug("INSTRUMENT_STATE_PARMS.DETECTOR_TO_IMAGE_ROTATION")
$!label.INSTRUMENT_STATE_PARMS.DETECTOR_TO_IMAGE_ROTATION
#debug("INSTRUMENT_STATE_PARMS.DETECTOR_TO_IMAGE_FLIP")
#set ( $dtct_to_img_flip = $!label.INSTRUMENT_STATE_PARMS.DETECTOR_TO_IMAGE_FLIP.toString() )
#set ( $dtct_to_img_flip = $text.capitalize( $dtct_to_img_flip ) )
$!dtct_to_img_flip
#debug("INSTRUMENT_STATE_PARMS.DETECTOR_ERASE_COUNT")
$!label.INSTRUMENT_STATE_PARMS.DETECTOR_ERASE_COUNT
## Special case where we may have to convert MHz to Hz, because PDS thinks a single unit should apply for ALL contexts.....
#if ( $!label.INSTRUMENT_STATE_PARMS.SENSOR_READOUT_RATE )
#set ( $img_dtct_readout_rate = $!label.INSTRUMENT_STATE_PARMS.SENSOR_READOUT_RATE.toString() )
#set ( $img_dtct_readout_rate_unit = "#getUnitFrom($!label.INSTRUMENT_STATE_PARMS 'SENSOR_READOUT_RATE' '' )" )
#set ( $img_dtct_readout_rate_unit = $img_dtct_readout_rate_unit.toString() )
#if ( $img_dtct_readout_rate_unit.equalsIgnoreCase("MHz") )
#set ( $img_dtct_readout_rate = $math.mul( $img_dtct_readout_rate, '1000000' ) )
#end
#debug("INSTRUMENT_STATE_PARMS.SENSOR_READOUT_RATE")
$img_dtct_readout_rate
#end
#debug("INSTRUMENT_STATE_PARMS.GAIN_NUMBER")
$!label.INSTRUMENT_STATE_PARMS.GAIN_NUMBER
#debug("INSTRUMENT_STATE_PARMS.OFFSET_MODE_ID")
$!label.INSTRUMENT_STATE_PARMS.OFFSET_MODE_ID
$!label.INSTRUMENT_STATE_PARMS.DC_OFFSET
## Added per Git Issue 111
#if ( $label.INSTRUMENT_STATE_PARMS.SPECIAL_NAME &&
$label.INSTRUMENT_STATE_PARMS.SPECIAL_LINE &&
$label.INSTRUMENT_STATE_PARMS.SPECIAL_SAMPLE )
$!label.INSTRUMENT_STATE_PARMS.SPECIAL_NAME
Location of the LIBS laser spot in the RMI image
$!label.INSTRUMENT_STATE_PARMS.SPECIAL_LINE
$!label.INSTRUMENT_STATE_PARMS.SPECIAL_SAMPLE
#end
#generateDownsamplingParameters( $label.INSTRUMENT_STATE_PARMS )
#generateExposureParameters($insStParamsNode $insStParamsName '')
##For flat-field, we will process either:
## DERIVED_IMAGE_PARMS (if the node includes 'RADIOMETRIC_CORRECTION_TYPE'),
## otherwise INSTRUMENT_STATE_PARMS - but never both.
#if ( $derivedImgParamsNode.RADIOMETRIC_CORRECTION_TYPE )
#generateFlatFieldCorrection($derivedImgParamsNode $derivedImgParamsName )
#else
#generateFlatFieldCorrection($insStParamsNode $insStParamsName )
#end
#generateFocusParameters( $insStParamsNode 'img' )
###generateFocusParameters( $insStParamsNode $insStParamsName )
#generateFrameParameters()
##...
#conditionalImageTypeProductFlag( $!IDENT.IMAGE_TYPE 'HISTOGRAM' )
#if ( $label.LED_ILLUMINATION_PARMS )
#generateIlluminationMaskParameters($label.LED_ILLUMINATION_PARMS)
#end
#if ( $label.SLI_ILLUMINATION_PARMS )
#generateIlluminationMaskParameters($label.SLI_ILLUMINATION_PARMS)
#end
#generateImageMaskParameters($derivedImgParamsNode $derivedImgParamsName)
#generateOnboardCompressionParameters( $cmprsParamsNode $cmprsParamsName 'img' )
#generateDataProductOnboardCompressionParameters()
#generateOpticalFilterParameters( $insStParamsNode )
## Per issue 175, some Optical labels can appear either in INSTRUMENT_STATE_PARMS
## or IMAGE_REQUEST_PARMS, but not both. So build a list of nodes and pass
## to the macro.
#set($optical_nodes = [])
#set($silencer = $optical_nodes.add( $insStParamsNode ) )
#set($silencer = $optical_nodes.add( $imgReqParamsNode ) )
#generateOpticalProperties( $optical_nodes )
#generatePointCorr($derivedImgParamsNode $derivedImgParamsName)
#generateRadCorr($derivedImgParamsNode $derivedImgParamsName $derivedImageType )
##...
#conditionalImageTypeProductFlag( $!IDENT.IMAGE_TYPE 'REF_PIXELS' )
##...
#conditionalImageTypeProductFlag( $!IDENT.IMAGE_TYPE 'ROW_SUM' )
##Only include sample bits when not float type
#if ( $IS_DATATYPE_FLOAT == $CONST_FALSE )
#debug("INSTRUMENT_STATE_PARMS.ORIGINAL_SAMPLE_BITS")
$!insStParamsNode.ORIGINAL_SAMPLE_BITS
#debug("IMAGE_DATA.SAMPLE_BIT_MASK")
#bitMaskToSampleBits( $!IMAGE.SAMPLE_BIT_MASK.toString() )
$!IMAGE.SAMPLE_BIT_MASK
#end
#debug("INSTRUMENT_STATE_PARMS.SAMPLE_BIT_METHOD")
#debug("INSTRUMENT_STATE_PARMS.SAMPLE_BIT_MODE_ID")
#getCompandingParameters( $insStParamsNode $insStParamsName $derivedImageType $CONST_TRUE )
#generateShutterSubtraction($insStParamsNode $insStParamsName)
#generateSpatialFilterParameters($derivedImgParamsNode $derivedImgParamsName)
## RGD #35: If there is no SUBFRAME_REQUEST_PARMS property group present, skip the group.
## else If SUBFRAME_REQUEST_PARMS.GROUP_APPLICABILITY_FLAG == FALSE, skip the group.
## else, include the group. (meaning it's TRUE or the keyword is not present but the property group is)
## We create Subframe nodes in more than one place, so lets just create a variables
#set ( $CREATE_SUBFRAME_NODE = $CONST_FALSE ) ##empty string means false
#if ( $!label.SUBFRAME_REQUEST_PARMS &&
$!label.SUBFRAME_REQUEST_PARMS.GROUP_APPLICABILITY_FLAG &&
$!label.SUBFRAME_REQUEST_PARMS.GROUP_APPLICABILITY_FLAG.toString().toLowerCase() != "false" )
#set ( $CREATE_SUBFRAME_NODE = $CONST_TRUE )
#end
#if ( $CREATE_SUBFRAME_NODE == $CONST_TRUE)
##Overly complicated logic for dealing with Subframes that Deen and Ruoff discussed.
##Check with Bob for the clear as mud reasoning...but if IMG_REQ_PRMS contain any of
##the nodes listed, then use that for source. Otherwise, use IMAGE with backup
##of label.PDS4_IMAGE for samples in odd cases.
## Sometimes VIC files don't include IMAGE.LINE_SAMPLES, so
## as a backup, macro accepts a third backup value arg, tho it will
## only be used if node.LINE_LINES exists.
#set ($subfrm_ls_prms_smpl_bak = '')
#if ( $imgReqParamsNode.FIRST_LINE || $imgReqParamsNode.FIRST_LINE_SAMPLE ||
$imgReqParamsNode.LINES || $imgReqParamsNode.LINE_SAMPLES )
#generateSubframeLineSampParameters($imgReqParamsNode $imgReqParamsName $subfrm_ls_prms_smpl_bak )
#else
## Try and use $label.PDS4_IMAGE.ns as source for backup 'samples'
#if ($label.PDS4_IMAGE && $label.PDS4_IMAGE.ns )
#set ($subfrm_ls_prms_smpl_bak = $label.PDS4_IMAGE.ns )
#end
#generateSubframeLineSampParameters($imageNode $imageName $subfrm_ls_prms_smpl_bak )
#end
## Can be one of 'ELEVATION_FOV' or 'VERTICAL_FOV':
#getNodeValueNotNil( $label.INSTRUMENT_STATE_PARMS 'ELEVATION_FOV' "img:line_fov" 'deg' )
#getNodeValueNotNil( $label.INSTRUMENT_STATE_PARMS 'VERTICAL_FOV' "img:line_fov" 'deg' )
## Can be one of 'AZIMUTH_FOV' or 'HORIZONTAL_FOV':
#getNodeValueNotNil( $label.INSTRUMENT_STATE_PARMS 'AZIMUTH_FOV' "img:sample_fov" 'deg' )
#getNodeValueNotNil( $label.INSTRUMENT_STATE_PARMS 'HORIZONTAL_FOV' "img:sample_fov" 'deg' )
#generateSubframeType( $label.SUBFRAME_REQUEST_PARMS 'SUBFRAME_REQUEST_PARMS' )
#else
## Per Git issue 62, In this section, we will create a shortened-Subframe with FOV values only,
## if they exists. The velo 'empty' logic should make that determination so we dont have to
## explicitly test for them.
## Can be one of 'ELEVATION_FOV' or 'VERTICAL_FOV':
#getNodeValueNotNil( $label.INSTRUMENT_STATE_PARMS 'ELEVATION_FOV' "img:line_fov" 'deg' )
#getNodeValueNotNil( $label.INSTRUMENT_STATE_PARMS 'VERTICAL_FOV' "img:line_fov" 'deg' )
## Can be one of 'AZIMUTH_FOV' or 'HORIZONTAL_FOV':
#getNodeValueNotNil( $label.INSTRUMENT_STATE_PARMS 'AZIMUTH_FOV' "img:sample_fov" 'deg' )
#getNodeValueNotNil( $label.INSTRUMENT_STATE_PARMS 'HORIZONTAL_FOV' "img:sample_fov" 'deg' )
#end ## IF CREATE_SUBFRAME_NODE
##...
#conditionalImageTypeProductFlag( $!IDENT.IMAGE_TYPE 'THUMBNAIL' )
#generateTilingParameters( $insStParamsNode )
##...
#set ($vidParamsName = "VIDEO_PARMS")
#if ( $label.get($vidParamsName) )
#set ($vidParamsNode = $label.get($vidParamsName))
#generateVideoParameters( $vidParamsNode $vidParamsName $CONST_TRUE )
#end
##COVER_HALL_SENSOR_FLAG
#set ($img_is_chsf_val = "#checkNA( $!label.INSTRUMENT_STATE_PARMS.COVER_HALL_SENSOR_FLAG '' )")
#if ( "$img_is_chsf_val" != "")
Cover_Hall_Sensor
$img_is_chsf_val
#end
##FILTER_HALL_SENSOR_FLAG
#set ($img_is_fihsf_val = "#checkNA( $!label.INSTRUMENT_STATE_PARMS.FILTER_HALL_SENSOR_FLAG '' )")
#if ( "$img_is_fihsf_val" != "")
Filter_Hall_Sensor
$img_is_fihsf_val
#end
##FOCUS_HALL_SENSOR_FLAG
#set ($img_is_fohsf_val = "#checkNA( $!label.INSTRUMENT_STATE_PARMS.FOCUS_HALL_SENSOR_FLAG '' )")
#if ( "$img_is_fohsf_val" != "")
Focus_Hall_Sensor
$img_is_fohsf_val
#end
##List of LED_STATE_FLAG/NAME
#if ( $!label.INSTRUMENT_STATE_PARMS.LED_STATE_FLAG )
#set($ispLsf_length = $label.INSTRUMENT_STATE_PARMS.LED_STATE_FLAG.size())
#foreach ( $i in [1..$ispLsf_length] )
#set ($ispLsnCurFlagVal = $label.INSTRUMENT_STATE_PARMS.LED_STATE_FLAG.get($foreach.index))
#set ($ispLsnCurFlagVal = "#checkNA( $ispLsnCurFlagVal.toString() '' )" )
#if ( "$ispLsnCurFlagVal" != "")
#set ($ispLsnCurNameVal = $label.INSTRUMENT_STATE_PARMS.LED_STATE_NAME.get($foreach.index))
LED_State_${ispLsnCurNameVal}
$ispLsnCurFlagVal
#end
#end
#end
#if ( $!label.INSTRUMENT_STATE_PARMS.DEVICE_COMPONENT_STATE )
#set($ispDcs_length = $label.INSTRUMENT_STATE_PARMS.DEVICE_COMPONENT_STATE.size())
#foreach ( $i in [1..$ispDcs_length] )
#set ($ispDcsVal = $label.INSTRUMENT_STATE_PARMS.DEVICE_COMPONENT_STATE.get($foreach.index))
#set ($ispDcsVal = "#checkNA( $ispDcsVal.toString() '' )" )
#if ( "$ispDcsVal" != "")
#set ($ispDcsNameVal = $label.INSTRUMENT_STATE_PARMS.DEVICE_COMPONENT_STATE_NAME.get($foreach.index))
${ispDcsNameVal}
$ispDcsVal
#end
#end
#end
#get_Img_DeviceState_DeviceTemps()
#set ($obsReqParamsName = "OBSERVATION_REQUEST_PARMS")
#set ($obsReqParamsNode = $label.get($obsReqParamsName))
#set ($imgReqParamsName = "IMAGE_REQUEST_PARMS")
#set ($imgReqParamsNode = $label.get($imgReqParamsName))
#set ($vidReqParamsName = "VIDEO_REQUEST_PARMS")
#set ($vidReqParamsNode = $label.get($vidReqParamsName))
#set ($thmReqParamsName = "THUMBNAIL_REQUEST_PARMS")
#set ($thmReqParamsNode = $label.get($thmReqParamsName))
#set ($rsmReqParamsName = "ROW_SUM_REQUEST_PARMS")
#set ($rsmReqParamsNode = $label.get($rsmReqParamsName))
#set ($csmReqParamsName = "COLUMN_SUM_REQUEST_PARMS")
#set ($csmReqParamsNode = $label.get($csmReqParamsName))
#set ($rpxReqParamsName = "REFERENCE_PIXEL_REQUEST_PARMS")
#set ($rpxReqParamsNode = $label.get($rpxReqParamsName))
#set ($hstReqParamsName = "HISTOGRAM_REQUEST_PARMS")
#set ($hstReqParamsNode = $label.get($hstReqParamsName))
$!csmReqParamsNode.DOWNLOAD_PRIORITY
$!csmReqParamsNode.GROUP_APPLICABILITY_FLAG.toString().toLowerCase()
## Added as part of Git Issue #24
$!TELEM.STRIPING_COUNT
$!TELEM.STRIPING_OVERLAP_ROWS
#generateDetectorEraseCount($obsReqParamsNode $obsReqParamsName)
#debug("OBSERVATION_REQUEST_PARMS.GAIN_NUMBER")
$!obsReqParamsNode.GAIN_NUMBER
$!obsReqParamsNode.BAD_PIXEL_REPLACEMENT_FLAG.toString().toLowerCase()
$!label.INSTRUMENT_STATE_PARMS.BAD_PIXEL_REPLACEMENT_ID
$!obsReqParamsNode.INSTRUMENT_IDLE_TIMEOUT
#debug("OBSERVATION_REQUEST_PARMS.EARLY_IMAGE_RETURN_FLAG")
$!obsReqParamsNode.EARLY_IMAGE_RETURN_FLAG.toString().toLowerCase()
$!obsReqParamsNode.PARAMETER_TABLE_ID
## Placeholder: The intent is that it can be used to point at the bad
## pixel replacement table, using as the reference type
## data_to_calibration_product or perhaps something more specific,
## like data_to_bad_pixel_table... (Issue #25)
#generateDownsamplingParameters( $imgReqParamsNode )
##Exposure values can apparently come from either 'OBSERVATION_REQUEST_PARMS' or
##'IMAGE_REQUEST_PARMS', so we need to select at most one of those.
#if ( $!obsReqParamsNode.EXPOSURE_TYPE )
#generateExposureParameters( $obsReqParamsNode $obsReqParamsName '' )
#elseif ( $!imgReqParamsNode.EXPOSURE_TYPE )
#generateExposureParameters( $imgReqParamsNode $imgReqParamsName '' )
#end
#generateFlatFieldCorrection( $imgReqParamsNode $imgReqParamsName )
## Focus labels can appear either in IMAGE_REQUEST_PARMS or OBSERVATION_REQUEST_PARMS
## Until there is a clear way to determine which to use, we will just call This
## macro once each per node.
#set($commanded_focus_nodes = [])
#set($silencer = $commanded_focus_nodes.add( $imgReqParamsNode ) )
#set($silencer = $commanded_focus_nodes.add( $obsReqParamsNode ) )
#generateFocusParameters( $commanded_focus_nodes 'img' )
###generateFocusParameters($imgReqParamsNode $imgReqParamsName)
###generateFocusParameters($obsReqParamsNode $obsReqParamsName)
## Non-generic Focus_Stack pulling info from ImageReqParms and ZstackReqparms ##
#debug("ZSTACK_REQUEST_PARMS.GROUP_APPLICABILITY_FLAG")
$!label.ZSTACK_REQUEST_PARMS.GROUP_APPLICABILITY_FLAG.toString().toLowerCase()
#if ( $!label.IMAGE_REQUEST_PARMS.AUTO_FOCUS_ZSTACK_FLAG.toString().toUpperCase() != $CONST_NULL )
#debug("IMAGE_REQUEST_PARMS.AUTO_FOCUS_ZSTACK_FLAG")
$!label.IMAGE_REQUEST_PARMS.AUTO_FOCUS_ZSTACK_FLAG.toString().toLowerCase()
#end
#debug("ZSTACK_REQUEST_PARMS.ZSTACK_IMAGE_DEPTH")
#checkNA( $!label.ZSTACK_REQUEST_PARMS.ZSTACK_IMAGE_DEPTH '' )
#checkNA( $!label.ZSTACK_REQUEST_PARMS.START_IMAGE_ID '' )
#if ( $CONST_TRUE.equals("#nodeExistsWithNonNilValue($label.ZSTACK_REQUEST_PARMS 'IMAGE_BLENDING_FLAG')") )
$!label.ZSTACK_REQUEST_PARMS.IMAGE_BLENDING_FLAG.toString().toLowerCase()
#end
#if ( $CONST_TRUE.equals("#nodeExistsWithNonNilValue($label.ZSTACK_REQUEST_PARMS 'IMAGE_REGISTRATION_FLAG')") )
$!label.ZSTACK_REQUEST_PARMS.IMAGE_REGISTRATION_FLAG.toString().toLowerCase()
#end
#debug("ZSTACK_REQUEST_PARMS.ZSTACK_DELTA_FOCUS_COUNT")
#checkNA( $!label.ZSTACK_REQUEST_PARMS.ZSTACK_DELTA_FOCUS_COUNT '' )
$!hstReqParamsNode.DOWNLOAD_PRIORITY
$!hstReqParamsNode.GROUP_APPLICABILITY_FLAG.toString().toLowerCase()
#generateOnboardCompressionParameters($imgReqParamsNode $imgReqParamsName 'img' )
#set($optical_filter_nodes = [])
#set($silencer = $optical_filter_nodes.add( $imgReqParamsNode ) )
#set($silencer = $optical_filter_nodes.add( $obsReqParamsNode ) )
#generateOpticalFilterParameters( $optical_filter_nodes )
$!rpxReqParamsNode.DOWNLOAD_PRIORITY
$!rpxReqParamsNode.GROUP_APPLICABILITY_FLAG.toString().toLowerCase()
#generateOnboardCompressionParameters( $rpxReqParamsNode $rpxReqParamsName 'img' )
$!rsmReqParamsNode.DOWNLOAD_PRIORITY
$!rsmReqParamsNode.GROUP_APPLICABILITY_FLAG.toString().toLowerCase()
## Adding this per Git Issue 32 but not sure its right? (nttoole,06.03.2020)
#getCompandingParameters( $imgReqParamsNode $imgReqParamsName $derivedImageType $CONST_FALSE )
#generateShutterSubtraction($obsReqParamsNode $obsReqParamsName)
#if ( $CREATE_SUBFRAME_NODE == $CONST_TRUE )
#generateSubframeLineSampParameters($imgReqParamsNode $imgReqParamsName '' )
#end
$!thmReqParamsNode.DOWNLOAD_PRIORITY
$!thmReqParamsNode.GROUP_APPLICABILITY_FLAG.toString().toLowerCase()
#generateOnboardCompressionParameters( $thmReqParamsNode $thmReqParamsName 'img' )
#getCompandingParameters( $thmReqParamsNode $imgReqParamsName $derivedImageType $CONST_FALSE )
#generateSubframeLineSampParameters($thmReqParamsNode $thmReqParamsName '' )
#generateVideoParameters( $vidReqParamsNode $vidReqParamsName $CONST_FALSE )
######################################
## Image Surface Discipline Area
######################################
#debug("IDENTIFICATION.IMAGE_ID")
$!IDENT.IMAGE_ID
#debug("IDENTIFICATION.IMAGE_ID_2")
$!IDENT.IMAGE_ID_2
#debug("IDENTIFICATION.MOSAIC_ID")
$!IDENT.MOSAIC_ID
#debug("IDENTIFICATION.MESH_ID")
$!IDENT.MESH_ID
#debug("IDENTIFICATION.STEREO_MATCH_ID")
$!IDENT.STEREO_MATCH_ID
$!IDENT.TRACKING_ID
#debug("IDENTIFICATION.IMAGE_TYPE")
$!IDENT.IMAGE_TYPE
#debug("IDENTIFICATION.IMAGE_ACQUIRE_MODE")
$!IDENT.IMAGE_ACQUIRE_MODE
#debug("IDENTIFICATION.INSTRUMENT_TYPE")
$!IDENT.INSTRUMENT_TYPE
#debug("INSTRUMENT_STATE_PARMS.INSTRUMENT_MODE_ID")
$!label.INSTRUMENT_STATE_PARMS.INSTRUMENT_MODE_ID
#debug("IDENTIFICATION.INSTRUMENT_SERIAL_NUMBER")
$!IDENT.INSTRUMENT_SERIAL_NUMBER
#debug("IDENTIFICATION.INSTRUMENT_VERSION_ID")
$!IDENT.INSTRUMENT_VERSION_ID
#if ( $CONST_TRUE.equals("#nodeExistsWithNonNilValue( $IDENT 'INSTRUMENT_ID')"))
#debug("IDENTIFICATION.INSTRUMENT_ID")
#set ( $ident_instr_id_list = "#joinStrList( $!IDENT.INSTRUMENT_ID ';' )" )
#set ( $ident_instr_id_list = $ident_instr_id_list.split(';') )
#set ( $ident_instr_id_list_is_empty = "#isSplitListFromJoinStrListEmpty($ident_instr_id_list)" )
#if ( $ident_instr_id_list_is_empty == $CONST_FALSE )
#foreach ( $ident_instr_id_item in $ident_instr_id_list )
$ident_instr_id_item
#end
#end
#else
$!INSTRUMENT_ID
#end
#debug("GEO_CAM_MODEL.CAMERA_SERIAL_NUMBER")
$!GEO_CAM_MODEL.CAMERA_SERIAL_NUMBER
#debug("IDENTIFICATION.CAMERA_PRODUCT_ID")
$!IDENT.CAMERA_PRODUCT_ID
#debug("IDENTIFICATION.CAMERA_PRODUCT_ID_COUNT")
$!IDENT.CAMERA_PRODUCT_ID_COUNT
#if ($derivedImageType)
#debug ( "DERIVED_IMAGE_PARMS.DERIVED_IMAGE_TYPE" )
$!label.DERIVED_IMAGE_PARMS.DERIVED_IMAGE_TYPE
#debug ( "DERIVED_IMAGE_PARMS.HORIZON_MASK_ELEVATION" )
$!label.HORIZON_MASK_ELEVATION
#debug("DERIVED_IMAGE_PARMS.TARGET_INSTRUMENT")
$!label.DERIVED_IMAGE_PARMS.TARGET_INSTRUMENT
#set ($derivedImageParamsTargetInstr = $label.DERIVED_IMAGE_PARMS.TARGET_INSTRUMENT.toString())
#if ( $derivedImageParamsTargetInstr )
#set ($derivedImageParamsTargetInstr = $derivedImageParamsTargetInstr.toLowerCase())
#set ($derivedImageParamsTargetInstrUrn = "#msn_getInstrumentContextURN($derivedImageParamsTargetInstr)" )
$derivedImageParamsTargetInstrUrn.toLowerCase()
data_to_placement_instrument
#end
#debug("DERIVED_IMAGE_PARMS.RANGE_ORIGIN_VECTOR")
$!label.DERIVED_IMAGE_PARMS.RANGE_ORIGIN_VECTOR[0]
$!label.DERIVED_IMAGE_PARMS.RANGE_ORIGIN_VECTOR[1]
$!label.DERIVED_IMAGE_PARMS.RANGE_ORIGIN_VECTOR[2]
#if ($label.DERIVED_IMAGE_PARMS.REFERENCE_COORD_SYSTEM_NAME)
#debug("DERIVED_IMAGE_PARMS.REFERENCE_COORD_SYSTEM_NAME")
#debug("DERIVED_IMAGE_PARMS.REFERENCE_COORD_SYSTEM_INDEX")
#set ( $coordSystemName = "" )
#set ( $coordSystemIndex = "" )
#set ( $coordSystemName = $label.DERIVED_IMAGE_PARMS.REFERENCE_COORD_SYSTEM_NAME )
#set ( $coordSystemIndex = $label.DERIVED_IMAGE_PARMS.REFERENCE_COORD_SYSTEM_INDEX )
#getCoordinateSpaceReference( $coordSystemName $coordSystemIndex "geom" "DERIVED_IMAGE_PARMS" )
#end
#end
$!label.DERIVED_IMAGE_PARMS.ERROR_MODEL_NAME
#if ( $label.DERIVED_IMAGE_PARMS.ERROR_MODEL_PARMS )
#set($length = $label.DERIVED_IMAGE_PARMS.ERROR_MODEL_PARMS.size())
#foreach ( $i in [1..$length] )
$!label.DERIVED_IMAGE_PARMS.ERROR_MODEL_PARMS_NAME.get($foreach.index)
$!label.DERIVED_IMAGE_PARMS.ERROR_MODEL_PARMS.get($foreach.index)
#end ##EndFor
#end ##EndIf
#set ($geoproj_linmode = '')
#set ($geoproj_linmodefov = '')
##Jan'22: Trancoder bug is sticking LINEARIZATION_MODE node and value at end of
##SUPPLEMENTAL_MASK_FILE value. So we have to handle that case here (and for mask area)
##by checking that situation
#if ( $label.DERIVED_IMAGE_PARMS.LINEARIZATION_MODE )
#set ($geoproj_linmode = $!label.DERIVED_IMAGE_PARMS.LINEARIZATION_MODE[0].toString() )
#set ($geoproj_linmode_fov = $!label.DERIVED_IMAGE_PARMS.LINEARIZATION_MODE[1].toString() )
#elseif ( $label.DERIVED_IMAGE_PARMS.SUPPLEMENTAL_MASK_FILE &&
$!label.DERIVED_IMAGE_PARMS.SUPPLEMENTAL_MASK_FILE.toString().contains("LINEARIZATION_MODE"))
#set ( $hack_values = "#hackSeparateLabelValues($label.DERIVED_IMAGE_PARMS.SUPPLEMENTAL_MASK_FILE 'LINEARIZATION_MODE')")
#if ( ! $CONST_FALSE.equals($hack_values) )
#set ( $hack_values_list = $hack_values.split(";"))
#if ( $CONST_FALSE.equals("#isSplitListFromJoinStrListEmpty($hack_values_list)") )
#set ( $linmodevalues = $hack_values_list.get(1) )
#if ($linmodevalues.contains(','))
#set ( $linmodevalues = $linmodevalues.replace('(', '') )
#set ( $linmodevalues = $linmodevalues.replace(')', '') )
#set ( $linmodevalues = $linmodevalues.trim() )
#set ( $linmodevalues_list = $linmodevalues.split(","))
#if ( $linmodevalues_list.size() == 2 )
#set ($geoproj_linmode = $linmodevalues_list.get(0) )
#set ($geoproj_linmode_fov = $linmodevalues_list.get(1) )
#set ($geoproj_linmode = $geoproj_linmode.trim() )
#set ($geoproj_linmode_fov = $geoproj_linmode_fov.trim() )
#end
#end
#end
#end
#end
#set ($geoproj_linmode = $!text.capitalize($geoproj_linmode) )
#set ($geoproj_linmode_fov = $!text.capitalize($geoproj_linmode_fov) )
$!geoproj_linmode
$!geoproj_linmode_fov
#debug ( "IDENTIFICATION.GEOMETRY_PROJECTION_TYPE" )
$!text.capitalize($!IDENT.GEOMETRY_PROJECTION_TYPE.toString())
#if ( $label.DERIVED_IMAGE_PARMS.LINEARIZATION_PRODUCT_ID )
#set ( $lblDipLpid = $label.DERIVED_IMAGE_PARMS.LINEARIZATION_PRODUCT_ID.toString() )
#set ( $lblDipLpid = "#getPidFullnameNoVersion($lblDipLpid)" )
#set ( $lblDipLcol = "#msn_getProductLidCollection($lblDipLpid)" )
#set ( $lblDipLpid_lid = "#generateLID( $LID_PREFIX $lblDipLcol $lblDipLpid )" )
#set ( $lblDipLpid_lid = $lblDipLpid_lid.toLowerCase() )
$lblDipLpid_lid
data_to_linearization_partner
#end
#if ( $label.DERIVED_IMAGE_PARMS.CONFIGURATION_BIT_ID &&
( $label.DERIVED_IMAGE_PARMS.INSTRUMENT_BAND_ID ||
$label.DERIVED_IMAGE_PARMS.INSTRUMENT_LIST_ID ))
## Instruments Section
#set ( $instrs_device = "ARM" )
#if ( $label.DERIVED_IMAGE_PARMS.INSTRUMENT_BAND_ID )
#set ( $instrs_node = $label.DERIVED_IMAGE_PARMS.get('INSTRUMENT_BAND_ID') )
#else
#set ( $instrs_node = $label.DERIVED_IMAGE_PARMS.get('INSTRUMENT_LIST_ID') )
#end
${instrs_device}
#set ( $instrs_node_len = $instrs_node.size() - 1 )
#foreach ( $i in [ 0..$instrs_node_len ] )
#set ( $instr_name = $instrs_node.get($foreach.index) )
#set ( $instr_indx = $math.add( $foreach.index, 1))
${instr_name}
${instr_indx}
#end
## Configurations Section
#set ( $cfg_bits_total_size = '16' )
#set ( $cfg_bit_size = '2' ) ## default to 2 for consistency
#if ( $label.DERIVED_IMAGE_PARMS.CONFIGURATION_BITS )
#set ( $cfg_bit_size = $label.DERIVED_IMAGE_PARMS.CONFIGURATION_BITS.toString() )
#end
#set ( $cfg_bit_size_minus1 = $math.sub($cfg_bit_size, 1) )
#set ( $cfg_bits_total_size_minus1 = $math.sub($cfg_bits_total_size, 1) )
#set ( $configs_node = $label.DERIVED_IMAGE_PARMS.CONFIGURATION_BIT_ID )
$!label.DERIVED_IMAGE_PARMS.CONFIGURATION_BAND
#set ( $configs_node_end_idx = $configs_node.size() - 1 )
#foreach ( $i in [ 0..$configs_node_end_idx ] )
#set ( $config_name = $configs_node.get($foreach.index) )
#set ( $config_bit_offset = $math.mul( $foreach.index, $cfg_bit_size))
#set ( $config_start_bit = $math.sub( $cfg_bits_total_size_minus1, $config_bit_offset ))
#set ( $config_end_bit = $math.sub( $config_start_bit, $cfg_bit_size_minus1 ))
$config_name
$config_start_bit
$config_end_bit
#end
#end
$!label.DERIVED_IMAGE_PARMS.CORRELATION_AVERAGE_SCALE
$!label.DERIVED_IMAGE_PARMS.CORRELATION_OVERLAP_PERCENTAGE
$!label.DERIVED_IMAGE_PARMS.CORRELATION_PIXEL_COUNT
$!label.DERIVED_IMAGE_PARMS.CORRELATION_PYRAMID_LEVEL
$!label.DERIVED_IMAGE_PARMS.STEREO_BASELINE
#if ( $label.DERIVED_IMAGE_PARMS.STEREO_PRODUCT_ID )
#set ( $lblDipSpid = $label.DERIVED_IMAGE_PARMS.STEREO_PRODUCT_ID.toString() )
#set ( $lblDipSpid = "#getPidFullnameNoVersion($lblDipSpid)" )
#set ( $lblDipScol = "#msn_getProductLidCollection($lblDipSpid)" )
#set ( $lblDipSpid_lid = "#generateLID( $LID_PREFIX $lblDipScol $lblDipSpid )" )
#set ( $lblDipSpid_lid = $lblDipSpid_lid.toLowerCase() )
$lblDipSpid_lid
data_to_stereo_partner
#end
#set ( $overloadedCoordSpaceRef = "#checkCoordSpaceOverloading($label.DERIVED_IMAGE_PARMS.DERIVED_IMAGE_TYPE)" )
#if ( $overloadedCoordSpaceRef eq $CONST_TRUE )
#if ($label.DERIVED_IMAGE_PARMS.REFERENCE_COORD_SYSTEM_NAME)
#debug("DERIVED_IMAGE_PARMS.REFERENCE_COORD_SYSTEM_NAME")
#debug("DERIVED_IMAGE_PARMS.REFERENCE_COORD_SYSTEM_INDEX")
#set ( $coordSystemName = "" )
#set ( $coordSystemIndex = "" )
#set ( $coordSystemName = $label.DERIVED_IMAGE_PARMS.REFERENCE_COORD_SYSTEM_NAME )
#set ( $coordSystemIndex = $label.DERIVED_IMAGE_PARMS.REFERENCE_COORD_SYSTEM_INDEX )
#getCoordinateSpaceReference( $coordSystemName $coordSystemIndex "img_surface" "DERIVED_IMAGE_PARMS" )
#end
#end
#if ( $IDENT.ERROR_PIXEL_LINE )
#set($length = $IDENT.ERROR_PIXEL_LINE.size())
#foreach ( $i in [1..$length] )
#if ( ! ($IDENT.ERROR_PIXEL_LINE.get($foreach.index).equals($CONST_NA)) && !( $IDENT.ERROR_PIXEL_SAMPLE.get($foreach.index).equals($CONST_NA)) )
#debug( "TELEMETRY.ERROR_PIXEL_LINE" )
$!IDENT.ERROR_PIXEL_LINE.get($foreach.index)
#debug( "TELEMETRY.ERROR_PIXEL_SAMPLE" )
$!IDENT.ERROR_PIXEL_SAMPLE.get($foreach.index)
#end
#end
#end
#if ( $!label.OBSERVATION_REQUEST_PARMS.COMMAND_INSTRUMENT_ID )
#debug("OBSERVATION_REQUEST_PARMS.COMMAND_INSTRUMENT_ID")
#set ( $orp_cmd_instr_id_list = "#joinStrList( $label.OBSERVATION_REQUEST_PARMS.COMMAND_INSTRUMENT_ID ';' )" )
#set ( $orp_cmd_instr_id_list = $orp_cmd_instr_id_list.split(';') )
#set ( $orp_cmd_instr_id_list_is_empty = "#isSplitListFromJoinStrListEmpty($orp_cmd_instr_id_list)" )
#if ( $orp_cmd_instr_id_list_is_empty == $CONST_FALSE )
#foreach ( $orp_cmd_instr_id_item in $orp_cmd_instr_id_list )
$orp_cmd_instr_id_item
#end
#end
#end
#debug("IMAGE_REQUEST_PARMS.IMAGE_ID")
$!label.IMAGE_REQUEST_PARMS.IMAGE_ID
#debug("IMAGE_REQUEST_PARMS.IMAGE_ID_2")
$!label.IMAGE_REQUEST_PARMS.IMAGE_ID_2
$!label.OBSERVATION_REQUEST_PARMS.START_IMAGE_ID
$!label.OBSERVATION_REQUEST_PARMS.OBSERVATION_NUMBER
$!label.OBSERVATION_REQUEST_PARMS.PARAMETER_TABLE_NUMBER
######################################
## Mission Discipline Area
######################################
## Mission phase name is now part of MM API
#set ( $mis_phase_name = "" )
#set ( $mis_phase_name = "#msn_getMissionPhaseName()" )
#debug("IDENTIFICATION.MISSION_PHASE_NAME")
$!mis_phase_name
##1##removed from Insight macro file Nov 29, 2018 (IDS-7821)
$PRODUCT_TYPE
#debug("IDENTIFICATION.SPACECRAFT_CLOCK_START_COUNT")
$!IDENT.SPACECRAFT_CLOCK_START_COUNT
#debug("IDENTIFICATION.SPACECRAFT_CLOCK_STOP_COUNT")
$!IDENT.SPACECRAFT_CLOCK_STOP_COUNT
#debug("IDENTIFICATION.SPACECRAFT_CLOCK_CNT_PARTITION")
$!IDENT.SPACECRAFT_CLOCK_CNT_PARTITION
#debug("INSTRUMENT_STATE_PARMS.INSTRUMENT_CLOCK_START_COUNT")
$!label.INSTRUMENT_STATE_PARMS.INSTRUMENT_CLOCK_START_COUNT
#if ( $!IDENT.IMAGE_TIME )
#debug("IDENTIFICATION.IMAGE_TIME")
#getZuluTime( $!IDENT.IMAGE_TIME )
#end
## check if PLANET_DAY_NUMBER exists. If not, fall back to extract from filename
#if ($IDENT.PLANET_DAY_NUMBER)
#debug("IDENTIFICATION.PLANET_DAY_NUMBER")
$!IDENT.PLANET_DAY_NUMBER
#else
${PLANET_DAY_NUMBER}
#end
#if ( $IDENT.START_LOCAL_MEAN_SOLAR_TIME )
#debug("IDENTIFICATION.START_LOCAL_MEAN_SOLAR_TIME")
#set ( $startLocalMeanSolar = $IDENT.START_LOCAL_MEAN_SOLAR_TIME )
#else
#debug("IDENTIFICATION.LOCAL_MEAN_SOLAR_TIME")
#set ( $startLocalMeanSolar = $IDENT.LOCAL_MEAN_SOLAR_TIME )
#end
#splitSolarTimeSol( $!startLocalMeanSolar.toString() $CONST_TIME )
#debug("IDENTIFICATION.STOP_LOCAL_MEAN_SOLAR_TIME")
#splitSolarTimeSol( $!IDENT.STOP_LOCAL_MEAN_SOLAR_TIME.toString() $CONST_TIME )
#debug("IDENTIFICATION.LOCAL_MEAN_SOLAR_TIME")
#splitSolarTimeSol( $!startLocalMeanSolar.toString() $CONST_SOL )
#debug("IDENTIFICATION.STOP_LOCAL_MEAN_SOLAR_TIME")
#splitSolarTimeSol( $!IDENT.STOP_LOCAL_MEAN_SOLAR_TIME.toString() $CONST_SOL )
#if ( $IDENT.START_LOCAL_TRUE_SOLAR_TIME )
#debug("IDENTIFICATION.START_LOCAL_TRUE_SOLAR_TIME")
#set ( $startLocalTrueSolar = $IDENT.START_LOCAL_TRUE_SOLAR_TIME )
#else
#debug("IDENTIFICATION.LOCAL_TRUE_SOLAR_TIME")
#set ( $startLocalTrueSolar = $IDENT.LOCAL_TRUE_SOLAR_TIME )
#end
$!startLocalTrueSolar
#debug("IDENTIFICATION.STOP_LOCAL_TRUE_SOLAR_TIME")
$!IDENT.STOP_LOCAL_TRUE_SOLAR_TIME
#if ( $IDENT.START_LOCAL_TRUE_SOLAR_TIME_SOL )
#debug("IDENTIFICATION.START_LOCAL_TRUE_SOLAR_TIME_SOL")
#set ( $startLocalTrueSolarSol = $IDENT.START_LOCAL_TRUE_SOLAR_TIME_SOL )
#else
#debug("IDENTIFICATION.LOCAL_TRUE_SOLAR_TIME_SOL")
#set ( $startLocalTrueSolarSol = $IDENT.LOCAL_TRUE_SOLAR_TIME_SOL )
#end
$!startLocalTrueSolarSol
#debug("IDENTIFICATION.STOP_LOCAL_TRUE_SOLAR_TIME_SOL")
$!IDENT.STOP_LOCAL_TRUE_SOLAR_TIME_SOL
#debug("IDENTIFICATION.SOLAR_LONGITUDE")
$!IDENT.SOLAR_LONGITUDE
#if ( $IDENT.MARS_YEAR )
$!IDENT.MARS_YEAR
Mars Year
#end
## Per issue 101: ACTIVE_FLIGHT_STRING_ID is moved to this new section
$!IDENT.ACTIVE_FLIGHT_STRING_ID
$!IDENT.ACTIVE_FLIGHT_IMU
######################################
## Mission Surface Discipline Area
######################################
#getMissionSurfaceCommandExecution()
#getMissionSurfaceTelemetry()
#debug("ARM_ARTICULATION_STATE.GRAVITY_ACCELERATION")
$!label.ARM_ARTICULATION_STATE.GRAVITY_ACCELERATION
$!label.OBSERVATION_REQUEST_PARMS.RATIONALE_DESC
$!IDENT.ACTIVITY_ID
$!IDENT.TARGET_ID
$!IDENT.IMAGE_REQUEST_PARMS.DOWNLOAD_PRIORITY
######################################
## Processing Discipline Area
######################################
#generateProcessingInformation($PID)
######################################
## MiniHeader Area
######################################
#generateMiniHeaderSection()
## Either get browse filename from label; or check if conditions to generate
## a browse filename are met.
#set ( $datatobrowse_lidvid = '' )
#if ( $IDENT.BROWSE_FILENAME )
#set ( $browse_pid = $!IDENT.BROWSE_FILENAME.toString().toLowerCase() )
#if ( ! $browse_pid.equals("none") ) ##Check for None
#set ( $browse_pid_ver = '1' )
#if ( $IDENT.BROWSE_VERSION )
#set ( $browse_pid_ver = $!IDENT.BROWSE_VERSION.toString() )
#end
#set ( $datatobrowse_lidvid = "#generateLIDVIDWithVersion($LID_PREFIX $LID_BROWSE_COLLECTION $browse_pid $browse_pid_ver)" )
#end
#elseif ( $CONST_TRUE.equals("#isStandardMissionFilename()") &&
$CONST_TRUE.equals("#msn_includeBrowseSection($PRODUCT_TYPE $derivedImageType $INPUT_FILE_NAME)") )
## Force the png extension for the browse lidvid
#set ( $browse_pid = $PID_FULL )
#set ( $browse_pid = $browse_pid + "." + $BROWSE_EXT )
#set ( $browse_pid = $browse_pid.toLowerCase() )
#set ( $datatobrowse_lidvid = "#generateLIDVIDext( $LID_PREFIX $LID_BROWSE_COLLECTION $browse_pid )" )
#end
#if ( ! $datatobrowse_lidvid.isEmpty() )
$datatobrowse_lidvid
data_to_browse
Reference pointer to browse version of this image.
#end
#if ( $IDENT.SOURCE_PRODUCT_ID )
##SOURCE_PRODUCT_ID can be a single string or a list of strings,
## Guess what! VGR uses semicolons in its SrcProdIds, isnt that wonderful? So use a diff string-list delim
#set ( $isl_delim = '&' )
#set ( $ident_srcProdId_list = "#joinStrList( $!IDENT.SOURCE_PRODUCT_ID $isl_delim )" )
#set ( $ident_srcProdId_list = $ident_srcProdId_list.split($isl_delim) )
#set ( $ident_srcProdId_list_is_empty = "#isSplitListFromJoinStrListEmpty($ident_srcProdId_list)" )
#if ( $ident_srcProdId_list_is_empty == $CONST_FALSE )
#foreach ( $ident_srcProdId_item in $ident_srcProdId_list )
## December '23: Sigh, while ';' may appear for VGR, they really want a '_',
## and it seems too late to fix upstream, so do it here:
#set ( $ident_srcProdId_item = $ident_srcProdId_item.replaceAll(";", "_") )
##October '21: Do not include 'Source_Product_Internal' when prodid "matches" label PID
#if ( ! $ident_srcProdId_item.toLowerCase().startsWith( $PID.toLowerCase() ) )
#set ($sourceProductType = "#getProductType($ident_srcProdId_item)" )
#set ($sourceProductProcLevel = "#msn_getProcessingLevel($sourceProductType $IS_MOSAIC)" )
#set ($sourceProductProcLevel = $sourceProductProcLevel.toLowerCase() )
#set ($sourceProductLidColl = "#msn_getProductLidCollection($ident_srcProdId_item)" )
#generateLIDVID( $LID_PREFIX $sourceProductLidColl $ident_srcProdId_item.toLowerCase() )
data_to_$sourceProductProcLevel.replace(' ','_')_source_product
Reference pointer to the $sourceProductProcLevel source product.
#end
#end
#end
#end
#if ( $!IDENT.PDS4_SOURCE_PRODUCT_LIDVID )
#set ( $spi_p4spl_prodlidvid = $IDENT.PDS4_SOURCE_PRODUCT_LIDVID.toString().toLowerCase() )
#set ( $spi_p4spl_prodtype = "Raw" )
#if ( $!IDENT.PDS4_SOURCE_PRODUCT_TYPE )
#set ( $spi_p4spl_prodtype = $IDENT.PDS4_SOURCE_PRODUCT_TYPE )
#end
##October '21: Do not include 'Source_Product_Internal' when prodid "matches" label PID
#if ( ! $spi_p4spl_prodlidvid.toLowerCase().startsWith( $PID.toLowerCase() ) )
$spi_p4spl_prodlidvid
data_to_${spi_p4spl_prodtype}_source_product
Pointer to the PDS4 source data product.
#end
#end
#if ( $!IDENT.PDS_SOURCE_PRODUCT_ID )
#set ( $spe_espi_val = $IDENT.PDS_SOURCE_PRODUCT_ID.toString() )
## December '23: Sigh, while ';' may appear for VGR, they really want a '_',
## and it seems too late to fix upstream, so do it here as well:
#set ( $spe_espi_val = $spe_espi_val.replaceAll(";", "_") )
#if ( $IDENT.PDS_SOURCE_PRODUCT_DATA_SET )
#set ( $spe_espi_val = "${IDENT.PDS_SOURCE_PRODUCT_DATA_SET}:${spe_espi_val}" )
#end
$spe_espi_val
data_to_raw_source_product
#if ( $!IDENT.PDS_SOURCE_PRODUCT_NODE )
$IDENT.PDS_SOURCE_PRODUCT_NODE
#else
IMG
#end
#if ( $!IDENT.PDS_SOURCE_PRODUCT_DESCRIPTION )
$IDENT.PDS_SOURCE_PRODUCT_DESCRIPTION
#else
Pointer to PDS3 source data product
#end
#end
#set ( $fao_filename = ${IDENT.PRODUCT_ID.toString()} )
#if ( ! $LEGAL_FILE_EXTEN.isEmpty() )
#set ( $fao_filename = "${IDENT.PRODUCT_ID}.${LEGAL_FILE_EXTEN}" )
#end
#debug("IDENTIFICATION.PRODUCT_ID")
$fao_filename
#debug("IDENTIFICATION.PRODUCT_CREATION_TIME")
#getZuluTime( $IDENT.PRODUCT_CREATION_TIME.toString() )
#if ( $label.PDS4_IMAGE.input_label_type)
#set ( $input_label_type = $label.PDS4_IMAGE.input_label_type)
###${input_label_type}
ODL3_Header
0
#set ( $pds3_object_length = $math.toInteger($IDENT.RECORD_BYTES) * $math.toInteger($IDENT.LABEL_RECORDS))
$pds3_object_length
PDS ODL 2
${input_label_type} Header
#end
#if ( $label.IMAGE_HEADER.HEADER_TYPE)
###$label.IMAGE_HEADER.HEADER_TYPE
#set ($header_type = $label.IMAGE_HEADER.HEADER_TYPE.toString() )
### $header_type
#if ( $header_type.equals("VICAR2") )
VICAR_Header
#set ($vicarOffset = $math.toInteger($IDENT.RECORD_BYTES) * ($math.toInteger($IDENT.PTR_IMAGE_HEADER) - 1))
$vicarOffset
###debug("SYSTEM.LBLSIZE")
$label.IMAGE_HEADER.BYTES
VICAR2
VICAR Header
#end
#end
#getArrayDefinition( $PID $label $derivedImageType )
#if ( $CONST_TRUE.equals("#msn_hasEjpJpegs()") && $CONST_FALSE.equals($IS_THUMBNAIL) &&
$PROCESSING_LEVEL.equals($PROCESSING_LEVEL_RAW) && $COMPRESSION_NAME.equals($COMPRESSION_TYPE_JPEG))
## New condition below added on June 20, 2019 per email request of Bob: Supress file pointer if (isEDR() && SpecFlag != '_')
#if ( $SPECIAL_PROC_FLAG_DEFAULT.equals($SPECIAL_PROC_FLAG) )
## ##Hack-alert: IDS isnt sure whats going on with EJPs, so this hack-check was added (2021.07.20)
## ##"If ECV product type && TELEMETRY_SOURCE_NAME contains 'recovered'; then skip faosBasename"
## #if ( ! ($PRODUCT_TYPE.equalsIgnoreCase("ECV") && $TELEM.TELEMETRY_SOURCE_NAME &&
## $!TELEM.TELEMETRY_SOURCE_NAME.toString().toLowerCase().contains("recovered")) )
#set ($faosBasename = $IDENT.PRODUCT_ID.toString().replace($PRODUCT_TYPE, $PRODUCT_TYPE_EJP))
${faosBasename}.JPG
0
JPEG
## #end ##End-of-ifNOT(ECV && telemSrcName.contains(recovered)) ##Hack for delivery 1
#end ##End of inner-if
#end
## Should we include an associated MASK file?
#if ( $CONST_TRUE.equals("#msn_hasAssociatedMaskFile($PID)") && $!derivedImageType.equalsIgnoreCase("MASK") )
#set ( $dit_mask_file = "")
#if ( $label.DERIVED_IMAGE_PARMS.SUPPLEMENTAL_MASK_FILE )
#set ( $dit_mask_file = $label.DERIVED_IMAGE_PARMS.SUPPLEMENTAL_MASK_FILE.toString())
#elseif ( $label.DERIVED_IMAGE_PARMS.MASK_DESC_FILE_NAME && $label.DERIVED_IMAGE_PARMS.MASK_DESC_FILE_NAME.get(1))
#set ( $dit_mask_file = $label.DERIVED_IMAGE_PARMS.MASK_DESC_FILE_NAME.get(1).toString())
#end
#if ( ! $dit_mask_file.equals("") )
$dit_mask_file
0
7-Bit ASCII Text
Carriage-Return Line-Feed
#end
#end
## Should we include an associated FITS file?
#set ( $includeFitsFile = $CONST_FALSE )
#set ( $includeFitsFile = "#msn_hasAssociatedFitsFile($PID)" )
## Also check if is Raw processing level and default special flag
#if ( $CONST_TRUE.equals($includeFitsFile) && $PROCESSING_LEVEL.equals($PROCESSING_LEVEL_RAW) && $SPECIAL_PROC_FLAG_DEFAULT.equals($SPECIAL_PROC_FLAG) )
##HACK-alert: For PDS delivery of M20, Sols 0-4 of SupercamRmi dont have FITS files, so skip in that condition
#if ( ! ( $PID.toUpperCase().startsWith("LR") &&
$CONST_TRUE.equals("#nodeExistsWithNonNilValue($IDENT 'PLANET_DAY_NUMBER')") &&
$math.toInteger( $!IDENT.PLANET_DAY_NUMBER ) < 5 ) )
#set ($faosBasename = $IDENT.PRODUCT_ID.toString())
${faosBasename}.fits
Primary FITS Header
0
43200
FITS 4.0
#end ##IF-hack-for-SuperCam
#end