HiRISE

HiRISE.HiPlan.HIPHOP
Class Model

java.lang.Object
  extended by HiRISE.HiPlan.HIPHOP.Model

public class Model
extends Object

The HIPHOP model.

Based on IDL code by Nick Thomas, University of Bern.

WARNING: This API is under development and is not stable.

Version:
1.11
Author:
Christian Schaller - UA/PIRL

Nested Class Summary
static class Model.ADC_Signal
          A representation of the expected signal to the HiRISE ADCs and possible saturation modes.
static class Model.Illumination_Source
          An enumeration for the source of illumination in the photometry model.
static class Model.Model_Parameters
          A set of parameters from the HIPHOP model.
static class Model.Reflection_Source
          An enumeration for the source of reflection in the photometry model.
static class Model.Scattering_Source
          An enumeration for the source of scattering in the photometry model.
 
Field Summary
static double DEFAULT_CONTRAST_RATIO
           
static double DEFAULT_FROST_ALBEDO
           
static double DEFAULT_FROST_COVER
           
static Model.Illumination_Source DEFAULT_ILLUMINATION_SOURCE
           
static double DEFAULT_OPTICAL_DEPTH
           
static Model.Reflection_Source DEFAULT_REFLECTION_SOURCE
           
static Model.Scattering_Source DEFAULT_SCATTERING_SOURCE
           
static double DEFAULT_SURFACE_ROUGHNESS
           
static double DEFAULT_SURFACE_TYPE
           
static String ID
          Class identification name with source code version and date.
 
Constructor Summary
Model()
          Creates a new HIPHOP model with a default set of Hapke parameters.
Model(Hapke_Parameters hapke_parameters)
          Creates a new HIPHOP model with the indicated Hapke parameters.
 
Method Summary
 ADC_Characteristics adc_characteristics()
          Gets the current set of CCD characteristics for the model.
 void adc_characteristics(ADC_Characteristics adc_characteristics)
          Sets the ADC characteristics.
 double[] albedos()
           
 Atmospheric_Data atmospheric_data()
           
 double baseline_reflectance()
          Gets the baseline reflectance used in the model calculations.
 CCD_Characteristics ccd_characteristics()
          Gets the current set of CCD characteristics for the model.
 void ccd_characteristics(CCD_Characteristics ccd_characteristics)
          Sets the CCD characteristics.
 double contrast_ratio()
           
 void contrast_ratio(double contrast_ratio)
           
 double dark_signal(int tdi, int bin)
           
static double derive_surface_type(double albedo)
          Derives the HIPHOP surface type from an input albedo.
 double dn_derivative(Model.ADC_Signal adc_signal, String ccd, int channel, int tdi, int bin)
           
 double dn_noise(double nonsaturated_signal, String ccd, int channel, int tdi, int bin)
           
 double dn_readout_noise(String ccd, int channel, int tdi, int bin)
           
 double dn(Model.ADC_Signal adc_signal, String ccd, int channel, int tdi, int bin)
           
 Atmospheric_Data dust_data()
           
 double[] effective_albedos()
          Gets an array of albedos within the HiRISE CCD bandpasses.
static double[] effective_albedos(double surface_type, Model.Reflection_Source reflection_source)
          Gets an array of albedos within the HiRISE CCD bandpasses.
 double emission_angle()
          Gets the model's emission angle.
 Model.ADC_Signal expected_adc_signal(double flux, int tdi, int bin)
           
 double[] fluxes_atmo()
          Gets an array of fluxes in electrons per second from a Martian surface at 1 AU from the Sun.
 double[] fluxes()
          Gets an array of fluxes in electrons per second from a Martian surface at 1 AU from the Sun.
 double frost_albedo()
           
 void frost_albedo(double frost_albedo)
           
 double frost_cover()
           
 void frost_cover(double frost_cover)
           
 Full_Well_Data full_well_data()
           
 Hapke_Parameters hapke_parameters()
          Gets the current set of Hapke parameters.
 void hapke_parameters(Hapke_Parameters hapke_parameters)
          Sets the Hapke parameters to the indicated set.
 double heliocentric_distance()
          Gets the model's heliocentric distance.
 Atmospheric_Data ice_data()
           
 Model.Illumination_Source illumination_source()
           
 void illumination_source(Model.Illumination_Source illumination_source)
           
 double incidence_angle()
          Gets the model's incidence angle.
 void init(Observation_Record observation)
          Initializes the HIPHOP model with a new observation record.
 double line_time()
          Gets the model's line time.
 Model.Model_Parameters model_parameters()
           
 void model_parameters(Model.Model_Parameters model_parameters)
           
 double nonsaturated_dn(double signal, String ccd, int channel, int tdi, int bin)
           
 double nonsaturated_signal(double flux, int tdi, int bin)
           
 double optical_depth()
           
 void optical_depth(double optical_depth)
           
 double phase_angle()
          Gets the model's phase angle.
 double poisson(double nonsaturated_signal, int tdi, int bin)
           
 double reflectance()
          Gets the reflectance for the model's viewing geometry.
 Model.Reflection_Source reflection_source()
           
 void reflection_source(Model.Reflection_Source reflection_source)
           
 double[] reflectors_atmo()
          Gets an array of the effective albedos of the surface taking into account the phase curve.
 double[] reflectors()
          Gets an array of the effective albedos of the surface taking into account the phase curve.
 Model.Scattering_Source scattering_source()
           
 void scattering_source(Model.Scattering_Source scattering_source)
           
 double[] signals()
          Gets an array of CCD signals.
