CPFHeader.java

  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. import org.orekit.frames.Frame;

  19. /**
  20.  * Container for Consolidated laser ranging Prediction File (CPF) header.
  21.  * <p>
  22.  * Note: Only the required fields are present.
  23.  * </p>
  24.  * @author Bryan Cazabonne
  25.  * @since 10.3
  26.  */
  27. public class CPFHeader extends ILRSHeader {

  28.     /** Ephemeris source. */
  29.     private String source;

  30.     /** Sub-daily Ephemeris Sequence number. */
  31.     private int subDailySequenceNumber;

  32.     /** Time between table entries (UTC). */
  33.     private int step;

  34.     /** Compatibility with TIVs. */
  35.     private boolean isCompatibleWithTIVs;

  36.     /** Reference frame. */
  37.     private Frame refFrame;

  38.     /** Reference frame identifier. */
  39.     private int refFrameId;

  40.     /** Rotational angle type. */
  41.     private int rotationalAngleType;

  42.     /** Center of mass correction. */
  43.     private boolean isCenterOfMassCorrectionApplied;

  44.     /** Pulse Repetition Frequency (PRF) [Hz]. */
  45.     private double prf;

  46.     /** Transponder transmit delay [s]. */
  47.     private double transpTransmitDelay;

  48.     /** Transponder UTC offset [s]. */
  49.     private double transpUtcOffset;

  50.     /** Transponder Oscillator Drift in parts. */
  51.     private double transpOscDrift;

  52.     /** Transponder Clock Reference Time . */
  53.     private double transpClkRef;

  54.     /** Approximate center of mass to reflector offset [m]. */
  55.     private double centerOfMassOffset;

  56.     /** Empty constructor.
  57.      * <p>
  58.      * This constructor is not strictly necessary, but it prevents spurious
  59.      * javadoc warnings with JDK 18 and later.
  60.      * </p>
  61.      * @since 12.0
  62.      */
  63.     public CPFHeader() {
  64.         // nothing to do
  65.     }

  66.     /**
  67.      * Get the ephemeris source.
  68.      * @return the ephemeris source
  69.      */
  70.     public String getSource() {
  71.         return source;
  72.     }

  73.     /**
  74.      * Set the ephemeris source.
  75.      * @param source the ephemeris source to set
  76.      */
  77.     public void setSource(final String source) {
  78.         this.source = source;
  79.     }

  80.     /**
  81.      * Get the sub-daily ephemeris sequence number.
  82.      * @return the sub-daily ephemeris sequence number
  83.      */
  84.     public int getSubDailySequenceNumber() {
  85.         return subDailySequenceNumber;
  86.     }

  87.     /**
  88.      * Set the sub-daily ephemeris sequence number.
  89.      * @param subDailySequenceNumber the sub-daily ephemeris sequence number to set
  90.      */
  91.     public void setSubDailySequenceNumber(final int subDailySequenceNumber) {
  92.         this.subDailySequenceNumber = subDailySequenceNumber;
  93.     }

  94.     /**
  95.      * Get the time between table entries.
  96.      * @return the time between table entries in seconds
  97.      */
  98.     public int getStep() {
  99.         return step;
  100.     }

  101.     /**
  102.      * Set the time between table entries.
  103.      * @param step the time to set in seconds
  104.      */
  105.     public void setStep(final int step) {
  106.         this.step = step;
  107.     }

  108.     /**
  109.      * Get the flag for compatibility with TIVs.
  110.      * @return true if compatible with TIVs
  111.      */
  112.     public boolean isCompatibleWithTIVs() {
  113.         return isCompatibleWithTIVs;
  114.     }

  115.     /**
  116.      * Set the flag for compatibility with TIVs.
  117.      * @param isCompatibleWithTIVs true if compatible with TIVs
  118.      */
  119.     public void setIsCompatibleWithTIVs(final boolean isCompatibleWithTIVs) {
  120.         this.isCompatibleWithTIVs = isCompatibleWithTIVs;
  121.     }

  122.     /**
  123.      * Get the reference frame.
  124.      * @return the reference frame
  125.      */
  126.     public Frame getRefFrame() {
  127.         return refFrame;
  128.     }

  129.     /**
  130.      * Set the reference frame.
  131.      * @param refFrame the reference frame to set
  132.      */
  133.     public void setRefFrame(final Frame refFrame) {
  134.         this.refFrame = refFrame;
  135.     }

  136.     /**
  137.      * Get the reference frame identifier.
  138.      * @return the reference frame
  139.      */
  140.     public int getRefFrameId() {
  141.         return refFrameId;
  142.     }

  143.     /**
  144.      * Set the reference frame identifier.
  145.      * @param refFrameId the reference frame identifier to set
  146.      */
  147.     public void setRefFrameId(final int refFrameId) {
  148.         this.refFrameId = refFrameId;
  149.     }

  150.     /**
  151.      * Get the rotation angle type.
  152.      * @return the rotation angle type
  153.      */
  154.     public int getRotationalAngleType() {
  155.         return rotationalAngleType;
  156.     }

  157.     /**
  158.      * Set the rotation angle type.
  159.      * @param rotationalAngleType the rotation angle type to set
  160.      */
  161.     public void setRotationalAngleType(final int rotationalAngleType) {
  162.         this.rotationalAngleType = rotationalAngleType;
  163.     }

  164.     /**
  165.      * Get the flag telling if the center of mass correction is applied.
  166.      * @return true if center of mass correction is applied
  167.      */
  168.     public boolean isCenterOfMassCorrectionApplied() {
  169.         return isCenterOfMassCorrectionApplied;
  170.     }

  171.     /**
  172.      * Set the flag telling if the center of mass correction is applied.
  173.      * @param isCenterOfMassCorrectionApplied true if center of mass correction is applied
  174.      */
  175.     public void setIsCenterOfMassCorrectionApplied(final boolean isCenterOfMassCorrectionApplied) {
  176.         this.isCenterOfMassCorrectionApplied = isCenterOfMassCorrectionApplied;
  177.     }

  178.     /**
  179.      * Get the Pulse Repetition Frequency (PRF).
  180.      * @return the Pulse Repetition Frequency (PRF) in Hz
  181.      */
  182.     public double getPrf() {
  183.         return prf;
  184.     }

  185.     /**
  186.      * Set the Pulse Repetition Frequency (PRF).
  187.      * @param prf the ulse Repetition Frequency (PRF) to set in Hz
  188.      */
  189.     public void setPrf(final double prf) {
  190.         this.prf = prf;
  191.     }

  192.     /**
  193.      * Get the transponder transmit delay.
  194.      * @return the transponder transmit delay in seconds
  195.      */
  196.     public double getTranspTransmitDelay() {
  197.         return transpTransmitDelay;
  198.     }

  199.     /**
  200.      * Set the transponder transmit delay.
  201.      * @param transpTransmitDelay the transponder transmit delay to set in seconds
  202.      */
  203.     public void setTranspTransmitDelay(final double transpTransmitDelay) {
  204.         this.transpTransmitDelay = transpTransmitDelay;
  205.     }

  206.     /**
  207.      * Get the transponder UTC offset.
  208.      * @return the transponder UTC offset in seconds
  209.      */
  210.     public double getTranspUtcOffset() {
  211.         return transpUtcOffset;
  212.     }

  213.     /**
  214.      * Set the transponder UTC offset.
  215.      * @param transpUtcOffset the UTC offset to set in seconds
  216.      */
  217.     public void setTranspUtcOffset(final double transpUtcOffset) {
  218.         this.transpUtcOffset = transpUtcOffset;
  219.     }

  220.     /**
  221.      * Get the transponder Oscillator Drift in parts in 10^15.
  222.      * @return the transponder Oscillator Drift in parts.
  223.      */
  224.     public double getTranspOscDrift() {
  225.         return transpOscDrift;
  226.     }

  227.     /**
  228.      * Set the transponder Oscillator Drift in parts.
  229.      * @param transpOscDrift the transponder Oscillator Drift in parts in 10^15 to set
  230.      */
  231.     public void setTranspOscDrift(final double transpOscDrift) {
  232.         this.transpOscDrift = transpOscDrift;
  233.     }

  234.     /**
  235.      * Get the transponder Clock Reference Time.
  236.      * @return the transponder Clock Reference Time
  237.      */
  238.     public double getTranspClkRef() {
  239.         return transpClkRef;
  240.     }

  241.     /**
  242.      * Set the transponder Clock Reference Time.
  243.      * @param transpClkRef the transponder Clock Reference Time to set
  244.      */
  245.     public void setTranspClkRef(final double transpClkRef) {
  246.         this.transpClkRef = transpClkRef;
  247.     }

  248.     /**
  249.      * Get the approximate center of mass to reflector offset.
  250.      * @return the approximate center of mass to reflector offset in meters
  251.      */
  252.     public double getCenterOfMassOffset() {
  253.         return centerOfMassOffset;
  254.     }

  255.     /**
  256.      * Set the approximate center of mass to reflector offset.
  257.      * @param centerOfMassOffset the offset to set in meters
  258.      */
  259.     public void setCenterOfMassOffset(final double centerOfMassOffset) {
  260.         this.centerOfMassOffset = centerOfMassOffset;
  261.     }

  262. }