1   /* Copyright 2002-2024 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.cdm;
18  
19  import org.orekit.files.ccsds.section.CommentsContainer;
20  import org.orekit.time.AbsoluteDate;
21  
22  /**
23   * Container for OD parameters data block.
24   * @author Melina Vanel
25   * @since 11.2
26   */
27  public class ODParameters extends CommentsContainer {
28  
29      /** The start of a time interval (UTC) that contains the time of the last accepted observation. */
30      private AbsoluteDate timeLastObsStart;
31  
32      /** The end of a time interval (UTC) that contains the time of the last accepted observation. */
33      private AbsoluteDate timeLastObsEnd;
34  
35      /** The recommended OD time span calculated for the object. */
36      private double recommendedOdSpan;
37  
38      /** Based on the observations available and the RECOMMENDED_OD_SPAN, the actual time span used for the OD of the object. */
39      private double actualOdSpan;
40  
41      /** The number of observations available for the OD of the object. */
42      private int obsAvailable;
43  
44      /** The number of observations accepted for the OD of the object. */
45      private int obsUsed;
46  
47      /** The number of sensor tracks available for the OD of the object. */
48      private int tracksAvailable;
49  
50      /** The number of sensor tracks accepted for the OD of the object. */
51      private int tracksUsed;
52  
53      /** The percentage of residuals accepted in the OD of the object (from 0 to 100). */
54      private double residualsAccepted;
55  
56      /** The weighted Root Mean Square (RMS) of the residuals from a batch least squares OD. */
57      private double weightedRMS;
58  
59      /** The epoch of the orbit determination used for this message (UTC). */
60      private AbsoluteDate odEpoch;
61  
62      /** Simple constructor.
63       */
64      public ODParameters() {
65          recommendedOdSpan   = Double.NaN;
66          actualOdSpan        = Double.NaN;
67          residualsAccepted   = Double.NaN;
68          weightedRMS         = Double.NaN;
69      }
70  
71      /** {@inheritDoc} */
72      @Override
73      public void validate(final double version) {
74          super.validate(version);
75      }
76  
77      /**
78       * Get the start of a time interval (UTC) that contains the time of the last accepted observation.
79       * @return the start of a time interval (UTC)
80       */
81      public AbsoluteDate getTimeLastObsStart() {
82          return timeLastObsStart;
83      }
84  
85      /**
86       * Set the start of a time interval (UTC) that contains the time of the last accepted observation.
87       * @param timeLastObsStart the start of a time interval (UTC)
88       */
89      public void setTimeLastObsStart(final AbsoluteDate timeLastObsStart) {
90          refuseFurtherComments();
91          this.timeLastObsStart = timeLastObsStart;
92      }
93  
94      /**
95       * Get the start of a time interval (UTC) that contains the time of the last accepted observation.
96       * @return the start of a time interval (UTC)
97       */
98      public AbsoluteDate getTimeLastObsEnd() {
99          return timeLastObsEnd;
100     }
101 
102     /**
103      * Set the start of a time interval (UTC) that contains the time of the last accepted observation.
104      * @param timeLastObsEnd the start of a time interval (UTC)
105      */
106     public void setTimeLastObsEnd(final AbsoluteDate timeLastObsEnd) {
107         refuseFurtherComments();
108         this.timeLastObsEnd = timeLastObsEnd;
109     }
110 
111     /**
112      * Get the recommended OD time span calculated for the object.
113      * @return the recommended OD time span (in days) calculated for the object
114      */
115     public double getRecommendedOdSpan() {
116         return recommendedOdSpan;
117     }
118 
119     /**
120      * Set the recommended OD time span calculated for the object.
121      * @param recommendedOdSpan recommended OD time span (in days) calculated for the object
122      */
123     public void setRecommendedOdSpan(final double recommendedOdSpan) {
124         refuseFurtherComments();
125         this.recommendedOdSpan = recommendedOdSpan;
126     }
127 
128     /**
129      * Get the actual OD time based on the observations available and the RECOMMENDED_OD_SPAN.
130      * @return the actual OD time (in days)
131      */
132     public double getActualOdSpan() {
133         return actualOdSpan;
134     }
135 
136     /**
137      * Set the actual OD time based on the observations available and the RECOMMENDED_OD_SPAN.
138      * @param actualOdSpan the actual OD time (in days)
139      */
140     public void setActualOdSpan(final double actualOdSpan) {
141         refuseFurtherComments();
142         this.actualOdSpan = actualOdSpan;
143     }
144 
145     /**
146      * Get the number of observations available for the OD of the object.
147      * @return the number of observations available
148      */
149     public int getObsAvailable() {
150         return obsAvailable;
151     }
152 
153     /**
154      * Set the number of observations available for the OD of the object.
155      * @param obsAvailable the number of observations available
156      */
157     public void setObsAvailable(final int obsAvailable) {
158         refuseFurtherComments();
159         this.obsAvailable = obsAvailable;
160     }
161 
162     /**
163      * Get the number of observations accepted for the OD of the object.
164      * @return the number of observations used
165      */
166     public int getObsUsed() {
167         return obsUsed;
168     }
169 
170     /**
171      * Set the number of observations accepted for the OD of the object.
172      * @param obsUsed the number of observations used
173      */
174     public void setObsUsed(final int obsUsed) {
175         refuseFurtherComments();
176         this.obsUsed = obsUsed;
177     }
178 
179     /**
180      * Get the number of sensor tracks available for the OD of the object.
181      * @return the number of sensor tracks available
182      */
183     public int getTracksAvailable() {
184         return tracksAvailable;
185     }
186 
187     /**
188      * Set the number of sensor tracks available for the OD of the object.
189      * @param tracksAvailable the number of sensor tracks available
190      */
191     public void setTracksAvailable(final int tracksAvailable) {
192         refuseFurtherComments();
193         this.tracksAvailable = tracksAvailable;
194     }
195 
196     /**
197      * Get the number of sensor tracks used for the OD of the object.
198      * @return the number of sensor tracks used
199      */
200     public int getTracksUsed() {
201         return tracksUsed;
202     }
203 
204     /**
205      * Set the number of sensor tracks used for the OD of the object.
206      * @param tracksUsed the number of sensor tracks used
207      */
208     public void setTracksUsed(final int tracksUsed) {
209         refuseFurtherComments();
210         this.tracksUsed = tracksUsed;
211     }
212 
213     /**
214      * Get the percentage of residuals accepted in the OD of the object (from 0 to 100).
215      * @return the percentage of residuals accepted in the OD
216      */
217     public double getResidualsAccepted() {
218         return residualsAccepted;
219     }
220 
221     /**
222      * Set the percentage of residuals accepted in the OD of the object (from 0 to 100).
223      * @param residualsAccepted the percentage of residuals accepted in the OD to be set
224      */
225     public void setResidualsAccepted(final double residualsAccepted) {
226         refuseFurtherComments();
227         this.residualsAccepted = residualsAccepted;
228     }
229 
230     /**
231      * Get the weighted Root Mean Square (RMS) of the residuals from a batch least squares OD.
232      * @return the weighted Root Mean Square (RMS) of the residuals from a batch least squares OD
233      */
234     public double getWeightedRMS() {
235         return weightedRMS;
236     }
237 
238     /**
239      * Set the weighted Root Mean Square (RMS) of the residuals from a batch least squares OD.
240      * @param WeightedRMS the weighted Root Mean Square (RMS) of the residuals from a batch least squares OD
241      */
242     public void setWeightedRMS(final double WeightedRMS) {
243         refuseFurtherComments();
244         this.weightedRMS = WeightedRMS;
245     }
246 
247     /** Get the epoch of the orbit determination used for this message.
248      * @return the odEpoch the epoch of the orbit determination used for this message
249      */
250     public AbsoluteDate getOdEpoch() {
251         return odEpoch;
252     }
253 
254     /** Set the epoch of the orbit determination used for this message.
255      * @param odEpoch the odEpoch to set
256      */
257     public void setOdEpoch(final AbsoluteDate odEpoch) {
258         this.odEpoch = odEpoch;
259     }
260 
261 }