static double[] signals(double surface_type, Model.Reflection_Source reflection_source)
          Gets an array of CCD signals.
 double snr(double nonsaturated_signal, int tdi, int bin)
           
 Surface_Data surface_data()
          Gets the current surface data set.
 void surface_data(Surface_Data surface_data)
          Sets the surface data set for the model.
 double surface_roughness()
           
 void surface_roughness(double surface_roughness)
           
 double surface_type()
           
 void surface_type(double surface_type)
           
 double total_noise(double nonsaturated_signal, int tdi, int bin)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ID

public static final String ID
Class identification name with source code version and date.

See Also:
Constant Field Values

DEFAULT_SCATTERING_SOURCE

public static final Model.Scattering_Source DEFAULT_SCATTERING_SOURCE

DEFAULT_REFLECTION_SOURCE

public static final Model.Reflection_Source DEFAULT_REFLECTION_SOURCE

DEFAULT_ILLUMINATION_SOURCE

public static final Model.Illumination_Source DEFAULT_ILLUMINATION_SOURCE

DEFAULT_FROST_COVER

public static final double DEFAULT_FROST_COVER
See Also:
Constant Field Values

DEFAULT_FROST_ALBEDO

public static final double DEFAULT_FROST_ALBEDO
See Also:
Constant Field Values

DEFAULT_SURFACE_TYPE

public static final double DEFAULT_SURFACE_TYPE
See Also:
Constant Field Values

DEFAULT_CONTRAST_RATIO

public static final double DEFAULT_CONTRAST_RATIO
See Also:
Constant Field Values

DEFAULT_OPTICAL_DEPTH

public static final double DEFAULT_OPTICAL_DEPTH
See Also:
Constant Field Values

DEFAULT_SURFACE_ROUGHNESS

public static final double DEFAULT_SURFACE_ROUGHNESS
See Also:
Constant Field Values
Constructor Detail

Model

public Model(Hapke_Parameters hapke_parameters)
      throws HIPHOP_Exception
Creates a new HIPHOP model with the indicated Hapke parameters. The baseline_reflectance is computed as well.

If the parameter set is null, a default set will be created and used.

This constructor initializes a set of CCD_Characteristics and a set of ADC_Characteristics. These rely on external files, located in the resources directory of the HIPHOP package's directory structure. If these files cannot be found or cannot be read, a HIPHOP_Exception is thrown.

Parameters:
hapke_parameters - the set of Hapke parameters for this model; may be null.
Throws:
HIPHOP_Exception - if the CCD or ADC data cannot be properly read.
See Also:
Hapke_Parameters

Model

public Model()
      throws HIPHOP_Exception
Creates a new HIPHOP model with a default set of Hapke parameters. The baseline_reflectance is computed as well.

Throws:
HIPHOP_Exception - if the CCD or ADC data cannot be properly read.
See Also:
Hapke_Parameters, Model(Hapke_Parameters)
Method Detail

hapke_parameters

public Hapke_Parameters hapke_parameters()
Gets the current set of Hapke parameters.

Returns:
the current Hapke parameter set.

hapke_parameters

public void hapke_parameters(Hapke_Parameters hapke_parameters)
Sets the Hapke parameters to the indicated set. Because the baseline_reflectance depends on the Hapke parameters, it is recomputed as well.

Parameters:
hapke_parameters - the new set of Hapke parameters.

baseline_reflectance

public double baseline_reflectance()
Gets the baseline reflectance used in the model calculations. The baseline reflectance is computed for the following photometric angles using this model's Hapke parameters:
μ0 = cos i = cos 45
μ = cos e = cos 0
p = 45

Because this parameter depends on the Hapke parameters, there is no corresponding setter method.

Returns:
the baseline reflectance for this model.

reflectance

public double reflectance()
Gets the reflectance for the model's viewing geometry.

This value is computed when the model is initialized. Prior to initialization, it is the same as the baseline_reflectance.

Returns:
the current reflectance.

surface_data

