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