Commit ea31494f authored by Jeannie Backer's avatar Jeannie Backer
Browse files

Modified BundleUtility classes to set default a priori sigma values to be Null...

Modified BundleUtility classes to set default a priori sigma values to be Null to be consistent with BundleSettings. Brought classes closer to ISIS coding standards.

git-svn-id: http://subversion.wr.usgs.gov/repos/prog/isis3/branches/ipce@6318 41f8697f-d340-4b68-9986-7bafba869bb8
parent 4c947087
Loading
Loading
Loading
Loading
+35 −40
Original line number Diff line number Diff line
@@ -29,12 +29,17 @@ namespace Isis {
      addMeasure(controlMeasure);      
    }

    // initialize to 0.0
    // we should initialize these to Null like a priori sigmas? 
    m_corrections.clear();
    m_aprioriSigmas.clear();
    m_adjustedSigmas.clear();
    m_weights.clear();
    m_nicVector.clear();
    
    // initialize to Null for consistency with other bundle classes...
    m_aprioriSigmas.clear();
    m_aprioriSigmas[0] = Isis::Null;
    m_aprioriSigmas[1] = Isis::Null;
    m_aprioriSigmas[2] = Isis::Null;
  }


@@ -106,54 +111,63 @@ namespace Isis {
      m_weights[0] = 1.0e+50;
      m_weights[1] = 1.0e+50;
      m_weights[2] = 1.0e+50;
      // m_aprioriSigmas = 0.0 ???
      // m_aprioriSigmas = Isis::Null by default
    }

    if (m_controlPoint->GetType() == ControlPoint::Free) {
      if ( globalLatitudeAprioriSigma > 0.0 ) {

      if (!IsNullPixel(globalLatitudeAprioriSigma)) {
        m_aprioriSigmas[0] = globalLatitudeAprioriSigma;
        d = globalLatitudeAprioriSigma * metersToRadians;
        m_weights[0] = 1.0 / (d * d);
      } // else m_aprioriSigmas = m_weights = 0.0 ???
      if ( globalLongitudeAprioriSigma > 0.0 ) {
      } // else m_aprioriSigma = Isis::Null
        // m_weights = 0.0
      
      if (!IsNullPixel(globalLongitudeAprioriSigma)) {
        m_aprioriSigmas[1] = globalLongitudeAprioriSigma;
        d = globalLongitudeAprioriSigma * metersToRadians;
        m_weights[1] = 1.0 / (d * d);
      } // else m_aprioriSigmas = m_weights = 0.0 ???
      } // else m_aprioriSigma = Isis::Null
        // m_weights = 0.0
      
      if (!settings->solveRadius()) {
        // m_aprioriSigmas = 0.0 ???
        m_weights[2] = 1.0e+50;
      }
      else {
        if ( globalRadiusAprioriSigma > 0.0 ) {
        if (!IsNullPixel(globalRadiusAprioriSigma)) {
          m_aprioriSigmas[2] = globalRadiusAprioriSigma;
          d = globalRadiusAprioriSigma * 0.001;
          m_weights[2] = 1.0 / (d * d);
        }
      }
    }

    if (m_controlPoint->GetType() == ControlPoint::Constrained) {
      
      if ( m_controlPoint->IsLatitudeConstrained() ) {
        m_aprioriSigmas[0] = m_controlPoint->GetAprioriSurfacePoint().GetLatSigmaDistance().meters();
        m_weights[0] = m_controlPoint->GetAprioriSurfacePoint().GetLatWeight();
      }
      else if ( globalLatitudeAprioriSigma > 0.0 ) {
      else if (!IsNullPixel(globalLatitudeAprioriSigma)) {
        m_aprioriSigmas[0] = globalLatitudeAprioriSigma;
        d = globalLatitudeAprioriSigma * metersToRadians;
        m_weights[0] = 1.0 / (d * d);
      } // else not constrained and global sigma is Null, then  m_aprioriSigmas = m_weights = 0.0 ???
      } // else not constrained and global sigma is Null, then  m_aprioriSigmas = Isis::Null
        // m_weights = 0.0
      
      if ( m_controlPoint->IsLongitudeConstrained() ) {
        m_aprioriSigmas[1] = m_controlPoint->GetAprioriSurfacePoint().GetLonSigmaDistance().meters();
        m_weights[1] = m_controlPoint->GetAprioriSurfacePoint().GetLonWeight();
      }
      else if ( globalLongitudeAprioriSigma > 0.0 ) {
      else if (!IsNullPixel(globalLongitudeAprioriSigma)) {
        m_aprioriSigmas[1] = globalLongitudeAprioriSigma;
        d = globalLongitudeAprioriSigma * metersToRadians;
        m_weights[1] = 1.0 / (d * d);
      } // else not constrained and global sigma is Null, then  m_aprioriSigmas = m_weights = 0.0 ???
      } // else not constrained and global sigma is Null, then  m_aprioriSigmas = Isis::Null
        // m_weights = 0.0
      
      if (!settings->solveRadius()) {
        // m_aprioriSigmas = 0.0 ???
        // m_aprioriSigmas = Isis::Null
        m_weights[2] = 1.0e+50;
      }
      else {
@@ -161,85 +175,74 @@ namespace Isis {
          m_aprioriSigmas[2] = m_controlPoint->GetAprioriSurfacePoint().GetLocalRadiusSigma().meters();
          m_weights[2] = m_controlPoint->GetAprioriSurfacePoint().GetLocalRadiusWeight();
        }
        else if ( globalRadiusAprioriSigma > 0.0 ) {
        else if (!IsNullPixel(globalRadiusAprioriSigma)) {
          m_aprioriSigmas[2] = globalRadiusAprioriSigma;
          d = globalRadiusAprioriSigma * 0.001;
          m_weights[2] = 1.0 / (d * d);
        } // else not constrained and global sigma is Null, then  m_aprioriSigmas = m_weights = 0.0 ???
        } // else not constrained and global sigma is Null, then  m_aprioriSigmas = Isis::Null
          // m_weights = 0.0
      }
    }
  }



  ControlPoint *BundleControlPoint::rawControlPoint() const {
    return m_controlPoint;
  }



  bool BundleControlPoint::isRejected() const {
    return m_controlPoint->IsRejected();
  }



  int BundleControlPoint::numberMeasures() const {
    return m_controlPoint->GetNumMeasures();
  }



  SurfacePoint BundleControlPoint::getAdjustedSurfacePoint() const {
    return m_controlPoint->GetAdjustedSurfacePoint();
  }



  QString BundleControlPoint::getId() const {
    return m_controlPoint->GetId();
  }



  // ??? why bounded vector ??? can we use linear algebra vector ??? 
  boost::numeric::ublas::bounded_vector< double, 3 > &BundleControlPoint::corrections() {
    return m_corrections;
  }



  boost::numeric::ublas::bounded_vector< double, 3 > &BundleControlPoint::aprioriSigmas() {
    return m_aprioriSigmas;

  }



  boost::numeric::ublas::bounded_vector< double, 3 > &BundleControlPoint::adjustedSigmas() {
    return m_adjustedSigmas;
  }



  boost::numeric::ublas::bounded_vector< double, 3 > &BundleControlPoint::weights() {
    return m_weights;
  }



  boost::numeric::ublas::bounded_vector<double, 3> &BundleControlPoint::nicVector() {
    return m_nicVector;
  }



  SparseBlockRowMatrix &BundleControlPoint::cholmod_QMatrix() {
    return m_cholmod_QMatrix;
  }



  QString BundleControlPoint::formatBundleOutputSummaryString(bool errorPropagation) const {

    int numRays        = numberMeasures(); // should this depend on the raw point, as written, or this->size()???
@@ -268,7 +271,6 @@ namespace Isis {
  }



  QString BundleControlPoint::formatBundleOutputDetailString(bool errorPropagation,
                                                             double RTM) const {

@@ -350,7 +352,6 @@ namespace Isis {
  }



  QString BundleControlPoint::formatValue(double value, int fieldWidth, int precision) const {
    QString output;
    IsNullPixel(value) ? 
@@ -360,12 +361,12 @@ namespace Isis {
  }



  QString BundleControlPoint::formatAprioriSigmaString(int type, int fieldWidth, 
                                                       int precision) const {
    QString aprioriSigmaStr;
    double sigma = m_aprioriSigmas[type];
    if (sigma == 0) { // if globalAprioriSigma <= 0 (including Isis::NUll), then m_aprioriSigmas = 0 
    if (IsNullPixel(sigma)) {
//    if (sigma <= 0) { // if globalAprioriSigma <= 0 (including IsNullPixel(sigma)), then m_aprioriSigmas = 0
      aprioriSigmaStr = QString("%1").arg("N/A", fieldWidth);
    }
    else {
@@ -375,27 +376,23 @@ namespace Isis {
  }



  QString BundleControlPoint::formatLatitudeAprioriSigmaString(int fieldWidth, 
                                                               int precision) const {
    return formatAprioriSigmaString(0, fieldWidth, precision);
  }



  QString BundleControlPoint::formatLongitudeAprioriSigmaString(int fieldWidth, 
                                                                int precision) const {
    return formatAprioriSigmaString(1, fieldWidth, precision);
  }



  QString BundleControlPoint::formatRadiusAprioriSigmaString(int fieldWidth, int precision) const {
    return formatAprioriSigmaString(2, fieldWidth, precision);
  }



  QString BundleControlPoint::formatAdjustedSigmaString(int type, int fieldWidth, int precision,
                                                        bool errorPropagation) const {
    QString adjustedSigmaStr;
@@ -415,6 +412,7 @@ namespace Isis {
        sigma = m_controlPoint->GetAdjustedSurfacePoint().GetLocalRadiusSigma().meters();
      }
      if (IsNullPixel(sigma)) {
//    if (sigma <= 0) { // if globalAprioriSigma <= 0 (including IsNullPixel(sigma)), then m_aprioriSigmas = 0
        adjustedSigmaStr = QString("%1").arg("N/A", fieldWidth);
      }
      else {
@@ -426,22 +424,19 @@ namespace Isis {
  }



  QString BundleControlPoint::formatLatitudeAdjustedSigmaString(int fieldWidth, int precision,
                                                                bool errorPropagation) const {
    return formatAdjustedSigmaString(0, fieldWidth, precision, errorPropagation);
  }



  QString BundleControlPoint::formatLongitudeAdjustedSigmaString(int fieldWidth, int precision,
                                                                 bool errorPropagation) const {
    return formatAdjustedSigmaString(1, fieldWidth, precision, errorPropagation);
  }



  // TODO: what do we do if we're not solving for radius, how do we know that here?????????????????
  // TODO: what do we do if we're not solving for radius, how do we know that here??????????????
  // TODO: sigma is not == 0.0, if not solving for radius it's like something crazy e-22
  QString BundleControlPoint::formatRadiusAdjustedSigmaString(int fieldWidth, int precision,
                                                              bool errorPropagation) const {
+14 −6
Original line number Diff line number Diff line
@@ -42,6 +42,9 @@ namespace Isis {
   *   @history 2014-05-22 Ken Edmundson - Original version.
   *   @history 2015-02-20 Jeannie Backer - Added unitTest.  Reformatted output
   *                           strings. Brought closer to ISIS coding standards.
   *   @history 2015-08-13 Jeannie Backer - Added some documentation to class variables.
   *                           Changed intitial value of aprioriSigmas to be Null instead of
   *                           zero to be consistent with other ISIS bundle classes.
   */
  class BundleControlPoint : public QVector<BundleMeasure*> {

@@ -69,7 +72,7 @@ namespace Isis {
      boost::numeric::ublas::bounded_vector< double, 3 > &aprioriSigmas();
      boost::numeric::ublas::bounded_vector< double, 3 > &adjustedSigmas();
      boost::numeric::ublas::bounded_vector< double, 3 > &weights();
      boost::numeric::ublas::bounded_vector<double, 3> &nicVector();         //!< array of NICs (see Brown, 1976)
      boost::numeric::ublas::bounded_vector<double, 3> &nicVector(); // array of NICs (see Brown, 1976)
      SparseBlockRowMatrix &cholmod_QMatrix();

      // string format methods
@@ -92,12 +95,17 @@ namespace Isis {
    private:
      ControlPoint *m_controlPoint;

      boost::numeric::ublas::bounded_vector< double, 3 > m_corrections;                             //!< corrections to point parameters
      boost::numeric::ublas::bounded_vector< double, 3 > m_aprioriSigmas;                           //!< apriori sigmas for point parameters
      boost::numeric::ublas::bounded_vector< double, 3 > m_adjustedSigmas;                          //!< adjusted sigmas for point parameters
      boost::numeric::ublas::bounded_vector< double, 3 > m_weights;                                 //!< weights for point parameters
      boost::numeric::ublas::bounded_vector< double, 3 > m_corrections;    /**< corrections to point
                                                                                parameters.*/
      boost::numeric::ublas::bounded_vector< double, 3 > m_aprioriSigmas;  /**< a priori sigmas for
                                                                                point parameters.*/
      boost::numeric::ublas::bounded_vector< double, 3 > m_adjustedSigmas; /**< adjusted sigmas for
                                                                                point parameters.*/
      boost::numeric::ublas::bounded_vector< double, 3 > m_weights;        /**< weights for point
                                                                                parameters.*/

      boost::numeric::ublas::bounded_vector<double, 3> m_nicVector;// array of NICs (see Brown, 1976)

      boost::numeric::ublas::bounded_vector<double, 3> m_nicVector;
      SparseBlockRowMatrix m_cholmod_QMatrix;
  };
}
+145 −81

File changed.

Preview size limit exceeded, changes collapsed.

+13 −6
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ namespace Isis {
   *                           matrix.
   *   @history 2014-07-23 Jeannie Backer - Replaced QVectors with QLists.
   *   @history 2015-02-20 Jeannie Backer - Brought closer to Isis coding standards.
   *   @history 2015-08-13 Jeannie Backer - Brought closer to Isis coding standards.
   *
   */
  class BundleObservation : public QVector< BundleImage  *> {
@@ -86,11 +87,17 @@ namespace Isis {
      SpiceRotation *spiceRotation();
      SpicePosition *spicePosition();
      
      boost::numeric::ublas::vector< double > &parameterWeights();
      boost::numeric::ublas::vector< double > &parameterCorrections();
      boost::numeric::ublas::vector< double > &parameterSolution();
      boost::numeric::ublas::vector< double > &aprioriSigmas();
      boost::numeric::ublas::vector< double > &adjustedSigmas();
      const boost::numeric::ublas::vector< double > &parameterWeights();
      const boost::numeric::ublas::vector< double > &parameterCorrections();
      const boost::numeric::ublas::vector< double > &parameterSolution();
      const boost::numeric::ublas::vector< double > &aprioriSigmas();
      const boost::numeric::ublas::vector< double > &adjustedSigmas();
      
      void setParameterWeights(boost::numeric::ublas::vector< double > weights); // initParameterWeights
      void setParameterCorrections(boost::numeric::ublas::vector< double > corrections);// applyParameterCorrections
      void setParameterSolution(boost::numeric::ublas::vector< double > solution);    
      void setAprioriSigmas(boost::numeric::ublas::vector< double > sigmas);    
      void setAdjustedSigmas(boost::numeric::ublas::vector< double > sigmas);    

      const BundleObservationSolveSettings* solveSettings();

@@ -130,7 +137,7 @@ namespace Isis {
      boost::numeric::ublas::vector< double > m_weights;            //!< parameter weights
      boost::numeric::ublas::vector< double > m_corrections;        //!< cumulative parameter correction vector
      boost::numeric::ublas::vector< double > m_solution;           //!< parameter solution vector
      boost::numeric::ublas::vector< double > m_aprioriSigmas;      //!< a posteriori (adjusted) parameter sigmas
      boost::numeric::ublas::vector< double > m_aprioriSigmas;      //!< a priori parameter sigmas
      boost::numeric::ublas::vector< double > m_adjustedSigmas;     //!< a posteriori (adjusted) parameter sigmas
  };
}
+133 −13
Original line number Diff line number Diff line
@@ -9,6 +9,11 @@
#include <QXmlStreamWriter>
#include <QXmlInputSource>

#include <hdf5.h>
#include <hdf5_hl.h> // in the hdf5 library
#include <hdf5.h>
#include <H5Cpp.h>

#include "BundleImage.h"
#include "Camera.h"
#include "FileName.h"
@@ -197,7 +202,8 @@ namespace Isis {
    //     m_solveTwist = true;
    //     m_solvePointingPolynomialOverExisting = false;
    //     m_pointingInterpolationType = SpiceRotation::PolyFunction;
    //     m_anglesAprioriSigma.append(-1.0); // num cam angle coef = 1
    //     m_anglesAprioriSigma.append(Isis::Null); // num cam angle
    //     coef = 1
    setInstrumentPointingSettings(AnglesOnly, true, 2, 2, false);

    // Spacecraft Position Options
@@ -272,9 +278,9 @@ namespace Isis {
        }
      }

      double anglesAprioriSigma = -1.0;
      double angularVelocityAprioriSigma = -1.0;
      double angularAccelerationAprioriSigma = -1.0;
      double anglesAprioriSigma = Isis::Null;
      double angularVelocityAprioriSigma = Isis::Null;
      double angularAccelerationAprioriSigma = Isis::Null;
      if (pointingOption != NoPointingFactors) {
        if (scParameterGroup.hasKeyword("CAMERA_ANGLES_SIGMA")) {
          anglesAprioriSigma = (double)(scParameterGroup.findKeyword("CAMERA_ANGLES_SIGMA"));
@@ -325,9 +331,9 @@ namespace Isis {
        }
      }

      double positionAprioriSigma = -1.0;
      double velocityAprioriSigma = -1.0;
      double accelerationAprioriSigma = -1.0;
      double positionAprioriSigma = Isis::Null;
      double velocityAprioriSigma = Isis::Null;
      double accelerationAprioriSigma = Isis::Null;
      if (positionOption != NoPositionFactors) {
        if (scParameterGroup.hasKeyword("SPACECRAFT_POSITION_SIGMA")) {
          positionAprioriSigma
@@ -471,14 +477,29 @@ namespace Isis {

    m_anglesAprioriSigma.clear();
    if (m_numberCamAngleCoefSolved > 0) {
      if (anglesAprioriSigma > 0.0) {
        m_anglesAprioriSigma.append(anglesAprioriSigma);
      }
      else {
        m_anglesAprioriSigma.append(Isis::Null);
      }

      if (m_numberCamAngleCoefSolved > 1) {
        if (angularVelocityAprioriSigma > 0.0) {
          m_anglesAprioriSigma.append(angularVelocityAprioriSigma);
        }
        else {
          m_anglesAprioriSigma.append(Isis::Null);
        }

        if (m_numberCamAngleCoefSolved > 2) {
          if (angularAccelerationAprioriSigma > 0.0) {
            m_anglesAprioriSigma.append(angularAccelerationAprioriSigma);
          }
          else {
            m_anglesAprioriSigma.append(Isis::Null);
          }
        }
      }
    }

@@ -657,12 +678,29 @@ namespace Isis {

    m_positionAprioriSigma.clear();
    if (m_numberCamPosCoefSolved > 0) {
      if (positionAprioriSigma > 0.0) {
        m_positionAprioriSigma.append(positionAprioriSigma);
      }
      else {
        m_positionAprioriSigma.append(Isis::Null);
      }

      if (m_numberCamPosCoefSolved > 1) {
        if (velocityAprioriSigma > 0.0) {
          m_positionAprioriSigma.append(velocityAprioriSigma);
        }
        else {
          m_positionAprioriSigma.append(Isis::Null);
        }

        if (m_numberCamPosCoefSolved > 2) {
          if (accelerationAprioriSigma > 0.0) {
            m_positionAprioriSigma.append(accelerationAprioriSigma);
          }
          else {
            m_positionAprioriSigma.append(Isis::Null);
          }
        }
      }
    }

@@ -753,11 +791,11 @@ namespace Isis {
                        toString(solvePolyOverPointing())); 
      PvlKeyword angleSigmas("AngleAprioriSigmas");
      for (int i = 0; i < aprioriPointingSigmas().size(); i++) {
        if (m_anglesAprioriSigma[i] > 0) {
          angleSigmas.addValue(toString(m_anglesAprioriSigma[i]));
        if (IsNullPixel(m_anglesAprioriSigma[i])) {
          angleSigmas.addValue("N/A");
        }
        else {
          angleSigmas.addValue("N/A");
          angleSigmas.addValue(toString(m_anglesAprioriSigma[i]));
        }
      }
      pvl += angleSigmas;
@@ -789,11 +827,11 @@ namespace Isis {
    
      PvlKeyword positionSigmas("PositionAprioriSigmas");
      for (int i = 0; i < aprioriPositionSigmas().size(); i++) {
        if (m_positionAprioriSigma[i] > 0) {
          positionSigmas.addValue(toString(m_positionAprioriSigma[i]));
        if (IsNullPixel(m_positionAprioriSigma[i])) {
          positionSigmas.addValue("N/A");
        }
        else {
          positionSigmas.addValue("N/A");
          positionSigmas.addValue(toString(m_positionAprioriSigma[i]));
        }
      }
      pvl += positionSigmas;
@@ -833,8 +871,13 @@ namespace Isis {

    stream.writeStartElement("aprioriPointingSigmas");
    for (int i = 0; i < m_anglesAprioriSigma.size(); i++) {
      if (IsNullPixel(m_anglesAprioriSigma[i])) {
        stream.writeTextElement("sigma", "N/A");
      }
      else {
        stream.writeTextElement("sigma", toString(m_anglesAprioriSigma[i]));
      }
    }
    stream.writeEndElement();// end aprioriPointingSigmas
    stream.writeEndElement();// end instrumentPointingOptions

@@ -850,8 +893,13 @@ namespace Isis {

    stream.writeStartElement("aprioriPositionSigmas");
    for (int i = 0; i < m_positionAprioriSigma.size(); i++) {
      if (IsNullPixel(m_positionAprioriSigma[i])) {
        stream.writeTextElement("sigma", "N/A");
      }
      else {
        stream.writeTextElement("sigma", toString(m_positionAprioriSigma[i]));
      }
    }
    stream.writeEndElement();// end aprioriPositionSigmas
    stream.writeEndElement(); // end instrumentPositionOptions

@@ -995,17 +1043,27 @@ namespace Isis {
      else if (localName == "aprioriPointingSigmas") {
        m_xmlHandlerObservationSettings->m_anglesAprioriSigma.clear();
        for (int i = 0; i < m_xmlHandlerAprioriSigmas.size(); i++) {
          if (m_xmlHandlerAprioriSigmas[i] == "N/A") {
            m_xmlHandlerObservationSettings->m_anglesAprioriSigma.append(Isis::Null);
          }
          else {
            m_xmlHandlerObservationSettings->m_anglesAprioriSigma.append(
                toDouble(m_xmlHandlerAprioriSigmas[i]));
          }
        }
      }
      else if (localName == "aprioriPositionSigmas") {
        m_xmlHandlerObservationSettings->m_positionAprioriSigma.clear();
        for (int i = 0; i < m_xmlHandlerAprioriSigmas.size(); i++) {
          if (m_xmlHandlerAprioriSigmas[i] == "N/A") {
            m_xmlHandlerObservationSettings->m_positionAprioriSigma.append(Isis::Null);
          }
          else {
            m_xmlHandlerObservationSettings->m_positionAprioriSigma.append(
                                                   toDouble(m_xmlHandlerAprioriSigmas[i]));
          }
        }
      }
      m_xmlHandlerCharacters = "";
    }
    return XmlStackedHandler::endElement(namespaceURI, localName, qName);
@@ -1094,4 +1152,66 @@ namespace Isis {
    return settings.read(stream);
  }

#if 0
  /** 
   *  H5 compound data type uses the offesets from the QDataStream returned by
   *  the write(QDataStream &stream) method.
   */
  H5::CompType BundleObservationSolveSettings::compoundH5DataType() {

    H5::CompType compoundDataType((size_t)   );

    size_t offset = 0;

    compoundDataType.insertMember("InstrumentId", offset, H5::PredType::C_S1);

    offset += sizeof(m_instrumentId);
    compoundDataType.insertMember("InstrumentPointingSolveOption", offset, H5::PredType::NATIVE_INT);

    offset += sizeof(m_instrumentId);
    compoundDataType.insertMember("NumCamAngleCoefSolved", offset, H5::PredType::NATIVE_INT);

    offset += sizeof(m_instrumentId);
    compoundDataType.insertMember("CkDegree", offset, H5::PredType::NATIVE_INT);

    offset += sizeof(m_instrumentId);
    compoundDataType.insertMember("CkSolveDegree", offset, H5::PredType::NATIVE_INT);

    offset += sizeof(m_instrumentId);
    compoundDataType.insertMember("SolveTwist", offset, H5::PredType::NATIVE_HBOOL);

    offset += sizeof(m_instrumentId);
    compoundDataType.insertMember("SolvePointingPolynomialOverExisting", offset, H5::PredType::NATIVE_HBOOL);

    offset += sizeof(m_instrumentId);
???    compoundDataType.insertMember("AnglesAprioriSigma", offset, H5::PredType::NATIVE_DOUBLE);

    offset += sizeof(m_instrumentId);
    compoundDataType.insertMember("PointingInterpolationType", offset, H5::PredType::NATIVE_INT);

    offset += sizeof(m_instrumentId);
    compoundDataType.insertMember("InstrumentPositionSolveOption", offset, H5::PredType::NATIVE_INT);

    offset += sizeof(m_instrumentId);
    compoundDataType.insertMember("NumCamPosCoefSolved", offset, H5::PredType::NATIVE_INT);

    offset += sizeof(m_numberCamPosCoefSolved);
    compoundDataType.insertMember("SpkDegree", offset, H5::PredType::NATIVE_INT);

    offset += sizeof(m_spkDegree);
    compoundDataType.insertMember("SpkSolveDegree", offset, H5::PredType::NATIVE_INT);

    offset += sizeof(m_spkSolveDegree);
    compoundDataType.insertMember("SolvePositionOverHermiteSpline", offset, H5::PredType::NATIVE_HBOOL);

    offset += sizeof(m_solvePositionOverHermiteSpline);
???    compoundDataType.insertMember("PositionAprioriSigma", offset, H5::PredType::NATIVE_DOUBLE);

    offset += sizeof(m_positionAprioriSigma);
    compoundDataType.insertMember("PositionInterpolationType", offset, H5::PredType::NATIVE_INT);

    return compoundDataType;

  }
#endif
}
Loading