Loading [MathJax]/jax/output/NativeMML/config.js
Isis 3 Developer Reference
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 
66 
67  public:
68  // constructors
69  BundleTargetBody(); // default
70  BundleTargetBody(Target *target);
71  BundleTargetBody(const BundleTargetBody &src); // copy
72  virtual ~BundleTargetBody();
73 
75 
78  None = 0,
79  Mean = 1,
80  All = 2
81  };
82 
87  PoleDec = 3,
90  PM = 6,
97  };
98 
99  void setSolveSettings(std::set<int> targetParameterSolveCodes,
100  Angle aprioriPoleRA, Angle sigmaPoleRA, Angle aprioriVelocityPoleRA,
101  Angle sigmaVelocityPoleRA, Angle aprioriPoleDec, Angle sigmaPoleDec,
102  Angle aprioriVelocityPoleDec, Angle sigmaVelocityPoleDec,
103  Angle aprioriPM, Angle sigmaPM, Angle aprioriVelocityPM,
104  Angle sigmaVelocityPM, TargetRadiiSolveMethod solveRadiiMethod,
105  Distance aprioriRadiusA, Distance sigmaRadiusA, Distance aprioriRadiusB,
106  Distance sigmaRadiusB, Distance aprioriRadiusC, Distance sigmaRadiusC,
107  Distance aprioriMeanRadius, Distance sigmaMeanRadius);
108 
109  static TargetRadiiSolveMethod stringToTargetRadiiOption(QString option);
110  static QString targetRadiiOptionToString(TargetRadiiSolveMethod targetRadiiSolveMethod);
111 
112  bool readFromPvl(PvlObject &tbPvlObject);
113 
114  // mutators
115  //
116 
117  // accessors
123 
124  std::vector<Angle> poleRaCoefs();
125  std::vector<Angle> poleDecCoefs();
126  std::vector<Angle> pmCoefs();
127 
128  std::vector<Distance> radii();
130 
131  // string format methods
132  QString formatBundleOutputString(bool errorPropagation);
134  // TODO implement
135  QString formatValue(double value, int fieldWidth, int precision) const;
136  QString formatAprioriSigmaString(int type, int fieldWidth, int precision) const;
137  QString formatPolePositionAprioriSigmaString(int fieldWidth, int precision) const;
138  QString formatW0AprioriSigmaString(int fieldWidth, int precision) const;
139  QString formatWDotAprioriSigmaString(int fieldWidth, int precision) const;
140  QString formatRadiusAprioriSigmaString(int fieldWidth, int precision) const;
141  QString formatPolePositionAdjustedSigmaString(int fieldWidth, int precision) const;
142  QString formatW0AdjustedSigmaString(int fieldWidth, int precision) const;
143  QString formatWDotAdjustedSigmaString(int fieldWidth, int precision) const;
144  QString formatRadiusAdjustedSigmaString(int fieldWidth, int precision) const;
145 
146  virtual bool solvePoleRA();
147  virtual bool solvePoleRAVelocity();
148  virtual bool solvePoleRAAcceleration();
149  virtual bool solvePoleDec();
150  virtual bool solvePoleDecVelocity();
151  virtual bool solvePoleDecAcceleration();
152  virtual bool solvePM();
153  virtual bool solvePMVelocity();
154  virtual bool solvePMAcceleration();
155  virtual bool solveTriaxialRadii();
156  virtual bool solveMeanRadius();
157 
158 // int numberPoleParameters();
159 // int numberW0Parameters();
160 // int numberWDotParameters();
162  virtual int numberParameters();
163 
165 
166  double vtpv();
167 
168  Distance localRadius(const Latitude &lat, const Longitude &lon);
169 
170  private:
171  TargetRadiiSolveMethod m_solveTargetBodyRadiusMethod;
172  Distance m_aprioriRadiusA;
173  Distance m_sigmaRadiusA;
174  Distance m_aprioriRadiusB;
175  Distance m_sigmaRadiusB;
176  Distance m_aprioriRadiusC;
177  Distance m_sigmaRadiusC;
178  Distance m_aprioriMeanRadius;
179  Distance m_sigmaMeanRadius;
180 
181  std::vector<Distance> m_radii;
182  Distance m_meanRadius;
183 
184  std::vector<Angle> m_raPole;
185  std::vector<Angle> m_decPole;
186  std::vector<Angle> m_pm ;
187 
188  std::set<int> m_parameterSolveCodes;
190  QStringList m_parameterNamesList;
191 
192  LinearAlgebra::Vector m_weights;
193  LinearAlgebra::Vector m_corrections;
194  LinearAlgebra::Vector m_solution;
195  LinearAlgebra::Vector m_aprioriSigmas;
196  LinearAlgebra::Vector m_adjustedSigmas;
197  };
198 
201 }
202 
203 #endif // BundleTargetBody_h
Definition: BundleTargetBody.h:96
This class is used to represent a target body in a bundle and how to solve for it.
Definition: BundleTargetBody.h:65
virtual bool solvePoleRAVelocity()
If the pole right ascension velocity will be solved for with this target body.
Definition: BundleTargetBody.cpp:439
LinearAlgebra::Vector & aprioriSigmas()
Returns the vector of apriori parameters sigmas.
Definition: BundleTargetBody.cpp:761
QString formatWDotAdjustedSigmaString(int fieldWidth, int precision) const
QString formatValue(double value, int fieldWidth, int precision) const
static QString targetRadiiOptionToString(TargetRadiiSolveMethod targetRadiiSolveMethod)
Converts a TargetRadiiSolveMethod to a QString.
Definition: BundleTargetBody.cpp:701
QString formatRadiusAdjustedSigmaString(int fieldWidth, int precision) const
TargetSolveCodes
Enumeration that defines what BundleTargetBody can solve for.
Definition: BundleTargetBody.h:84
Distance localRadius(const Latitude &lat, const Longitude &lon)
Gets the local radius for the given latitude/longitude coordinate.
Definition: BundleTargetBody.cpp:1682
QString formatBundleOutputString(bool errorPropagation)
Formats and returns the parameter values as a QString.
Definition: BundleTargetBody.cpp:958
Definition: BundleTargetBody.h:86
Definition: BundleTargetBody.h:84
virtual bool solvePM()
If the prime meridian angle will be solved for with this target body.
Definition: BundleTargetBody.cpp:499
QSharedPointer< BundleTargetBody > BundleTargetBodyQsp
Definition for BundleTargetBodyQsp, a QSharedPointer to a BundleTargetBody.
Definition: BundleTargetBody.h:200
QStringList parameterList()
Returns a list of all the parameters being solved for as QStrings.
Definition: BundleTargetBody.cpp:1108
Definition: BundleTargetBody.h:89
This class is designed to encapsulate the concept of a Latitude.
Definition: Latitude.h:63
Distance meanRadius()
Returns the mean radius.
Definition: BundleTargetBody.cpp:915
Definition: BundleTargetBody.h:92
virtual bool solvePoleRA()
If the pole right ascension angle will be solved for with this target body.
Definition: BundleTargetBody.cpp:427
static TargetRadiiSolveMethod stringToTargetRadiiOption(QString option)
Converts a QString to a TargetRadiiSolveMethod.
Definition: BundleTargetBody.cpp:673
bool readFromPvl(PvlObject &tbPvlObject)
Set bundle solve parameters for target body from a pvl file.
Definition: BundleTargetBody.cpp:1172
Solve for all radii.
Definition: BundleTargetBody.h:80
int numberRadiusParameters()
Returns the number of radius parameters being solved for.
Definition: BundleTargetBody.cpp:815
LinearAlgebra::Vector & parameterWeights()
Returns the vector of parameter weights.
Definition: BundleTargetBody.cpp:722
virtual bool solvePoleDec()
If the pole declination angle will be solved for with this target body.
Definition: BundleTargetBody.cpp:463
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
Distance measurement, usually in meters.
Definition: Distance.h:47
Definition: BundleTargetBody.h:91
LinearAlgebra::Vector & adjustedSigmas()
Returns the vector of adjusted parameters sigmas.
Definition: BundleTargetBody.cpp:774
LinearAlgebra::Vector & parameterSolution()
Returns the vector of parameters solution.
Definition: BundleTargetBody.cpp:748
QString formatAprioriSigmaString(int type, int fieldWidth, int precision) const
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.
Definition: BundleTargetBody.cpp:572
boost::numeric::ublas::vector< double > Vector
Definition for an Isis::LinearAlgebra::Vector of doubles.
Definition: LinearAlgebra.h:135
Definition: BundleTargetBody.h:88
virtual bool solvePMVelocity()
If the prime meridian velocity will be solved for with this target body.
Definition: BundleTargetBody.cpp:511
QString formatW0AdjustedSigmaString(int fieldWidth, int precision) const
QString formatPolePositionAprioriSigmaString(int fieldWidth, int precision) const
std::vector< Angle > pmCoefs()
Returns the coefficients of the prime meridian polynomial.
Definition: BundleTargetBody.cpp:883
QString formatW0AprioriSigmaString(int fieldWidth, int precision) const
Solve for mean radius.
Definition: BundleTargetBody.h:79
BundleTargetBody()
Creates an empty BundleTargetBody object.
Definition: BundleTargetBody.cpp:18
Definition: BundleTargetBody.h:90
TargetRadiiSolveMethod
Enumeration that defines how to solve for target radii.
Definition: BundleTargetBody.h:77
QString formatRadiusAprioriSigmaString(int fieldWidth, int precision) const
virtual bool solvePoleRAAcceleration()
If the pole right ascension acceleration will be solved for with this target body.
Definition: BundleTargetBody.cpp:451
BundleTargetBody & operator=(const BundleTargetBody &src)
Assignment operator.
Definition: BundleTargetBody.cpp:117
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.
Definition: BundleTargetBody.cpp:207
double vtpv()
Calculates and returns the weighted sum of the squares of the corrections.
Definition: BundleTargetBody.cpp:935
This class is used to create and store valid Isis3 targets.
Definition: Target.h:76
Defines an angle and provides unit conversions.
Definition: Angle.h:62
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
Solve for none.
Definition: BundleTargetBody.h:78
Definition: BundleTargetBody.h:95
Definition: BundleTargetBody.h:93
virtual bool solvePMAcceleration()
If the prime meridian acceleration will be solved for with this target body.
Definition: BundleTargetBody.cpp:523
virtual bool solvePoleDecVelocity()
If the pole declination velocity will be solved for with this target body.
Definition: BundleTargetBody.cpp:475
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
virtual int numberParameters()
Returns the total number of parameters being solved for.
Definition: BundleTargetBody.cpp:829
virtual bool solveMeanRadius()
If the mean radius will be solved for with this target body.
Definition: BundleTargetBody.cpp:549
Definition: BundleTargetBody.h:85
virtual bool solveTriaxialRadii()
If the triaxial radii will be solved for with this target body.
Definition: BundleTargetBody.cpp:535
QString formatPolePositionAdjustedSigmaString(int fieldWidth, int precision) const
virtual ~BundleTargetBody()
Destructor.
Definition: BundleTargetBody.cpp:108
Definition: BundleTargetBody.h:94
Contains Pvl Groups and Pvl Objects.
Definition: PvlObject.h:74
QString formatWDotAprioriSigmaString(int fieldWidth, int precision) const
virtual bool solvePoleDecAcceleration()
If the pole declination acceleration will be solved for with this target body.
Definition: BundleTargetBody.cpp:487
std::vector< Angle > poleRaCoefs()
Returns the coefficients of the right ascension polynomial.
Definition: BundleTargetBody.cpp:847
LinearAlgebra::Vector & parameterCorrections()
Returns the vector of corrections applied to the parameters.
Definition: BundleTargetBody.cpp:735
std::vector< Distance > radii()
Returns the radius values.
Definition: BundleTargetBody.cpp:898
Definition: BundleTargetBody.h:87
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.
Definition: BundleTargetBody.cpp:865

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 USGS Astrogeology Discussion Board
To report a bug, or suggest a feature go to: ISIS Github
File Modified: 07/12/2023 23:15:38