OrbitDetermination.java

  1. /* Copyright 2002-2022 CS GROUP
  2.  * Licensed to CS GROUP (CS) under one or more
  3.  * contributor license agreements.  See the NOTICE file distributed with
  4.  * this work for additional information regarding copyright ownership.
  5.  * CS licenses this file to You under the Apache License, Version 2.0
  6.  * (the "License"); you may not use this file except in compliance with
  7.  * the License.  You may obtain a copy of the License at
  8.  *
  9.  *   http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */

  17. package org.orekit.files.ccsds.ndm.odm.ocm;

  18. import java.util.Collections;
  19. import java.util.List;

  20. import org.orekit.files.ccsds.definitions.OdMethodFacade;
  21. import org.orekit.files.ccsds.section.CommentsContainer;
  22. import org.orekit.time.AbsoluteDate;

  23. /** Orbit determination data.
  24.  * @author Luc Maisonobe
  25.  * @since 11.0
  26.  */
  27. public class OrbitDetermination extends CommentsContainer {

  28.     /** Identification number. */
  29.     private String id;

  30.     /** Identification of previous orbit determination. */
  31.     private String prevId;

  32.     /** Orbit determination method. */
  33.     private OdMethodFacade method;

  34.     /** Time tag for orbit determination solved-for state. */
  35.     private AbsoluteDate epoch;

  36.     /** Time elapsed between first accepted observation on epoch. */
  37.     private double timeSinceFirstObservation;

  38.     /** Time elapsed between last accepted observation on epoch. */
  39.     private double timeSinceLastObservation;

  40.     /** Sime span of observation recommended for the OD of the object. */
  41.     private double recommendedOdSpan;

  42.     /** Actual time span used for the OD of the object. */
  43.     private double actualOdSpan;

  44.     /** Number of observations available within the actual OD span. */
  45.     private int obsAvailable;

  46.     /** Number of observations accepted within the actual OD span. */
  47.     private int obsUsed;

  48.     /** Number of sensors tracks available for the OD within the actual OD span. */
  49.     private int tracksAvailable;

  50.     /** Number of sensors tracks accepted for the OD within the actual OD span. */
  51.     private int tracksUsed;

  52.     /** Maximum time between observations in the OD of the object. */
  53.     private double maximumObsGap;

  54.     /** Positional error ellipsoid 1σ major eigenvalue at the epoch of OD. */
  55.     private double epochEigenMaj;

  56.     /** Positional error ellipsoid 1σ intermediate eigenvalue at the epoch of OD. */
  57.     private double epochEigenInt;

  58.     /** Positional error ellipsoid 1σ minor eigenvalue at the epoch of OD. */
  59.     private double epochEigenMin;

  60.     /** Maximum predicted major eigenvalue of 1σ positional error ellipsoid over entire time span of the OCM. */
  61.     private double maxPredictedEigenMaj;

  62.     /** Minimum predicted minor eigenvalue of 1σ positional error ellipsoid over entire time span of the OCM. */
  63.     private double minPredictedEigenMin;

  64.     /** Confidence metric. */
  65.     private double confidence;

  66.     /** Generalize Dilution Of Precision. */
  67.     private double gdop;

  68.     /** Number of solved-for states. */
  69.     private int solveN;

  70.     /** Description of state elements solved-for. */
  71.     private List<String> solveStates;

  72.     /** Number of consider parameters. */
  73.     private int considerN;

  74.     /** Description of consider parameters. */
  75.     private List<String> considerParameters;

  76.     /** Number of sensors used. */
  77.     private int sensorsN;

  78.     /** Description of sensors used. */
  79.     private List<String> sensors;

  80.     /** Weighted RMS residual ratio. */
  81.     private double weightedRms;

  82.     /** Observation data types used. */
  83.     private List<String> dataTypes;

  84.     /** Simple constructor.
  85.      */
  86.     OrbitDetermination() {
  87.         solveStates        = Collections.emptyList();
  88.         considerParameters = Collections.emptyList();
  89.         sensors            = Collections.emptyList();
  90.         dataTypes          = Collections.emptyList();
  91.     }

  92.     /** {@inheritDoc} */
  93.     @Override
  94.     public void validate(final double version) {
  95.         super.validate(version);
  96.         checkNotNull(id,     OrbitDeterminationKey.OD_ID);
  97.         checkNotNull(method, OrbitDeterminationKey.OD_METHOD);
  98.         checkNotNull(epoch,  OrbitDeterminationKey.OD_EPOCH);
  99.     }

  100.     /** Get identification number.
  101.      * @return identification number
  102.      */
  103.     public String getId() {
  104.         return id;
  105.     }

  106.     /** Set identification number.
  107.      * @param id identification number
  108.      */
  109.     public void setId(final String id) {
  110.         this.id = id;
  111.     }

  112.     /** Get identification of previous orbit determination.
  113.      * @return identification of previous orbit determination
  114.      */
  115.     public String getPrevId() {
  116.         return prevId;
  117.     }

  118.     /** Set identification of previous orbit determination.
  119.      * @param prevId identification of previous orbit determination
  120.      */
  121.     public void setPrevId(final String prevId) {
  122.         this.prevId = prevId;
  123.     }

  124.     /** Get orbit determination method.
  125.      * @return orbit determination method
  126.      */
  127.     public OdMethodFacade getMethod() {
  128.         return method;
  129.     }

  130.     /** Set orbit determination method.
  131.      * @param method orbit determination method
  132.      */
  133.     public void setMethod(final OdMethodFacade method) {
  134.         this.method = method;
  135.     }

  136.     /** Get time tag for orbit determination solved-for state.
  137.      * @return time tag for orbit determination solved-for state
  138.      */
  139.     public AbsoluteDate getEpoch() {
  140.         return epoch;
  141.     }

  142.     /** Set time tag for orbit determination solved-for state.
  143.      * @param epoch time tag for orbit determination solved-for state
  144.      */
  145.     public void setEpoch(final AbsoluteDate epoch) {
  146.         this.epoch = epoch;
  147.     }

  148.     /** Get time elapsed between first accepted observation on epoch.
  149.      * @return time elapsed between first accepted observation on epoch
  150.      */
  151.     public double getTimeSinceFirstObservation() {
  152.         return timeSinceFirstObservation;
  153.     }

  154.     /** Set time elapsed between first accepted observation on epoch.
  155.      * @param timeSinceFirstObservation time elapsed between first accepted observation on epoch
  156.      */
  157.     public void setTimeSinceFirstObservation(final double timeSinceFirstObservation) {
  158.         this.timeSinceFirstObservation = timeSinceFirstObservation;
  159.     }

  160.     /** Get time elapsed between last accepted observation on epoch.
  161.      * @return time elapsed between last accepted observation on epoch
  162.      */
  163.     public double getTimeSinceLastObservation() {
  164.         return timeSinceLastObservation;
  165.     }

  166.     /** Set time elapsed between last accepted observation on epoch.
  167.      * @param timeSinceLastObservation time elapsed between last accepted observation on epoch
  168.      */
  169.     public void setTimeSinceLastObservation(final double timeSinceLastObservation) {
  170.         this.timeSinceLastObservation = timeSinceLastObservation;
  171.     }

  172.     /** Get time span of observation recommended for the OD of the object.
  173.      * @return time span of observation recommended for the OD of the object
  174.      */
  175.     public double getRecommendedOdSpan() {
  176.         return recommendedOdSpan;
  177.     }

  178.     /** Set time span of observation recommended for the OD of the object.
  179.      * @param recommendedOdSpan time span of observation recommended for the OD of the object
  180.      */
  181.     public void setRecommendedOdSpan(final double recommendedOdSpan) {
  182.         this.recommendedOdSpan = recommendedOdSpan;
  183.     }

  184.     /** Get actual time span used for the OD of the object.
  185.      * @return actual time span used for the OD of the object
  186.      */
  187.     public double getActualOdSpan() {
  188.         return actualOdSpan;
  189.     }

  190.     /** Set actual time span used for the OD of the object.
  191.      * @param actualOdSpan actual time span used for the OD of the object
  192.      */
  193.     public void setActualOdSpan(final double actualOdSpan) {
  194.         this.actualOdSpan = actualOdSpan;
  195.     }

  196.     /** Get number of observations available within the actual OD span.
  197.      * @return number of observations available within the actual OD span
  198.      */
  199.     public int getObsAvailable() {
  200.         return obsAvailable;
  201.     }

  202.     /** Set number of observations available within the actual OD span.
  203.      * @param obsAvailable number of observations available within the actual OD span
  204.      */
  205.     public void setObsAvailable(final int obsAvailable) {
  206.         this.obsAvailable = obsAvailable;
  207.     }

  208.     /** Get number of observations accepted within the actual OD span.
  209.      * @return number of observations accepted within the actual OD span
  210.      */
  211.     public int getObsUsed() {
  212.         return obsUsed;
  213.     }

  214.     /** Set number of observations accepted within the actual OD span.
  215.      * @param obsUsed number of observations accepted within the actual OD span
  216.      */
  217.     public void setObsUsed(final int obsUsed) {
  218.         this.obsUsed = obsUsed;
  219.     }

  220.     /** Get number of sensors tracks available for the OD within the actual OD span.
  221.      * @return number of sensors tracks available for the OD within the actual OD span
  222.      */
  223.     public int getTracksAvailable() {
  224.         return tracksAvailable;
  225.     }

  226.     /** Set number of sensors tracks available for the OD within the actual OD span.
  227.      * @param tracksAvailable number of sensors tracks available for the OD within the actual OD span
  228.      */
  229.     public void setTracksAvailable(final int tracksAvailable) {
  230.         this.tracksAvailable = tracksAvailable;
  231.     }

  232.     /** Get number of sensors tracks accepted for the OD within the actual OD span.
  233.      * @return number of sensors tracks accepted for the OD within the actual OD span
  234.      */
  235.     public int getTracksUsed() {
  236.         return tracksUsed;
  237.     }

  238.     /** Set number of sensors tracks accepted for the OD within the actual OD span.
  239.      * @param tracksUsed number of sensors tracks accepted for the OD within the actual OD span
  240.      */
  241.     public void setTracksUsed(final int tracksUsed) {
  242.         this.tracksUsed = tracksUsed;
  243.     }

  244.     /** Get maximum time between observations in the OD of the object.
  245.      * @return maximum time between observations in the OD of the object
  246.      */
  247.     public double getMaximumObsGap() {
  248.         return maximumObsGap;
  249.     }

  250.     /** Set maximum time between observations in the OD of the object.
  251.      * @param maximumObsGap maximum time between observations in the OD of the object
  252.      */
  253.     public void setMaximumObsGap(final double maximumObsGap) {
  254.         this.maximumObsGap = maximumObsGap;
  255.     }

  256.     /** Get positional error ellipsoid 1σ major eigenvalue at the epoch of OD.
  257.      * @return positional error ellipsoid 1σ major eigenvalue at the epoch of OD
  258.      */
  259.     public double getEpochEigenMaj() {
  260.         return epochEigenMaj;
  261.     }

  262.     /** Set positional error ellipsoid 1σ major eigenvalue at the epoch of OD.
  263.      * @param epochEigenMaj positional error ellipsoid 1σ major eigenvalue at the epoch of OD
  264.      */
  265.     public void setEpochEigenMaj(final double epochEigenMaj) {
  266.         this.epochEigenMaj = epochEigenMaj;
  267.     }

  268.     /** Get positional error ellipsoid 1σ intermediate eigenvalue at the epoch of OD.
  269.      * @return positional error ellipsoid 1σ intermediate eigenvalue at the epoch of OD
  270.      */
  271.     public double getEpochEigenInt() {
  272.         return epochEigenInt;
  273.     }

  274.     /** Set positional error ellipsoid 1σ intermediate eigenvalue at the epoch of OD.
  275.      * @param epochEigenInt positional error ellipsoid 1σ intermediate eigenvalue at the epoch of OD
  276.      */
  277.     public void setEpochEigenInt(final double epochEigenInt) {
  278.         this.epochEigenInt = epochEigenInt;
  279.     }

  280.     /** Get positional error ellipsoid 1σ minor eigenvalue at the epoch of OD.
  281.      * @return positional error ellipsoid 1σ minor eigenvalue at the epoch of OD
  282.      */
  283.     public double getEpochEigenMin() {
  284.         return epochEigenMin;
  285.     }

  286.     /** Set positional error ellipsoid 1σ minor eigenvalue at the epoch of OD.
  287.      * @param epochEigenMin positional error ellipsoid 1σ minor eigenvalue at the epoch of OD
  288.      */
  289.     public void setEpochEigenMin(final double epochEigenMin) {
  290.         this.epochEigenMin = epochEigenMin;
  291.     }

  292.     /** Get maximum predicted major eigenvalue of 1σ positional error ellipsoid over entire time span of the OCM.
  293.      * @return maximum predicted major eigenvalue of 1σ positional error ellipsoid over entire time span of the OCM
  294.      */
  295.     public double getMaxPredictedEigenMaj() {
  296.         return maxPredictedEigenMaj;
  297.     }

  298.     /** Set maximum predicted major eigenvalue of 1σ positional error ellipsoid over entire time span of the OCM.
  299.      * @param maxPredictedEigenMaj maximum predicted major eigenvalue of 1σ positional error ellipsoid over entire time span of the OCM
  300.      */
  301.     public void setMaxPredictedEigenMaj(final double maxPredictedEigenMaj) {
  302.         this.maxPredictedEigenMaj = maxPredictedEigenMaj;
  303.     }

  304.     /** Get minimum predicted minor eigenvalue of 1σ positional error ellipsoid over entire time span of the OCM.
  305.      * @return minimum predicted v eigenvalue of 1σ positional error ellipsoid over entire time span of the OCM
  306.      */
  307.     public double getMinPredictedEigenMin() {
  308.         return minPredictedEigenMin;
  309.     }

  310.     /** Set minimum predicted minor eigenvalue of 1σ positional error ellipsoid over entire time span of the OCM.
  311.      * @param minPredictedEigenMin minimum predicted minor eigenvalue of 1σ positional error ellipsoid over entire time span of the OCM
  312.      */
  313.     public void setMinPredictedEigenMin(final double minPredictedEigenMin) {
  314.         this.minPredictedEigenMin = minPredictedEigenMin;
  315.     }

  316.     /** Get confidence metric.
  317.      * @return confidence metric
  318.      */
  319.     public double getConfidence() {
  320.         return confidence;
  321.     }

  322.     /** Set confidence metric.
  323.      * @param confidence confidence metric
  324.      */
  325.     public void setConfidence(final double confidence) {
  326.         this.confidence = confidence;
  327.     }

  328.     /** Get generalize Dilution Of Precision.
  329.      * @return generalize Dilution Of Precision
  330.      */
  331.     public double getGdop() {
  332.         return gdop;
  333.     }

  334.     /** Set generalize Dilution Of Precision.
  335.      * @param gdop generalize Dilution Of Precision
  336.      */
  337.     public void setGdop(final double gdop) {
  338.         this.gdop = gdop;
  339.     }

  340.     /** Get number of solved-for states.
  341.      * @return number of solved-for states
  342.      */
  343.     public int getSolveN() {
  344.         return solveN;
  345.     }

  346.     /** Set number of solved-for states.
  347.      * @param solveN number of solved-for states
  348.      */
  349.     public void setSolveN(final int solveN) {
  350.         this.solveN = solveN;
  351.     }

  352.     /** Get description of state elements solved-for.
  353.      * @return description of state elements solved-for
  354.      */
  355.     public List<String> getSolveStates() {
  356.         return solveStates;
  357.     }

  358.     /** Set description of state elements solved-for.
  359.      * @param solveStates description of state elements solved-for
  360.      */
  361.     public void setSolveStates(final List<String> solveStates) {
  362.         this.solveStates = solveStates;
  363.     }

  364.     /** Get number of consider parameters.
  365.      * @return number of consider parameters
  366.      */
  367.     public int getConsiderN() {
  368.         return considerN;
  369.     }

  370.     /** Set number of consider parameters.
  371.      * @param considerN number of consider parameters
  372.      */
  373.     public void setConsiderN(final int considerN) {
  374.         this.considerN = considerN;
  375.     }

  376.     /** Get description of consider parameters.
  377.      * @return description of consider parameters
  378.      */
  379.     public List<String> getConsiderParameters() {
  380.         return considerParameters;
  381.     }

  382.     /** Set description of consider parameters.
  383.      * @param considerParameters description of consider parameters
  384.      */
  385.     public void setConsiderParameters(final List<String> considerParameters) {
  386.         this.considerParameters = considerParameters;
  387.     }

  388.     /** Get number of sensors used.
  389.      * @return number of sensors used
  390.      */
  391.     public int getSensorsN() {
  392.         return sensorsN;
  393.     }

  394.     /** Set number of sensors used.
  395.      * @param sensorsN number of sensors used
  396.      */
  397.     public void setSensorsN(final int sensorsN) {
  398.         this.sensorsN = sensorsN;
  399.     }

  400.     /** Get description of sensors used.
  401.      * @return description of sensors used
  402.      */
  403.     public List<String> getSensors() {
  404.         return sensors;
  405.     }

  406.     /** Set description of sensors used.
  407.      * @param sensors description of sensors used
  408.      */
  409.     public void setSensors(final List<String> sensors) {
  410.         this.sensors = sensors;
  411.     }

  412.     /** Get weighted RMS residual ratio.
  413.      * @return weighted RMS residual ratio
  414.      */
  415.     public double getWeightedRms() {
  416.         return weightedRms;
  417.     }

  418.     /** Set weighted RMS residual ratio.
  419.      * @param weightedRms weighted RMS residual ratio
  420.      */
  421.     public void setWeightedRms(final double weightedRms) {
  422.         this.weightedRms = weightedRms;
  423.     }

  424.     /** Get observation data types used.
  425.      * @return observation data types used
  426.      */
  427.     public List<String> getDataTypes() {
  428.         return dataTypes;
  429.     }

  430.     /** Set observation data types used.
  431.      * @param dataTypes observation data types used
  432.      */
  433.     public void setDataTypes(final List<String> dataTypes) {
  434.         this.dataTypes = dataTypes;
  435.     }

  436. }