![]() |
Earth Observation Mission CFI Software Orbit Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.22 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: OrbitId.h,v 1.31 2014-02-25 15:36:33 cavm Exp $ 00007 //-------------------------------------------------------------------- 00008 00009 #ifndef _ORBITID_H 00010 #define _ORBITID_H 00011 00012 //--INCLUDE----------------------------------------------------------- 00013 #include <CfiError.h> 00014 #include <CfiId.h> 00015 #include <ModelId.h> 00016 #include <OemFile.h> // AN-578 00017 #include <OrbitData.h> 00018 #include <OrbitFileDiagnostics.h> // ANR-692 00019 #include <OsfRec.h> 00020 #include <OsvRec.h> 00021 #include <PropagPreciseConf.h> 00022 #include <SP3File.h> 00023 #include <SatId.h> 00024 #include <StateVector.h> 00025 #include <TimeCorrelation.h> 00026 #include <TleRec.h> 00027 00028 //--NAMESPACES-------------------------------------------------------- 00029 00030 namespace EECFI 00031 { 00035 class XO_DECL OrbitIdCheckReport 00036 { 00037 friend class OrbitId; 00038 00039 public: 00040 long numOsvsOutsideLooseTolerance; 00041 std::vector<long> indexOsvsOutsideLooseTolerance; 00042 long numOsvsOutsideTightTolerance; 00043 std::vector<long> indexOsvsOutsideTightTolerance; 00044 std::vector<OrbitFileDiagnosticsReport> fileDiagnosticsReports; 00045 00046 OrbitIdCheckReport(); 00047 ~OrbitIdCheckReport() NOEXCEPT; 00048 00049 private: 00050 explicit OrbitIdCheckReport(void* report); 00051 }; // Added for ANR-692 00052 00056 class XO_DECL OrbitId : public CfiId 00057 { 00058 friend class ANXTime; 00059 friend class RelANXTime; 00060 friend class Swath; 00061 friend class SwathStar; 00062 friend class OrbitExtra; 00063 friend class SwathId; // AN-505 00064 friend class AttitudeDef; // AN-596 00065 00066 public: 00071 OrbitId(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, long orbit0, long driftMode, double ascMlstDrift, double inclination, long irep, long icyc, double rlong, double ascMlst); 00072 00075 OrbitId(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, long orbit0, const RefOrbitInfo& refOrbitInfo); 00076 00078 OrbitId(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, const double pos[3], const double vel[3], long absOrbit); 00079 00081 OrbitId(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, long orbitFileMode, const std::vector<std::string>& inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1); 00082 00084 OrbitId(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, const double pos[3], const double vel[3], long absOrbit, const PropagPreciseConf& preciseConf); 00085 00087 OrbitId(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, long orbitFileMode, const std::vector<std::string>& inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1, const PropagPreciseConf& preciseConf); 00088 00090 OrbitId(const SatId& satId, 00091 const ModelId& modelId, 00092 const TimeCorrelation& timeCor, 00093 long timeRef, 00094 long orbitFileMode, 00095 const std::vector<OsfFile>& osfData, 00096 long timeInitMode, 00097 double time0, 00098 double time1, 00099 long orbit0, 00100 long orbit1); 00102 OrbitId(const SatId& satId, 00103 const ModelId& modelId, 00104 const TimeCorrelation& timeCor, 00105 long timeRef, 00106 long orbitFileMode, 00107 const std::vector<OrbitFile>& osvData, 00108 long timeInitMode, 00109 double time0, 00110 double time1, 00111 long orbit0, 00112 long orbit1); 00116 OrbitId(const SatId& satId, 00117 const ModelId& modelId, 00118 const TimeCorrelation& timeCor, 00119 long timeRef, 00120 long orbitFileMode, 00121 const std::vector<OrbitFile>& osvData, 00122 const OrbitChangeData& orbitChangeData, 00123 long timeInitMode, 00124 double time0, 00125 double time1, 00126 long orbit0, 00127 long orbit1); // ANR-527 00129 OrbitId(const SatId& satId, 00130 const ModelId& modelId, 00131 const TimeCorrelation& timeCor, 00132 long timeRef, 00133 long orbitFileMode, 00134 const std::vector<DorisFile>& dorisData, 00135 long timeInitMode, 00136 double time0, 00137 double time1, 00138 long orbit0, 00139 long orbit1); 00143 OrbitId(const SatId& satId, 00144 const ModelId& modelId, 00145 const TimeCorrelation& timeCor, 00146 long timeRef, 00147 long orbitFileMode, 00148 const std::vector<DorisFile>& dorisData, 00149 const OrbitChangeData& orbitChangeData, 00150 long timeInitMode, 00151 double time0, 00152 double time1, 00153 long orbit0, 00154 long orbit1); // ANR-527 00155 00157 OrbitId(const SatId& satId, 00158 const ModelId& modelId, 00159 const TimeCorrelation& timeCor, 00160 long timeRef, 00161 long orbitFileMode, 00162 const std::vector<SP3File>& sp3Data, 00163 long timeInitMode, 00164 double time0, 00165 double time1); // AN-550 00166 00169 OrbitId(const SatId& satId, 00170 const ModelId& modelId, 00171 const TimeCorrelation& timeCor, 00172 const GeoOrbitInitData& geoOrbitInit); // Added for AN-353 00173 00175 OrbitId(const SatId& satId, 00176 const ModelId& modelId, 00177 const TimeCorrelation& timeCor, 00178 long timeRef, 00179 long orbitFileMode, 00180 const std::vector<OemFile>& oemData, 00181 long timeInitMode, 00182 double time0, 00183 double time1); // AN-578 00184 00186 OrbitId(OrbitId& orbitIdIn); 00187 00189 virtual ~OrbitId() EXCEPT; 00190 00194 void init(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, long orbit0, long driftMode, double ascMlstDrift, double inclination, long irep, long icyc, double rlong, double ascMlst); 00195 00197 void init(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, long orbit0, const RefOrbitInfo& refOrbitInfo); 00198 00200 void init(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, const double pos[3], const double vel[3], long absOrbit); 00201 00203 void init(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, long orbitFileMode, const std::vector<std::string>& inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1); 00204 00206 void init(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, const double pos[3], const double vel[3], long absOrbit, const PropagPreciseConf& preciseConf); 00207 00209 void init(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, long orbitFileMode, const std::vector<std::string>& inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1, const PropagPreciseConf& preciseConf); 00210 00213 void init(const SatId& satId, 00214 const ModelId& modelId, 00215 const TimeCorrelation& timeCor, 00216 const GeoOrbitInitData& geoOrbitInit); // Added for AN-353 00217 00219 void change(const OrbitChangeData& changeData); // Added for AN-527 00220 00222 SatId satId() const; 00223 00225 std::vector<OsvRec> getOsv() const; 00226 00228 void setOsv(const std::vector<OsvRec>& osvRecList); 00229 00231 std::vector<ANXExtra> getAnx() const; 00232 00234 void setAnx(const std::vector<ANXExtra>& anxList); 00235 00237 std::vector<OsfRecords> getOsf() const; 00238 00240 void setOsf(const std::vector<OsfRecords>& osvRecList); 00241 00243 ValidityTime getValTime() const; 00244 00246 void setValTime(const ValidityTime& valTime); 00247 00249 PropagPreciseConf getPrecisePropagConfig() const; 00250 00252 void setPrecisePropagConfig(const PropagPreciseConf& preciseConf); 00253 00255 void setGeoOrbitInfo(const GeoOrbitInfo& geoOrbitInfo); // Added for AN-353 00256 00258 GeoOrbitInfo getGeoOrbitInfo(); // Added for AN-353 00259 00261 OrbitalInfo getOrbitInfo(long absoluteOrbit) const; 00262 00271 void orbitInfoConfigure(long item, long option) const; // AN-523 00272 00274 OrbitInfo getOrbitNumbersFromRel(long relOrbit, long cycle) const; 00275 00277 OrbitInfo getOrbitNumbersFromPhase(long phase) const; 00278 00280 OrbitInfo getOrbitNumbersFromAbs(long absOrbit) const; 00281 00285 StateVector osvCompute(long mode, long timeRef, double time); // AN-860 00286 00290 StateVectorExtraInfo osvComputeExtra(long extraChoice) const; 00291 00303 StateVector positionOnOrbitToTime(long abs_orbit_number, long angle_type, double angle, double angle_rate, double angle_rate_rate, long deriv, long time_ref) const; 00304 00312 TleRec osvToTle(long timeMode, long timeRef, double time0, double time1, long orbit0, long orbit1) const; 00313 00342 OrbitIdCheckReport check(const OrbitFileDiagnosticsSettings& settings) const; 00343 00345 void operator=(const OrbitId& orbitIdIn); 00346 00347 protected: 00349 OrbitId(); 00350 00352 void eraseOrbit(); 00353 00355 GenericId* getId() const; // this is the xo_orbit_id variable 00356 00357 private: 00359 void dataFileInit(const SatId& satId, 00360 const ModelId& modelId, 00361 const TimeCorrelation& timeCor, 00362 long timeRef, 00363 long orbitFileMode, 00364 const void* fileData, 00365 long timeInitMode, 00366 double time0, 00367 double time1, 00368 long orbit0, 00369 long orbit1); 00370 00371 TimeCorrelation timeId; 00372 ModelId modelId; 00373 }; 00374 00375 } // namespace EECFI 00376 00377 #endif