General Purpose Geodetic Library
SgVlbiStationInfo.h
Go to the documentation of this file.
1 /*
2  *
3  * This file is a part of Space Geodetic Library. The library is used by
4  * nuSolve, a part of CALC/SOLVE system, and designed to make analysis of
5  * geodetic VLBI observations.
6  * Copyright (C) 2010-2020 Sergei Bolotin.
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program. If not, see <http://www.gnu.org/licenses/>.
20  *
21  */
22 
23 #ifndef SG_VLBI_STATION_INFO_H
24 #define SG_VLBI_STATION_INFO_H
25 
26 
27 #ifdef HAVE_CONFIG_H
28 # include <config.h>
29 #endif
30 
31 
32 #include <math.h>
33 
34 
35 #include <QtCore/QString>
36 #include <QtCore/QList>
37 #include <QtCore/QMap>
38 #include <QtCore/QVector>
39 
40 
41 #include <Sg3dVector.h>
42 #include <SgBreakModel.h>
43 #include <SgParameter.h>
44 #include <SgObjectInfo.h>
45 #include <SgVlbiAuxObservation.h>
46 
47 
48 class QDataStream;
49 class SgEccRec;
50 class SgVlbiStationInfo;
51 
52 
53 
54 // "...
55 // Tracking station 43, Canberra, come in Canberra! Tracking station 63, can
56 // you hear me, Madrid? Can anybody hear me? Come in, come in..."
57 //
58 
59 
60 
61 #define MAX_NUMBER_OF_POLYNOMIALS 10
62 
63 /***===================================================================================================*/
69 // typedefs:
70 typedef QMap<QString, SgVlbiStationInfo*> StationsByName;
71 typedef QMap<QString, SgVlbiStationInfo*>::iterator StationsByName_it;
72 //
73 //
75 {
76 public:
78  {
79  Attr_NOT_VALID = 1<< 0,
87  Attr_BAD_METEO = 1<< 8,
88  Attr_ART_METEO = 1<< 9,
96  Attr_HAS_METEO = 1<<17,
100  Attr_HAS_TSYS = 1<<21,
103  };
104 
105  // temporary place:
107  {
108  MT_AZEL = 0,
109  MT_EQUA = 1,
110  MT_X_YN = 2,
111  MT_X_YE = 3,
113  MT_UNKN = 5
114  };
116  {
119  CCO_CDMS = 2,
120  CCO_PCMT = 3,
122  };
124  {
128  };
129 
130 
131 
132 
133 
134  // Statics:
137  static const QString className();
138 
139  static int mntType2int(MountingType);
140  static MountingType int2mntType(int);
141 
142  static const int maxNumOfPolynomials_;
143  //
144  // constructors/destructors:
145  //
149  SgVlbiStationInfo(int idx=-1, const QString& key="Unknown", const QString& aka="Unknown too");
150 
155 
156 
157 
158  //
159  // Interfaces:
160  //
163  inline SgBreakModel& clockBreaks();
164 
167  inline QMap<QString, SgVlbiAuxObservation*>* auxObservationByScanId();
168  inline const QMap<QString, SgVlbiAuxObservation*>* auxObservationByScanId() const;
169 
172  inline const Sg3dVector& getR();
173 
176  inline const Sg3dVector& getR_ea();
177 
180  inline const Sg3dVector& getV_ea();
181 
184  inline int getClocksModelOrder() const;
185 
188  inline double getCableCalMultiplier() const;
189 
192  inline double getCableCalMultiplierDBCal() const;
193 
196  inline const QString& getCableCalsOriginTxt() const {return cableCalsOriginTxt_;};
197 
200  inline const QString& getMeteoDataOriginTxt() const {return meteoDataOriginTxt_;};
201 
205 
209 
212  inline double getAxisOffset() const;
213 
216  inline double getAxisOffset_ea() const;
217 
218  inline double getTilt(int i) const {return tilt_[0<=i&&i<2?i:0];};
219 
222  inline double getGradNorth() const;
223 
226  inline double getGradEast() const;
227 
230  inline MountingType getMntType() const;
231 
234  inline double getLatitude() const;
235 
238  inline double getLongitude() const;
239 
242  inline double getHeight() const;
243 
246  inline const QString& getTectonicPlateName() const;
247 
250  inline int getCdpNumber() const;
251 
254  inline double getEstClockModel(int idx) const;
255 
258  inline double getEstClockModelSigma(int idx) const;
259 
262  inline double getEstWetZenithDelay() const;
263 
266  inline double getEstWetZenithDelaySigma() const;
267 
268  inline double getAPrioriClockTerm_0() const;
269 
270  inline double getAPrioriClockTerm_1() const;
271 
272  inline bool getNeed2useAPrioriClocks() const;
273 
278  inline double getOLoadAmplitude(int iWave, int iCoord) const;
279  inline double getOptLoadCoeff(int idx) const;
280 
285  inline double getOLoadPhase(int iWave, int iCoord) const;
286 
287  inline bool getIsEccNonZero() const {return isEccNonZero_;};
288 
289  inline const Sg3dVector& getV3Ecc() const {return v3Ecc_;};
290 
291  inline double getGradientDelay() const {return gradientDelay_;};
292 
293  inline const QVector<double>& getTsysIfFreqs() const {return tsysIfFreqs_;};
294  inline const QVector<QString>& getTsysIfIds() const {return tsysIfIds_;};
295  inline const QVector<QString>& getTsysIfSideBands() const {return tsysIfSideBands_;};
296  inline const QVector<QString>& getTsysIfPolarizations() const {return tsysIfPolarizations_;};
297 
298  inline const SgParameterCfg& getPcClocks() const {return pcClocks_;};
299  inline const SgParameterCfg& getPcZenith() const {return pcZenith_;};
300  inline int maxNumOfPolynomials() const {return maxNumOfPolynomials_;};
301 
302  inline char getCid() const {return cId_;};
303  inline const char* getSid() const {return sId_;};
304 
305  // sets:
306  //
310  inline void setClocksModelOrder(int n);
311 
315  inline void setCableCalMultiplier(double c);
316 
320  inline void setCableCalMultiplierDBCal(double c);
321 
324  inline void setCableCalsOriginTxt(const QString& origin) {cableCalsOriginTxt_ = origin;};
325 
328  inline void setMeteoDataOriginTxt(const QString& origin) {meteoDataOriginTxt_ = origin;};
329 
332  inline void setCableCalsOrigin(CableCalsOrigin origin) {cableCalsOrigin_ = origin;};
333 
336  inline void setMeteoDataOrigin(MeteoDataOrigin origin) {meteoDataOrigin_ = origin;};
337 
341  inline void setR(const Sg3dVector& r);
342 
346  inline void setR_ea(const Sg3dVector& r);
347 
351  inline void setV_ea(const Sg3dVector& v);
352 
356  inline void setAxisOffset(double v);
357 
361  inline void setAxisOffset_ea(double v);
362 
363  inline void setTilt(int i, double v) {tilt_[0<=i&&i<2?i:0] = v;};
364 
365 
369  inline void setGradNorth(double v);
370 
374  inline void setGradEast(double v);
375 
379  inline void setMntType(MountingType m);
380 
384  inline void setTectonicPlateName(const QString& name);
385 
389  inline void setCdpNumber(int cdp);
390 
395  inline void setEstClockModel(int idx, double d, double s);
396 
400  inline void setEstWetZenithDelay(double d, double s);
401 
402  inline void setAPrioriClockTerm_0(double);
403 
404  inline void setAPrioriClockTerm_1(double);
405 
406  inline void setNeed2useAPrioriClocks(bool);
407 
413  inline void setOLoadAmplitude(int iWave, int iCoord, double amplitude);
414  inline void setOptLoadCoeff(int idx, double c);
415 
421  inline void setOLoadPhase(int iWave, int iCoord, double phase);
422 
423  inline void setGradientDelay(double d) {gradientDelay_ = d;};
424 
425  inline QVector<double>& tsysIfFreqs() {return tsysIfFreqs_;};
426  inline QVector<QString>& tsysIfIds() {return tsysIfIds_;};
427  inline QVector<QString>& tsysIfSideBands() {return tsysIfSideBands_;};
428  inline QVector<QString>& tsysIfPolarizations() {return tsysIfPolarizations_;};
429 
430  inline void setPcClocks(const SgParameterCfg& pc) {pcClocks_ = pc;};
431  inline void setPcZenith(const SgParameterCfg& pc) {pcZenith_ = pc;};
432 
433  inline void setCid(char c) {cId_=c;};
434  inline void setSid(char c1, char c2) {sId_[0]=c1; sId_[1]=c2; sId_[2]=0;};
435 
436 
437  // acess to pointers:
438  //
441  inline SgParameter* pClock0();
442 
445  inline SgParameter* pClock1();
446 
449  inline SgParameter* pClock2();
450 
453  inline SgParameter* pClock3();
454 
458  inline SgParameter* pClocks(int i);
459 
462  inline SgParameter* pZenithDelay();
463 
466  inline const SgParameter* getPZenithDelay() const;
467 
470  inline SgParameter* pAtmGradN();
471 
474  inline SgParameter* pAtmGradE();
475 
478  inline SgParameter* pRx();
479 
482  inline SgParameter* pRy();
483 
486  inline SgParameter* pRz();
487 
490  inline SgParameter* pAxisOffset();
491 
492  inline SgEccRec*& eccRec();
493 
494  inline SgParameterCfg* pcClocks() {return &pcClocks_;};
495  inline SgParameterCfg* pcZenith() {return &pcZenith_;};
496 
497 
498  //
499  // Functions:
500  //
503  void createParameters();
504 
507  void releaseParameters();
508 
511  inline void clearEstClockModel();
512 
515  inline void clearEstWetZenithDelay();
516 
520  inline double effectiveCableCalMultiplier() const;
521 
524  void calcCBEpochs4Export(const QMap<QString, SgVlbiAuxObservation*>&);
525 
526  // Sg3dVector r(const SgMJD&, SgTaskConfig*);
527 
528  // temporary place to evaluate geodetic coordinates:
535  static void calcRLF(double &latitude, double& longitude, double& height, const Sg3dVector& r,
536  bool useOldEllipsoid);
537 
538 // static void calcRLF_bis(double &latitude, double& longitude, double& height, const Sg3dVector& r,
539 // bool useOldEllipsoid);
540 
541  void adjustEccVector();
542 
543  void recalcRLF(bool isSolveCompatible);
544 
545  void checkAuxObs(const QMap<QString, QString>& scanNameById);
546 
547  inline void resetAllEditings();
548 
549  inline QString name() const {return getKey().simplified();};
550 
551  void resetCable();
552  void resetMeteo();
553  void resetTsys();
554 
555  //
556  // Friends:
557  //
558 
559  //
560  // I/O:
561  //
563 
565  //
566 
567 
568 private:
569  // clocks model:
571  // "working" cable sign:
573  // original cable sign from dbcal:
576  QMap<QString, SgVlbiAuxObservation*> auxObservationByScan_;
581 
582  // temporary place:
584  // external a priori position:
586  // external a priori velocity:
588  double axisOffset_;
589  // external a priori axis offset:
591  // a priori mean gradients (all of them a "external", so can skip "_ea" suffix):
592  double tilt_[2];
593  double gradNorth_;
594  double gradEast_;
602  // AKAs:
603  char cId_; // one-char site ID (mostly for compatibility of IO)
604  char sId_[3]; // two-chars site ID plus null-terminator
605 
606  // temporary place for ocean loading coeff:
607  double oLoadAmplitudes_[11][3];
608  double oLoadPhases_[11][3];
609  // temporary place for ocean pole tide loading coeff:
610  double optLoadCoeffs_[6];
611  // saved estimations:
619  // saved intermediate values:
621  //
622  QVector<double> tsysIfFreqs_;
623  QVector<QString> tsysIfIds_;
624  QVector<QString> tsysIfSideBands_;
625  QVector<QString> tsysIfPolarizations_;
626 
627  // temporary place for the parameters:
636 
637  // peculiar parameter setup:
640 };
641 /*=====================================================================================================*/
642 
643 
644 
645 
646 
647 /*=====================================================================================================*/
648 /* */
649 /* SgVlbiStationInfo inline members: */
650 /* */
651 /*=====================================================================================================*/
652 //
653 //
654 // CONSTRUCTORS:
655 //
656 
657 
658 
659 //
660 // INTERFACES:
661 //
662 //
664 {
665  return clockBreaks_;
666 };
667 
668 
669 
670 //
671 inline QMap<QString, SgVlbiAuxObservation*>* SgVlbiStationInfo::auxObservationByScanId()
672 {
673  return &auxObservationByScan_;
674 };
675 
676 
677 
678 //
679 inline const QMap<QString, SgVlbiAuxObservation*>* SgVlbiStationInfo::auxObservationByScanId() const
680 {
681  return &auxObservationByScan_;
682 };
683 
684 
685 
686 //
688 {
689  return r_;
690 };
691 
692 
693 
694 //
696 {
697  return r_ea_;
698 };
699 
700 
701 
702 //
704 {
705  return v_ea_;
706 };
707 
708 
709 
710 // returns number of MJDays
712 {
713  return clocksModelOrder_;
714 };
715 
716 
717 
718 //
720 {
721  return cableCalMultiplier_;
722 };
723 
724 
725 
726 //
728 {
730 };
731 
732 
733 
734 //
735 inline double SgVlbiStationInfo::getAxisOffset() const
736 {
737  return axisOffset_;
738 };
739 
740 
741 
742 //
744 {
745  return axisOffset_ea_;
746 };
747 
748 
749 
750 //
751 inline double SgVlbiStationInfo::getGradNorth() const
752 {
753  return gradNorth_;
754 };
755 
756 
757 
758 //
759 inline double SgVlbiStationInfo::getGradEast() const
760 {
761  return gradEast_;
762 };
763 
764 
765 
766 //
768 {
769  return mntType_;
770 };
771 
772 
773 
774 //
775 inline double SgVlbiStationInfo::getLatitude() const
776 {
777  return latitude_;
778 };
779 
780 
781 
782 //
783 inline double SgVlbiStationInfo::getLongitude() const
784 {
785  return longitude_;
786 };
787 
788 
789 
790 //
791 inline double SgVlbiStationInfo::getHeight() const
792 {
793  return height_;
794 };
795 
796 
797 
798 //
799 inline const QString& SgVlbiStationInfo::getTectonicPlateName() const
800 {
801  return tectonicPlateName_;
802 };
803 
804 
805 
806 //
808 {
809  return cdpNumber_;
810 };
811 
812 
813 
814 //
815 inline double SgVlbiStationInfo::getEstClockModel(int idx) const
816 {
817  return estClockModel_[idx<maxNumOfPolynomials_ ? idx : 0];
818 };
819 
820 
821 
822 //
823 inline double SgVlbiStationInfo::getEstClockModelSigma(int idx) const
824 {
825  return estClockModelSigmas_[idx<maxNumOfPolynomials_ ? idx : 0];
826 };
827 
828 
829 
830 //
832 {
833  return estWetZenithDelay_;
834 };
835 
836 
837 
838 //
840 {
842 };
843 
844 
845 
846 //
848 {
849  return aPrioriClockTerm_0_;
850 };
851 
852 
853 
854 //
856 {
857  return aPrioriClockTerm_1_;
858 };
859 
860 
861 
862 //
864 {
865  return need2useAPrioriClocks_;
866 };
867 
868 
869 
870 //
871 inline double SgVlbiStationInfo::getOLoadAmplitude(int iWave, int iCoord) const
872 {
873  return oLoadAmplitudes_[iWave][iCoord];
874 };
875 
876 
877 
878 //
879 inline double SgVlbiStationInfo::getOptLoadCoeff(int idx) const
880 {
881  return optLoadCoeffs_[(-1<idx && idx<6)?idx:0];
882 };
883 
884 
885 
886 //
887 inline double SgVlbiStationInfo::getOLoadPhase(int iWave, int iCoord) const
888 {
889  return oLoadPhases_[iWave][iCoord];
890 };
891 
892 
893 
894 //
896 {
897  clocksModelOrder_ = n;
898 };
899 
900 
901 
902 //
904 {
906 };
907 
908 
909 
910 //
912 {
914 };
915 
916 
917 
918 //
919 inline void SgVlbiStationInfo::setR(const Sg3dVector& r)
920 {
921  r_ = r;
922  if (r_.module()>6000.0) // meters
923 // calcRLF(latitude_, longitude_, height_, r_, false);
925  // calcRLF_bis(latitude_, longitude_, height_, r_, false);
926  if (height_<-1000.0)
927  std::cout << "Warning: r set for " << qPrintable(getKey()) << "; h: " << height_
928  << "; r: " << r << "\n";
929 };
930 
931 
932 
933 //
935 {
936  r_ea_ = r;
937  /*
938  if (r_ea_.module()>6000.0) // meters
939  calcRLF(latitude_, longitude_, height_, r_ea_, false);
940  */
941 };
942 
943 
944 
945 inline void SgVlbiStationInfo::recalcRLF(bool isSolveCompatible)
946 {
947  calcRLF(latitude_, longitude_, height_, r_, isSolveCompatible);
948  //calcRLF_bis(latitude_, longitude_, height_, r_, isSolveCompatible);
949 };
950 
951 
952 
953 //
955 {
956  v_ea_ = v;
957 };
958 
959 
960 
961 //
962 inline void SgVlbiStationInfo::setAxisOffset(double v)
963 {
964  axisOffset_ = v;
965 };
966 
967 
968 
969 //
971 {
972  axisOffset_ea_ = v;
973 };
974 
975 
976 
977 //
978 inline void SgVlbiStationInfo::setGradNorth(double v)
979 {
980  gradNorth_ = v;
981 };
982 
983 
984 
985 //
986 inline void SgVlbiStationInfo::setGradEast(double v)
987 {
988  gradEast_ = v;
989 };
990 
991 
992 
993 //
995 {
996  mntType_ = m;
997 };
998 
999 
1000 
1001 //
1002 inline void SgVlbiStationInfo::setTectonicPlateName(const QString& name)
1003 {
1005 };
1006 
1007 
1008 
1009 //
1011 {
1012  cdpNumber_ = cdp;
1013 };
1014 
1015 
1016 
1017 //
1018 inline void SgVlbiStationInfo::setEstClockModel(int idx, double d, double s)
1019 {
1020  estClockModel_[idx<maxNumOfPolynomials_ ? idx : 0] = d;
1021  estClockModelSigmas_[idx<maxNumOfPolynomials_ ? idx : 0] = s;
1022 };
1023 
1024 
1025 
1026 //
1027 inline void SgVlbiStationInfo::setEstWetZenithDelay(double d, double s)
1028 {
1029  estWetZenithDelay_ = d;
1031 };
1032 
1033 
1034 
1035 //
1037 {
1038  aPrioriClockTerm_0_ = v;
1039 };
1040 
1041 
1042 
1043 //
1045 {
1046  aPrioriClockTerm_1_ = v;
1047 };
1048 
1049 
1050 
1051 //
1053 {
1054  need2useAPrioriClocks_ = need2;
1055 };
1056 
1057 
1058 
1059 //
1060 inline void SgVlbiStationInfo::setOLoadAmplitude(int iWave, int iCoord, double amplitude)
1061 {
1062  oLoadAmplitudes_[iWave][iCoord] = amplitude;
1063 };
1064 
1065 
1066 
1067 //
1068 inline void SgVlbiStationInfo::setOptLoadCoeff(int idx, double c)
1069 {
1070  if (-1<idx && idx<6)
1071  optLoadCoeffs_[idx] = c;
1072 };
1073 
1074 
1075 
1076 //
1077 inline void SgVlbiStationInfo::setOLoadPhase(int iWave, int iCoord, double phase)
1078 {
1079  oLoadPhases_[iWave][iCoord] = phase;
1080 };
1081 
1082 
1083 
1084 //
1086 {
1087  return pClocks_[0];
1088 };
1089 
1090 
1091 
1092 //
1094 {
1095  return pClocks_[1];
1096 };
1097 
1098 
1099 
1100 //
1102 {
1103  return pClocks_[2];
1104 };
1105 
1106 
1107 
1108 //
1110 {
1111  return pClocks_[3];
1112 };
1113 
1114 
1115 
1116 //
1118 {
1119  return pClocks_[i<maxNumOfPolynomials_ ? i : 0];
1120 };
1121 
1122 
1123 
1124 //
1126 {
1127  return pZenithDelay_;
1128 };
1129 
1130 
1131 
1132 //
1134 {
1135  return pZenithDelay_;
1136 };
1137 
1138 
1139 
1140 //
1142 {
1143  return pAtmGradN_;
1144 };
1145 
1146 
1147 
1148 //
1150 {
1151  return pAtmGradE_;
1152 };
1153 
1154 
1155 
1156 //
1158 {
1159  return pRx_;
1160 };
1161 
1162 
1163 
1164 //
1166 {
1167  return pRy_;
1168 };
1169 
1170 
1171 
1172 //
1174 {
1175  return pRz_;
1176 };
1177 
1178 
1179 
1180 //
1182 {
1183  return pAxisOffset_;
1184 };
1185 
1186 
1187 
1188 //
1190 {
1191  return eccRec_;
1192 };
1193 
1194 
1195 
1196 //
1197 // FUNCTIONS:
1198 //
1199 //
1200 //
1202 {
1203  for (int i=0; i<maxNumOfPolynomials_; i++)
1204  {
1205  estClockModel_[i] = 0.0;
1206  estClockModelSigmas_[i] = 0.0;
1207  };
1208 };
1209 
1210 
1211 
1212 //
1214 {
1215  estWetZenithDelay_ = 0.0;
1217 };
1218 
1219 
1220 
1221 //
1223 {
1224  return isAttr(Attr_IGNORE_CABLE_CAL)?0.0:
1226 };
1227 
1228 
1229 
1230 //
1232 {
1235 
1236  clocksModelOrder_ = 2;
1239  aPrioriClockTerm_0_ = 0.0;
1240  aPrioriClockTerm_1_ = 0.0;
1241  need2useAPrioriClocks_ = false;
1242  gradientDelay_ = 0.0;
1243 
1249 //delAttr(Attr_IGNORE_CABLE_CAL);
1255 
1258  else
1260 };
1261 
1262 
1263 
1264 //
1265 // FRIENDS:
1266 //
1267 //
1268 //
1269 
1270 
1271 /*=====================================================================================================*/
1272 
1273 
1274 
1275 
1276 
1277 /*=====================================================================================================*/
1278 //
1279 // aux functions:
1280 //
1281 
1282 
1283 /*=====================================================================================================*/
1284 #endif //SG_VLBI_STATION_INFO_H
QMap< QString, SgVlbiStationInfo * >::iterator StationsByName_it
#define MAX_NUMBER_OF_POLYNOMIALS
QMap< QString, SgVlbiStationInfo * > StationsByName
double module() const
Definition: Sg3dVector.h:99
bool isAttr(uint a) const
Definition: SgAttribute.h:226
void delAttr(uint a)
Definition: SgAttribute.h:210
void addAttr(uint a)
Definition: SgAttribute.h:202
void resetAllEditings()
Definition: SgBreakModel.h:548
void resetAllEditings()
Definition: SgObjectInfo.h:595
const QString & getKey() const
Definition: SgObjectInfo.h:319
SgParameter * pAtmGradN()
const SgParameter * getPZenithDelay() const
void setNeed2useAPrioriClocks(bool)
SgParameter * pClock3()
double getLatitude() const
QMap< QString, SgVlbiAuxObservation * > * auxObservationByScanId()
const Sg3dVector & getV_ea()
static const QString className()
SgParameter * pRz()
void calcCBEpochs4Export(const QMap< QString, SgVlbiAuxObservation * > &)
double getLongitude() const
void setEstWetZenithDelay(double d, double s)
SgParameter * pAtmGradE_
void setGradientDelay(double d)
void setCableCalMultiplier(double c)
void setR(const Sg3dVector &r)
const QVector< QString > & getTsysIfPolarizations() const
QVector< QString > & tsysIfSideBands()
static const int maxNumOfPolynomials_
double getOLoadPhase(int iWave, int iCoord) const
SgParameter * pAtmGradN_
CableCalsOrigin getCableCalsOrigin() const
double getGradNorth() const
QVector< double > & tsysIfFreqs()
double getAxisOffset() const
QVector< QString > & tsysIfIds()
SgParameter * pClock1()
const Sg3dVector & getV3Ecc() const
void setMeteoDataOriginTxt(const QString &origin)
void setTilt(int i, double v)
SgParameter * pClock0()
bool saveIntermediateResults(QDataStream &) const
SgParameterCfg pcClocks_
SgParameter * pRx()
SgParameter * pAxisOffset_
SgBreakModel clockBreaks_
QString name() const
void setV_ea(const Sg3dVector &v)
QVector< QString > tsysIfIds_
double getHeight() const
int maxNumOfPolynomials() const
double getGradEast() const
const QString & getTectonicPlateName() const
void setMntType(MountingType m)
double oLoadAmplitudes_[11][3]
CableCalsOrigin cableCalsOrigin_
@ Attr_ESTIMATE_AXO
estimate axis offset;
@ Attr_NOT_VALID
omit the station;
@ Attr_CONSTRAIN_VEL
constrain station velocity in estimation;
@ Attr_INVERSE_CABLE
cable calibration correction has wrong sign;
@ Attr_ART_METEO
indicates that the station has artificial meteo parameters;
@ Attr_CONSTRAIN_COO
constrain station position in estimation;
@ Attr_REFERENCE_CLOCKS
the clocks are the reference ones;
@ Attr_ESTIMATE_VEL
estimate station velocity;
@ Attr_HAS_CABLE_CAL
a station has cable calibration readings;
@ Attr_DONT_ESTIMATE_TRPS
do not estimate parameters of troposphere delay for station;
@ Attr_IGNORE_CABLE_CAL
do not apply cable calibration;
@ Attr_HAS_A_PRIORI_AXO
indicates that the station has a priori axis offset;
@ Attr_ESTIMATE_COO
estimate station position;
@ Attr_METEO_MODIFIED
a station has meteo parameters;
@ Attr_USE_LOCAL_ZENITH
use its own setup for the zenith delay parameter;
@ Attr_USE_LOCAL_CLOCKS
use its own setup for the clock parameter;
@ Attr_CABLE_CAL_MODIFIED
a station has cable calibration readings;
@ Attr_HAS_METEO
a station has meteo parameters;
@ Attr_HAS_A_PRIORI_POS
indicates that the station has a priori r and v;
@ Attr_BAD_METEO
indicates that the station has bad meteo parameters;
@ Attr_CABLE_CAL_IS_CDMS
FS log file contains /CDMS/ readings instead of /cable/;.
SgParameter * pClocks_[MAX_NUMBER_OF_POLYNOMIALS]
MeteoDataOrigin getMeteoDataOrigin() const
MeteoDataOrigin meteoDataOrigin_
void setGradNorth(double v)
static int mntType2int(MountingType)
QVector< double > tsysIfFreqs_
const SgParameterCfg & getPcClocks() const
double estClockModel_[MAX_NUMBER_OF_POLYNOMIALS]
int getCdpNumber() const
void setAxisOffset_ea(double v)
bool loadIntermediateResults(QDataStream &)
SgParameterCfg * pcZenith()
void setMeteoDataOrigin(MeteoDataOrigin origin)
void setAPrioriClockTerm_1(double)
void setTectonicPlateName(const QString &name)
const Sg3dVector & getR()
void recalcRLF(bool isSolveCompatible)
QVector< QString > tsysIfSideBands_
SgParameterCfg * pcClocks()
void setCdpNumber(int cdp)
double getCableCalMultiplierDBCal() const
const QVector< QString > & getTsysIfSideBands() const
void setCableCalMultiplierDBCal(double c)
SgParameter * pClocks(int i)
bool getIsEccNonZero() const
SgParameter * pClock2()
const SgParameterCfg & getPcZenith() const
SgParameter * pAtmGradE()
static MountingType int2mntType(int)
double getOptLoadCoeff(int idx) const
SgParameter * pZenithDelay()
const QString & getCableCalsOriginTxt() const
double getEstWetZenithDelay() const
double estClockModelSigmas_[MAX_NUMBER_OF_POLYNOMIALS]
void setCableCalsOriginTxt(const QString &origin)
double effectiveCableCalMultiplier() const
void setOLoadPhase(int iWave, int iCoord, double phase)
double getCableCalMultiplier() const
SgParameter * pZenithDelay_
double getAxisOffset_ea() const
void setAxisOffset(double v)
void setOptLoadCoeff(int idx, double c)
void checkAuxObs(const QMap< QString, QString > &scanNameById)
void setCableCalsOrigin(CableCalsOrigin origin)
void setOLoadAmplitude(int iWave, int iCoord, double amplitude)
double getTilt(int i) const
const Sg3dVector & getR_ea()
const QVector< double > & getTsysIfFreqs() const
MountingType getMntType() const
SgBreakModel & clockBreaks()
double getAPrioriClockTerm_1() const
const QVector< QString > & getTsysIfIds() const
void setClocksModelOrder(int n)
int getClocksModelOrder() const
void setR_ea(const Sg3dVector &r)
void setGradEast(double v)
double getEstClockModel(int idx) const
static void calcRLF(double &latitude, double &longitude, double &height, const Sg3dVector &r, bool useOldEllipsoid)
SgParameter * pAxisOffset()
QVector< QString > tsysIfPolarizations_
double getEstClockModelSigma(int idx) const
SgParameterCfg pcZenith_
void setAPrioriClockTerm_0(double)
double getOLoadAmplitude(int iWave, int iCoord) const
bool getNeed2useAPrioriClocks() const
double getEstWetZenithDelaySigma() const
SgParameter * pRy()
double getAPrioriClockTerm_0() const
double getGradientDelay() const
const QString & getMeteoDataOriginTxt() const
double oLoadPhases_[11][3]
const char * getSid() const
QVector< QString > & tsysIfPolarizations()
void setPcClocks(const SgParameterCfg &pc)
SgVlbiStationInfo(int idx=-1, const QString &key="Unknown", const QString &aka="Unknown too")
void setPcZenith(const SgParameterCfg &pc)
void setEstClockModel(int idx, double d, double s)
QMap< QString, SgVlbiAuxObservation * > auxObservationByScan_
void setSid(char c1, char c2)