.. _program_listing_file_applications_ephemeris_lunanet_ephemeris.h: Program Listing for File lunanet_ephemeris.h ============================================ |exhale_lsh| :ref:`Return to documentation for file ` (``applications/ephemeris/lunanet_ephemeris.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include "lupnt/conversions/frame_converter.h" #include "lupnt/core/constants.h" #include "lupnt/core/definitions.h" namespace lupnt { struct EphemerisFitErrorStats { Vec4d rms_pos_m = Vec4d::Zero(); // [R, T, N, 3D] position RMS error [m] Vec4d rms_vel_mps = Vec4d::Zero(); // [R, T, N, 3D] velocity RMS error [m/s] Vec4d p95_pos_m = Vec4d::Zero(); // [R, T, N, 3D] 95th-percentile |position error| [m] Vec4d p95_vel_mps = Vec4d::Zero(); // [R, T, N, 3D] 95th-percentile |velocity error| [m/s] }; struct EphemerisFitOptions { int poly_order = 8; bool use_keplerian_baseline = true; double gm = GM_MOON; Frame frame = Frame::MOON_CI; int num_fourier_terms = 0; }; class LansEphemeris { public: LansEphemeris() = default; explicit LansEphemeris(EphemerisFitOptions options) : options_(options) {} VecXd Fit(const VecXd& t_s, const MatXd& rv) const; MatXd Eval(const VecXd& t_s, const VecXd& params) const; EphemerisFitErrorStats EvalError(const VecXd& t_s, const MatXd& rv_ref, const VecXd& params) const; int NumParams() const; std::vector ParamNames() const; const EphemerisFitOptions& GetOptions() const { return options_; } private: EphemerisFitOptions options_; }; } // namespace lupnt