| Earth Observation Mission CFI Software DataHandling Software User Manual |

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

- File List

# Z:/work/code/expcfidev/cplusplusWrapper/DataHandling/include/DataHandlingData.h

    00001 //--------------------------------------------------------
    00002 // Earth Observation Mission CFI Software. Version 4.4
    00003 //--------------------------------------------------------
    00004
    00005 //--------------------------------------------------------------------
    00006 // CVS Info: $Id: DataHandlingData.h,v 1.19 2012/06/20 16:10:45 expcfi 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 //--NAMESPACES--------------------------------------------------------
    00022 using namespace std;
    00023
    00024 namespace EECFI
    00025 {
    00026   //------------------------------------------------------
    00027   // CONSTANT DATA
    00028   //------------------------------------------------------
    00029
    00030   //------------------------------------------------------
    00031   // DATA ENUMERATION
    00032   //------------------------------------------------------
    00033
    00035   typedef enum
    00036   {
    00037     XDCFI_ATT_QUATERNIONS = 0,
    00038     XDCFI_ATT_ANGLES
    00039   } AttitudeDataTypeEnum;
    00040
    00042   typedef enum
    00043   {
    00044     XDCFI_LINE_GEOM = 0,
    00045     XDCFI_POINT_GEOM,
    00046     XDCFI_LIMB_GEOM,
    00047     XDCFI_DISTANCE_GEOM
    00048   } GeomTypeEnum;
    00049
    00051   typedef enum
    00052   {
    00053     XDCFI_NO_ASAR = 0,
    00054     XDCFI_NARROW_ASAR,
    00055     XDCFI_WIDE_ASAR
    00056   } AsarTypeEnum;
    00057
    00059   typedef enum
    00060   {
    00061     XDCFI_NO_REF = 0,
    00062     XDCFI_STD_REF,
    00063     XDCFI_USER_REF,
    00064     XDCFI_PRED_REF,
    00065     XDCFI_STD_REF_N = 10,
    00066     XDCFI_USER_REF_N = 20,
    00067     XDCFI_PRED_REF_N = 30,
    00068     XDCFI_US76_REF = 300,
    00069     XDCFI_TROPIC_REF,
    00070     XDCFI_MID_SUM_REF,
    00071     XDCFI_MID_WIN_REF,
    00072     XDCFI_SUBAR_SUM_REF,
    00073     XDCFI_SUBAR_WIN_REF,
    00074     XDCFI_LUT_REF = 400,
    00075     XDCFI_US76_REF_N = 3000,
    00076     XDCFI_TROPIC_REF_N,
    00077     XDCFI_MID_SUM_REF_N,
    00078     XDCFI_MID_WIN_REF_N,
    00079     XDCFI_SUBAR_SUM_REF_N,
    00080     XDCFI_SUBAR_WIN_REF_N,
    00081     XDCFI_LUT_REF_N = 4000
    00082   } TargetRayEnum;
    00083
    00085   typedef enum
    00086   {
    00087     XDCFI_OPEN_SWATH,
    00088     XDCFI_CLOSED_SWATH
    00089   } SwathTypecEnum;
    00090
    00092   typedef enum
    00093   {
    00094     XDCFI_GEODETIC_SWATH_TYPE,
    00095     XDCFI_INERTIAL_SWATH_TYPE
    00096   } SwathPointTypeEnum;
    00097
    00099   typedef enum
    00100   {
    00101     XDCFI_SWATH_POINTING_GEOM = 0,   /* Algorithms of calculation of Swaths */
    00102     XDCFI_SWATH_DISTANCE_GEOM,
    00103     XDCFI_SWATH_LIMB_GEOM,
    00104     XDCFI_SWATH_INERTIAL_GEOM,
    00105     XDCFI_SWATH_SUBSATELLITE_GEOM,
    00106     XDCFI_SWATH_ASAR_GEOM
    00107
    00108   } SwathGeomEnum;
    00109
    00111   typedef enum
    00112   {
    00113     XDCFI_NOT_DEFINED = -1,
    00114     XDCFI_POINT       = 0,
    00115     XDCFI_CIRCLE      = 1,
    00116     XDCFI_SEGMENT     = 2,
    00117     XDCFI_POLYGON     = 3
    00118   } ZoneTypeEnum;
    00119
    00121   typedef enum
    00122   {
    00123     XDCFI_SAT_ORBITAL_REF = 0,
    00124     XDCFI_SAT_NOMINAL_ATT,
    00125     XDCFI_SAT_ATT,
    00126     XDCFI_INSTR_ATT
    00127   } AttitudeFrameEnum;
    00128
    00130   typedef enum
    00131   {
    00132     XDCFI_BAR_MEAN_2000 = 1,
    00133     XDCFI_HEL_MEAN_2000,
    00134     XDCFI_GEO_MEAN_2000,
    00135     XDCFI_MEAN_DATE,
    00136     XDCFI_TRUE_DATE,
    00137     XDCFI_EARTH_FIXED,
    00138     XDCFI_BAR_MEAN_1950,
    00139     XDCFI_GALACTIC,
    00140     XDCFI_SAT_ACT_REF,
    00141     XDCFI_QUASI_MEAN_DATE,
    00142     XDCFI_PSE_TRUE_DATE,
    00143     XDCFI_PSEUDO_EARTH_FIXED,
    00144     XDCFI_TOPOCENTRIC,
    00145     XDCFI_SAT_REF,
    00146     XDCFI_SAT_REL_REF
    00147   } CoordinateSystemsEnum;
    00148
    00150   typedef enum
    00151   {
    00152     XDCFI_3_ADJUST_NOMI = 1,
    00153     XDCFI_4_ADJUST_DMAN,
    00154     XDCFI_5_INTERP_DGAP,
    00155     XDCFI_6_EXTRAP_LT1D,
    00156     XDCFI_7_EXTRAP_1D2D,
    00157     XDCFI_8_EXTRAP_GT2D,
    00158     XDCFI_8_EXTRAP_AMAN,
    00159     XDCFI_Q_INDEX_MAX_ENUM
    00160   } QualityIndexEnum;
    00161
    00163   typedef enum
    00164   {
    00165     XDCFI_SCF_DRAW_SOLID,
    00166     XDCFI_SCF_DRAW_DASHED,
    00167     XDCFI_SCF_DRAW_DOTTED,
    00168     XDCFI_SCF_DRAW_TIMELINE
    00169   } SCFDrawModesEnum;
    00170
    00172   typedef enum
    00173   {
    00174     XDCFI_SCF_FILL_SOLID,
    00175     XDCFI_SCF_FILL_HOLLOW
    00176   } SCFFillModesEnum;
    00177
    00179   typedef enum
    00180   {
    00181     XDCFI_TIME_UNDEF = -1,
    00182     XDCFI_TIME_TAI,
    00183     XDCFI_TIME_UTC,
    00184     XDCFI_TIME_UT1,
    00185     XDCFI_TIME_GPS
    00186   } TimeRefDataHandlingEnum;
    00187
    00189   typedef enum
    00190   {
    00191     XDCFI_TIME_REF_OF_TAI   = XDCFI_TIME_TAI,
    00192     XDCFI_TIME_REF_OF_UTC   = XDCFI_TIME_UTC,
    00193     XDCFI_TIME_REF_OF_UT1   = XDCFI_TIME_UT1,
    00194     XDCFI_TIME_REF_OF_GPS   = XDCFI_TIME_GPS
    00195   } TimeRefOfDataHandlingEnum;
    00196
    00198   typedef enum
    00199   {
    00200     XDCFI_READ_DB     = 0,
    00201     XDCFI_GNOMONIC    = 1,
    00202     XDCFI_RECTANGULAR = 2
    00203   } ProjectionEnum;
    00204
    00206   typedef enum
    00207   {
    00208     XDCFI_ATT_NONE = 0,
    00209     XDCFI_ATT_AOCS,
    00210     XDCFI_ATT_PARAM,
    00211     XDCFI_ATT_HARMONIC,
    00212     XDCFI_ATT_FILE,
    00213     XDCFI_ATT_ANGLE,
    00214     XDCFI_ATT_MATRIX
    00215   } AttModelEnum;
    00216
    00218   typedef enum
    00219   {
    00220     XDCFI_OSF_FILE,
    00221     XDCFI_ORBIT_FILE,
    00222     XDCFI_POF_FILE,
    00223     XDCFI_ROF_FILE,
    00224     XDCFI_DORIS_FILE,
    00225     XDCFI_SDF_FILE,
    00226     XDCFI_STF_FILE,
    00227     XDCFI_ATTITUDE_FILE,
    00228     XDCFI_DEM_CONF_FILE,
    00229     XDCFI_DEM_FILE,
    00230     XDCFI_ZONE_FILE,
    00231     XDCFI_STATION_FILE,
    00232     XDCFI_STAR_FILE,
    00233     XDCFI_ATT_STAR_TRACKER_CONF_FILE,
    00234     XDCFI_ATT_STAR_TRACKER_FILE,
    00235     XDCFI_IERS_BULLETIN_FILE,
    00236     XDCFI_TLE_FILE
    00237   } FileEnum;
    00238
    00240   typedef enum
    00241   {
    00242     XDCFI_UNKNOWN_TYPE = -1,
    00243     XDCFI_AUTO,
    00244     XDCFI_ORBIT_CHANGE,
    00245     XDCFI_STATE_VECTOR,
    00246     XDCFI_OSF_TYPE,
    00247     XDCFI_POF_TYPE,
    00248     XDCFI_ROF_TYPE,
    00249     XDCFI_DORIS_TYPE,
    00250     XDCFI_POF_N_DORIS_TYPE,
    00251     XDCFI_OEF_OSF_TYPE,
    00252     XDCFI_OEF_POF_TYPE,
    00253     XDCFI_IERS_B_TYPE,
    00254     XDCFI_TLE_TYPE,
    00255     XDCFI_STF_TYPE,
    00256     XDCFI_DORISPREC_TYPE,
    00257     XDCFI_DORISPREM_TYPE,
    00258     XDCFI_ATT_TYPE,
    00259     XDCFI_SCF_TYPE,
    00260     XDCFI_PRECISE_PROPAG_TYPE,
    00261     XDCFI_DEMCFG_TYPE,
    00262     XDCFI_SATCFG_TYPE,
    00263     XDCFI_GND_DB_TYPE,
    00264     XDCFI_SW_DEF_TYPE,
    00265     XDCFI_ZON_DB_TYPE,
    00266     XDCFI_STR1ATT_TYPE,
    00267     XDCFI_IERS_A_TYPE,
    00268     XDCFI_IERS_B_AND_A_TYPE,
    00269     XDCFI_FILE_TYPE_MAX_VALUE
    00270   } FileTypeEnum;
    00271
    00273   typedef enum
    00274   {
    00275     XDCFI_DEM_ACE_MODEL = 0,
    00276     XDCFI_DEM_GETASSE30_V1,
    00277     XDCFI_DEM_GETASSE30_V2,
    00278     XDCFI_DEM_ACE2_9SEC,
    00279     XDCFI_DEM_NUM_MODELS
    00280   } DemModelEnum;
    00281
    00283   typedef enum
    00284   {
    00285     XDCFI_DEM_GETASSE30_SOURCE_ACE,   /* land-ice/snow */
    00286     XDCFI_DEM_GETASSE30_SOURCE_MSS,   /* sea */
    00287     XDCFI_DEM_GETASSE30_SOURCE_EGM96, /* sea-ice */
    00288     XDCFI_DEM_GETASSE30_SOURCE_SRTM30 /* land */
    00289   } DemGetasseDataSourceEnum;
    00290
    00291   /* DEM Data Source Types for ACE2 9secs */
    00292   typedef enum
    00293   {
    00294     XDCFI_DEM_ACE2_SOURCE_SRTM0,      /* Pure SRTM (above 60°N pure GLOBE data, below 60S pure ACE [original] data) */
    00295     XDCFI_DEM_ACE2_SOURCE_SRTM1,      /* SRTM voids filled by interpolation and/or altimeter data */
    00296     XDCFI_DEM_ACE2_SOURCE_SRTM2,      /* SRTM data warped using the ERS-1 Geodetic Mission */
    00297     XDCFI_DEM_ACE2_SOURCE_SRTM3,      /* SRTM data warped using EnviSat & ERS-2 data */
    00298     XDCFI_DEM_ACE2_SOURCE_SRTM_LAKE,  /* Mean lake level data derived from Altimetry */
    00299     XDCFI_DEM_ACE2_SOURCE_SRTM_GLOBE, /* GLOBE/ACE data warped using combined altimetry (only above 60°N) */
    00300     XDCFI_DEM_ACE2_SOURCE_SRTM_ALT    /* Pure altimetry data (derived from ERS-1 Geodetic Mission,
    00301                                          ERS-2 and EnviSat data using Delaunay Triangulation and Bilinear interpolation) */
    00302   } DemAce2DataSourceEnum;
    00303
    00304
    00306   typedef enum
    00307   {
    00308     XDCFI_CFI_READ_ATT_INIT_PARSER_ERR = 0,
    00309     XDCFI_CFI_READ_ATT_READ_PARAM_ERR,
    00310     XDCFI_CFI_READ_ATT_WRONG_FILE_TYPE_ERR,
    00311     XDCFI_CFI_READ_XML_ATT_NAVIGATION_ERR,
    00312     XDCFI_CFI_READ_ATT_WRONG_DATA_TYPE_ERR,
    00313     XDCFI_CFI_READ_ATT_INCONSISTENT_DATA_TYPE_ERR,
    00314     XDCFI_CFI_READ_ATT_XML_DATA_BLOCK_SIZE_ERR,
    00315     XDCFI_CFI_READ_ATT_WRONG_REF_FRAME_ERR,
    00316     XDCFI_CFI_READ_ATT_READ_LIST_ERR,
    00317     XDCFI_CFI_READ_ATT_TIME_CONV_ERR,
    00318     XDCFI_CFI_READ_ATT_MEMORY_ERR,
    00319     XDCFI_CFI_READ_ATT_CLEANUP_PARSER_ERR,
    00320     XDCFI_CFI_READ_ATT_WRONG_TIME_REF_ERR,
    00321     XDCFI_CFI_READ_ATT_WRONG_QUATERNION_ERR,
    00322     XDCFI_CFI_READ_ATT_WRONG_ANGLE_ERR,
    00323     XDCFI_CFI_READ_ATT_MAX_GAP_ERR
    00324   } ReadAttErrEnum;
    00325
    00327   typedef enum
    00328   {
    00329     XDCFI_DEFAULT_VALUES = 0,
    00330     XDCFI_USER_VALUES    = 1
    00331   } PrecisePropagUserFlagEnum;
    00332
    00334   typedef enum
    00335   {
    00336     XDCFI_NOT_SELECT = 0,
    00337     XDCFI_SELECT = 1
    00338   } PrecisePropagSelectionFlagEnum;
    00339
    00341   typedef enum
    00342   {
    00343     XDCFI_SGA_USE_PARAMETERS        = 0,
    00344     XDCFI_SGA_READ_VALUES_FROM_FILE = 1
    00345   } PrecisePropagSgaFlagEnum;
    00346
    00348   typedef enum
    00349   {
    00350     XDCFI_SAT_DEFAULT     = 0,
    00351     XDCFI_SAT_DEFAULT1    = 1,
    00352     XDCFI_SAT_DEFAULT2    = 2,
    00353     XDCFI_SAT_DEFAULT3    = 3,
    00354     XDCFI_SAT_DEFAULT4    = 4,
    00355     XDCFI_SAT_DEFAULT5    = 5,
    00356     XDCFI_SAT_DEFAULT6    = 6,
    00357     XDCFI_SAT_DEFAULT7    = 7,
    00358     XDCFI_SAT_DEFAULT8    = 8,
    00359     XDCFI_SAT_DEFAULT9    = 9,
    00360     XDCFI_SAT_ERS1        = 11,
    00361     XDCFI_SAT_ERS2        = 12,
    00362     XDCFI_SAT_ENVISAT     = 21,
    00363     XDCFI_SAT_METOP1      = 31,
    00364     XDCFI_SAT_METOP2      = 32,
    00365     XDCFI_SAT_METOP3      = 33,
    00366     XDCFI_SAT_CRYOSAT     = 41,
    00367     XDCFI_SAT_ADM         = 51,
    00368     XDCFI_SAT_GOCE        = 61,
    00369     XDCFI_SAT_SMOS        = 71,
    00370     XDCFI_SAT_TERRASAR    = 81,
    00371     XDCFI_SAT_EARTHCARE   = 91,
    00372     XDCFI_SAT_SWARM_A     = 101,
    00373     XDCFI_SAT_SWARM_B     = 102,
    00374     XDCFI_SAT_SWARM_C     = 103,
    00375     XDCFI_SAT_SENTINEL_1A = 110,
    00376     XDCFI_SAT_SENTINEL_1B = 111,
    00377     XDCFI_SAT_SENTINEL_2  = 112,
    00378     XDCFI_SAT_SENTINEL_3  = 113,
    00379     XDCFI_SAT_SEOSAT      = 120,
    00380     XDCFI_SAT_SENTINEL_1C = 125,
    00381     XDCFI_SAT_SENTINEL_2A = 126,
    00382     XDCFI_SAT_SENTINEL_2B = 127,
    00383     XDCFI_SAT_SENTINEL_2C = 128,
    00384     XDCFI_SAT_SENTINEL_3A = 129,
    00385     XDCFI_SAT_SENTINEL_3B = 130,
    00386     XDCFI_SAT_SENTINEL_3C = 131,
    00387     XDCFI_SAT_GENERIC     = 200,
    00388     XDCFI_SAT_GENERIC_GEO = 300,
    00389     XDCFI_SAT_MTG         = 301
    00390   } XDSatIdEnum;
    00391
    00393   typedef enum
    00394   {
    00395     XDCFI_BULLETIN_A = 0,
    00396     XDCFI_BULLETIN_B
    00397   } XDBulletinTypeEnum;
    00398
    00400   typedef enum
    00401   {
    00402     XDCFI_NO_CACHE = 0,
    00403     XDCFI_PRELOAD_CACHE,
    00404     XDCFI_FIFO_CACHE
    00405   } DemCacheTypeEnum; // Added for AN-487
    00406
    00407   //------------------------------------------------------
    00408   // DATA STRUCTURES
    00409   //------------------------------------------------------
    00410
    00414   class AngleModel
    00415   {
    00416     public:
    00417
    00418       //Attributes
    00419       double angles[3];
    00420       double offsets[3];
    00421
    00423       AngleModel(){};
    00424
    00426       AngleModel( double *angle, double *offset)
    00427       {
    00428         for ( int i = 0 ; i < 3 ; ++i)
    00429         {
    00430           angles[i]  = angle[i];
    00431           offsets[i] = offset[i];
    00432         }// end for i
    00433       }
    00434   };
    00435
    00439   class Asar
    00440   {
    00441     public:
    00442       //Attributes
    00443       long asarType;
    00444       double slantRangeLeft;
    00445       double slantRangeRight;
    00446
    00448       Asar(){};
    00449
    00454       Asar( const long asarTyp, double slantLeft, double slantRight)
    00455       {
    00456         asarType = asarTyp;
    00457         slantRangeLeft = slantLeft;
    00458         slantRangeRight = slantRight;
    00459       }
    00460   };//class Asar
    00461
    00462
    00466   class BulbTable
    00467   {
    00468     public:
    00469       double day;
    00470       double ut1Utc;
    00471       double ut1Tai;
    00472
    00474       BulbTable(){};
    00475
    00477       BulbTable(double dayUtc, double diffUt1Utc, double diffUt1Tai)
    00478       {
    00479         day    = dayUtc;
    00480         ut1Utc = diffUt1Utc;
    00481         ut1Tai = diffUt1Tai;
    00482       }
    00483
    00484   };
    00485
    00489   class DemPoint
    00490   {
    00491     public:
    00492
    00493       //Attributes
    00494       double lon;
    00495       double lat;
    00496       double alt;
    00497
    00499       DemPoint(){};
    00500
    00502       DemPoint( double longitude, double latitude, double altitude)
    00503       {
    00504         lon = longitude;
    00505         lat = latitude;
    00506         alt = altitude;
    00507       }
    00508   };
    00509
    00513   class DorisHeader
    00514   {
    00515     public:
    00516       //Atributtes
    00517       string  fileName;
    00518       string  sensingStart; // UTC
    00519       string  sensingStop;  // UTC
    00520       long    relOrbit;
    00521       long    absOrbit;
    00522       double  deltaUt1;
    00523       string  leapUtc;
    00524       int     leapSign;
    00525       int     leapErr;
    00526       long    numDsd;
    00527       long    dsOffset;
    00528       long    numDsr;
    00529
    00530       // extra data: the following values are not read from the file.
    00531       // but it must be provided for the writing function
    00532       //MPH
    00533       string  procStageCode;
    00534       string  refDoc;
    00535       string  procTime;
    00536       string  softwareVersion;
    00537       string  phase;
    00538       long    cycle;
    00539       string  stateVectorTime;
    00540       double  xPosition;
    00541       double  yPosition;
    00542       double  zPosition;
    00543       double  xVelocity;
    00544       double  yVelocity;
    00545       double  zVelocity;
    00546       string  stateVectorSource;
    00547       string  productErr;
    00548       long    totSize;
    00549       long    numDataSets;
    00550
    00551       //SPH
    00552       string  sphDescriptor;
    00553       string  sensingStartTai; // TAI
    00554       long    absOrbitStart;
    00555       double  relTimeAscNodeStart;
    00556       string  sensingStopTai; // TAI
    00557       long    absOrbitStop;
    00558       double  relTimeAscNodeStop;
    00559       string  equatorCrossTime;
    00560       long    equatorCrossLong;
    00561       string  ascendingFlag;
    00562       long    startLat;
    00563       long    startLong;
    00564       long    stopLat;
    00565       long    stopLong;
    00566       long    numIsps;
    00567       long    numMissingIsps;
    00568       long    numErrorIsps;
    00569       long    numDiscardedIsps;
    00570       long    numRsIsps;
    00571       long    numRsCorrections;
    00572       long    dsrSize;
    00573
    00575       DorisHeader();
    00576
    00578       DorisHeader(string fileNam,
    00579                   string senStart,
    00580                   string sensStop,
    00581                   long   relOrbi,
    00582                   long   absOrbi,
    00583                   double delta_Ut1,
    00584                   string leap_Utc,
    00585                   int    leap_Sign,
    00586                   int    leap_Err,
    00587                   long   num_Dsd,
    00588                   long   ds_Offset,
    00589                   long   num_Dsr);
    00590
    00592       DorisHeader(string fileNam,
    00593                   string sensStart,
    00594                   string sensStop,
    00595                   long   relOrbi,
    00596                   long   absOrbi,
    00597                   double delta_Ut1,
    00598                   string leap_Utc,
    00599                   int    leap_Sign,
    00600                   int    leap_Err,
    00601                   long   num_Dsd,
    00602                   long   ds_Offset,
    00603                   long   num_Dsr,
    00604                   string procStageCod,
    00605                   string ref_Doc,
    00606                   string procTim,
    00607                   string softVersion,
    00608                   string phaseIn,
    00609                   long   cycleIn,
    00610                   string stateVectorTim,
    00611                   double xPos,
    00612                   double yPos,
    00613                   double zPos,
    00614                   double xVel,
    00615                   double yVel,
    00616                   double zVel,
    00617                   string stateVectSource,
    00618                   string prodErr,
    00619                   long   tot_Size,
    00620                   long   numDataSet,
    00621                   string sphDesc,
    00622                   string sensStartTai,
    00623                   long   absOrbStart,
    00624                   double relTimAscNodeStart,
    00625                   string sensStopTai,
    00626                   long   absOrbStop,
    00627                   double relTimAscNodeStop,
    00628                   string equator_CrossTime,
    00629                   long   equator_CrossLong,
    00630                   string ascendFlag,
    00631                   long   start_Lat,
    00632                   long   start_Long,
    00633                   long   stop_Lat,
    00634                   long   stop_Long,
    00635                   long   num_Isps,
    00636                   long   numMissIsps,
    00637                   long   numErrIsps,
    00638                   long   numDiscardIsps,
    00639                   long   num_RsIsps,
    00640                   long   num_RsCorrections,
    00641                   long   dsr_Size
    00642                 );
    00643
    00644   };
    00645
    00649   class FileModel
    00650   {
    00651     public:
    00652
    00653       //Attributes
    00654       vector<string> files;
    00655       string auxFile;
    00656       long timeRef;
    00657       double time0;
    00658       double time1;
    00659
    00661       FileModel(){};
    00662
    00664       FileModel( vector<string> &fileNames,
    00665                  const string auxiliaryFile,
    00666                  const long timeReference,
    00667                  const double timeZero,
    00668                  const double timeOne )
    00669       {
    00670         files   = fileNames;
    00671         auxFile = auxiliaryFile;
    00672         timeRef = timeReference;
    00673         time0   = timeZero;
    00674         time1   = timeOne;
    00675       }
    00676
    00677   };
    00678
    00682   class HarmonicData
    00683   {
    00684     public:
    00685
    00686       //Attributes
    00687       vector<long> harmonicTypePitch;
    00688       vector<long> harmonicTypeRoll;
    00689       vector<long> harmonicTypeYaw;
    00690       vector<double> harmonicCoeffPitch;
    00691       vector<double> harmonicCoeffRoll;
    00692       vector<double> harmonicCoeffYaw;
    00693
    00695       HarmonicData(){};
    00696
    00698       HarmonicData( vector<long> &harmonicTypPitch,
    00699                     vector<long> &harmonicTypRoll,
    00700                     vector<long> &harmonicTypYaw,
    00701                     vector<double> &harmonicCoefPitch,
    00702                     vector<double> &harmonicCoefRoll,
    00703                     vector<double> &harmonicCoefYaw )
    00704       {
    00705         harmonicTypePitch  =   harmonicTypPitch;
    00706         harmonicTypeRoll   =   harmonicTypRoll;
    00707         harmonicTypeYaw    =   harmonicTypYaw;
    00708         harmonicCoeffPitch =   harmonicCoefPitch;
    00709         harmonicCoeffRoll  =   harmonicCoefRoll;
    00710         harmonicCoeffYaw   =   harmonicCoefYaw;
    00711       }
    00712
    00713   };
    00714
    00718   class HarmonicModel
    00719   {
    00720     public:
    00721
    00722       //Attributes
    00723       long angleType;
    00724       HarmonicData harmonicData;
    00725       double offsets[3];
    00726
    00728       HarmonicModel(){};
    00729
    00731       HarmonicModel( const long angleTyp, HarmonicData &harmonicDat, double *offset)
    00732       {
    00733         angleType = angleTyp;
    00734         harmonicData = harmonicDat;
    00735
    00736         for ( int i = 0 ; i < 3 ; ++i )
    00737         {
    00738           offsets[i] = offset[i];
    00739         }
    00740       }
    00741   };
    00742
    00746   class MatrixModel
    00747   {
    00748     public:
    00749
    00750       //Attributes
    00751       double attMatrix[3][3];
    00752       double offsets[3];
    00753
    00755       MatrixModel(){};
    00756
    00758       MatrixModel( double **matrix, double *offset )
    00759       {
    00760         for ( int i = 0 ; i < 3 ; ++i)
    00761         {
    00762           for ( int j = 0 ; j < 3 ; ++j )
    00763           {
    00764             attMatrix[i][j] = matrix[i][j];
    00765           }// end for j
    00766           offsets[i] = offset[i];
    00767         }// end for i
    00768       }
    00769   };
    00770
    00774   class MlstHarmonics
    00775   {
    00776     public:
    00777
    00778       //Attributes
    00779       double refTime;
    00780       double period;
    00781       double sinAmplitude;
    00782       double cosAmplitude;
    00783
    00785       MlstHarmonics()
    00786       {
    00787         refTime      = 0.;
    00788         period       = 1.;
    00789         sinAmplitude = 0.;
    00790         cosAmplitude = 0.;
    00791       };
    00792
    00794       MlstHarmonics(double time_in, double period_in,
    00795                     double sinAmp_in, double cosAmp_in)
    00796       {
    00797         refTime      = time_in;
    00798         period       = period_in;
    00799         sinAmplitude = sinAmp_in;
    00800         cosAmplitude = cosAmp_in;
    00801       }
    00802   };
    00803
    00807   class MlstNonlinearDrift
    00808   {
    00809     public:
    00810
    00811       //Attributes
    00812       long linearApproxValidity;
    00813       double quadraticTerm;
    00814       vector<MlstHarmonics> mlstHarmonics;
    00815
    00817       MlstNonlinearDrift()
    00818       {
    00819         long i;
    00820
    00821         linearApproxValidity = 99999;
    00822         quadraticTerm = 0.;
    00823         for (i = 0 ; i < 2 ; i ++ )
    00824         {
    00825           mlstHarmonics.push_back(MlstHarmonics());
    00826         }
    00827       };
    00828
    00830       MlstNonlinearDrift(long linApprox, double quadratic, const vector<MlstHarmonics> &harmonics)
    00831       {
    00832         linearApproxValidity = linApprox;
    00833         quadraticTerm = quadratic;
    00834         mlstHarmonics = harmonics;
    00835       }
    00836   };
    00837
    00841   class ParamModel
    00842   {
    00843     public:
    00844
    00845       //Attributes
    00846       long model;
    00847       vector<double> modelParam;
    00848
    00850       ParamModel(){};
    00851
    00853       ParamModel( const long mod, vector<double> &modParam)
    00854       {
    00855         model = mod;
    00856         modelParam = modParam;
    00857       }
    00858   };
    00859
    00863   class SwathGeometry
    00864   {
    00865     public:
    00866
    00867       //Attributes
    00868       long geometryType;
    00869       double azimuth;
    00870       double elevation;
    00871       double altitude;
    00872       double distance;
    00873
    00875       SwathGeometry(){};
    00876
    00878       SwathGeometry( long geomType, double azim, double elevat,
    00879                      double alt, double dist)
    00880       {
    00881         geometryType = geomType;
    00882         azimuth   = azim;
    00883         elevation = elevat;
    00884         altitude  = alt;
    00885         distance  = dist;
    00886       }
    00887   };
    00888
    00892   class TrackerLimits
    00893   {
    00894     public:
    00895
    00896       //Attributes
    00897       double maxPenalty;
    00898       double normThr;
    00899       double maxGap;
    00900
    00902       TrackerLimits(){};
    00903
    00905       TrackerLimits( double maxPenal,double normThreshold, double maximumGap)
    00906       {
    00907         maxPenalty = maxPenal;
    00908         normThr    = normThreshold;
    00909         maxGap     = maximumGap;
    00910       }
    00911   };
    00912
    00916   class StfPt
    00917   {
    00918     public:
    00919
    00920       //Attributes
    00921       double lon;
    00922       double lat;
    00923
    00925       StfPt(){};
    00926
    00928       StfPt( double longitude, double latitude )
    00929       {
    00930         lon = longitude;
    00931         lat = latitude;
    00932       }
    00933   };
    00934
    00938   class StfVhr
    00939   {
    00940     public:
    00941
    00942       //Attributes
    00943       string stfName;
    00944       string ReferenceOSF;
    00945       string ReferenceSDF;
    00946       long   swathType;
    00947       long   swathPointType;
    00948
    00949       double timeStep;
    00950       long   refractionMode;
    00951       double frequency;
    00952
    00953       long numPoints;
    00954       vector<double> altitude;
    00955
    00956       bool geometryFlag;
    00957
    00958       long repCycle;
    00959       long cycleLength;
    00960       double mlstDrift;
    00961
    00962       long absOrbit;
    00963       long orbitStart;
    00964       long orbitStop;
    00965
    00966       double position[3];
    00967       double velocity[3];
    00968
    00970       StfVhr();
    00971
    00973       StfVhr( string stfNam,
    00974               string refOSF,
    00975               string refSDF,
    00976               long   swathTyp,
    00977               long   swathPointTyp,
    00978               double timStep,
    00979               long   refrMode,
    00980               double freq,
    00981               long   numP,
    00982               const vector<double> &alt,
    00983               bool   geomFlag,
    00984               long   repCycl,
    00985               long   cyclLength,
    00986               double meanlstDrift,
    00987               long   absOrb,
    00988               long   orbit0,
    00989               long   orbit1,
    00990               double *pos,
    00991               double *vel
    00992             );
    00993
    00995       StfVhr( const StfVhr &stfVhr );
    00996
    00998       ~StfVhr();
    00999
    01001       void operator=( const StfVhr &stfVhr );
    01002
    01003   };//class StfVhr
    01004
    01008   class ZonePoint
    01009   {
    01010     public:
    01011
    01012       //Attributes
    01013       double ptLong;
    01014       double ptLat;
    01015
    01017       ZonePoint(){};
    01018
    01020       ZonePoint( double ptLongitude, double ptLatitude)
    01021       {
    01022         ptLong = ptLongitude;
    01023         ptLat  = ptLatitude;
    01024       }
    01025   };
    01026
    01030   class AttitudeModel
    01031   {
    01032     public:
    01033       //Attributes
    01034       long          attitudeModel;
    01035       long          AOCS;
    01036       ParamModel    *paramModel;
    01037       HarmonicModel *harmonicModel;
    01038       FileModel     *fileModel;
    01039       AngleModel    *angleModel;
    01040       MatrixModel   *matrixModel;
    01041
    01043       AttitudeModel();
    01044
    01046       AttitudeModel( long    attModel,
    01047                      long    AOCSModel,
    01048                      ParamModel    &parMod,
    01049                      HarmonicModel &harmMod,
    01050                      FileModel     &fileMod,
    01051                      AngleModel    &angleMod,
    01052                      MatrixModel   &matrixMod
    01053                      );
    01054
    01056       AttitudeModel( const AttitudeModel &attModel );
    01057
    01059       ~AttitudeModel();
    01060
    01062       void operator=( const AttitudeModel &attModel );
    01063
    01064     protected:
    01065
    01066     private:
    01068       void eraseAttitude();
    01069   };
    01070
    01074   class PolarMotionParams
    01075   {
    01076     public:
    01077       //Attributes
    01078       double x;
    01079       double y;
    01080
    01082       PolarMotionParams()
    01083       {
    01084         x = 0.;
    01085         y = 0.;
    01086       }
    01087
    01089       PolarMotionParams( double x1, double y1 )
    01090       {
    01091         x = x1;
    01092         y = y1;
    01093       }
    01094
    01095   };
    01096
    01100   class IersBulletinBrec
    01101   {
    01102     public:
    01103       double day;
    01104       double ut1Utc;
    01105       double ut1Tai;
    01106       PolarMotionParams polarMotionParams;
    01107
    01109       IersBulletinBrec()
    01110       {
    01111         day    = 0.;
    01112         ut1Utc = 0.;
    01113         ut1Tai = 0.;
    01114       }
    01115
    01117       IersBulletinBrec(double dayUtc, double diffUt1Utc, double diffUt1Tai,
    01118                        PolarMotionParams polarMotion)
    01119       {
    01120         day    = dayUtc;
    01121         ut1Utc = diffUt1Utc;
    01122         ut1Tai = diffUt1Tai;
    01123         polarMotionParams = polarMotion;
    01124       }
    01125
    01126   };
    01127
    01131   class IersBulletinArec
    01132   {
    01133     public:
    01134       double day;
    01135       double ut1Utc;
    01136       double ut1Tai;
    01137       PolarMotionParams polarMotionParams;
    01138
    01140       IersBulletinArec()
    01141       {
    01142         day    = 0.;
    01143         ut1Utc = 0.;
    01144         ut1Tai = 0.;
    01145       }
    01146
    01148       IersBulletinArec(double dayUtc, double diffUt1Utc, double diffUt1Tai,
    01149                        PolarMotionParams polarMotion)
    01150       {
    01151         day    = dayUtc;
    01152         ut1Utc = diffUt1Utc;
    01153         ut1Tai = diffUt1Tai;
    01154         polarMotionParams = polarMotion;
    01155       }
    01156
    01157   };
    01158
    01162   class PolarMotionFormula
    01163   {
    01164     public:
    01165
    01166       double ax;
    01167       double bx;
    01168       double cx;
    01169       double dx;
    01170       double ex;
    01171
    01172       double ay;
    01173       double by;
    01174       double cy;
    01175       double dy;
    01176       double ey;
    01177
    01178       double Aref;
    01179       double Adiv;
    01180       double Cref;
    01181       double Cdiv;
    01182
    01184       PolarMotionFormula()
    01185       {
    01186         ax = 0.;
    01187         bx = 0.;
    01188         cx = 0.;
    01189         dx = 0.;
    01190         ex = 0.;
    01191
    01192         ay = 0.;
    01193         by = 0.;
    01194         cy = 0.;
    01195         dy = 0.;
    01196         ey = 0.;
    01197
    01198         Aref = 0.;
    01199         Adiv = 0.;
    01200         Cref = 0.;
    01201         Cdiv = 0.;
    01202       }
    01203
    01205       PolarMotionFormula(double a1, double b1, double c1, double d1, double e1,
    01206                          double a2, double b2, double c2, double d2, double e2,
    01207                          double Ar, double Ad, double Cr, double Cd)
    01208       {
    01209         ax = a1;
    01210         bx = b1;
    01211         cx = c1;
    01212         dx = d1;
    01213         ex = e1;
    01214
    01215         ay = a2;
    01216         by = b2;
    01217         cy = c2;
    01218         dy = d2;
    01219         ey = e2;
    01220
    01221         Aref = Ar;
    01222         Adiv = Ad;
    01223         Cref = Cr;
    01224         Cdiv = Cd;
    01225       }
    01226
    01227   };
    01228
    01232   class TimeCorrelationFormula
    01233   {
    01234     public:
    01235
    01236       double a;
    01237       double b;
    01238       double bRef;
    01239
    01241       TimeCorrelationFormula()
    01242       {
    01243         a    = 0.;
    01244         b    = 0.;
    01245         bRef = 0.;
    01246       }
    01247
    01249       TimeCorrelationFormula(double a1, double b1, double br)
    01250       {
    01251         a    = a1;
    01252         b    = b1;
    01253         bRef = br;
    01254       }
    01255   };
    01256
    01260   class IersBulletinBFile
    01261   {
    01262   public:
    01263
    01264     string bulletinId;
    01265     vector<IersBulletinBrec> finalTable;
    01266     vector<IersBulletinBrec> preliminaryTable;
    01267
    01269     IersBulletinBFile()
    01270     {
    01271       bulletinId = "";
    01272     }
    01273
    01275     IersBulletinBFile(string bulId,
    01276                       vector<IersBulletinBrec> &vecFinal,
    01277                       vector<IersBulletinBrec> &vecPrel)
    01278     {
    01279       bulletinId          = bulId;
    01280       finalTable          = vecFinal;
    01281       preliminaryTable    = vecPrel;
    01282     }
    01283
    01284   };//class IersBulletinBFile
    01285
    01289   class IersBulletinAFile
    01290   {
    01291   public:
    01292
    01293     string bulletinId;
    01294     vector<IersBulletinArec> predictionTable;
    01295     PolarMotionFormula polarMotionFormula;
    01296     TimeCorrelationFormula timeCorrelationFormula;
    01297
    01299     IersBulletinAFile()
    01300     {
    01301       bulletinId = "";
    01302     }
    01303
    01305     IersBulletinAFile(string bulId,
    01306                       vector<IersBulletinArec> &vecPred,
    01307                       PolarMotionFormula &polarFormula,
    01308                       TimeCorrelationFormula &timeFormula)
    01309     {
    01310       bulletinId             = bulId;
    01311       predictionTable        = vecPred;
    01312       polarMotionFormula     = polarFormula;
    01313       timeCorrelationFormula = timeFormula;
    01314     }
    01315
    01316   };//class IersBulletinAFile
    01317
    01318 }//end EECFI
    01319
    01320 #endif