public Surface_Data surface_data()
Gets the current surface data set.

Returns:
the current surface data set.

surface_data

public void surface_data(Surface_Data surface_data)
Sets the surface data set for the model.

Parameters:
surface_data - the new surface data set.

ccd_characteristics

public CCD_Characteristics ccd_characteristics()
Gets the current set of CCD characteristics for the model.

Warning: Manipulation of the CCD characteristics returned by this method may result in unexpected behavior; the full well data, for example, are partially derived from these parameters but may not be appropriately updated through this access. The preferred solution is to create a new set of characteristics, modify them, and then set the model's data via the ccd_characteristics(CCD_Characteristics) method, which correctly updates all dependent model parameters.

Returns:
the current set of CCD characteristics.

ccd_characteristics

public void ccd_characteristics(CCD_Characteristics ccd_characteristics)
Sets the CCD characteristics. The full-well data, which depend in part on the CCD characteristics, are also recalculated.

Parameters:
ccd_characteristics - the new CCD characteristics.
See Also:
full_well_data(CCD_Characteristics, ADC_Characteristics)

adc_characteristics

public ADC_Characteristics adc_characteristics()
Gets the current set of CCD characteristics for the model.

Warning: Manipulation of the ADC characteristics returned by this method may result in unexpected behavior; the full well data, for example, are partially derived from these parameters but may not be appropriately updated through this access. The preferred solution is to create a new set of characteristics, modify them, and then set the model's data via the adc_characteristics(ADC_Characteristics) method, which correctly updates all dependent model parameters.

Returns:
the current set of CCD characteristics.

adc_characteristics

public void adc_characteristics(ADC_Characteristics adc_characteristics)
Sets the ADC characteristics. The full-well data, which depend in part on the ADC characteristics, are also recalculated.

Parameters:
adc_characteristics - the new ADC characteristics.
See Also:
full_well_data(CCD_Characteristics, ADC_Characteristics)

full_well_data

public Full_Well_Data full_well_data()

dust_data

public Atmospheric_Data dust_data()

ice_data

public Atmospheric_Data ice_data()

atmospheric_data

public Atmospheric_Data atmospheric_data()

scattering_source

public Model.Scattering_Source scattering_source()

scattering_source

public void scattering_source(Model.Scattering_Source scattering_source)

reflection_source

public Model.Reflection_Source reflection_source()

reflection_source

public void reflection_source(Model.Reflection_Source reflection_source)

illumination_source

public Model.Illumination_Source illumination_source()

illumination_source

public void illumination_source(Model.Illumination_Source illumination_source)

contrast_ratio

public double contrast_ratio()

contrast_ratio

public void contrast_ratio(double contrast_ratio)

optical_depth

public double optical_depth()

optical_depth

public void optical_depth(double optical_depth)

surface_roughness

public double surface_roughness()

surface_roughness

public void surface_roughness(double surface_roughness)

frost_cover

public double frost_cover()

frost_cover

public void frost_cover(double frost_cover)

frost_albedo

public double frost_albedo()

frost_albedo

public void frost_albedo(double frost_albedo)

surface_type

public double surface_type()

surface_type

public void surface_type(double surface_type)

model_parameters

public Model.Model_Parameters model_parameters()

model_parameters

public void model_parameters(Model.Model_Parameters model_parameters)

heliocentric_distance

public double heliocentric_distance()
Gets the model's heliocentric distance. This parameter is set via the init(Observation_Record).

Returns:
the current heliocentric distance in astronomical units.

phase_angle

public double phase_angle()
Gets the model's phase angle. This parameter is set via the init(Observation_Record).

Returns:
the current phase angle in degrees.

incidence_angle

public double incidence_angle()
Gets the model's incidence angle. This parameter is set via the init(Observation_Record).

Returns:
the current incidence angle in degrees.

emission_angle

public double emission_angle()
Gets the model's emission angle. This parameter is set via the init(Observation_Record).

Returns:
the current emission angle in degrees.

line_time

public double line_time()
Gets the model's line time. This parameter is set via the init(Observation_Record).

Returns:
the current line time in microseconds.

init

public void init(Observation_Record observation)
          throws HIPHOP_Exception
Initializes the HIPHOP model with a new observation record.

The model parameters (contrast_ratio(), optical_depth(), surface_roughness(), frost_cover(), frost_albedo(), surface_type(), and scattering_source()) are initialized if the observation's values for these parameters are non-null; if they are null, the parameters are left as-is.

The observation parameters (phase_angle(), incidence_angle(), emission_angle(), heliocentric_distance(), and line_time) are also set; if any of these values is null, however, this method throws a HIPHOP exception.

Parameters:
observation - the observation record.
Throws:
HIPHOP_Exception - if there is a problem initializing the model.

signals

