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.ilrs;
18
19 import org.orekit.frames.Frame;
20
21 /**
22 * Container for Consolidated laser ranging Prediction File (CPF) header.
23 * <p>
24 * Note: Only the required fields are present.
25 * </p>
26 * @author Bryan Cazabonne
27 * @since 10.3
28 */
29 public class CPFHeader extends ILRSHeader {
30
31 /** Ephemeris source. */
32 private String source;
33
34 /** Sub-daily Ephemeris Sequence number. */
35 private int subDailySequenceNumber;
36
37 /** Time between table entries (UTC). */
38 private int step;
39
40 /** Compatibility with TIVs. */
41 private boolean isCompatibleWithTIVs;
42
43 /** Reference frame. */
44 private Frame refFrame;
45
46 /** Reference frame identifier. */
47 private int refFrameId;
48
49 /** Rotational angle type. */
50 private int rotationalAngleType;
51
52 /** Center of mass correction. */
53 private boolean isCenterOfMassCorrectionApplied;
54
55 /** Pulse Repetition Frequency (PRF) [Hz]. */
56 private double prf;
57
58 /** Transponder transmit delay [s]. */
59 private double transpTransmitDelay;
60
61 /** Transponder UTC offset [s]. */
62 private double transpUtcOffset;
63
64 /** Transponder Oscillator Drift in parts. */
65 private double transpOscDrift;
66
67 /** Transponder Clock Reference Time . */
68 private double transpClkRef;
69
70 /** Approximate center of mass to reflector offset [m]. */
71 private double centerOfMassOffset;
72
73 /** Empty constructor.
74 * <p>
75 * This constructor is not strictly necessary, but it prevents spurious
76 * javadoc warnings with JDK 18 and later.
77 * </p>
78 * @since 12.0
79 */
80 public CPFHeader() {
81 // nothing to do
82 }
83
84 /**
85 * Get the ephemeris source.
86 * @return the ephemeris source
87 */
88 public String getSource() {
89 return source;
90 }
91
92 /**
93 * Set the ephemeris source.
94 * @param source the ephemeris source to set
95 */
96 public void setSource(final String source) {
97 this.source = source;
98 }
99
100 /**
101 * Get the sub-daily ephemeris sequence number.
102 * @return the sub-daily ephemeris sequence number
103 */
104 public int getSubDailySequenceNumber() {
105 return subDailySequenceNumber;
106 }
107
108 /**
109 * Set the sub-daily ephemeris sequence number.
110 * @param subDailySequenceNumber the sub-daily ephemeris sequence number to set
111 */
112 public void setSubDailySequenceNumber(final int subDailySequenceNumber) {
113 this.subDailySequenceNumber = subDailySequenceNumber;
114 }
115
116 /**
117 * Get the time between table entries.
118 * @return the time between table entries in seconds
119 */
120 public int getStep() {
121 return step;
122 }
123
124 /**
125 * Set the time between table entries.
126 * @param step the time to set in seconds
127 */
128 public void setStep(final int step) {
129 this.step = step;
130 }
131
132 /**
133 * Get the flag for compatibility with TIVs.
134 * @return true if compatible with TIVs
135 */
136 public boolean isCompatibleWithTIVs() {
137 return isCompatibleWithTIVs;
138 }
139
140 /**
141 * Set the flag for compatibility with TIVs.
142 * @param isCompatibleWithTIVs true if compatible with TIVs
143 */
144 public void setIsCompatibleWithTIVs(final boolean isCompatibleWithTIVs) {
145 this.isCompatibleWithTIVs = isCompatibleWithTIVs;
146 }
147
148 /**
149 * Get the reference frame.
150 * @return the reference frame
151 */
152 public Frame getRefFrame() {
153 return refFrame;
154 }
155
156 /**
157 * Set the reference frame.
158 * @param refFrame the reference frame to set
159 */
160 public void setRefFrame(final Frame refFrame) {
161 this.refFrame = refFrame;
162 }
163
164 /**
165 * Get the reference frame identifier.
166 * @return the reference frame
167 */
168 public int getRefFrameId() {
169 return refFrameId;
170 }
171
172 /**
173 * Set the reference frame identifier.
174 * @param refFrameId the reference frame identifier to set
175 */
176 public void setRefFrameId(final int refFrameId) {
177 this.refFrameId = refFrameId;
178 }
179
180 /**
181 * Get the rotation angle type.
182 * @return the rotation angle type
183 */
184 public int getRotationalAngleType() {
185 return rotationalAngleType;
186 }
187
188 /**
189 * Set the rotation angle type.
190 * @param rotationalAngleType the rotation angle type to set
191 */
192 public void setRotationalAngleType(final int rotationalAngleType) {
193 this.rotationalAngleType = rotationalAngleType;
194 }
195
196 /**
197 * Get the flag telling if the center of mass correction is applied.
198 * @return true if center of mass correction is applied
199 */
200 public boolean isCenterOfMassCorrectionApplied() {
201 return isCenterOfMassCorrectionApplied;
202 }
203
204 /**
205 * Set the flag telling if the center of mass correction is applied.
206 * @param isCenterOfMassCorrectionApplied true if center of mass correction is applied
207 */
208 public void setIsCenterOfMassCorrectionApplied(final boolean isCenterOfMassCorrectionApplied) {
209 this.isCenterOfMassCorrectionApplied = isCenterOfMassCorrectionApplied;
210 }
211
212 /**
213 * Get the Pulse Repetition Frequency (PRF).
214 * @return the Pulse Repetition Frequency (PRF) in Hz
215 */
216 public double getPrf() {
217 return prf;
218 }
219
220 /**
221 * Set the Pulse Repetition Frequency (PRF).
222 * @param prf the ulse Repetition Frequency (PRF) to set in Hz
223 */
224 public void setPrf(final double prf) {
225 this.prf = prf;
226 }
227
228 /**
229 * Get the transponder transmit delay.
230 * @return the transponder transmit delay in seconds
231 */
232 public double getTranspTransmitDelay() {
233 return transpTransmitDelay;
234 }
235
236 /**
237 * Set the transponder transmit delay.
238 * @param transpTransmitDelay the transponder transmit delay to set in seconds
239 */
240 public void setTranspTransmitDelay(final double transpTransmitDelay) {
241 this.transpTransmitDelay = transpTransmitDelay;
242 }
243
244 /**
245 * Get the transponder UTC offset.
246 * @return the transponder UTC offset in seconds
247 */
248 public double getTranspUtcOffset() {
249 return transpUtcOffset;
250 }
251
252 /**
253 * Set the transponder UTC offset.
254 * @param transpUtcOffset the UTC offset to set in seconds
255 */
256 public void setTranspUtcOffset(final double transpUtcOffset) {
257 this.transpUtcOffset = transpUtcOffset;
258 }
259
260 /**
261 * Get the transponder Oscillator Drift in parts in 10^15.
262 * @return the transponder Oscillator Drift in parts.
263 */
264 public double getTranspOscDrift() {
265 return transpOscDrift;
266 }
267
268 /**
269 * Set the transponder Oscillator Drift in parts.
270 * @param transpOscDrift the transponder Oscillator Drift in parts in 10^15 to set
271 */
272 public void setTranspOscDrift(final double transpOscDrift) {
273 this.transpOscDrift = transpOscDrift;
274 }
275
276 /**
277 * Get the transponder Clock Reference Time.
278 * @return the transponder Clock Reference Time
279 */
280 public double getTranspClkRef() {
281 return transpClkRef;
282 }
283
284 /**
285 * Set the transponder Clock Reference Time.
286 * @param transpClkRef the transponder Clock Reference Time to set
287 */
288 public void setTranspClkRef(final double transpClkRef) {
289 this.transpClkRef = transpClkRef;
290 }
291
292 /**
293 * Get the approximate center of mass to reflector offset.
294 * @return the approximate center of mass to reflector offset in meters
295 */
296 public double getCenterOfMassOffset() {
297 return centerOfMassOffset;
298 }
299
300 /**
301 * Set the approximate center of mass to reflector offset.
302 * @param centerOfMassOffset the offset to set in meters
303 */
304 public void setCenterOfMassOffset(final double centerOfMassOffset) {
305 this.centerOfMassOffset = centerOfMassOffset;
306 }
307
308 }