| Earth Observation Mission CFI Software DataHandling Software User Manual |

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List

# C:/Jenkins/workspace/CPP_create_documentation/slaves/windows8/lib_src/DataHandling/include/DataHandlingData.h

    00001 //--------------------------------------------------------
    00002 // Earth Observation Mission CFI Software. Version 4.11
    00003 //--------------------------------------------------------
    00004
    00005 //--------------------------------------------------------------------
    00006 // CVS Info: $Id: DataHandlingData.h,v 1.35 2014-03-25 07:51:58 cavm Exp $
    00007 //--------------------------------------------------------------------
    00008
    00010 // This file contais generic data that can be used as input/output in
    00011 // the classes of EXPCFI DataHandling library
    00013
    00014 #ifndef __EECFI_DATAHANDLINGDATA__
    00015 #define __EECFI_DATAHANDLINGDATA__
    00016
    00017 //--INCLUDE-----------------------------------------------------------
    00018 #include <string>
    00019 #include <vector>
    00020
    00021 #include "AttRec.h"
    00022 #include "DataHandlingDllExport.h"
    00023 //--NAMESPACES--------------------------------------------------------
    00024 using namespace std;
    00025
    00026
    00027 namespace EECFI
    00028 {
    00029   //------------------------------------------------------
    00030   // CONSTANT DATA
    00031   //------------------------------------------------------
    00032
    00033   //------------------------------------------------------
    00034   // DATA ENUMERATION
    00035   //------------------------------------------------------
    00036
    00038   typedef enum
    00039   {
    00040     XDCFI_ATT_QUATERNIONS = 0,
    00041     XDCFI_ATT_ANGLES
    00042   } AttitudeDataTypeEnum;
    00043
    00045   typedef enum
    00046   {
    00047     XDCFI_LINE_GEOM = 0,
    00048     XDCFI_POINT_GEOM,
    00049     XDCFI_LIMB_GEOM,
    00050     XDCFI_DISTANCE_GEOM
    00051   } GeomTypeEnum;
    00052
    00054   typedef enum
    00055   {
    00056     XDCFI_NO_ASAR = 0,
    00057     XDCFI_NARROW_ASAR,
    00058     XDCFI_WIDE_ASAR
    00059   } AsarTypeEnum;
    00060
    00062   typedef enum
    00063   {
    00064     XDCFI_NO_REF = 0,
    00065     XDCFI_STD_REF,
    00066     XDCFI_USER_REF,
    00067     XDCFI_PRED_REF,
    00068     XDCFI_STD_REF_N = 10,
    00069     XDCFI_USER_REF_N = 20,
    00070     XDCFI_PRED_REF_N = 30,
    00071     XDCFI_US76_REF = 300,
    00072     XDCFI_TROPIC_REF,
    00073     XDCFI_MID_SUM_REF,
    00074     XDCFI_MID_WIN_REF,
    00075     XDCFI_SUBAR_SUM_REF,
    00076     XDCFI_SUBAR_WIN_REF,
    00077     XDCFI_LUT_REF = 400,
    00078     XDCFI_US76_REF_N = 3000,
    00079     XDCFI_TROPIC_REF_N,
    00080     XDCFI_MID_SUM_REF_N,
    00081     XDCFI_MID_WIN_REF_N,
    00082     XDCFI_SUBAR_SUM_REF_N,
    00083     XDCFI_SUBAR_WIN_REF_N,
    00084     XDCFI_LUT_REF_N = 4000
    00085   } TargetRayEnum;
    00086
    00088   typedef enum
    00089   {
    00090     XDCFI_OPEN_SWATH,
    00091     XDCFI_CLOSED_SWATH
    00092   } SwathTypecEnum;
    00093
    00095   typedef enum
    00096   {
    00097     XDCFI_GEODETIC_SWATH_TYPE,
    00098     XDCFI_INERTIAL_SWATH_TYPE
    00099   } SwathPointTypeEnum;
    00100
    00102   typedef enum
    00103   {
    00104     XDCFI_SWATH_POINTING_GEOM = 0,   /* Algorithms of calculation of Swaths */
    00105     XDCFI_SWATH_DISTANCE_GEOM,
    00106     XDCFI_SWATH_LIMB_GEOM,
    00107     XDCFI_SWATH_INERTIAL_GEOM,
    00108     XDCFI_SWATH_SUBSATELLITE_GEOM,
    00109     XDCFI_SWATH_ASAR_GEOM
    00110
    00111   } SwathGeomEnum;
    00112
    00114   typedef enum
    00115   {
    00116     XDCFI_NOT_DEFINED = -1,
    00117     XDCFI_POINT       = 0,
    00118     XDCFI_CIRCLE      = 1,
    00119     XDCFI_SEGMENT     = 2,
    00120     XDCFI_POLYGON     = 3
    00121   } ZoneTypeEnum;
    00122
    00124   typedef enum
    00125   {
    00126     XDCFI_SAT_ORBITAL_REF = 0,
    00127     XDCFI_SAT_NOMINAL_ATT,
    00128     XDCFI_SAT_ATT,
    00129     XDCFI_INSTR_ATT
    00130   } AttitudeFrameEnum;
    00131
    00133   typedef enum
    00134   {
    00135     XDCFI_BAR_MEAN_2000 = 1,
    00136     XDCFI_HEL_MEAN_2000,
    00137     XDCFI_GEO_MEAN_2000,
    00138     XDCFI_MEAN_DATE,
    00139     XDCFI_TRUE_DATE,
    00140     XDCFI_PSEUDO_EARTH_FIXED,
    00141     XDCFI_EARTH_FIXED,
    00142     XDCFI_BAR_MEAN_1950,
    00143     XDCFI_GALACTIC,
    00144     XDCFI_SAT_ACT_REF,
    00145     XDCFI_QUASI_MEAN_DATE,
    00146     XDCFI_PSE_TRUE_DATE,
    00147     XDCFI_TOPOCENTRIC,
    00148     XDCFI_SAT_REF,
    00149     XDCFI_SAT_REL_REF
    00150   } CoordinateSystemsEnum; // Updated for AN-509
    00151
    00153   typedef enum
    00154   {
    00155     XDCFI_3_ADJUST_NOMI = 1,
    00156     XDCFI_4_ADJUST_DMAN,
    00157     XDCFI_5_INTERP_DGAP,
    00158     XDCFI_6_EXTRAP_LT1D,
    00159     XDCFI_7_EXTRAP_1D2D,
    00160     XDCFI_8_EXTRAP_GT2D,
    00161     XDCFI_8_EXTRAP_AMAN,
    00162     XDCFI_Q_INDEX_MAX_ENUM
    00163   } QualityIndexEnum;
    00164
    00166   typedef enum
    00167   {
    00168     XDCFI_SCF_DRAW_SOLID,
    00169     XDCFI_SCF_DRAW_DASHED,
    00170     XDCFI_SCF_DRAW_DOTTED,
    00171     XDCFI_SCF_DRAW_TIMELINE
    00172   } SCFDrawModesEnum;
    00173
    00175   typedef enum
    00176   {
    00177     XDCFI_SCF_FILL_SOLID,
    00178     XDCFI_SCF_FILL_HOLLOW
    00179   } SCFFillModesEnum;
    00180
    00182   typedef enum
    00183   {
    00184     XDCFI_SEL_FILE = 0,
    00185     XDCFI_SEL_TIME,
    00186     XDCFI_SEL_ORBIT,
    00187     XDCFI_SEL_DEFAULT,
    00188     XDCFI_SEL_NONE
    00189   } TimeInitModeEnum;
    00190
    00192   typedef enum
    00193   {
    00194     XDCFI_TIME_UNDEF = -1,
    00195     XDCFI_TIME_TAI,
    00196     XDCFI_TIME_UTC,
    00197     XDCFI_TIME_UT1,
    00198     XDCFI_TIME_GPS
    00199   } TimeRefDataHandlingEnum;
    00200
    00202   typedef enum
    00203   {
    00204      XDCFI_EXTEND_NUM_OSV = 0,
    00205      XDCFI_EXTEND_TIME
    00206   } ExtendTypeEnum;
    00207
    00209   typedef enum
    00210   {
    00211     XDCFI_TIME_REF_OF_TAI   = XDCFI_TIME_TAI,
    00212     XDCFI_TIME_REF_OF_UTC   = XDCFI_TIME_UTC,
    00213     XDCFI_TIME_REF_OF_UT1   = XDCFI_TIME_UT1,
    00214     XDCFI_TIME_REF_OF_GPS   = XDCFI_TIME_GPS
    00215   } TimeRefOfDataHandlingEnum;
    00216
    00218   typedef enum
    00219   {
    00220     XDCFI_READ_DB     = 0,
    00221     XDCFI_GNOMONIC    = 1,
    00222     XDCFI_RECTANGULAR = 2
    00223   } ProjectionEnum;
    00224
    00226   typedef enum
    00227   {
    00228     XDCFI_ATT_NONE = 0,
    00229     XDCFI_ATT_AOCS,
    00230     XDCFI_ATT_PARAM,
    00231     XDCFI_ATT_HARMONIC,
    00232     XDCFI_ATT_FILE,
    00233     XDCFI_ATT_ANGLE,
    00234     XDCFI_ATT_MATRIX
    00235   } AttModelEnum;
    00236
    00238   typedef enum
    00239   {
    00240     XDCFI_ORBIT_FILE,
    00241     XDCFI_OSF_FILE,
    00242     XDCFI_DORIS_FILE,
    00243     XDCFI_IERS_BULLETIN_FILE,
    00244     XDCFI_USER_OSV_LIST,
    00245     XDCFI_SP3_FILE, // AN-550
    00246     XDCFI_POF_FILE,
    00247     XDCFI_ROF_FILE,
    00248     XDCFI_SDF_FILE,
    00249     XDCFI_STF_FILE,
    00250     XDCFI_ATTITUDE_FILE,
    00251     XDCFI_DEM_CONF_FILE,
    00252     XDCFI_DEM_FILE,
    00253     XDCFI_ZONE_FILE,
    00254     XDCFI_STATION_FILE,
    00255     XDCFI_STAR_FILE,
    00256     XDCFI_ATT_STAR_TRACKER_CONF_FILE,
    00257     XDCFI_ATT_STAR_TRACKER_FILE,
    00258     XDCFI_TLE_FILE,
    00259     XDCFI_ATTITUDE_DEFINITION_FILE, // AN-469
    00260     XDCFI_OEM_FILE //AN-578
    00261   } FileEnum; // Updated for AN-527, to have it alligned with XD_data_file_type_enum
    00262
    00264   typedef enum
    00265   {
    00266     XDCFI_UNKNOWN_TYPE = -1,
    00267     XDCFI_AUTO,
    00268     XDCFI_ORBIT_CHANGE,
    00269     XDCFI_STATE_VECTOR,
    00270     XDCFI_OSF_TYPE,
    00271     XDCFI_POF_TYPE,
    00272     XDCFI_ROF_TYPE,
    00273     XDCFI_DORIS_TYPE,
    00274     XDCFI_POF_N_DORIS_TYPE,
    00275     XDCFI_OEF_OSF_TYPE,
    00276     XDCFI_OEF_POF_TYPE,
    00277     XDCFI_IERS_B_TYPE,
    00278     XDCFI_TLE_TYPE,
    00279     XDCFI_STF_TYPE,
    00280     XDCFI_DORISPREC_TYPE,
    00281     XDCFI_DORISPREM_TYPE,
    00282     XDCFI_ATT_TYPE,
    00283     XDCFI_SCF_TYPE,
    00284     XDCFI_PRECISE_PROPAG_TYPE,
    00285     XDCFI_DEMCFG_TYPE,
    00286     XDCFI_SATCFG_TYPE,
    00287     XDCFI_GND_DB_TYPE,
    00288     XDCFI_SW_DEF_TYPE,
    00289     XDCFI_ZON_DB_TYPE,
    00290     XDCFI_STR1ATT_TYPE,
    00291     XDCFI_IERS_A_TYPE,
    00292     XDCFI_IERS_B_AND_A_TYPE,
    00293     XDCFI_ATT_DEF_TYPE,
    00294     XDCFI_USER_OSV_LIST_TYPE,
    00295     XDCFI_SP3_TYPE,           /* AN-550  */
    00296     XDCFI_OSF_POF_MODE,   // AN-527
    00297     XDCFI_OSF_ROF_MODE,   // AN-527
    00298     XDCFI_OSF_DORIS_MODE, // AN-527
    00299     XDCFI_OEM_TYPE,       // AN-578
    00300     XDCFI_OSF_OEM_MODE,   // AN-578
    00301     XDCFI_FILE_TYPE_MAX_VALUE
    00302   } FileTypeEnum;
    00303
    00305   typedef enum
    00306   {
    00307     XDCFI_DEM_ACE_MODEL = 0,
    00308     XDCFI_DEM_GETASSE30_V1,
    00309     XDCFI_DEM_GETASSE30_V2,
    00310     XDCFI_DEM_ACE2_9SEC,
    00311     XDCFI_DEM_GETASSE30_V3, /*AN-503*/
    00312     XDCFI_DEM_GDEM_V2, /*AN-504*/
    00313     XDCFI_DEM_ACE2_30SEC, /*AN-615*/
    00314     XDCFI_DEM_ACE2_3SEC, // AN-619
    00315     XDCFI_DEM_NUM_MODELS
    00316   } DemModelEnum;
    00317
    00319   typedef enum
    00320   {
    00321     XDCFI_DEM_GETASSE30_SOURCE_ACE,   /* land-ice/snow */
    00322     XDCFI_DEM_GETASSE30_SOURCE_MSS,   /* sea */
    00323     XDCFI_DEM_GETASSE30_SOURCE_EGM96, /* sea-ice */
    00324     XDCFI_DEM_GETASSE30_SOURCE_SRTM30 /* land */
    00325   } DemGetasseDataSourceEnum;
    00326
    00327   /* DEM Data Source Types for ACE2: 9secs and 30secs */
    00328   typedef enum
    00329   {
    00330     XDCFI_DEM_ACE2_SOURCE_SRTM0,      /* Pure SRTM (above 60�N pure GLOBE data, below 60S pure ACE [original] data) */
    00331     XDCFI_DEM_ACE2_SOURCE_SRTM1,      /* SRTM voids filled by interpolation and/or altimeter data */
    00332     XDCFI_DEM_ACE2_SOURCE_SRTM2,      /* SRTM data warped using the ERS-1 Geodetic Mission */
    00333     XDCFI_DEM_ACE2_SOURCE_SRTM3,      /* SRTM data warped using EnviSat & ERS-2 data */
    00334     XDCFI_DEM_ACE2_SOURCE_SRTM_LAKE,  /* Mean lake level data derived from Altimetry */
    00335     XDCFI_DEM_ACE2_SOURCE_SRTM_GLOBE, /* GLOBE/ACE data warped using combined altimetry (only above 60�N) */
    00336     XDCFI_DEM_ACE2_SOURCE_SRTM_ALT    /* Pure altimetry data (derived from ERS-1 Geodetic Mission,
    00337                                          ERS-2 and EnviSat data using Delaunay Triangulation and Bilinear interpolation) */
    00338   } DemAce2DataSourceEnum;
    00339
    00340   /* DEM Data Source Types for GDEM v2 */
    00341   typedef enum
    00342   {
    00343     XDCFI_DEM_GDEM_SOURCE_NO_SOURCE_FILE = -1,
    00344     XDCFI_DEM_GDEM_SOURCE_SRTM3_V3 = 0,
    00345     XDCFI_DEM_GDEM_SOURCE_SRTM3_V2,
    00346     XDCFI_DEM_GDEM_SOURCE_NED,
    00347     XDCFI_DEM_GDEM_SOURCE_CDED,
    00348     XDCFI_DEM_GDEM_SOURCE_ALASKA_DEM
    00349   } DemGdemV2DataSourceEnum;
    00350
    00352   typedef enum
    00353   {
    00354     XDCFI_CFI_READ_ATT_INIT_PARSER_ERR = 0,
    00355     XDCFI_CFI_READ_ATT_READ_PARAM_ERR,
    00356     XDCFI_CFI_READ_ATT_WRONG_FILE_TYPE_ERR,
    00357     XDCFI_CFI_READ_XML_ATT_NAVIGATION_ERR,
    00358     XDCFI_CFI_READ_ATT_WRONG_DATA_TYPE_ERR,
    00359     XDCFI_CFI_READ_ATT_INCONSISTENT_DATA_TYPE_ERR,
    00360     XDCFI_CFI_READ_ATT_XML_DATA_BLOCK_SIZE_ERR,
    00361     XDCFI_CFI_READ_ATT_WRONG_REF_FRAME_ERR,
    00362     XDCFI_CFI_READ_ATT_READ_LIST_ERR,
    00363     XDCFI_CFI_READ_ATT_TIME_CONV_ERR,
    00364     XDCFI_CFI_READ_ATT_MEMORY_ERR,
    00365     XDCFI_CFI_READ_ATT_CLEANUP_PARSER_ERR,
    00366     XDCFI_CFI_READ_ATT_WRONG_TIME_REF_ERR,
    00367     XDCFI_CFI_READ_ATT_WRONG_QUATERNION_ERR,
    00368     XDCFI_CFI_READ_ATT_WRONG_ANGLE_ERR,
    00369     XDCFI_CFI_READ_ATT_MAX_GAP_ERR,
    00370     XDCFI_CFI_READ_ATT_OBSOLETE_TAG_WARN //AN-516
    00371   } ReadAttErrEnum;
    00372
    00374   typedef enum
    00375   {
    00376     XDCFI_DEFAULT_VALUES = 0,
    00377     XDCFI_USER_VALUES    = 1
    00378   } PrecisePropagUserFlagEnum;
    00379
    00381   typedef enum
    00382   {
    00383     XDCFI_NOT_SELECT = 0,
    00384     XDCFI_SELECT = 1
    00385   } PrecisePropagSelectionFlagEnum;
    00386
    00388   typedef enum
    00389   {
    00390     XDCFI_SGA_USE_PARAMETERS        = 0,
    00391     XDCFI_SGA_READ_VALUES_FROM_FILE = 1
    00392   } PrecisePropagSgaFlagEnum;
    00393
    00395   typedef enum
    00396   {
    00397     XDCFI_SAT_DEFAULT     = 0,
    00398     XDCFI_SAT_DEFAULT1    = 1,
    00399     XDCFI_SAT_DEFAULT2    = 2,
    00400     XDCFI_SAT_DEFAULT3    = 3,
    00401     XDCFI_SAT_DEFAULT4    = 4,
    00402     XDCFI_SAT_DEFAULT5    = 5,
    00403     XDCFI_SAT_DEFAULT6    = 6,
    00404     XDCFI_SAT_DEFAULT7    = 7,
    00405     XDCFI_SAT_DEFAULT8    = 8,
    00406     XDCFI_SAT_DEFAULT9    = 9,
    00407     XDCFI_SAT_ERS1        = 11,
    00408     XDCFI_SAT_ERS2        = 12,
    00409     XDCFI_SAT_ENVISAT     = 21,
    00410     XDCFI_SAT_METOP1      = 31,
    00411     XDCFI_SAT_METOP2      = 32,
    00412     XDCFI_SAT_METOP3      = 33,
    00413     XDCFI_SAT_CRYOSAT     = 41,
    00414     XDCFI_SAT_ADM         = 51,
    00415     XDCFI_SAT_GOCE        = 61,
    00416     XDCFI_SAT_SMOS        = 71,
    00417     XDCFI_SAT_TERRASAR    = 81,
    00418     XDCFI_SAT_EARTHCARE   = 91,
    00419     XDCFI_SAT_SWARM_A     = 101,
    00420     XDCFI_SAT_SWARM_B     = 102,
    00421     XDCFI_SAT_SWARM_C     = 103,
    00422     XDCFI_SAT_SENTINEL_1A = 110,
    00423     XDCFI_SAT_SENTINEL_1B = 111,
    00424     XDCFI_SAT_SENTINEL_2  = 112,
    00425     XDCFI_SAT_SENTINEL_3  = 113,
    00426     XDCFI_SAT_SEOSAT      = 120,
    00427     XDCFI_SAT_SENTINEL_1C = 125,
    00428     XDCFI_SAT_SENTINEL_2A = 126,
    00429     XDCFI_SAT_SENTINEL_2B = 127,
    00430     XDCFI_SAT_SENTINEL_2C = 128,
    00431     XDCFI_SAT_SENTINEL_3A = 129,
    00432     XDCFI_SAT_SENTINEL_3B = 130,
    00433     XDCFI_SAT_SENTINEL_3C = 131,
    00434         XDCFI_SAT_JASON_CSA       = 132, // AN-531
    00435         XDCFI_SAT_JASON_CSB   = 133, // AN-531
    00436     XDCFI_SAT_METOP_SG_A1 = 134, // AN-530
    00437     XDCFI_SAT_METOP_SG_A2 = 135, // AN-530
    00438         XDCFI_SAT_METOP_SG_A3 = 136, // AN-530
    00439         XDCFI_SAT_METOP_SG_B1 = 137, // AN-530
    00440         XDCFI_SAT_METOP_SG_B2 = 138, // AN-530
    00441         XDCFI_SAT_METOP_SG_B3 = 139, // AN-530
    00442         XDCFI_SAT_SENTINEL_5P = 140, // AN-502
    00443         XDCFI_SAT_BIOMASS     = 141, // AN-601
    00444         XDCFI_SAT_SENTINEL_5  = 142, // AN-639
    00445         XDCFI_SAT_SAOCOM_CS   = 143, // AN-640
    00446     XDCFI_SAT_GENERIC     = 200,
    00447     XDCFI_SAT_GENERIC_GEO = 300,
    00448     XDCFI_SAT_MTG         = 301,
    00449     XDCFI_SAT_GENERIC_MEO = 400  // AN-550
    00450   } XDSatIdEnum;
    00451
    00453   typedef enum
    00454   {
    00455     XDCFI_BULLETIN_A = 0,
    00456     XDCFI_BULLETIN_B
    00457   } XDBulletinTypeEnum;
    00458
    00460   typedef enum
    00461   {
    00462     XDCFI_NO_CACHE = 0,
    00463     XDCFI_PRELOAD_CACHE,
    00464     XDCFI_FIFO_CACHE
    00465   } DemCacheTypeEnum; // Added for AN-487
    00466
    00468   typedef enum
    00469   {
    00470     XDCFI_DEM_GEOID_COMPUTATION_DISABLED = 0,
    00471     XDCFI_DEM_GEOID_COMPUTATION_ENABLED  = 1
    00472   } DemGeoidFlagEnum; // AN-466
    00473
    00475   typedef enum
    00476   {
    00477     XDCFI_ATT_NONE_MODEL = 0,
    00478     XDCFI_ATT_AOCS_MODEL,
    00479     XDCFI_ATT_PARAMETER_MODEL,
    00480     XDCFI_ATT_HARMONIC_MODEL,
    00481     XDCFI_ATT_FILE_MODEL,
    00482     XDCFI_ATT_ANGLE_MODEL,
    00483     XDCFI_ATT_MATRIX_MODEL,
    00484     XDCFI_ATT_QUATERNION_ANGLE_MODEL,
    00485     XDCFI_ATT_QUATERNION_MATRIX_MODEL
    00486   } AttDefModelEnum; // AN-469
    00487
    00489   typedef enum
    00490   {
    00491     XDCFI_SAT_NOMINAL_ATT_DEF = 0,
    00492     XDCFI_SAT_ATT_DEF,
    00493     XDCFI_INSTR_ATT_DEF
    00494   } XDAttDefFrameEnum; // AN-469
    00495
    00497   typedef enum
    00498   {
    00499     XDCFI_AOCS_GPM = 0,
    00500     XDCFI_AOCS_LNP,
    00501     XDCFI_AOCS_YSM,
    00502     XDCFI_AOCS_ZDOPPLER
    00503   } XDSatNominalAttAocsModeEnum; // AN-469
    00504
    00506   typedef enum
    00507   {
    00508     XDCFI_MODEL_GENERIC = 0,
    00509     XDCFI_MODEL_ENVISAT,
    00510     XDCFI_MODEL_CRYOSAT,
    00511     XDCFI_MODEL_ADM,
    00512     XDCFI_MODEL_SENTINEL1,
    00513     XDCFI_MODEL_SENTINEL2,
    00514     XDCFI_MODEL_GEO
    00515   } XDSatNominalAttModelEnum; // AN-469
    00516
    00518   typedef enum
    00519   {
    00520     XDCFI_ANGLE_TYPE_TRUE_LAT_TOD = 0,
    00521     XDCFI_ANGLE_TYPE_MEAN_LAT_TOD,
    00522     XDCFI_ANGLE_TYPE_TRUE_LAT_EF /* AN-508 */
    00523   } XDAngleTypeEnum; // AN-469
    00524
    00526   typedef enum
    00527   {
    00528     XDCFI_FIT_TLE = 0,             /*Used for POF, not valid for OSV LIST*/
    00529     XDCFI_FIT_TLE_LIST,
    00530     XDCFI_ONE_TLE_PER_OSV
    00531   } XDTLEFitmodeEnum;
    00532
    00534   typedef enum
    00535   {
    00536     XDCFI_SP3_POSITION_TYPE,
    00537     XDCFI_SP3_POSITION_PLUS_VELOCITY_TYPE
    00538   } XDCFISP3FileTypeEnum; // AN-550
    00539
    00541   typedef enum
    00542   {
    00543     XDCFI_SP3_GPS = 0,
    00544     XDCFI_SP3_MIXED,
    00545     XDCFI_SP3_GLONASS,
    00546     XDCFI_SP3_LEO,
    00547     XDCFI_SP3_GALILEO,
    00548     XDCFI_SP3_COMPASS,
    00549     XDCFI_SP3_QZSS
    00550   } XDCFISP3FileDescriptorEnum; // AN-550
    00551
    00553   typedef enum
    00554   {
    00555     XDCFI_SP3_TIME_GPS = 0,
    00556     XDCFI_SP3_TIME_GLONASS,
    00557     XDCFI_SP3_TIME_GALILEO,
    00558     XDCFI_SP3_TIME_TAI,
    00559     XDCFI_SP3_TIME_UTC,
    00560     XDCFI_SP3_TIME_QZSS
    00561   } XDCFISP3TimeSystemEnum;
    00562
    00564   typedef enum
    00565   {
    00566     XDCFI_SAT_GPS = 0,
    00567     XDCFI_SAT_GLONASS,
    00568     XDCFI_SAT_LEO,
    00569     XDCFI_SAT_GALILEO,
    00570     XDCFI_SAT_COMPASS,
    00571     XDCFI_SAT_QZSS
    00572   } XDCFISATSP3SatDescriptorEnum;
    00573
    00575   typedef enum
    00576   {
    00577     XDCFI_DORIS_CRYOSAT_TYPE,
    00578     XDCFI_DORIS_SENTINEL3_TYPE
    00579   } XDDORISFileTypeEnum;
    00580
    00581   //------------------------------------------------------
    00582   // DATA STRUCTURES
    00583   //------------------------------------------------------
    00584
    00588   class XD_DECL AngleModel
    00589   {
    00590     public:
    00591
    00592       //Attributes
    00593       double angles[3];
    00594       double offsets[3];
    00595
    00597       AngleModel(){};
    00598
    00600       AngleModel( double *angle, double *offset)
    00601       {
    00602         for ( int i = 0 ; i < 3 ; ++i)
    00603         {
    00604           angles[i]  = angle[i];
    00605           offsets[i] = offset[i];
    00606         }// end for i
    00607       }
    00608   };
    00609
    00613   class XD_DECL Asar
    00614   {
    00615     public:
    00616       //Attributes
    00617       long asarType;
    00618       double slantRangeLeft;
    00619       double slantRangeRight;
    00620
    00622       Asar(){};
    00623
    00628       Asar( const long asarTyp, double slantLeft, double slantRight)
    00629       {
    00630         asarType = asarTyp;
    00631         slantRangeLeft = slantLeft;
    00632         slantRangeRight = slantRight;
    00633       }
    00634   };//class Asar
    00635
    00636
    00640   class XD_DECL BulbTable
    00641   {
    00642     public:
    00643       double day;
    00644       double ut1Utc;
    00645       double ut1Tai;
    00646
    00648       BulbTable(){};
    00649
    00651       BulbTable(double dayUtc, double diffUt1Utc, double diffUt1Tai)
    00652       {
    00653         day    = dayUtc;
    00654         ut1Utc = diffUt1Utc;
    00655         ut1Tai = diffUt1Tai;
    00656       }
    00657
    00658   };
    00659
    00663   class XD_DECL DemPoint
    00664   {
    00665     public:
    00666
    00667       //Attributes
    00668       double lon;
    00669       double lat;
    00670       double alt;
    00671
    00673       DemPoint(){};
    00674
    00676       DemPoint( double longitude, double latitude, double altitude)
    00677       {
    00678         lon = longitude;
    00679         lat = latitude;
    00680         alt = altitude;
    00681       }
    00682   };
    00683
    00687   class XD_DECL DorisHeader
    00688   {
    00689     public:
    00690       //Atributtes
    00691       string  fileName;
    00692       string  sensingStart; // UTC
    00693       string  sensingStop;  // UTC
    00694       long    relOrbit;
    00695       long    absOrbit;
    00696       double  deltaUt1;
    00697       string  leapUtc;
    00698       int     leapSign;
    00699       int     leapErr;
    00700       long    numDsd;
    00701       long    dsOffset;
    00702       long    numDsr;
    00703
    00704       // extra data: the following values are not read from the file.
    00705       // but it must be provided for the writing function
    00706       //MPH
    00707       string  procStageCode;
    00708       string  refDoc;
    00709       string  procTime;
    00710       string  softwareVersion;
    00711       string  phase;
    00712       long    cycle;
    00713       string  stateVectorTime;
    00714       double  xPosition;
    00715       double  yPosition;
    00716       double  zPosition;
    00717       double  xVelocity;
    00718       double  yVelocity;
    00719       double  zVelocity;
    00720       string  stateVectorSource;
    00721       string  productErr;
    00722       long    totSize;
    00723       long    numDataSets;
    00724
    00725       //SPH
    00726       string  sphDescriptor;
    00727       string  sensingStartTai; // TAI
    00728       long    absOrbitStart;
    00729       double  relTimeAscNodeStart;
    00730       string  sensingStopTai; // TAI
    00731       long    absOrbitStop;
    00732       double  relTimeAscNodeStop;
    00733       string  equatorCrossTime;
    00734       long    equatorCrossLong;
    00735       string  ascendingFlag;
    00736       long    startLat;
    00737       long    startLong;
    00738       long    stopLat;
    00739       long    stopLong;
    00740       long    numIsps;
    00741       long    numMissingIsps;
    00742       long    numErrorIsps;
    00743       long    numDiscardedIsps;
    00744       long    numRsIsps;
    00745       long    numRsCorrections;
    00746       long    dsrSize;
    00747
    00749       DorisHeader();
    00750
    00752       DorisHeader(string fileNam,
    00753                   string senStart,
    00754                   string sensStop,
    00755                   long   relOrbi,
    00756                   long   absOrbi,
    00757                   double delta_Ut1,
    00758                   string leap_Utc,
    00759                   int    leap_Sign,
    00760                   int    leap_Err,
    00761                   long   num_Dsd,
    00762                   long   ds_Offset,
    00763                   long   num_Dsr);
    00764
    00766       DorisHeader(string fileNam,
    00767                   string sensStart,
    00768                   string sensStop,
    00769                   long   relOrbi,
    00770                   long   absOrbi,
    00771                   double delta_Ut1,
    00772                   string leap_Utc,
    00773                   int    leap_Sign,
    00774                   int    leap_Err,
    00775                   long   num_Dsd,
    00776                   long   ds_Offset,
    00777                   long   num_Dsr,
    00778                   string procStageCod,
    00779                   string ref_Doc,
    00780                   string procTim,
    00781                   string softVersion,
    00782                   string phaseIn,
    00783                   long   cycleIn,
    00784                   string stateVectorTim,
    00785                   double xPos,
    00786                   double yPos,
    00787                   double zPos,
    00788                   double xVel,
    00789                   double yVel,
    00790                   double zVel,
    00791                   string stateVectSource,
    00792                   string prodErr,
    00793                   long   tot_Size,
    00794                   long   numDataSet,
    00795                   string sphDesc,
    00796                   string sensStartTai,
    00797                   long   absOrbStart,
    00798                   double relTimAscNodeStart,
    00799                   string sensStopTai,
    00800                   long   absOrbStop,
    00801                   double relTimAscNodeStop,
    00802                   string equator_CrossTime,
    00803                   long   equator_CrossLong,
    00804                   string ascendFlag,
    00805                   long   start_Lat,
    00806                   long   start_Long,
    00807                   long   stop_Lat,
    00808                   long   stop_Long,
    00809                   long   num_Isps,
    00810                   long   numMissIsps,
    00811                   long   numErrIsps,
    00812                   long   numDiscardIsps,
    00813                   long   num_RsIsps,
    00814                   long   num_RsCorrections,
    00815                   long   dsr_Size
    00816                 );
    00817
    00818   };
    00819
    00823   class XD_DECL FileModel
    00824   {
    00825     public:
    00826
    00827       //Attributes
    00828       vector<string> files;
    00829       string auxFile;
    00830       long timeRef;
    00831       double time0;
    00832       double time1;
    00833
    00835       FileModel(){};
    00836
    00838       FileModel( vector<string> &fileNames,
    00839                  const string auxiliaryFile,
    00840                  const long timeReference,
    00841                  const double timeZero,
    00842                  const double timeOne )
    00843       {
    00844         files   = fileNames;
    00845         auxFile = auxiliaryFile;
    00846         timeRef = timeReference;
    00847         time0   = timeZero;
    00848         time1   = timeOne;
    00849       }
    00850
    00851   };
    00852
    00856   class XD_DECL HarmonicData
    00857   {
    00858     public:
    00859
    00860       //Attributes
    00861       vector<long> harmonicTypePitch;
    00862       vector<long> harmonicTypeRoll;
    00863       vector<long> harmonicTypeYaw;
    00864       vector<double> harmonicCoeffPitch;
    00865       vector<double> harmonicCoeffRoll;
    00866       vector<double> harmonicCoeffYaw;
    00867
    00869       HarmonicData(){};
    00870
    00872       HarmonicData( vector<long> &harmonicTypPitch,
    00873                     vector<long> &harmonicTypRoll,
    00874                     vector<long> &harmonicTypYaw,
    00875                     vector<double> &harmonicCoefPitch,
    00876                     vector<double> &harmonicCoefRoll,
    00877                     vector<double> &harmonicCoefYaw )
    00878       {
    00879         harmonicTypePitch  =   harmonicTypPitch;
    00880         harmonicTypeRoll   =   harmonicTypRoll;
    00881         harmonicTypeYaw    =   harmonicTypYaw;
    00882         harmonicCoeffPitch =   harmonicCoefPitch;
    00883         harmonicCoeffRoll  =   harmonicCoefRoll;
    00884         harmonicCoeffYaw   =   harmonicCoefYaw;
    00885       }
    00886
    00887   };
    00888
    00892   class XD_DECL HarmonicModel
    00893   {
    00894     public:
    00895
    00896       //Attributes
    00897       long angleType;
    00898       HarmonicData harmonicData;
    00899       double offsets[3];
    00900
    00902       HarmonicModel(){};
    00903
    00905       HarmonicModel( const long angleTyp, HarmonicData &harmonicDat, double *offset)
    00906       {
    00907         angleType = angleTyp;
    00908         harmonicData = harmonicDat;
    00909
    00910         for ( int i = 0 ; i < 3 ; ++i )
    00911         {
    00912           offsets[i] = offset[i];
    00913         }
    00914       }
    00915   };
    00916
    00920   class XD_DECL MatrixModel
    00921   {
    00922     public:
    00923
    00924       //Attributes
    00925       double attMatrix[3][3];
    00926       double offsets[3];
    00927
    00929       MatrixModel(){};
    00930
    00932       MatrixModel( double **matrix, double *offset )
    00933       {
    00934         for ( int i = 0 ; i < 3 ; ++i)
    00935         {
    00936           for ( int j = 0 ; j < 3 ; ++j )
    00937           {
    00938             attMatrix[i][j] = matrix[i][j];
    00939           }// end for j
    00940           offsets[i] = offset[i];
    00941         }// end for i
    00942       }
    00943   };
    00944
    00948   class XD_DECL MlstHarmonics
    00949   {
    00950     public:
    00951
    00952       //Attributes
    00953       double refTime;
    00954       double period;
    00955       double sinAmplitude;
    00956       double cosAmplitude;
    00957
    00959       MlstHarmonics()
    00960       {
    00961         refTime      = 0.;
    00962         period       = 1.;
    00963         sinAmplitude = 0.;
    00964         cosAmplitude = 0.;
    00965       };
    00966
    00968       MlstHarmonics(double time_in, double period_in,
    00969                     double sinAmp_in, double cosAmp_in)
    00970       {
    00971         refTime      = time_in;
    00972         period       = period_in;
    00973         sinAmplitude = sinAmp_in;
    00974         cosAmplitude = cosAmp_in;
    00975       }
    00976   };
    00977
    00981   class XD_DECL MlstNonlinearDrift
    00982   {
    00983     public:
    00984
    00985       //Attributes
    00986       long linearApproxValidity;
    00987       double quadraticTerm;
    00988       vector<MlstHarmonics> mlstHarmonics;
    00989
    00991       MlstNonlinearDrift()
    00992       {
    00993         long i;
    00994
    00995         linearApproxValidity = 99999;
    00996         quadraticTerm = 0.;
    00997         for (i = 0 ; i < 2 ; i ++ )
    00998         {
    00999           mlstHarmonics.push_back(MlstHarmonics());
    01000         }
    01001       };
    01002
    01004       MlstNonlinearDrift(long linApprox, double quadratic, const vector<MlstHarmonics> &harmonics)
    01005       {
    01006         linearApproxValidity = linApprox;
    01007         quadraticTerm = quadratic;
    01008         mlstHarmonics = harmonics;
    01009       }
    01010   };
    01011
    01015   class XD_DECL ParamModel
    01016   {
    01017     public:
    01018
    01019       //Attributes
    01020       long model;
    01021       vector<double> modelParam;
    01022
    01024       ParamModel(){};
    01025
    01027       ParamModel( const long mod, vector<double> &modParam)
    01028       {
    01029         model = mod;
    01030         modelParam = modParam;
    01031       }
    01032   };
    01033
    01037   class XD_DECL SwathGeometry
    01038   {
    01039     public:
    01040
    01041       //Attributes
    01042       long geometryType;
    01043       double azimuth;
    01044       double elevation;
    01045       double altitude;
    01046       double distance;
    01047
    01049       SwathGeometry(){};
    01050
    01052       SwathGeometry( long geomType, double azim, double elevat,
    01053                      double alt, double dist)
    01054       {
    01055         geometryType = geomType;
    01056         azimuth   = azim;
    01057         elevation = elevat;
    01058         altitude  = alt;
    01059         distance  = dist;
    01060       }
    01061   };
    01062
    01066   class XD_DECL TrackerLimits
    01067   {
    01068     public:
    01069
    01070       //Attributes
    01071       double maxPenalty;
    01072       double normThr;
    01073       double maxGap;
    01074
    01076       TrackerLimits(){};
    01077
    01079       TrackerLimits( double maxPenal,double normThreshold, double maximumGap)
    01080       {
    01081         maxPenalty = maxPenal;
    01082         normThr    = normThreshold;
    01083         maxGap     = maximumGap;
    01084       }
    01085   };
    01086
    01090   class XD_DECL StfPt
    01091   {
    01092     public:
    01093
    01094       //Attributes
    01095       double lon;
    01096       double lat;
    01097
    01099       StfPt(){};
    01100
    01102       StfPt( double longitude, double latitude )
    01103       {
    01104         lon = longitude;
    01105         lat = latitude;
    01106       }
    01107   };
    01108
    01112   class XD_DECL StfVhr
    01113   {
    01114     public:
    01115
    01116       //Attributes
    01117       string stfName;
    01118       string ReferenceOSF;
    01119       string ReferenceSDF;
    01120       long   swathType;
    01121       long   swathPointType;
    01122
    01123       double timeStep;
    01124       long   refractionMode;
    01125       double frequency;
    01126
    01127       long numPoints;
    01128       vector<double> altitude;
    01129
    01130       bool geometryFlag;
    01131
    01132       long repCycle;
    01133       long cycleLength;
    01134       double mlstDrift;
    01135
    01136       long absOrbit;
    01137       long orbitStart;
    01138       long orbitStop;
    01139
    01140       double position[3];
    01141       double velocity[3];
    01142
    01144       StfVhr();
    01145
    01147       StfVhr( string stfNam,
    01148               string refOSF,
    01149               string refSDF,
    01150               long   swathTyp,
    01151               long   swathPointTyp,
    01152               double timStep,
    01153               long   refrMode,
    01154               double freq,
    01155               long   numP,
    01156               const vector<double> &alt,
    01157               bool   geomFlag,
    01158               long   repCycl,
    01159               long   cyclLength,
    01160               double meanlstDrift,
    01161               long   absOrb,
    01162               long   orbit0,
    01163               long   orbit1,
    01164               double *pos,
    01165               double *vel
    01166             );
    01167
    01169       StfVhr( const StfVhr &stfVhr );
    01170
    01172       ~StfVhr();
    01173
    01175       void operator=( const StfVhr &stfVhr );
    01176
    01177   };//class StfVhr
    01178
    01182   class XD_DECL ZonePoint
    01183   {
    01184     public:
    01185
    01186       //Attributes
    01187       double ptLong;
    01188       double ptLat;
    01189
    01191       ZonePoint(){};
    01192
    01194       ZonePoint( double ptLongitude, double ptLatitude)
    01195       {
    01196         ptLong = ptLongitude;
    01197         ptLat  = ptLatitude;
    01198       }
    01199   };
    01200
    01204   class XD_DECL AttitudeModel
    01205   {
    01206     public:
    01207       //Attributes
    01208       long          attitudeModel;
    01209       long          AOCS;
    01210       ParamModel    *paramModel;
    01211       HarmonicModel *harmonicModel;
    01212       FileModel     *fileModel;
    01213       AngleModel    *angleModel;
    01214       MatrixModel   *matrixModel;
    01215
    01217       AttitudeModel();
    01218
    01220       AttitudeModel( long    attModel,
    01221                      long    AOCSModel,
    01222                      ParamModel    &parMod,
    01223                      HarmonicModel &harmMod,
    01224                      FileModel     &fileMod,
    01225                      AngleModel    &angleMod,
    01226                      MatrixModel   &matrixMod
    01227                      );
    01228
    01230       AttitudeModel( const AttitudeModel &attModel );
    01231
    01233       ~AttitudeModel();
    01234
    01236       void operator=( const AttitudeModel &attModel );
    01237
    01238     protected:
    01239
    01240     private:
    01242       void eraseAttitude();
    01243   };
    01244
    01248   class XD_DECL PolarMotionParams
    01249   {
    01250     public:
    01251       //Attributes
    01252       double x;
    01253       double y;
    01254
    01256       PolarMotionParams()
    01257       {
    01258         x = 0.;
    01259         y = 0.;
    01260       }
    01261
    01263       PolarMotionParams( double x1, double y1 )
    01264       {
    01265         x = x1;
    01266         y = y1;
    01267       }
    01268
    01269   };
    01270
    01274   class XD_DECL IersBulletinBrec
    01275   {
    01276     public:
    01277       double day;
    01278       double ut1Utc;
    01279       double ut1Tai;
    01280       PolarMotionParams polarMotionParams;
    01281
    01283       IersBulletinBrec()
    01284       {
    01285         day    = 0.;
    01286         ut1Utc = 0.;
    01287         ut1Tai = 0.;
    01288       }
    01289
    01291       IersBulletinBrec(double dayUtc, double diffUt1Utc, double diffUt1Tai,
    01292                        PolarMotionParams polarMotion)
    01293       {
    01294         day    = dayUtc;
    01295         ut1Utc = diffUt1Utc;
    01296         ut1Tai = diffUt1Tai;
    01297         polarMotionParams = polarMotion;
    01298       }
    01299
    01300   };
    01301
    01305   class XD_DECL IersBulletinArec
    01306   {
    01307     public:
    01308       double day;
    01309       double ut1Utc;
    01310       double ut1Tai;
    01311       PolarMotionParams polarMotionParams;
    01312
    01314       IersBulletinArec()
    01315       {
    01316         day    = 0.;
    01317         ut1Utc = 0.;
    01318         ut1Tai = 0.;
    01319       }
    01320
    01322       IersBulletinArec(double dayUtc, double diffUt1Utc, double diffUt1Tai,
    01323                        PolarMotionParams polarMotion)
    01324       {
    01325         day    = dayUtc;
    01326         ut1Utc = diffUt1Utc;
    01327         ut1Tai = diffUt1Tai;
    01328         polarMotionParams = polarMotion;
    01329       }
    01330
    01331   };
    01332
    01336   class XD_DECL PolarMotionFormula
    01337   {
    01338     public:
    01339
    01340       double ax;
    01341       double bx;
    01342       double cx;
    01343       double dx;
    01344       double ex;
    01345
    01346       double ay;
    01347       double by;
    01348       double cy;
    01349       double dy;
    01350       double ey;
    01351
    01352       double Aref;
    01353       double Adiv;
    01354       double Cref;
    01355       double Cdiv;
    01356
    01358       PolarMotionFormula()
    01359       {
    01360         ax = 0.;
    01361         bx = 0.;
    01362         cx = 0.;
    01363         dx = 0.;
    01364         ex = 0.;
    01365
    01366         ay = 0.;
    01367         by = 0.;
    01368         cy = 0.;
    01369         dy = 0.;
    01370         ey = 0.;
    01371
    01372         Aref = 0.;
    01373         Adiv = 0.;
    01374         Cref = 0.;
    01375         Cdiv = 0.;
    01376       }
    01377
    01379       PolarMotionFormula(double a1, double b1, double c1, double d1, double e1,
    01380                          double a2, double b2, double c2, double d2, double e2,
    01381                          double Ar, double Ad, double Cr, double Cd)
    01382       {
    01383         ax = a1;
    01384         bx = b1;
    01385         cx = c1;
    01386         dx = d1;
    01387         ex = e1;
    01388
    01389         ay = a2;
    01390         by = b2;
    01391         cy = c2;
    01392         dy = d2;
    01393         ey = e2;
    01394
    01395         Aref = Ar;
    01396         Adiv = Ad;
    01397         Cref = Cr;
    01398         Cdiv = Cd;
    01399       }
    01400
    01401   };
    01402
    01406   class XD_DECL TimeCorrelationFormula
    01407   {
    01408     public:
    01409
    01410       double a;
    01411       double b;
    01412       double bRef;
    01413
    01415       TimeCorrelationFormula()
    01416       {
    01417         a    = 0.;
    01418         b    = 0.;
    01419         bRef = 0.;
    01420       }
    01421
    01423       TimeCorrelationFormula(double a1, double b1, double br)
    01424       {
    01425         a    = a1;
    01426         b    = b1;
    01427         bRef = br;
    01428       }
    01429   };
    01430
    01434   class XD_DECL IersBulletinBFile
    01435   {
    01436   public:
    01437
    01438     string bulletinId;
    01439     vector<IersBulletinBrec> finalTable;
    01440     vector<IersBulletinBrec> preliminaryTable;
    01441
    01443     IersBulletinBFile()
    01444     {
    01445       bulletinId = "";
    01446     }
    01447
    01449     IersBulletinBFile(string bulId,
    01450                       vector<IersBulletinBrec> &vecFinal,
    01451                       vector<IersBulletinBrec> &vecPrel)
    01452     {
    01453       bulletinId          = bulId;
    01454       finalTable          = vecFinal;
    01455       preliminaryTable    = vecPrel;
    01456     }
    01457
    01458   };//class IersBulletinBFile
    01459
    01463   class XD_DECL IersBulletinAFile
    01464   {
    01465   public:
    01466
    01467     string bulletinId;
    01468     vector<IersBulletinArec> predictionTable;
    01469     PolarMotionFormula polarMotionFormula;
    01470     TimeCorrelationFormula timeCorrelationFormula;
    01471
    01473     IersBulletinAFile()
    01474     {
    01475       bulletinId = "";
    01476     }
    01477
    01479     IersBulletinAFile(string bulId,
    01480                       vector<IersBulletinArec> &vecPred,
    01481                       PolarMotionFormula &polarFormula,
    01482                       TimeCorrelationFormula &timeFormula)
    01483     {
    01484       bulletinId             = bulId;
    01485       predictionTable        = vecPred;
    01486       polarMotionFormula     = polarFormula;
    01487       timeCorrelationFormula = timeFormula;
    01488     }
    01489
    01490   };//class IersBulletinAFile
    01491
    01495   class XD_DECL DemMiniTiles
    01496   {
    01497     public:
    01498       string fileName;
    01499       double lonSize;
    01500       double latSize;
    01501
    01503       DemMiniTiles()
    01504       {
    01505         fileName = "";
    01506         lonSize = 0.;
    01507         latSize = 0.;
    01508       }
    01509
    01511       DemMiniTiles(string fileN, double lon, double lat)
    01512       {
    01513         fileName = fileN;
    01514         lonSize  = lon;
    01515         latSize  = lat;
    01516       }
    01517   }; // AN-492
    01518
    01522   class XD_DECL QuaternionPlusAngle
    01523   {
    01524     public:
    01525
    01526       //Attributes
    01527       long inertialFrame;
    01528       vector<AttRec> quat;
    01529       AngleModel angleModel;
    01530
    01532       QuaternionPlusAngle(){};
    01533
    01535       QuaternionPlusAngle( long frame, vector<AttRec> attvec, AngleModel &angModel )
    01536       {
    01537         inertialFrame = frame;
    01538         quat = attvec;
    01539         angleModel = angModel;
    01540       }
    01541   }; // AN-469
    01542
    01543   //
    01546   class XD_DECL QuaternionPlusMatrix
    01547   {
    01548     public:
    01549
    01550       //Attributes
    01551       long inertialFrame;
    01552       vector<AttRec> quat;
    01553       MatrixModel matrixModel;
    01554
    01556       QuaternionPlusMatrix(){};
    01557
    01559       QuaternionPlusMatrix( long frame, vector<AttRec> attvec, MatrixModel &matModel )
    01560       {
    01561         inertialFrame = frame;
    01562         quat = attvec;
    01563         matrixModel = matModel;
    01564       }
    01565   }; // AN-469
    01566
    01570   class XD_DECL AttitudeDefinitionModel
    01571   {
    01572     public:
    01573       //Attributes
    01574       long          attitudeModel;
    01575       long          AOCS;
    01576       ParamModel    *paramModel;
    01577       HarmonicModel *harmonicModel;
    01578       FileModel     *fileModel;
    01579       AngleModel    *angleModel;
    01580       MatrixModel   *matrixModel;
    01581       QuaternionPlusAngle *quaternionAngleModel;
    01582       QuaternionPlusMatrix * quaternionMatrixModel;
    01583
    01585       AttitudeDefinitionModel();
    01586
    01588       AttitudeDefinitionModel( long    attModel,
    01589                                long    AOCSModel,
    01590                                ParamModel    &parMod,
    01591                                HarmonicModel &harmMod,
    01592                                FileModel     &fileMod,
    01593                                AngleModel    &angleMod,
    01594                                MatrixModel   &matrixMod,
    01595                                QuaternionPlusAngle &quatAngMod,
    01596                                QuaternionPlusMatrix &quatMatMod
    01597                                );
    01598
    01600       AttitudeDefinitionModel( const AttitudeDefinitionModel &attModel );
    01601
    01603       ~AttitudeDefinitionModel();
    01604
    01606       void operator=( const AttitudeDefinitionModel &attModel );
    01607
    01608     protected:
    01609
    01610     private:
    01612       void eraseAttitude();
    01613   }; // AN-469
    01614
    01615 }//end EECFI
    01616
    01617 #endif