1 /* Copyright 2002-2025 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
21 /**
22 * Container for the additional covariance metadata (optional).
23 * <p>
24 * Beware that the Orekit getters and setters all rely on SI units. The parsers
25 * and writers take care of converting these SI units into CCSDS mandatory units.
26 * The {@link org.orekit.utils.units.Unit Unit} class provides useful
27 * {@link org.orekit.utils.units.Unit#fromSI(double) fromSi} and
28 * {@link org.orekit.utils.units.Unit#toSI(double) toSI} methods in case the callers
29 * already use CCSDS units instead of the API SI units. The general-purpose
30 * {@link org.orekit.utils.units.Unit Unit} class (without an 's') and the
31 * CCSDS-specific {@link org.orekit.files.ccsds.definitions.Units Units} class
32 * (with an 's') also provide some predefined units. These predefined units and the
33 * {@link org.orekit.utils.units.Unit#fromSI(double) fromSi} and
34 * {@link org.orekit.utils.units.Unit#toSI(double) toSI} conversion methods are indeed
35 * what the parsers and writers use for the conversions.
36 * </p>
37 */
38 public class AdditionalCovarianceMetadata extends CommentsContainer {
39
40 /** The atmospheric density forecast error. */
41 private double densityForecastUncertainty;
42
43 /** The minimum suggested covariance scale factor. */
44 private double cScaleFactorMin;
45
46 /** The (median) suggested covariance scale factor. */
47 private double cScaleFactor;
48
49 /** The maximum suggested covariance scale factor. */
50 private double cScaleFactorMax;
51
52 /** The source (or origin) of the specific orbital data for this object. */
53 private String screeningDataSource;
54
55 /** The drag consider parameter (DCP) sensitivity vectors map forward expected error in the drag acceleration to actual
56 * componentized position errors at TCA. */
57 private double[] dcpSensitivityVectorPosition;
58
59 /** The drag consider parameter (DCP) sensitivity vectors map forward expected error in the drag acceleration to actual
60 * componentized velocity errors at TCA. */
61 private double[] dcpSensitivityVectorVelocity;
62
63
64 /** Simple constructor. */
65 public AdditionalCovarianceMetadata() {
66 densityForecastUncertainty = Double.NaN;
67 }
68
69 /** {@inheritDoc} */
70 @Override
71 public void validate(final double version) {
72 super.validate(version);
73 }
74
75
76 /**
77 * Get the atmospheric density forecast error.
78 * @return densityForecastUncertainty
79 */
80 public double getDensityForecastUncertainty() {
81 return densityForecastUncertainty;
82 }
83
84 /**
85 * Set the atmospheric density forecast error.
86 * @param densityForecastUncertainty the cScaleFactorMax to set
87 */
88 public void setDensityForecastUncertainty(final double densityForecastUncertainty) {
89 refuseFurtherComments();
90 this.densityForecastUncertainty = densityForecastUncertainty;
91 }
92
93 /** Get the minimum suggested covariance scale factor.
94 * @return the cScaleFactorMin
95 */
96 public double getcScaleFactorMin() {
97 return cScaleFactorMin;
98 }
99
100 /** Set the minimum suggested covariance scale factor.
101 * @param cScaleFactorMin the cScaleFactorMin to set
102 */
103 public void setcScaleFactorMin(final double cScaleFactorMin) {
104 this.cScaleFactorMin = cScaleFactorMin;
105 }
106
107 /** Get the (median) suggested covariance scale factor.
108 * @return the cScaleFactor
109 */
110 public double getcScaleFactor() {
111 return cScaleFactor;
112 }
113
114 /** Set the (median) suggested covariance scale factor.
115 * @param cScaleFactor the cScaleFactor to set
116 */
117 public void setcScaleFactor(final double cScaleFactor) {
118 this.cScaleFactor = cScaleFactor;
119 }
120
121 /** Get the maximum suggested covariance scale factor.
122 * @return the cScaleFactorMax
123 */
124 public double getcScaleFactorMax() {
125 return cScaleFactorMax;
126 }
127
128 /** set the maximum suggested covariance scale factor.
129 * @param cScaleFactorMax the cScaleFactorMax to set
130 */
131 public void setcScaleFactorMax(final double cScaleFactorMax) {
132 this.cScaleFactorMax = cScaleFactorMax;
133 }
134
135 /** Get the source (or origin) of the specific orbital data for this object.
136 * @return the screeningDataSource
137 */
138 public String getScreeningDataSource() {
139 return screeningDataSource;
140 }
141
142 /** Set the source (or origin) of the specific orbital data for this object.
143 * @param screeningDataSource the screeningDataSource to set
144 */
145 public void setScreeningDataSource(final String screeningDataSource) {
146 this.screeningDataSource = screeningDataSource;
147 }
148
149 /** Get the DCP sensitivity vector (position errors at TCA).
150 * @return the dcpSensitivityVectorPosition
151 */
152 public double[] getDcpSensitivityVectorPosition() {
153 return dcpSensitivityVectorPosition == null ? null : dcpSensitivityVectorPosition.clone();
154 }
155
156 /** Set the DCP sensitivity vector (position errors at TCA).
157 * @param dcpSensitivityVectorPosition the dcpSensitivityVectorPosition to set
158 */
159 public void setDcpSensitivityVectorPosition(final double[] dcpSensitivityVectorPosition) {
160 this.dcpSensitivityVectorPosition = dcpSensitivityVectorPosition == null ? null : dcpSensitivityVectorPosition.clone();
161 }
162
163 /** Get the DCP sensitivity vector (velocity errors at TCA).
164 * @return the dcpSensitivityVectorVelocity
165 */
166 public double[] getDcpSensitivityVectorVelocity() {
167 return dcpSensitivityVectorVelocity == null ? null : dcpSensitivityVectorVelocity.clone();
168 }
169
170 /** Set the DCP sensitivity vector (velocity errors at TCA).
171 * @param dcpSensitivityVectorVelocity the dcpSensitivityVectorVelocity to set
172 */
173 public void setDcpSensitivityVectorVelocity(final double[] dcpSensitivityVectorVelocity) {
174 this.dcpSensitivityVectorVelocity = dcpSensitivityVectorVelocity == null ? null : dcpSensitivityVectorVelocity.clone();
175 }
176
177 }