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
18 package org.orekit.estimation.common;
19
20 import org.orekit.estimation.measurements.AngularAzEl;
21 import org.orekit.estimation.measurements.GroundStation;
22 import org.orekit.estimation.measurements.Range;
23 import org.orekit.estimation.measurements.RangeRate;
24 import org.orekit.estimation.measurements.modifiers.AngularRadioRefractionModifier;
25 import org.orekit.estimation.measurements.modifiers.Bias;
26 import org.orekit.estimation.measurements.modifiers.RangeTroposphericDelayModifier;
27 import org.orekit.models.earth.ionosphere.IonosphericModel;
28
29 /** Container for stations-related data.
30 * @author Luc Maisonobe
31 */
32 class StationData {
33
34 /** Ground station. */
35 private final GroundStation station;
36
37 /** Range sigma. */
38 private final double rangeSigma;
39
40 /** Range bias (may be null if bias is fixed to zero). */
41 private final Bias<Range> rangeBias;
42
43 /** Range rate sigma. */
44 private final double rangeRateSigma;
45
46 /** Range rate bias (may be null if bias is fixed to zero). */
47 private final Bias<RangeRate> rangeRateBias;
48
49 /** Azimuth-elevation sigma. */
50 private final double[] azElSigma;
51
52 /** Azimuth-elevation bias (may be null if bias is fixed to zero). */
53 private final Bias<AngularAzEl> azELBias;
54
55 /** Elevation refraction correction (may be null). */
56 private final AngularRadioRefractionModifier refractionCorrection;
57
58 /** Tropospheric correction (may be null). */
59 private final RangeTroposphericDelayModifier rangeTroposphericCorrection;
60
61 /** Ionospheric model (may be null). */
62 private final IonosphericModel ionosphericModel;
63
64 /** Simple constructor.
65 * @param station ground station
66 * @param rangeSigma range sigma
67 * @param rangeBias range bias (may be null if bias is fixed to zero)
68 * @param rangeRateSigma range rate sigma
69 * @param rangeRateBias range rate bias (may be null if bias is fixed to zero)
70 * @param azElSigma azimuth-elevation sigma
71 * @param azELBias azimuth-elevation bias (may be null if bias is fixed to zero)
72 * @param refractionCorrection refraction correction for elevation (may be null)
73 * @param rangeTroposphericCorrection tropospheric correction for the range (may be null)
74 * @param ionosphericModel ionospheric model for the range (may be null)
75 */
76 StationData(final GroundStation station,
77 final double rangeSigma, final Bias<Range> rangeBias,
78 final double rangeRateSigma, final Bias<RangeRate> rangeRateBias,
79 final double[] azElSigma, final Bias<AngularAzEl> azELBias,
80 final AngularRadioRefractionModifier refractionCorrection,
81 final RangeTroposphericDelayModifier rangeTroposphericCorrection,
82 final IonosphericModel ionosphericModel) {
83 this.station = station;
84 this.rangeSigma = rangeSigma;
85 this.rangeBias = rangeBias;
86 this.rangeRateSigma = rangeRateSigma;
87 this.rangeRateBias = rangeRateBias;
88 this.azElSigma = azElSigma.clone();
89 this.azELBias = azELBias;
90 this.refractionCorrection = refractionCorrection;
91 this.rangeTroposphericCorrection = rangeTroposphericCorrection;
92 this.ionosphericModel = ionosphericModel;
93 }
94
95 /** Get ground station.
96 * @return ground station
97 */
98 public GroundStation getStation() {
99 return station;
100 }
101
102 /** Get range sigma.
103 * @return range sigma. */
104 public double getRangeSigma() {
105 return rangeSigma;
106 }
107
108 /** Range bias (may be null if bias is fixed to zero).
109 * @return range bias
110 */
111 public Bias<Range> getRangeBias() {
112 return rangeBias;
113 }
114
115 /** Range rate sigma.
116 * @return range rate sigma
117 */
118 public double getRangeRateSigma() {
119 return rangeRateSigma;
120 }
121
122 /** Range rate bias (may be null if bias is fixed to zero).
123 * @return range rate bias
124 */
125 public Bias<RangeRate> getRangeRateBias() {
126 return rangeRateBias;
127 }
128
129 /** Azimuth-elevation sigma.
130 * @return azimuth-elevation sigma
131 */
132 public double[] getAzElSigma() {
133 return azElSigma.clone();
134 }
135
136 /** Azimuth-elevation bias (may be null if bias is fixed to zero).
137 * @return azimuth-elevation bias
138 */
139 public Bias<AngularAzEl> getAzELBias() {
140 return azELBias;
141 }
142
143 /** Elevation refraction correction (may be null).
144 * @return elevation refraction correction
145 */
146 public AngularRadioRefractionModifier getRefractionCorrection() {
147 return refractionCorrection;
148 }
149
150 /** Tropospheric correction (may be null).
151 * @return tropospheric correction
152 */
153 public RangeTroposphericDelayModifier getRangeTroposphericCorrection() {
154 return rangeTroposphericCorrection;
155 }
156
157 /** Ionospheric model (may be null).
158 * @return ionospheric model
159 */
160 public IonosphericModel getIonosphericModel() {
161 return ionosphericModel;
162 }
163
164 }