public class Model
extends java.lang.Object
Based on IDL code by Nick Thomas, University of Bern.
WARNING: This API is under development and is not stable.
Modifier and Type | Class and Description |
---|---|
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.
|
Modifier and Type | Field and Description |
---|---|
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 java.lang.String |
ID
Class identification name with source code version and date.
|
Constructor and Description |
---|
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.
|
Modifier and Type | Method and Description |
---|---|
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,
java.lang.String ccd,
int channel,
int tdi,
int bin) |
double |
dn_noise(double nonsaturated_signal,
java.lang.String ccd,
int channel,
int tdi,
int bin) |
double |
dn_readout_noise(java.lang.String ccd,
int channel,
int tdi,
int bin) |
double |
dn(Model.ADC_Signal adc_signal,
java.lang.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,
java.lang.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) |
public static final java.lang.String ID
public static final Model.Scattering_Source DEFAULT_SCATTERING_SOURCE
public static final Model.Reflection_Source DEFAULT_REFLECTION_SOURCE
public static final Model.Illumination_Source DEFAULT_ILLUMINATION_SOURCE
public static final double DEFAULT_FROST_COVER
public static final double DEFAULT_FROST_ALBEDO
public static final double DEFAULT_SURFACE_TYPE
public static final double DEFAULT_CONTRAST_RATIO
public static final double DEFAULT_OPTICAL_DEPTH
public static final double DEFAULT_SURFACE_ROUGHNESS
public Model(Hapke_Parameters hapke_parameters) throws HIPHOP_Exception
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.
hapke_parameters
- the set of Hapke parameters for this model; may
be null.HIPHOP_Exception
- if the CCD or ADC data cannot be properly read.Hapke_Parameters
public Model() throws HIPHOP_Exception
baseline_reflectance
is computed as well.HIPHOP_Exception
- if the CCD or ADC data cannot be properly read.Hapke_Parameters
,
Model(Hapke_Parameters)
public Hapke_Parameters hapke_parameters()
public void hapke_parameters(Hapke_Parameters hapke_parameters)
baseline_reflectance
depends on the Hapke parameters, it is recomputed
as well.hapke_parameters
- the new set of Hapke parameters.public double baseline_reflectance()
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.
public double reflectance()
This value is computed when the model is initialized
. Prior to initialization, it is the same as the baseline_reflectance
.
public Surface_Data surface_data()
public void surface_data(Surface_Data surface_data)
surface_data
- the new surface data set.public CCD_Characteristics ccd_characteristics()
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.
public void ccd_characteristics(CCD_Characteristics ccd_characteristics)
ccd_characteristics
- the new CCD characteristics.full_well_data(CCD_Characteristics, ADC_Characteristics)
public ADC_Characteristics adc_characteristics()
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.
public void adc_characteristics(ADC_Characteristics adc_characteristics)
adc_characteristics
- the new ADC characteristics.full_well_data(CCD_Characteristics, ADC_Characteristics)
public Full_Well_Data full_well_data()
public Atmospheric_Data dust_data()
public Atmospheric_Data ice_data()
public Atmospheric_Data atmospheric_data()
public Model.Scattering_Source scattering_source()
public void scattering_source(Model.Scattering_Source scattering_source)
public Model.Reflection_Source reflection_source()
public void reflection_source(Model.Reflection_Source reflection_source)
public Model.Illumination_Source illumination_source()
public void illumination_source(Model.Illumination_Source illumination_source)
public double contrast_ratio()
public void contrast_ratio(double contrast_ratio)
public double optical_depth()
public void optical_depth(double optical_depth)
public double surface_roughness()
public void surface_roughness(double surface_roughness)
public double frost_cover()
public void frost_cover(double frost_cover)
public double frost_albedo()
public void frost_albedo(double frost_albedo)
public double surface_type()
public void surface_type(double surface_type)
public Model.Model_Parameters model_parameters()
public void model_parameters(Model.Model_Parameters model_parameters)
public double heliocentric_distance()
init(Observation_Record)
.public double phase_angle()
init(Observation_Record)
.public double incidence_angle()
init(Observation_Record)
.public double emission_angle()
init(Observation_Record)
.public double line_time()
init(Observation_Record)
.public void init(Observation_Record observation) throws HIPHOP_Exception
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.
observation
- the observation record.HIPHOP_Exception
- if there is a problem initializing the model.public static double[] signals(double surface_type, Model.Reflection_Source reflection_source)
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.public double[] signals()
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.
public static double[] effective_albedos(double surface_type, Model.Reflection_Source reflection_source)
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.public double[] effective_albedos()
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.
public static double derive_surface_type(double albedo)
albedo
- the input albedo, assumed to be for a HiRISE-like red CCD.public double[] albedos()
public double[] fluxes()
public double[] fluxes_atmo()
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.
public double[] reflectors()
public double[] reflectors_atmo()
Atmospheric effects are included, via the current atmospheric_data()
for this model. Scattering in the atmosphere is determined by scattering_source
.
public double nonsaturated_signal(double flux, int tdi, int bin)
public Model.ADC_Signal expected_adc_signal(double flux, int tdi, int bin)
public double dn(Model.ADC_Signal adc_signal, java.lang.String ccd, int channel, int tdi, int bin)
public double nonsaturated_dn(double signal, java.lang.String ccd, int channel, int tdi, int bin)
public double dn_derivative(Model.ADC_Signal adc_signal, java.lang.String ccd, int channel, int tdi, int bin)
public double dark_signal(int tdi, int bin)
public double poisson(double nonsaturated_signal, int tdi, int bin)
public double total_noise(double nonsaturated_signal, int tdi, int bin)
public double snr(double nonsaturated_signal, int tdi, int bin)
public double dn_noise(double nonsaturated_signal, java.lang.String ccd, int channel, int tdi, int bin)
public double dn_readout_noise(java.lang.String ccd, int channel, int tdi, int bin)
Copyright \ (C) Arizona Board of Regents on behalf of the \ Planetary Image Research Laboratory, Lunar and \ Planetary Laboratory at the University of Arizona