Isis 3.0 Programmer Reference
Back | Home
BundleTargetBody.h
Go to the documentation of this file.
1 #ifndef BundleTargetBody_h
2 #define BundleTargetBody_h
3 
25 #include <set>
26 
27 #include <QSharedPointer>
28 #include <QStringList>
29 
30 #include <boost/numeric/ublas/vector.hpp>
31 
32 #include "Angle.h"
33 #include "Distance.h"
34 #include "Latitude.h"
35 #include "LinearAlgebra.h"
36 #include "Longitude.h"
37 
38 namespace Isis {
39 
40  class BundleSettings;
41  class PvlObject;
42  class Target;
43 
64 
65  public:
66  // constructors
67  BundleTargetBody(); // default
68  BundleTargetBody(Target *target);
69  BundleTargetBody(const BundleTargetBody &src); // copy
71 
73 
76  None = 0,
77  Mean = 1,
78  All = 2
79  };
80 
82  enum TargetSolveCodes { PoleRA = 0,
83  VelocityPoleRA = 1,
84  AccelerationPoleRA = 2,
85  PoleDec = 3,
86  VelocityPoleDec = 4,
87  AccelerationPoleDec = 5,
88  PM = 6,
89  VelocityPM = 7,
90  AccelerationPM = 8,
91  TriaxialRadiusA = 9,
92  TriaxialRadiusB = 10,
93  TriaxialRadiusC = 11,
94  MeanRadius = 12
95  };
96 
97  void setSolveSettings(std::set<int> targetParameterSolveCodes,
98  Angle aprioriPoleRA, Angle sigmaPoleRA, Angle aprioriVelocityPoleRA,
99  Angle sigmaVelocityPoleRA, Angle aprioriPoleDec, Angle sigmaPoleDec,
100  Angle aprioriVelocityPoleDec, Angle sigmaVelocityPoleDec,
101  Angle aprioriPM, Angle sigmaPM, Angle aprioriVelocityPM,
102  Angle sigmaVelocityPM, TargetRadiiSolveMethod solveRadiiMethod,
103  Distance aprioriRadiusA, Distance sigmaRadiusA, Distance aprioriRadiusB,
104  Distance sigmaRadiusB, Distance aprioriRadiusC, Distance sigmaRadiusC,
105  Distance aprioriMeanRadius, Distance sigmaMeanRadius);
106 
107  static TargetRadiiSolveMethod stringToTargetRadiiOption(QString option);
108  static QString targetRadiiOptionToString(TargetRadiiSolveMethod targetRadiiSolveMethod);
109 
110  bool readFromPvl(PvlObject &tbPvlObject);
111 
112  // mutators
113  //
114 
115  // accessors
121 
122  std::vector<Angle> poleRaCoefs();
123  std::vector<Angle> poleDecCoefs();
124  std::vector<Angle> pmCoefs();
125 
126  std::vector<Distance> radii();
128 
129  // string format methods
130  QString formatBundleOutputString(bool errorPropagation);
132  // TODO implement
133  QString formatValue(double value, int fieldWidth, int precision) const;
134  QString formatAprioriSigmaString(int type, int fieldWidth, int precision) const;
135  QString formatPolePositionAprioriSigmaString(int fieldWidth, int precision) const;
136  QString formatW0AprioriSigmaString(int fieldWidth, int precision) const;
137  QString formatWDotAprioriSigmaString(int fieldWidth, int precision) const;
138  QString formatRadiusAprioriSigmaString(int fieldWidth, int precision) const;
139  QString formatPolePositionAdjustedSigmaString(int fieldWidth, int precision) const;
140  QString formatW0AdjustedSigmaString(int fieldWidth, int precision) const;
141  QString formatWDotAdjustedSigmaString(int fieldWidth, int precision) const;
142  QString formatRadiusAdjustedSigmaString(int fieldWidth, int precision) const;
143 
144  bool solvePoleRA();
145  bool solvePoleRAVelocity();
147  bool solvePoleDec();
148  bool solvePoleDecVelocity();
150  bool solvePM();
151  bool solvePMVelocity();
152  bool solvePMAcceleration();
153  bool solveTriaxialRadii();
154  bool solveMeanRadius();
155 
156 // int numberPoleParameters();
157 // int numberW0Parameters();
158 // int numberWDotParameters();
160  int numberParameters();
161 
163 
164  double vtpv();
165 
166  Distance localRadius(const Latitude &lat, const Longitude &lon);
167 
168  private:
178 
179  std::vector<Distance> m_radii;
181 
182  std::vector<Angle> m_raPole;
183  std::vector<Angle> m_decPole;
184  std::vector<Angle> m_pm ;
185 
186  std::set<int> m_parameterSolveCodes;
189 
195  };
196 
198  typedef QSharedPointer<BundleTargetBody> BundleTargetBodyQsp;
199 }
200 
201 #endif // BundleTargetBody_h
This class is used to represent a target body in a bundle and how to solve for it.
bool solvePoleRAVelocity()
If the pole right ascension velocity will be solved for with this target body.
LinearAlgebra::Vector & aprioriSigmas()
Returns the vector of apriori parameters sigmas.
Distance m_aprioriRadiusC
Apriori Radius C.
Distance m_sigmaRadiusA
Apriori Radius A Sigma.
std::vector< Angle > m_decPole
pole dec quadratic polynomial coefficients
static QString targetRadiiOptionToString(TargetRadiiSolveMethod targetRadiiSolveMethod)
Converts a TargetRadiiSolveMethod to a QString.
Distance m_sigmaRadiusB
Apriori Radius B Sigma.
TargetSolveCodes
Enumeration that defines what BundleTargetBody can solve for.
Distance m_aprioriRadiusB
Apriori Radius B.
Distance localRadius(const Latitude &lat, const Longitude &lon)
Gets the local radius for the given latitude/longitude coordinate.
QString formatBundleOutputString(bool errorPropagation)
Formats and returns the parameter values as a QString.
Distance m_aprioriMeanRadius
Apriori Mean Radius.
bool solvePM()
If the prime meridian angle will be solved for with this target body.
Distance m_aprioriRadiusA
Apriori Radius A.
QSharedPointer< BundleTargetBody > BundleTargetBodyQsp
Definition for BundleTargetBodyQsp, a QSharedPointer to a BundleTargetBody.
QStringList parameterList()
Returns a list of all the parameters being solved for as QStrings.
This class is designed to encapsulate the concept of a Latitude.
Definition: Latitude.h:59
Distance meanRadius()
Returns the mean radius.
bool solvePoleRA()
If the pole right ascension angle will be solved for with this target body.
static TargetRadiiSolveMethod stringToTargetRadiiOption(QString option)
Converts a QString to a TargetRadiiSolveMethod.
Distance m_meanRadius
Adjusted mean radius value.
LinearAlgebra::Vector m_adjustedSigmas
Adjusted parameter sigmas.
bool readFromPvl(PvlObject &tbPvlObject)
Set bundle solve parameters for target body from a pvl file.
Solve for all radii.
int numberRadiusParameters()
Returns the number of radius parameters being solved for.
LinearAlgebra::Vector m_corrections
Cumulative parameter corrections.
LinearAlgebra::Vector & parameterWeights()
Returns the vector of parameter weights.
bool solvePoleDec()
If the pole declination angle will be solved for with this target body.
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
Distance measurement, usually in meters.
Definition: Distance.h:47
std::vector< Angle > m_raPole
pole ra quadratic polynomial coefficients
LinearAlgebra::Vector & adjustedSigmas()
Returns the vector of adjusted parameters sigmas.
LinearAlgebra::Vector & parameterSolution()
Returns the vector of parameters solution.
Distance m_sigmaRadiusC
Apriori Radius C Sigma.
This class is designed to encapsulate the concept of a Longitude.
Definition: Longitude.h:52
void applyParameterCorrections(LinearAlgebra::Vector corrections)
Applies a vector of corrections to the parameters for the target body.
boost::numeric::ublas::vector< double > Vector
Definition for an Isis::LinearAlgebra::Vector of doubles.
std::vector< Distance > m_radii
Adjusted triaxial radii values.
std::vector< Angle > m_pm
pole pm quadratic polynomial coefficients
bool solvePMVelocity()
If the prime meridian velocity will be solved for with this target body.
Distance m_sigmaMeanRadius
Apriori Mean Radius Sigma.
std::vector< Angle > pmCoefs()
Returns the coefficients of the prime meridian polynomial.
Solve for mean radius.
BundleTargetBody()
Creates an empty BundleTargetBody object.
TargetRadiiSolveMethod
Enumeration that defines how to solve for target radii.
LinearAlgebra::Vector m_solution
Parameter solution vector.
bool solvePoleRAAcceleration()
If the pole right ascension acceleration will be solved for with this target body.
BundleTargetBody & operator=(const BundleTargetBody &src)
Assignment operator.
void setSolveSettings(std::set< int > targetParameterSolveCodes, Angle aprioriPoleRA, Angle sigmaPoleRA, Angle aprioriVelocityPoleRA, Angle sigmaVelocityPoleRA, Angle aprioriPoleDec, Angle sigmaPoleDec, Angle aprioriVelocityPoleDec, Angle sigmaVelocityPoleDec, Angle aprioriPM, Angle sigmaPM, Angle aprioriVelocityPM, Angle sigmaVelocityPM, TargetRadiiSolveMethod solveRadiiMethod, Distance aprioriRadiusA, Distance sigmaRadiusA, Distance aprioriRadiusB, Distance sigmaRadiusB, Distance aprioriRadiusC, Distance sigmaRadiusC, Distance aprioriMeanRadius, Distance sigmaMeanRadius)
Sets the solve settings for the target body.
double vtpv()
Calculates and returns the weighted sum of the squares of the corrections.
This class is used to create and store valid Isis3 targets.
Definition: Target.h:63
QStringList m_parameterNamesList
List of all target parameters.
Defines an angle and provides unit conversions.
Definition: Angle.h:58
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
LinearAlgebra::Vector m_aprioriSigmas
A priori parameter sigmas.
bool solvePMAcceleration()
If the prime meridian acceleration will be solved for with this target body.
TargetRadiiSolveMethod m_solveTargetBodyRadiusMethod
Which radii will be solved for.
std::set< int > m_parameterSolveCodes
Target parameter solve codes.
bool solvePoleDecVelocity()
If the pole declination velocity will be solved for with this target body.
int numberParameters()
Returns the total number of parameters being solved for.
bool solveMeanRadius()
If the mean radius will be solved for with this target body.
bool solveTriaxialRadii()
If the triaxial radii will be solved for with this target body.
LinearAlgebra::Vector m_weights
Parameter weights.
Contains Pvl Groups and Pvl Objects.
Definition: PvlObject.h:74
bool solvePoleDecAcceleration()
If the pole declination acceleration will be solved for with this target body.
std::vector< Angle > poleRaCoefs()
Returns the coefficients of the right ascension polynomial.
LinearAlgebra::Vector & parameterCorrections()
Returns the vector of corrections applied to the parameters.
std::vector< Distance > radii()
Returns the radius values.
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
std::vector< Angle > poleDecCoefs()
Returns the coefficients of the declination polynomial.

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the ISIS Support Center
File Modified: 07/12/2023 23:15:18