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 }