Earth Observation Mission CFI Software Orbit Software User Manual |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.11 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: OrbitData.h,v 1.33 2014-03-25 07:51:59 cavm Exp $ 00007 //-------------------------------------------------------------------- 00008 00013 00014 #ifndef __EECFI_ORBITDATA__ 00015 #define __EECFI_ORBITDATA__ 00016 00017 //--INCLUDE----------------------------------------------------------- 00018 #include "DataHandlingData.h" 00019 #include "LibData.h" 00020 #include "OsfFile.h" 00021 #include "OrbitDllExport.h" 00022 00023 //--NAMESPACES-------------------------------------------------------- 00024 using namespace std; 00025 00026 namespace EECFI 00027 { 00028 //------------------------------------------------------ 00029 // CONSTANT DATA 00030 //------------------------------------------------------ 00032 #define XOCFI_NUM_CHECK_PARAMS 6 00033 00034 /* AN-353: Geostationary default values */ 00036 #define XOCFI_GEO_DEFAULT_LATITUDE 0. 00037 00039 #define XOCFI_GEO_DEFAULT_ALTITUDE 35786000. 00040 00041 //------------------------------------------------------ 00042 // DATA ENUMERATION 00043 // Enumeration values are defined in an equivalent way to the C library 00044 // except for the prefix that has been changed from XX_ to XXCFI_ 00045 //------------------------------------------------------ 00046 00048 typedef enum 00049 { 00050 XOCFI_ORBIT_EXTRA_DEP_NODAL_PERIOD = 0, 00051 XOCFI_ORBIT_EXTRA_DEP_UTC_CURRENT_ANX, 00052 XOCFI_ORBIT_EXTRA_DEP_ORBIT_NUMBER, 00053 XOCFI_ORBIT_EXTRA_DEP_SEC_SINCE_ANX, 00054 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_A, 00055 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_E, 00056 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_I, 00057 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_RA, 00058 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_W, 00059 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_M, 00060 XOCFI_ORBIT_EXTRA_NUM_DEP_ELEMENTS 00061 } OrbitExtraModelMKODependantEnum; 00062 00064 typedef enum 00065 { 00066 XOCFI_ORBIT_EXTRA_GEOC_LONG = 0, 00067 XOCFI_ORBIT_EXTRA_GEOD_LAT, 00068 XOCFI_ORBIT_EXTRA_GEOD_ALT, 00069 XOCFI_ORBIT_EXTRA_GEOC_LONG_D, 00070 XOCFI_ORBIT_EXTRA_GEOD_LAT_D, 00071 XOCFI_ORBIT_EXTRA_GEOD_ALT_D, 00072 XOCFI_ORBIT_EXTRA_GEOC_LONG_2D, 00073 XOCFI_ORBIT_EXTRA_GEOD_LAT_2D, 00074 XOCFI_ORBIT_EXTRA_GEOD_ALT_2D, 00075 XOCFI_ORBIT_EXTRA_RAD_CUR_PARALLEL_MERIDIAN, 00076 XOCFI_ORBIT_EXTRA_RAD_CUR_ORTHO_MERIDIAN, 00077 XOCFI_ORBIT_EXTRA_RAD_CUR_ALONG_GROUNDTRACK, 00078 XOCFI_ORBIT_EXTRA_NORTH_VEL, 00079 XOCFI_ORBIT_EXTRA_EAST_VEL, 00080 XOCFI_ORBIT_EXTRA_MAG_VEL, 00081 XOCFI_ORBIT_EXTRA_AZ_VEL, 00082 XOCFI_ORBIT_EXTRA_NORTH_ACC, 00083 XOCFI_ORBIT_EXTRA_EAST_ACC, 00084 XOCFI_ORBIT_EXTRA_GROUNDTRACK_ACC, 00085 XOCFI_ORBIT_EXTRA_AZ_ACC, 00086 XOCFI_ORBIT_EXTRA_SAT_ECLIPSE_FLAG, 00087 XOCFI_ORBIT_EXTRA_SZA, 00088 XOCFI_ORBIT_EXTRA_MLST, 00089 XOCFI_ORBIT_EXTRA_TLST, 00090 XOCFI_ORBIT_EXTRA_TRUE_SUN_RA, 00091 XOCFI_ORBIT_EXTRA_TRUE_SUN_DEC, 00092 XOCFI_ORBIT_EXTRA_TRUE_SUN_SEMIDIAM, 00093 XOCFI_ORBIT_EXTRA_MOON_RA, 00094 XOCFI_ORBIT_EXTRA_MOON_DEC, 00095 XOCFI_ORBIT_EXTRA_MOON_SEMI_DIAM, 00096 XOCFI_ORBIT_EXTRA_MOON_AREA_LIT, 00097 XOCFI_ORBIT_EXTRA_OSC_KEPL_A, 00098 XOCFI_ORBIT_EXTRA_OSC_KEPL_E, 00099 XOCFI_ORBIT_EXTRA_OSC_KEPL_I, 00100 XOCFI_ORBIT_EXTRA_OSC_KEPL_RA, 00101 XOCFI_ORBIT_EXTRA_OSC_KEPL_W, 00102 XOCFI_ORBIT_EXTRA_OSC_KEPL_M, 00103 XOCFI_ORBIT_EXTRA_ORBIT_RAD, 00104 XOCFI_ORBIT_EXTRA_RADIAL_ORB_VEL, 00105 XOCFI_ORBIT_EXTRA_TRANS_ORB_VEL, 00106 XOCFI_ORBIT_EXTRA_ORB_VEL_MAG, 00107 XOCFI_ORBIT_EXTRA_RA_SAT, 00108 XOCFI_ORBIT_EXTRA_DEC_SAT, 00109 XOCFI_ORBIT_EXTRA_EARTH_ROTATION_ANGLE, 00110 XOCFI_ORBIT_EXTRA_RA_SAT_D, 00111 XOCFI_ORBIT_EXTRA_RA_SAT_2D, 00112 XOCFI_ORBIT_EXTRA_OSC_TRUE_LAT, 00113 XOCFI_ORBIT_EXTRA_OSC_TRUE_LAT_D, 00114 XOCFI_ORBIT_EXTRA_OSC_TRUE_LAT_2D, 00115 XOCFI_ORBIT_EXTRA_NUM_INDEP_ELEMENTS 00116 00117 } OrbitExtraModelMKOIndependantEnum; 00118 00120 typedef enum 00121 { 00122 // model independant 00123 XOCFI_ORBIT_EXTRA_NO_RESULTS = 0, 00124 XOCFI_ORBIT_EXTRA_GEOLOCATION = 1, 00125 XOCFI_ORBIT_EXTRA_GEOLOCATION_D = 2, 00126 XOCFI_ORBIT_EXTRA_GEOLOCATION_2D = 4, 00127 XOCFI_ORBIT_EXTRA_GEOLOCATION_EXTRA = 8, 00128 XOCFI_ORBIT_EXTRA_EARTH_FIXED_D = 16, 00129 XOCFI_ORBIT_EXTRA_EARTH_FIXED_2D = 32, 00130 XOCFI_ORBIT_EXTRA_SUN = 64, 00131 XOCFI_ORBIT_EXTRA_MOON = 128, 00132 XOCFI_ORBIT_EXTRA_OSCULATING_KEPLER = 256, 00133 XOCFI_ORBIT_EXTRA_INERTIAL_AUX = 512, 00134 // model dependant 00135 XOCFI_ORBIT_EXTRA_DEP_ANX_TIMING = 1024, 00136 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPLER = 2048, 00137 XOCFI_ORBIT_EXTRA_ALL_RESULTS = 4095 00138 00139 }OrbitExtraChoiceEnum; 00140 00142 typedef enum 00143 { 00144 XOCFI_SAT_DEFAULT = XLCFI_SAT_DEFAULT, 00145 XOCFI_SAT_DEFAULT1 = XLCFI_SAT_DEFAULT1, 00146 XOCFI_SAT_DEFAULT2 = XLCFI_SAT_DEFAULT2, 00147 XOCFI_SAT_DEFAULT3 = XLCFI_SAT_DEFAULT3, 00148 XOCFI_SAT_DEFAULT4 = XLCFI_SAT_DEFAULT4, 00149 XOCFI_SAT_DEFAULT5 = XLCFI_SAT_DEFAULT5, 00150 XOCFI_SAT_DEFAULT6 = XLCFI_SAT_DEFAULT6, 00151 XOCFI_SAT_DEFAULT7 = XLCFI_SAT_DEFAULT7, 00152 XOCFI_SAT_DEFAULT8 = XLCFI_SAT_DEFAULT8, 00153 XOCFI_SAT_DEFAULT9 = XLCFI_SAT_DEFAULT9, 00154 XOCFI_SAT_ERS1 = XLCFI_SAT_ERS1, 00155 XOCFI_SAT_ERS2 = XLCFI_SAT_ERS2, 00156 XOCFI_SAT_ENVISAT = XLCFI_SAT_ENVISAT, 00157 XOCFI_SAT_METOP1 = XLCFI_SAT_METOP1, 00158 XOCFI_SAT_METOP2 = XLCFI_SAT_METOP2, 00159 XOCFI_SAT_METOP3 = XLCFI_SAT_METOP3, 00160 XOCFI_SAT_CRYOSAT = XLCFI_SAT_CRYOSAT, 00161 XOCFI_SAT_ADM = XLCFI_SAT_ADM, 00162 XOCFI_SAT_GOCE = XLCFI_SAT_GOCE, 00163 XOCFI_SAT_SMOS = XLCFI_SAT_SMOS, 00164 XOCFI_SAT_TERRASAR = XLCFI_SAT_TERRASAR, 00165 XOCFI_SAT_EARTHCARE = XLCFI_SAT_EARTHCARE, 00166 XOCFI_SAT_SWARM_A = XLCFI_SAT_SWARM_A, 00167 XOCFI_SAT_SWARM_B = XLCFI_SAT_SWARM_B, 00168 XOCFI_SAT_SWARM_C = XLCFI_SAT_SWARM_C, 00169 XOCFI_SAT_SENTINEL_1A = XLCFI_SAT_SENTINEL_1A, 00170 XOCFI_SAT_SENTINEL_1B = XLCFI_SAT_SENTINEL_1B, 00171 XOCFI_SAT_SENTINEL_2 = XLCFI_SAT_SENTINEL_2, 00172 XOCFI_SAT_SENTINEL_3 = XLCFI_SAT_SENTINEL_3, 00173 XOCFI_SAT_SEOSAT = XLCFI_SAT_SEOSAT, 00174 XOCFI_SAT_SENTINEL_1C = XLCFI_SAT_SENTINEL_1C, 00175 XOCFI_SAT_SENTINEL_2A = XLCFI_SAT_SENTINEL_2A, 00176 XOCFI_SAT_SENTINEL_2B = XLCFI_SAT_SENTINEL_2B, 00177 XOCFI_SAT_SENTINEL_2C = XLCFI_SAT_SENTINEL_2C, 00178 XOCFI_SAT_SENTINEL_3A = XLCFI_SAT_SENTINEL_3A, 00179 XOCFI_SAT_SENTINEL_3B = XLCFI_SAT_SENTINEL_3B, 00180 XOCFI_SAT_SENTINEL_3C = XLCFI_SAT_SENTINEL_3C, 00181 XOCFI_SAT_JASON_CSA = XLCFI_SAT_JASON_CSA, // AN-531 00182 XOCFI_SAT_JASON_CSB = XLCFI_SAT_JASON_CSB, // AN-531 00183 XOCFI_SAT_METOP_SG_A1 = XLCFI_SAT_METOP_SG_A1, // AN-530 00184 XOCFI_SAT_METOP_SG_A2 = XLCFI_SAT_METOP_SG_A2, // AN-530 00185 XOCFI_SAT_METOP_SG_A3 = XLCFI_SAT_METOP_SG_A3, // AN-530 00186 XOCFI_SAT_METOP_SG_B1 = XLCFI_SAT_METOP_SG_B1, // AN-530 00187 XOCFI_SAT_METOP_SG_B2 = XLCFI_SAT_METOP_SG_B2, // AN-530 00188 XOCFI_SAT_METOP_SG_B3 = XLCFI_SAT_METOP_SG_B3, // AN-530 00189 XOCFI_SAT_SENTINEL_5P = XLCFI_SAT_SENTINEL_5P, // AN-502 00190 XOCFI_SAT_BIOMASS = XLCFI_SAT_BIOMASS, // AN-601 00191 XOCFI_SAT_SENTINEL_5 = XLCFI_SAT_SENTINEL_5, // AN-639 00192 XOCFI_SAT_SAOCOM_CS = XLCFI_SAT_SAOCOM_CS, // AN-640 00193 XOCFI_SAT_GENERIC = XLCFI_SAT_GENERIC, 00194 // AN-353 00195 XOCFI_SAT_GENERIC_GEO = XLCFI_SAT_GENERIC_GEO, 00196 XOCFI_SAT_MTG = XLCFI_SAT_MTG, 00197 // END AN-353 00198 XOCFI_SAT_GENERIC_MEO = XLCFI_SAT_GENERIC_MEO // AN-550 00199 } SatIdOrbitEnum; 00200 00202 typedef enum 00203 { 00204 XOCFI_TIME_UNDEF = XLCFI_TIME_UNDEF, 00205 XOCFI_TIME_TAI = XLCFI_TIME_TAI, 00206 XOCFI_TIME_UTC = XLCFI_TIME_UTC, 00207 XOCFI_TIME_UT1 = XLCFI_TIME_UT1, 00208 XOCFI_TIME_GPS = XLCFI_TIME_GPS 00209 } TimeRefOrbitEnum; 00210 00212 typedef enum 00213 { 00214 XOCFI_TIME_REF_OF_TAI = XDCFI_TIME_REF_OF_TAI, 00215 XOCFI_TIME_REF_OF_UTC = XDCFI_TIME_REF_OF_UTC, 00216 XOCFI_TIME_REF_OF_UT1 = XDCFI_TIME_REF_OF_UT1, 00217 XOCFI_TIME_REF_OF_GPS = XDCFI_TIME_REF_OF_GPS 00218 } TimeRefOfOrbitEnum; 00219 00221 typedef enum 00222 { 00223 XOCFI_SEL_FILE = 0, 00224 XOCFI_SEL_TIME, 00225 XOCFI_SEL_ORBIT, 00226 XOCFI_SEL_DEFAULT 00227 } InitModeEnum; 00228 00230 typedef enum 00231 { 00232 XOCFI_ORBIT_INIT_UNKNOWN_MODE = -1, 00233 XOCFI_ORBIT_INIT_AUTO = XDCFI_AUTO, 00234 XOCFI_ORBIT_INIT_ORBIT_CHANGE_MODE = XDCFI_ORBIT_CHANGE, 00235 XOCFI_ORBIT_INIT_STATE_VECTOR_MODE = XDCFI_STATE_VECTOR, 00236 XOCFI_ORBIT_INIT_OSF_MODE = XDCFI_OSF_TYPE, 00237 XOCFI_ORBIT_INIT_POF_MODE = XDCFI_POF_TYPE, 00238 XOCFI_ORBIT_INIT_ROF_MODE = XDCFI_ROF_TYPE, 00239 XOCFI_ORBIT_INIT_DORIS_MODE = XDCFI_DORIS_TYPE, 00240 XOCFI_ORBIT_INIT_POF_N_DORIS_MODE = XDCFI_POF_N_DORIS_TYPE, 00241 XOCFI_ORBIT_INIT_OEF_OSF_MODE = XDCFI_OEF_OSF_TYPE, 00242 XOCFI_ORBIT_INIT_OEF_POF_MODE = XDCFI_OEF_POF_TYPE, 00243 XOCFI_ORBIT_INIT_TLE_MODE = XDCFI_TLE_TYPE, 00244 XOCFI_ORBIT_INIT_SP3_MODE = XDCFI_SP3_TYPE, // AN-550 00245 XOCFI_ORBIT_INIT_OEM_MODE = XDCFI_OEM_TYPE, // AN-578 00246 XOCFI_ORBIT_INIT_STATE_VECTOR_PRECISE_MODE, 00247 XOCFI_ORBIT_INIT_POF_PRECISE_MODE, 00248 XOCFI_ORBIT_INIT_ROF_PRECISE_MODE, 00249 XOCFI_ORBIT_INIT_DORIS_PRECISE_MODE, 00250 XOCFI_ORBIT_INIT_OEF_POF_PRECISE_MODE, 00251 XOCFI_ORBIT_INIT_POF_N_DORIS_PRECISE_MODE, 00252 XOCFI_ORBIT_INIT_GEO_LON_MODE, // AN-353 00253 XOCFI_ORBIT_INIT_TLE_SDP4_MODE, // AN-494 00254 XOCFI_ORBIT_INIT_TLE_SGP4_MODE, // AN-494 00255 XOCFI_ORBIT_INIT_USER_OSV_LIST_MODE, // AN-497 00256 XOCFI_ORBIT_INIT_POF_ORBNUM_ADJ_MODE, /* ANR-527 */ 00257 XOCFI_ORBIT_INIT_ROF_ORBNUM_ADJ_MODE, /* ANR-527 */ 00258 XOCFI_ORBIT_INIT_DORIS_ORBNUM_ADJ_MODE, /* ANR-527 */ 00259 XOCFI_ORBIT_INIT_OEM_ORBNUM_ADJ_MODE, // AN-578 00260 XOCFI_ORBIT_INIT_MAX_VALUE 00261 00262 } OrbitInitModeEnum; 00263 00265 typedef enum 00266 { 00267 XOCFI_INTERPOL_MODEL_DEFAULT = 0 00268 } InterpolModelEnum; 00269 00271 typedef enum 00272 { 00273 // AN-497 00274 XOCFI_PROPAG_MODEL_NOT_INITIALIZED = -1, 00275 XOCFI_PROPAG_MODEL_MEAN_KEPL = 0, 00276 XOCFI_PROPAG_MODEL_SPOT = 1, 00277 XOCFI_PROPAG_MODEL_TLE = 2, 00278 XOCFI_PROPAG_MODEL_PRECISE = 3, 00279 XOCFI_PROPAG_MODEL_GEO = 4, 00280 XOCFI_PROPAG_MODEL_AUTO = 10, 00281 XOCFI_PROPAG_MODEL_DOUBLE = 100 00282 } PropagModelEnum; 00283 00285 typedef enum 00286 { 00287 XOCFI_NOSUNSYNC_DRIFT = 0, 00288 XOCFI_NOSUNSYNC_INCLINATION, 00289 XOCFI_NOSUNSYNC_DRIFT_NONLINEAR, 00290 XOCFI_NOSUNSYNC_USE_SIM_MODEL = 10 00291 } NoSunSychronousModeEnum; 00292 00294 typedef enum 00295 { 00296 XOCFI_OSV_PRECISE_NO = 1, 00297 XOCFI_OSV_PRECISE_MINUTE, 00298 XOCFI_OSV_PRECISE_TEN_SECONDS 00299 00300 } OsvPreciseEnum; 00301 00303 typedef enum 00304 { 00305 XOCFI_REF_FILETYPE_OSF = 1, 00306 XOCFI_REF_FILETYPE_OEF_OSF, 00307 XOCFI_REF_FILETYPE_POF, 00308 XOCFI_REF_FILETYPE_OEF_POF, 00309 XOCFI_REF_FILETYPE_DORIS_NAV, 00310 XOCFI_REF_FILETYPE_ROF, 00311 XOCFI_REF_FILETYPE_DORIS_PREM, 00312 XOCFI_REF_FILETYPE_DORIS_PREC 00313 00314 } RefFiletypeEnum; 00315 00317 typedef enum 00318 { 00319 XOCFI_NO_PHASE_INCREMENT = 0, 00320 XOCFI_PHASE_INCREMENT = 1 00321 } GenOsfPhaseIncrementEnum; 00322 00324 typedef enum 00325 { 00326 XOCFI_FIT_TLE = XDCFI_FIT_TLE, 00327 XOCFI_FIT_TLE_LIST = XDCFI_FIT_TLE_LIST, 00328 XOCFI_ONE_TLE_PER_OSV = XDCFI_ONE_TLE_PER_OSV 00329 } TLEFitModeEnum; 00330 00332 typedef enum 00333 { 00334 XOCFI_SEARCH_FORWARD = 1, 00335 XOCFI_SEARCH_BACKWARD = -1 00336 } GenOsfSearchDirectionEnum; 00337 00339 typedef enum 00340 { 00341 XOCFI_DEFAULT_VALUES = XDCFI_DEFAULT_VALUES, 00342 XOCFI_USER_VALUES = XDCFI_USER_VALUES 00343 } OrbitPrecisePropagUserFlagEnum; 00344 00346 typedef enum 00347 { 00348 XOCFI_NOT_SELECT = XDCFI_NOT_SELECT, 00349 XOCFI_SELECT = XDCFI_SELECT 00350 } OrbitPrecisePropagSelectionFlagEnum; 00351 00353 typedef enum 00354 { 00355 XOCFI_SGA_USE_PARAMETERS = XDCFI_SGA_USE_PARAMETERS, 00356 XOCFI_SGA_READ_VALUES_FROM_FILE = XDCFI_SGA_READ_VALUES_FROM_FILE 00357 } OrbitPrecisePropagSgaFlagEnum; 00358 00360 typedef enum 00361 { 00362 XOCFI_GC_LONGITUDE_ONLY 00363 } GeoCoordEnum; // Created for AN-353 00364 00365 00367 typedef enum 00368 { 00369 XOCFI_FILTER_OUTLIERS 00370 } OrbitDataFilterEnum; // Created for ANR-382/455 00371 00373 typedef enum 00374 { 00375 XOCFI_REMOVE = 0, 00376 XOCFI_SMOOTH 00377 } OrbitDataFilterActionEnum; // Created for ANR-382/455 00378 00380 typedef enum 00381 { 00382 XOCFI_ORBIT_ID_CHANGE_OSF = 0, 00383 XOCFI_ORBIT_ID_CHANGE_TIME_ORBIT 00384 } OrbitIdChangeEnum; // ANR-527 00385 00387 typedef enum 00388 { 00389 XOCFI_ORBIT_INFO_ITEM_SMX 00390 } OrbitInfoItemsEnum; // AN-523 00391 00393 typedef enum 00394 { 00395 XOCFI_DEACTIVATE_ITEM, 00396 XOCFI_ACTIVATE_ITEM 00397 } OrbitInfoFlagEnum; // AN-523 00398 00400 typedef enum 00401 { 00402 XOCFI_ORBIT_ABS = 0, 00403 XOCFI_ORBIT_REL = 1 00404 } XOOrbitTypeEnum; //AN-596 00405 00407 typedef enum 00408 { 00409 XOCFI_TIME_TYPE, 00410 XOCFI_ORBIT_TYPE, 00411 XOCFI_BOTH_TYPE 00412 } XOTimeTypeEnum; 00413 // END AN-596 00414 00415 //------------------------------------------------------ 00416 // DATA STRUCTURES 00417 //------------------------------------------------------ 00418 00420 class XO_DECL ANXExtra 00421 { 00422 public: 00423 long absOrbit; 00424 double tAnx; 00425 double tNod; 00426 00428 ANXExtra() 00429 { 00430 absOrbit = -1; 00431 tAnx = -1; 00432 tNod = -1; 00433 }; 00434 00436 ANXExtra( long absOrb, double timeAnx, double timeNod ) 00437 { 00438 absOrbit = absOrb; 00439 tAnx = timeAnx; 00440 tNod = timeNod; 00441 } 00442 00443 }; 00444 00446 class XO_DECL ValidityTime 00447 { 00448 public: 00449 long timeRef; 00450 double start; 00451 double stop; 00452 00454 ValidityTime() 00455 { 00456 timeRef = -1; 00457 start = -1; 00458 stop = -1; 00459 } 00460 00462 ValidityTime( long timeReference, double startVal, double stopVal ) 00463 { 00464 timeRef = timeReference; 00465 start = startVal; 00466 stop = stopVal; 00467 } 00468 }; 00469 00471 class XO_DECL OrbitInfo 00472 { 00473 public: 00474 long absOrbit; 00475 long relOrbit; 00476 long cycle; 00477 long phase; 00478 00480 OrbitInfo() 00481 { 00482 absOrbit = -1; 00483 relOrbit = -1; 00484 cycle = -1; 00485 phase = -1; 00486 } 00487 00489 OrbitInfo( long absoluteOrbit, long relativeOrbit, long cycleOrbit, 00490 long phaseOrbit) 00491 { 00492 absOrbit = absoluteOrbit; 00493 relOrbit = relativeOrbit; 00494 cycle = cycleOrbit; 00495 phase = phaseOrbit; 00496 } 00497 00498 }; 00499 00501 class XO_DECL StateVectorInfo 00502 { 00503 public: 00504 double pos[3]; 00505 double vel[3]; 00506 double acc[3]; 00507 00509 StateVectorInfo() 00510 { 00511 pos[0] = 0.; vel[1] = 0.; acc[2] = 0.; 00512 pos[0] = 0.; vel[1] = 0.; acc[2] = 0.; 00513 pos[0] = 0.; vel[1] = 0.; acc[2] = 0.; 00514 } 00515 00517 StateVectorInfo( double *posIn, double *velIn, double *accIn ) 00518 { 00519 pos[0] = posIn[0]; vel[1] = velIn[1]; acc[2] = accIn[2]; 00520 pos[0] = posIn[0]; vel[1] = velIn[1]; acc[2] = accIn[2]; 00521 pos[0] = posIn[0]; vel[1] = velIn[1]; acc[2] = accIn[2]; 00522 } 00523 }; 00524 00526 class XO_DECL StateVectorExtraInfo 00527 { 00528 public: 00529 double modelDep[XOCFI_ORBIT_EXTRA_NUM_DEP_ELEMENTS]; 00530 double modelIndep[XOCFI_ORBIT_EXTRA_NUM_INDEP_ELEMENTS]; 00531 00533 StateVectorExtraInfo() 00534 { 00535 int i; 00536 for ( i = 0 ; i < XOCFI_ORBIT_EXTRA_NUM_DEP_ELEMENTS ; i++ ) 00537 modelDep[i] = 0.; 00538 for ( i = 0 ; i < XOCFI_ORBIT_EXTRA_NUM_INDEP_ELEMENTS ; i++ ) 00539 modelIndep[i] = 0.; 00540 } 00541 00543 StateVectorExtraInfo( double *model, double *extra ) 00544 { 00545 int i; 00546 for ( i = 0 ; i < XOCFI_ORBIT_EXTRA_NUM_DEP_ELEMENTS ; i++ ) 00547 modelDep[i] = model[i]; 00548 for ( i = 0 ; i < XOCFI_ORBIT_EXTRA_NUM_INDEP_ELEMENTS ; i++ ) 00549 modelIndep[i] = extra[i]; 00550 } 00551 }; 00552 00554 class XO_DECL AnxInfo 00555 { 00556 public: 00557 double anxTai; 00558 double anxUtc; 00559 double anxUt1; 00560 double anxPos[3]; 00561 double anxVel[3]; 00562 double kepl[6]; 00563 double tNod; 00564 }; 00565 00567 class XO_DECL RefOrbitInfo 00568 { 00569 public: 00570 long driftMode; 00571 double inclination; 00572 long repCycle; 00573 long cycleLength; 00574 double AnxLong; 00575 double mlst; 00576 double mlstDrift; 00577 MlstNonlinearDrift mlstNonlinearDrift; 00578 }; 00579 00581 class XO_DECL OsfRecords 00582 { 00583 public: 00584 OrbitInfo missionInfo; 00585 RefOrbitInfo refOrbitinfo; 00586 AnxInfo anxInfo; 00587 }; 00588 00590 class XO_DECL OrbitalInfo 00591 { 00592 public: 00593 long absOrbit; 00594 long repCycle; 00595 long cycLength; 00596 double mlstDrift; 00597 double mlst; 00598 double phasing; 00599 double utcAnx; 00600 double posAnx[3]; 00601 double velAnx[3]; 00602 double meanKep[6]; 00603 double oscKep[6]; 00604 double nodalPeriod; 00605 // AN-523 00606 double utcSmx; 00607 }; 00608 00609 // AN-353 00611 class XO_DECL GeoGeodCoord 00612 { 00613 public: 00614 double gcLongitude; 00615 double gdLatitude; 00616 double gdAltitude; 00617 }; 00618 00620 class XO_DECL GeoOrbitInfo 00621 { 00622 public: 00623 GeoGeodCoord geodCoord; 00624 }; 00625 00627 class XO_DECL GeoOrbitInitData 00628 { 00629 public: 00630 long type; 00631 GeoOrbitInfo geoOrbitInfo; 00632 }; 00633 // END AN-353 00634 00635 00636 00637 // ANR-382 00639 class XO_DECL OrbitDataFilterOutliersConfiguration 00640 { 00641 public: 00642 OrbitDataFilterOutliersConfiguration() 00643 { 00644 action = XOCFI_REMOVE; 00645 thresholdPos = 0; 00646 thresholdVel = 0; 00647 } 00648 OrbitDataFilterOutliersConfiguration(long a, double p, double v) 00649 { 00650 action = a; 00651 thresholdPos = p; 00652 thresholdVel = v; 00653 } 00654 00655 long action; 00656 double thresholdPos; 00657 double thresholdVel; 00658 }; 00659 00661 class XO_DECL OrbitDataFilterConfiguration 00662 { 00663 public: 00664 OrbitDataFilterConfiguration(){} 00665 00669 OrbitDataFilterConfiguration(long t) 00670 { 00671 type = t; 00672 switch (type) 00673 { 00674 case XOCFI_FILTER_OUTLIERS: outliersConfiguration = OrbitDataFilterOutliersConfiguration(XOCFI_REMOVE, 0, 0); 00675 break; 00676 } 00677 } 00678 00685 OrbitDataFilterConfiguration(long t, long a, double p, double v) 00686 { 00687 type = t; 00688 switch (type) 00689 { 00690 case XOCFI_FILTER_OUTLIERS: outliersConfiguration = OrbitDataFilterOutliersConfiguration(a, p, v); 00691 break; 00692 } 00693 } 00694 long type; 00695 OrbitDataFilterOutliersConfiguration outliersConfiguration; 00696 }; 00697 00699 class XO_DECL OrbitDataFilterOutliersReport 00700 { 00701 public: 00702 OrbitDataFilterOutliersReport() 00703 { 00704 nofOSVin = 0; 00705 nofOSVfiltered = 0; 00706 minTimeGap = 0; 00707 maxTimeGap = 0; 00708 minRMSPos = 0; 00709 maxRMSPos = 0; 00710 minRMSVel = 0; 00711 maxRMSVel = 0; 00712 } 00713 OrbitDataFilterOutliersReport(long in, long fi, double ming, double MaxG, double minp, double MaxP, double minv, double MaxV) 00714 { 00715 nofOSVin = in; 00716 nofOSVfiltered = fi; 00717 minTimeGap = ming; 00718 maxTimeGap = MaxG; 00719 minRMSPos = minp; 00720 maxRMSPos = MaxP; 00721 minRMSVel = minv; 00722 maxRMSVel = MaxV; 00723 } 00724 00725 long nofOSVin; 00726 long nofOSVfiltered; 00727 double minTimeGap; 00728 double maxTimeGap; 00729 double minRMSPos; 00730 double maxRMSPos; 00731 double minRMSVel; 00732 double maxRMSVel; 00733 }; 00734 00736 class XO_DECL OrbitDataFilterReport 00737 { 00738 public: 00739 OrbitDataFilterReport(){} 00740 OrbitDataFilterReport(long t) 00741 { 00742 type = t; 00743 } 00744 00745 long type; 00746 OrbitDataFilterOutliersReport outliersReport; 00747 }; 00748 // END ANR-382 00749 00751 class XO_DECL OrbitChangeFile 00752 { 00753 public: 00754 long fileType; 00755 OsfFile osfData; 00756 00757 OrbitChangeFile() 00758 { 00759 fileType = -1; 00760 } 00761 }; // AN-527 00762 00764 class XO_DECL OrbitChangeData 00765 { 00766 public: 00767 long changeMode; 00768 OrbitChangeFile changeFile; 00769 double changeTimeRef; 00770 double changeTime; 00771 long changeOrbit; 00772 00773 OrbitChangeData() 00774 { 00775 changeMode = -1; 00776 } 00777 00778 }; // AN-527 00779 00781 class XO_DECL OrbTime 00782 { 00783 public: 00784 long type; 00785 long timeRef; 00786 double time; 00787 long orbitNum; 00788 long sec; 00789 long msec; 00790 00791 OrbTime() 00792 { 00793 type = 0; 00794 timeRef = XOCFI_TIME_UTC; 00795 time = 0.; 00796 orbitNum = 0; 00797 sec = 0; 00798 msec = 0; 00799 } 00800 OrbTime(long typeIn, long timeR, double timeIn, long orbitNumIn, 00801 long secIn, long msecIn) 00802 { 00803 type = typeIn; 00804 timeRef = timeR; 00805 time = timeIn; 00806 orbitNum = orbitNumIn; 00807 sec = secIn; 00808 msec = msecIn; 00809 } 00810 };// AN-596 00811 00813 class XO_DECL OrbTimeInterval 00814 { 00815 public: 00816 OrbTime tstart; 00817 OrbTime tstop; 00818 00819 OrbTimeInterval() 00820 { 00821 } 00822 00823 OrbTimeInterval(OrbTime t0, OrbTime t1) 00824 { 00825 tstart = t0; 00826 tstop = t1; 00827 } 00828 }; // AN-596 00829 00830 } // closing namespace 00831 00832 #endif