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