Earth Observation Mission CFI Software Orbit Software User Manual |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.26 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 <TleFile.h> // ANR-932 00027 #include <TleRec.h> 00028 00029 //--NAMESPACES-------------------------------------------------------- 00030 00031 namespace EECFI 00032 { 00036 class XO_DECL OrbitIdCheckReport 00037 { 00038 friend class OrbitId; 00039 00040 public: 00041 long numOsvsOutsideLooseTolerance; 00042 std::vector<long> indexOsvsOutsideLooseTolerance; 00043 long numOsvsOutsideTightTolerance; 00044 std::vector<long> indexOsvsOutsideTightTolerance; 00045 std::vector<OrbitFileDiagnosticsReport> fileDiagnosticsReports; 00046 00047 OrbitIdCheckReport(); 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: 00069 OrbitId(const OrbitId& other); 00070 00075 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); 00076 00079 OrbitId(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, long orbit0, const RefOrbitInfo& refOrbitInfo); 00080 00082 OrbitId(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, const double pos[3], const double vel[3], long absOrbit); 00083 00085 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); 00086 00088 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); 00089 00091 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); 00092 00094 OrbitId(const SatId& satId, 00095 const ModelId& modelId, 00096 const TimeCorrelation& timeCor, 00097 long timeRef, 00098 long orbitFileMode, 00099 const std::vector<OsfFile>& osfData, 00100 long timeInitMode, 00101 double time0, 00102 double time1, 00103 long orbit0, 00104 long orbit1); 00106 OrbitId(const SatId& satId, 00107 const ModelId& modelId, 00108 const TimeCorrelation& timeCor, 00109 long timeRef, 00110 long orbitFileMode, 00111 const std::vector<OrbitFile>& osvData, 00112 long timeInitMode, 00113 double time0, 00114 double time1, 00115 long orbit0, 00116 long orbit1); 00120 OrbitId(const SatId& satId, 00121 const ModelId& modelId, 00122 const TimeCorrelation& timeCor, 00123 long timeRef, 00124 long orbitFileMode, 00125 const std::vector<OrbitFile>& osvData, 00126 const OrbitChangeData& orbitChangeData, 00127 long timeInitMode, 00128 double time0, 00129 double time1, 00130 long orbit0, 00131 long orbit1); // ANR-527 00133 OrbitId(const SatId& satId, 00134 const ModelId& modelId, 00135 const TimeCorrelation& timeCor, 00136 long timeRef, 00137 long orbitFileMode, 00138 const std::vector<DorisFile>& dorisData, 00139 long timeInitMode, 00140 double time0, 00141 double time1, 00142 long orbit0, 00143 long orbit1); 00147 OrbitId(const SatId& satId, 00148 const ModelId& modelId, 00149 const TimeCorrelation& timeCor, 00150 long timeRef, 00151 long orbitFileMode, 00152 const std::vector<DorisFile>& dorisData, 00153 const OrbitChangeData& orbitChangeData, 00154 long timeInitMode, 00155 double time0, 00156 double time1, 00157 long orbit0, 00158 long orbit1); // ANR-527 00159 00161 OrbitId(const SatId& satId, 00162 const ModelId& modelId, 00163 const TimeCorrelation& timeCor, 00164 long timeRef, 00165 long orbitFileMode, 00166 const std::vector<SP3File>& sp3Data, 00167 long timeInitMode, 00168 double time0, 00169 double time1); // AN-550 00170 00173 OrbitId(const SatId& satId, 00174 const ModelId& modelId, 00175 const TimeCorrelation& timeCor, 00176 const GeoOrbitInitData& geoOrbitInit); // Added for AN-353 00177 00179 OrbitId(const SatId& satId, 00180 const ModelId& modelId, 00181 const TimeCorrelation& timeCor, 00182 long timeRef, 00183 long orbitFileMode, 00184 const std::vector<OemFile>& oemData, 00185 long timeInitMode, 00186 double time0, 00187 double time1); // AN-578 00188 00190 OrbitId(const SatId& satId, 00191 const ModelId& modelId, 00192 const TimeCorrelation& timeCor, 00193 long timeRef, 00194 long orbitFileMode, 00195 const std::vector<TleFile>& tleData, 00196 long timeInitMode, 00197 double time0, 00198 double time1); // ANR-932 00199 00201 OrbitId(OrbitId& orbitIdIn); 00202 00204 virtual ~OrbitId() EXCEPT; 00205 00209 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); 00210 00212 void init(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, long orbit0, const RefOrbitInfo& refOrbitInfo); 00213 00215 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); 00216 00218 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); 00219 00221 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); 00222 00224 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); 00225 00228 void init(const SatId& satId, 00229 const ModelId& modelId, 00230 const TimeCorrelation& timeCor, 00231 const GeoOrbitInitData& geoOrbitInit); // Added for AN-353 00232 00234 void change(const OrbitChangeData& changeData); // Added for AN-527 00235 00237 SatId satId() const; 00238 00240 std::vector<OsvRec> getOsv() const; 00241 00243 void setOsv(const std::vector<OsvRec>& osvRecList); 00244 00246 std::vector<ANXExtra> getAnx() const; 00247 00249 void setAnx(const std::vector<ANXExtra>& anxList); 00250 00252 std::vector<OsfRecords> getOsf() const; 00253 00255 void setOsf(const std::vector<OsfRecords>& osvRecList); 00256 00258 ValidityTime getValTime() const; 00259 00261 void setValTime(const ValidityTime& valTime); 00262 00264 PropagPreciseConf getPrecisePropagConfig() const; 00265 00267 void setPrecisePropagConfig(const PropagPreciseConf& preciseConf); 00268 00270 void setGeoOrbitInfo(const GeoOrbitInfo& geoOrbitInfo); // Added for AN-353 00271 00273 GeoOrbitInfo getGeoOrbitInfo(); // Added for AN-353 00274 00276 OrbitalInfo getOrbitInfo(long absoluteOrbit) const; 00277 00286 void orbitInfoConfigure(long item, long option) const; // AN-523 00287 00289 OrbitInfo getOrbitNumbersFromRel(long relOrbit, long cycle) const; 00290 00292 OrbitInfo getOrbitNumbersFromPhase(long phase) const; 00293 00295 OrbitInfo getOrbitNumbersFromAbs(long absOrbit) const; 00296 00300 StateVector osvCompute(long mode, long timeRef, double time); // AN-860 00301 00305 StateVectorExtraInfo osvComputeExtra(long extraChoice) const; 00306 00318 StateVector positionOnOrbitToTime(long abs_orbit_number, long angle_type, double angle, double angle_rate, double angle_rate_rate, long deriv, long time_ref) const; 00319 00327 TleRec osvToTle(long timeMode, long timeRef, double time0, double time1, long orbit0, long orbit1) const; 00328 00357 OrbitIdCheckReport check(const OrbitFileDiagnosticsSettings& settings) const; 00358 00361 OrbitId& operator=(const OrbitId& other); 00362 00363 protected: 00365 OrbitId(); 00366 00368 void eraseOrbit(); 00369 00370 private: 00372 void dataFileInit(const SatId& satId, 00373 const ModelId& modelId, 00374 const TimeCorrelation& timeCor, 00375 long timeRef, 00376 long orbitFileMode, 00377 const void* fileData, 00378 long timeInitMode, 00379 double time0, 00380 double time1, 00381 long orbit0, 00382 long orbit1); 00383 00384 TimeCorrelation timeId; 00385 ModelId modelId; 00386 }; 00387 00388 } // namespace EECFI 00389 00390 #endif