public static double[] signals(double surface_type,
                               Model.Reflection_Source reflection_source)
Gets an array of CCD signals. The array is organized by CCD type: blue-green, red, and near IR; it contains three elements.

Parameters:
surface_type - the surface type mixing ratio for bright vs. dark Mars surface; this value is ignored if reflection_source is Model.Reflection_Source.FROST.
reflection_source - the reflection source.
Returns:
an array of three CCD signals.

signals

public double[] signals()
Gets an array of CCD signals. The array is organized by CCD type: blue-green, red, and near IR; it contains three elements. The values are dependent on the model's surface_type value and reflection_source value.

The model's surface_type parameter is essentially a mixing ratio between dark Mars and bright Mars values.

Returns:
an array of three CCD signals.

effective_albedos

public static double[] effective_albedos(double surface_type,
                                         Model.Reflection_Source reflection_source)
Gets an array of albedos within the HiRISE CCD bandpasses. The array is organized by CCD type: blue-green, red, and near IR; it contains three elements.

Parameters:
surface_type - the surface type mixing ratio for bright vs. dark Mars surface; this value is ignored if reflection_source is Model.Reflection_Source.FROST.
reflection_source - the reflection source.
Returns:
an array of three albedos.

effective_albedos

public double[] effective_albedos()
Gets an array of albedos within the HiRISE CCD bandpasses. The array is organized by CCD type: blue-green, red, and near IR; it contains three elements. The values are dependent on the model's surface_type value and reflection_source value.

The model's surface_type parameter is essentially a mixing ratio between dark Mars and bright Mars values.

Returns:
an array of three albedos.

derive_surface_type

public static double derive_surface_type(double albedo)
Derives the HIPHOP surface type from an input albedo. The albedo is assumed to be that of a HiRISE-like red-filter CCD. The surface type is effectively a mixing ratio between a dark Mars surface and a bright Mars surface.

Parameters:
albedo - the input albedo, assumed to be for a HiRISE-like red CCD.
Returns:
the derived surface type.

albedos

public double[] albedos()

fluxes

public double[] fluxes()
Gets an array of fluxes in electrons per second from a Martian surface at 1 AU from the Sun. The array is organized by CCD type: blue-green, red, and near IR; it contains three elements.

Returns:
an array of fluxes.

fluxes_atmo

public double[] fluxes_atmo()
Gets an array of fluxes in electrons per second from a Martian surface at 1 AU from the Sun. The array is organized by CCD type: blue-dreen, red, and near-IR; it contains three elements.

Atmospheric effects are included, via the current atmospheric_data() for this model. Scattering in the atmosphere is determined by scattering_source. The flux is further adjusted if the illumination_source is shadow.

Returns:
an array of fluxes including atmospheric effects.

reflectors

public double[] reflectors()
Gets an array of the effective albedos of the surface taking into account the phase curve. The array is organized by CCD type: blue-green, red, and near IR; it contains three elements.

Returns:
an array of reflectors.

reflectors_atmo

public double[] reflectors_atmo()
Gets an array of the effective albedos of the surface taking into account the phase curve. The array is organized by CCD type: blue-green, red, and near-IR; it contains three elements.

Atmospheric effects are included, via the current atmospheric_data() for this model. Scattering in the atmosphere is determined by scattering_source.

Returns:
an array of reflectors.

nonsaturated_signal

public double nonsaturated_signal(double flux,
                                  int tdi,
                                  int bin)

expected_adc_signal

public Model.ADC_Signal expected_adc_signal(double flux,
                                            int tdi,
                                            int bin)

dn

public double dn(Model.ADC_Signal adc_signal,
                 String ccd,
                 int channel,
                 int tdi,
                 int bin)

nonsaturated_dn

public double nonsaturated_dn(double signal,
                              String ccd,
                              int channel,
                              int tdi,
                              int bin)

dn_derivative

public double dn_derivative(Model.ADC_Signal adc_signal,
                            String ccd,
                            int channel,
                            int tdi,
                            int bin)

dark_signal

public double dark_signal(int tdi,
                          int bin)

poisson

public double poisson(double nonsaturated_signal,
                      int tdi,
                      int bin)

total_noise

public double total_noise(double nonsaturated_signal,
                          int tdi,
                          int bin)

snr

public double snr(double nonsaturated_signal,
                  int tdi,
                  int bin)

dn_noise

public double dn_noise(double nonsaturated_signal,
                       String ccd,
                       int channel,
                       int tdi,
                       int bin)

dn_readout_noise

public double dn_readout_noise(String ccd,
                               int channel,
                               int tdi,
                               int bin)

HiRISE

Copyright (C) Arizona Board of Regents on behalf of the Planetary Image Research Laboratory, Lunar and Planetary Laboratory at the University of Arizona