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 }