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,
106  };
107 
108  // temporary place:
110  {
111  MT_AZEL = 0,
112  MT_EQUA = 1,
113  MT_X_YN = 2,
114  MT_X_YE = 3,
116  MT_UNKN = 5
117  };
119  {
122  CCO_CDMS = 2,
123  CCO_PCMT = 3,
125  };
127  {
131  };
132 
133 
134 
135 
136 
137  // Statics:
140  static const QString className();
141 
142  static int mntType2int(MountingType);
143  static MountingType int2mntType(int);
144 
145  static const int maxNumOfPolynomials_;
146  //
147  // constructors/destructors:
148  //
152  SgVlbiStationInfo(int idx=-1, const QString& key="Unknown", const QString& aka="Unknown too");
153 
158 
159 
160 
161  //
162  // Interfaces:
163  //
166  inline SgBreakModel& clockBreaks();
167 
170  inline QMap<QString, SgVlbiAuxObservation*>* auxObservationByScanId();
171  inline const QMap<QString, SgVlbiAuxObservation*>* auxObservationByScanId() const;
172 
175  inline const Sg3dVector& getR();
176 
179  inline const Sg3dVector& getR_ea();
180 
183  inline const Sg3dVector& getV_ea();
184 
187  inline int getClocksModelOrder() const;
188 
191  inline double getCableCalMultiplier() const;
192 
194 
197  inline double getCableCalMultiplierDBCal() const;
198 
201  inline const QString& getCableCalsOriginTxt() const {return cableCalsOriginTxt_;};
202 
205  inline const QString& getMeteoDataOriginTxt() const {return meteoDataOriginTxt_;};
206 
210 
214 
217  inline double getAxisOffset() const;
218 
221  inline double getAxisOffset_ea() const;
222 
223  inline double getTilt(int i) const {return tilt_[0<=i&&i<2?i:0];};
224 
227  inline double getGradNorth() const;
228 
231  inline double getGradEast() const;
232 
235  inline MountingType getMntType() const;
236 
239  inline double getLatitude() const;
240 
243  inline double getLongitude() const;
244 
247  inline double getHeight() const;
248 
251  inline const QString& getTectonicPlateName() const;
252 
255  inline int getCdpNumber() const;
256 
259  inline double getEstClockModel(int idx) const;
260 
263  inline double getEstClockModelSigma(int idx) const;
264 
267  inline double getEstWetZenithDelay() const;
268 
271  inline double getEstWetZenithDelaySigma() const;
272 
273  inline double getAPrioriClockTerm_0() const;
274 
275  inline double getAPrioriClockTerm_1() const;
276 
277  inline bool getNeed2useAPrioriClocks() const;
278 
283  inline double getOLoadAmplitude(int iWave, int iCoord) const;
284  inline double getOptLoadCoeff(int idx) const;
285 
290  inline double getOLoadPhase(int iWave, int iCoord) const;
291 
292  inline bool getIsEccNonZero() const {return isEccNonZero_;};
293 
294  inline const Sg3dVector& getV3Ecc() const {return v3Ecc_;};
295 
296  inline double getGradientDelay() const {return gradientDelay_;};
297 
298  inline const QVector<double>& getTsysIfFreqs() const {return tsysIfFreqs_;};
299  inline const QVector<QString>& getTsysIfIds() const {return tsysIfIds_;};
300  inline const QVector<QString>& getTsysIfSideBands() const {return tsysIfSideBands_;};
301  inline const QVector<QString>& getTsysIfPolarizations() const {return tsysIfPolarizations_;};
302 
303  inline const SgParameterCfg& getPcClocks() const {return pcClocks_;};
304  inline const SgParameterCfg& getPcZenith() const {return pcZenith_;};
305  inline int maxNumOfPolynomials() const {return maxNumOfPolynomials_;};
306 
307  inline char getCid() const {return cId_;};
308  inline const char* getSid() const {return sId_;};
309 
310  // sets:
311  //
315  inline void setClocksModelOrder(int n);
316 
320  inline void setCableCalMultiplier(double c);
321 
323 
327  inline void setCableCalMultiplierDBCal(double c);
328 
331  inline void setCableCalsOriginTxt(const QString& origin) {cableCalsOriginTxt_ = origin;};
332 
335  inline void setMeteoDataOriginTxt(const QString& origin) {meteoDataOriginTxt_ = origin;};
336 
339  inline void setCableCalsOrigin(CableCalsOrigin origin) {cableCalsOrigin_ = origin;};
340 
343  inline void setMeteoDataOrigin(MeteoDataOrigin origin) {meteoDataOrigin_ = origin;};
344 
348  inline void setR(const Sg3dVector& r);
349 
353  inline void setR_ea(const Sg3dVector& r);
354 
358  inline void setV_ea(const Sg3dVector& v);
359 
363  inline void setAxisOffset(double v);
364 
368  inline void setAxisOffset_ea(double v);
369 
370  inline void setTilt(int i, double v) {tilt_[0<=i&&i<2?i:0] = v;};
371 
372 
376  inline void setGradNorth(double v);
377 
381  inline void setGradEast(double v);
382 
386  inline void setMntType(MountingType m);
387 
391  inline void setTectonicPlateName(const QString& name);
392 
396  inline void setCdpNumber(int cdp);
397 
402  inline void setEstClockModel(int idx, double d, double s);
403 
407  inline void setEstWetZenithDelay(double d, double s);
408 
409  inline void setAPrioriClockTerm_0(double);
410 
411  inline void setAPrioriClockTerm_1(double);
412 
413  inline void setNeed2useAPrioriClocks(bool);
414 
420  inline void setOLoadAmplitude(int iWave, int iCoord, double amplitude);
421  inline void setOptLoadCoeff(int idx, double c);
422 
428  inline void setOLoadPhase(int iWave, int iCoord, double phase);
429 
430  inline void setGradientDelay(double d) {gradientDelay_ = d;};
431 
432  inline QVector<double>& tsysIfFreqs() {return tsysIfFreqs_;};
433  inline QVector<QString>& tsysIfIds() {return tsysIfIds_;};
434  inline QVector<QString>& tsysIfSideBands() {return tsysIfSideBands_;};
435  inline QVector<QString>& tsysIfPolarizations() {return tsysIfPolarizations_;};
436 
437  inline void setPcClocks(const SgParameterCfg& pc) {pcClocks_ = pc;};
438  inline void setPcZenith(const SgParameterCfg& pc) {pcZenith_ = pc;};
439 
440  inline void setCid(char c) {cId_=c;};
441  inline void setSid(char c1, char c2) {sId_[0]=c1; sId_[1]=c2; sId_[2]=0;};
442 
443 
444  // acess to pointers:
445  //
448  inline SgParameter* pClock0();
449 
452  inline SgParameter* pClock1();
453 
456  inline SgParameter* pClock2();
457 
460  inline SgParameter* pClock3();
461 
465  inline SgParameter* pClocks(int i);
466 
469  inline SgParameter* pZenithDelay();
470 
473  inline const SgParameter* getPZenithDelay() const;
474 
477  inline SgParameter* pAtmGradN();
478 
481  inline SgParameter* pAtmGradE();
482 
485  inline SgParameter* pRx();
486 
489  inline SgParameter* pRy();
490 
493  inline SgParameter* pRz();
494 
497  inline SgParameter* pAxisOffset();
498 
499  inline SgEccRec*& eccRec();
500 
501  inline SgParameterCfg* pcClocks() {return &pcClocks_;};
502  inline SgParameterCfg* pcZenith() {return &pcZenith_;};
503 
504 
505  //
506  // Functions:
507  //
510  void createParameters();
511 
514  void releaseParameters();
515 
518  inline void clearEstClockModel();
519 
522  inline void clearEstWetZenithDelay();
523 
527  inline double effectiveCableCalMultiplier() const;
528 
531  void calcCBEpochs4Export(const QMap<QString, SgVlbiAuxObservation*>&);
532 
533  // Sg3dVector r(const SgMJD&, SgTaskConfig*);
534 
535  void adjustEccVector();
536 
537  void recalcRLF(bool isSolveCompatible);
538 
539  void checkAuxObs(const QMap<QString, QString>& scanNameById);
540 
541  inline void resetAllEditings();
542 
543  inline QString name() const {return getKey().simplified();};
544 
545  void resetCable();
546  void resetMeteo();
547  void resetTsys();
548 
550 
552 
554 
555 
556  //
557  // Friends:
558  //
559 
560  //
561  // I/O:
562  //
564 
566  //
567 
568 
569 private:
570  // clocks model:
572  // "working" cable sign:
574  // source of cable cals:
576  // original cable sign from dbcal:
579  QMap<QString, SgVlbiAuxObservation*> auxObservationByScan_;
586 
587  // temporary place:
589  // external a priori position:
591  // external a priori velocity:
593  double axisOffset_;
594  // external a priori axis offset:
596  // a priori mean gradients (all of them a "external", so can skip "_ea" suffix):
597  double tilt_[2];
598  double gradNorth_;
599  double gradEast_;
607  // AKAs:
608  char cId_; // one-char site ID (mostly for compatibility of IO)
609  char sId_[3]; // two-chars site ID plus null-terminator
610 
611  // temporary place for ocean loading coeff:
612  double oLoadAmplitudes_[11][3];
613  double oLoadPhases_[11][3];
614  // temporary place for ocean pole tide loading coeff:
615  double optLoadCoeffs_[6];
616  // saved estimations:
624  // saved intermediate values:
626  //
627  QVector<double> tsysIfFreqs_;
628  QVector<QString> tsysIfIds_;
629  QVector<QString> tsysIfSideBands_;
630  QVector<QString> tsysIfPolarizations_;
631 
632  // temporary place for the parameters:
641 
642  // peculiar parameter setup:
645 };
646 /*=====================================================================================================*/
647 
648 
649 
650 
651 
652 /*=====================================================================================================*/
653 /* */
654 /* SgVlbiStationInfo inline members: */
655 /* */
656 /*=====================================================================================================*/
657 //
658 //
659 // CONSTRUCTORS:
660 //
661 
662 
663 
664 //
665 // INTERFACES:
666 //
667 //
669 {
670  return clockBreaks_;
671 };
672 
673 
674 
675 //
676 inline QMap<QString, SgVlbiAuxObservation*>* SgVlbiStationInfo::auxObservationByScanId()
677 {
678  return &auxObservationByScan_;
679 };
680 
681 
682 
683 //
684 inline const QMap<QString, SgVlbiAuxObservation*>* SgVlbiStationInfo::auxObservationByScanId() const
685 {
686  return &auxObservationByScan_;
687 };
688 
689 
690 
691 //
693 {
694  return r_;
695 };
696 
697 
698 
699 //
701 {
702  return r_ea_;
703 };
704 
705 
706 
707 //
709 {
710  return v_ea_;
711 };
712 
713 
714 
715 // returns number of MJDays
717 {
718  return clocksModelOrder_;
719 };
720 
721 
722 
723 //
725 {
726  return cableCalMultiplier_;
727 };
728 
729 
730 
731 //
733 {
735 };
736 
737 
738 
739 //
740 inline double SgVlbiStationInfo::getAxisOffset() const
741 {
742  return axisOffset_;
743 };
744 
745 
746 
747 //
749 {
750  return axisOffset_ea_;
751 };
752 
753 
754 
755 //
756 inline double SgVlbiStationInfo::getGradNorth() const
757 {
758  return gradNorth_;
759 };
760 
761 
762 
763 //
764 inline double SgVlbiStationInfo::getGradEast() const
765 {
766  return gradEast_;
767 };
768 
769 
770 
771 //
773 {
774  return mntType_;
775 };
776 
777 
778 
779 //
780 inline double SgVlbiStationInfo::getLatitude() const
781 {
782  return latitude_;
783 };
784 
785 
786 
787 //
788 inline double SgVlbiStationInfo::getLongitude() const
789 {
790  return longitude_;
791 };
792 
793 
794 
795 //
796 inline double SgVlbiStationInfo::getHeight() const
797 {
798  return height_;
799 };
800 
801 
802 
803 //
804 inline const QString& SgVlbiStationInfo::getTectonicPlateName() const
805 {
806  return tectonicPlateName_;
807 };
808 
809 
810 
811 //
813 {
814  return cdpNumber_;
815 };
816 
817 
818 
819 //
820 inline double SgVlbiStationInfo::getEstClockModel(int idx) const
821 {
822  return estClockModel_[idx<maxNumOfPolynomials_ ? idx : 0];
823 };
824 
825 
826 
827 //
828 inline double SgVlbiStationInfo::getEstClockModelSigma(int idx) const
829 {
830  return estClockModelSigmas_[idx<maxNumOfPolynomials_ ? idx : 0];
831 };
832 
833 
834 
835 //
837 {
838  return estWetZenithDelay_;
839 };
840 
841 
842 
843 //
845 {
847 };
848 
849 
850 
851 //
853 {
854  return aPrioriClockTerm_0_;
855 };
856 
857 
858 
859 //
861 {
862  return aPrioriClockTerm_1_;
863 };
864 
865 
866 
867 //
869 {
870  return need2useAPrioriClocks_;
871 };
872 
873 
874 
875 //
876 inline double SgVlbiStationInfo::getOLoadAmplitude(int iWave, int iCoord) const
877 {
878  return oLoadAmplitudes_[iWave][iCoord];
879 };
880 
881 
882 
883 //
884 inline double SgVlbiStationInfo::getOptLoadCoeff(int idx) const
885 {
886  return optLoadCoeffs_[(-1<idx && idx<6)?idx:0];
887 };
888 
889 
890 
891 //
892 inline double SgVlbiStationInfo::getOLoadPhase(int iWave, int iCoord) const
893 {
894  return oLoadPhases_[iWave][iCoord];
895 };
896 
897 
898 
899 //
901 {
902  clocksModelOrder_ = n;
903 };
904 
905 
906 
907 //
909 {
911 };
912 
913 
914 
915 //
917 {
919 };
920 
921 
922 
923 //
924 inline void SgVlbiStationInfo::setR(const Sg3dVector& r)
925 {
926  r_ = r;
927  if (r_.module()>6000.0) // meters
928 // calcRLF(latitude_, longitude_, height_, r_, false);
929  //calcRLF(latitude_, longitude_, height_, r_, true);
931  if (height_<-1000.0)
932  std::cout << "Warning: r set for " << qPrintable(getKey()) << "; h: " << height_
933  << "; r: " << r << "\n";
934 };
935 
936 
937 
938 //
940 {
941  r_ea_ = r;
942  /*
943  if (r_ea_.module()>6000.0) // meters
944  calcRLF(latitude_, longitude_, height_, r_ea_, false);
945  */
946 };
947 
948 
949 
950 inline void SgVlbiStationInfo::recalcRLF(bool isSolveCompatible)
951 {
952  //calcRLF(latitude_, longitude_, height_, r_, isSolveCompatible);
953  geocentric2geodetic(r_, latitude_, longitude_, height_, isSolveCompatible);
954 };
955 
956 
957 
958 //
960 {
961  v_ea_ = v;
962 };
963 
964 
965 
966 //
967 inline void SgVlbiStationInfo::setAxisOffset(double v)
968 {
969  axisOffset_ = v;
970 };
971 
972 
973 
974 //
976 {
977  axisOffset_ea_ = v;
978 };
979 
980 
981 
982 //
983 inline void SgVlbiStationInfo::setGradNorth(double v)
984 {
985  gradNorth_ = v;
986 };
987 
988 
989 
990 //
991 inline void SgVlbiStationInfo::setGradEast(double v)
992 {
993  gradEast_ = v;
994 };
995 
996 
997 
998 //
1000 {
1001  mntType_ = m;
1002 };
1003 
1004 
1005 
1006 //
1007 inline void SgVlbiStationInfo::setTectonicPlateName(const QString& name)
1008 {
1010 };
1011 
1012 
1013 
1014 //
1016 {
1017  cdpNumber_ = cdp;
1018 };
1019 
1020 
1021 
1022 //
1023 inline void SgVlbiStationInfo::setEstClockModel(int idx, double d, double s)
1024 {
1025  estClockModel_[idx<maxNumOfPolynomials_ ? idx : 0] = d;
1026  estClockModelSigmas_[idx<maxNumOfPolynomials_ ? idx : 0] = s;
1027 };
1028 
1029 
1030 
1031 //
1032 inline void SgVlbiStationInfo::setEstWetZenithDelay(double d, double s)
1033 {
1034  estWetZenithDelay_ = d;
1036 };
1037 
1038 
1039 
1040 //
1042 {
1043  aPrioriClockTerm_0_ = v;
1044 };
1045 
1046 
1047 
1048 //
1050 {
1051  aPrioriClockTerm_1_ = v;
1052 };
1053 
1054 
1055 
1056 //
1058 {
1059  need2useAPrioriClocks_ = need2;
1060 };
1061 
1062 
1063 
1064 //
1065 inline void SgVlbiStationInfo::setOLoadAmplitude(int iWave, int iCoord, double amplitude)
1066 {
1067  oLoadAmplitudes_[iWave][iCoord] = amplitude;
1068 };
1069 
1070 
1071 
1072 //
1073 inline void SgVlbiStationInfo::setOptLoadCoeff(int idx, double c)
1074 {
1075  if (-1<idx && idx<6)
1076  optLoadCoeffs_[idx] = c;
1077 };
1078 
1079 
1080 
1081 //
1082 inline void SgVlbiStationInfo::setOLoadPhase(int iWave, int iCoord, double phase)
1083 {
1084  oLoadPhases_[iWave][iCoord] = phase;
1085 };
1086 
1087 
1088 
1089 //
1091 {
1092  return pClocks_[0];
1093 };
1094 
1095 
1096 
1097 //
1099 {
1100  return pClocks_[1];
1101 };
1102 
1103 
1104 
1105 //
1107 {
1108  return pClocks_[2];
1109 };
1110 
1111 
1112 
1113 //
1115 {
1116  return pClocks_[3];
1117 };
1118 
1119 
1120 
1121 //
1123 {
1124  return pClocks_[i<maxNumOfPolynomials_ ? i : 0];
1125 };
1126 
1127 
1128 
1129 //
1131 {
1132  return pZenithDelay_;
1133 };
1134 
1135 
1136 
1137 //
1139 {
1140  return pZenithDelay_;
1141 };
1142 
1143 
1144 
1145 //
1147 {
1148  return pAtmGradN_;
1149 };
1150 
1151 
1152 
1153 //
1155 {
1156  return pAtmGradE_;
1157 };
1158 
1159 
1160 
1161 //
1163 {
1164  return pRx_;
1165 };
1166 
1167 
1168 
1169 //
1171 {
1172  return pRy_;
1173 };
1174 
1175 
1176 
1177 //
1179 {
1180  return pRz_;
1181 };
1182 
1183 
1184 
1185 //
1187 {
1188  return pAxisOffset_;
1189 };
1190 
1191 
1192 
1193 //
1195 {
1196  return eccRec_;
1197 };
1198 
1199 
1200 
1201 //
1202 // FUNCTIONS:
1203 //
1204 //
1205 //
1207 {
1208  for (int i=0; i<maxNumOfPolynomials_; i++)
1209  {
1210  estClockModel_[i] = 0.0;
1211  estClockModelSigmas_[i] = 0.0;
1212  };
1213 };
1214 
1215 
1216 
1217 //
1219 {
1220  estWetZenithDelay_ = 0.0;
1222 };
1223 
1224 
1225 
1226 //
1228 {
1229  return isAttr(Attr_IGNORE_CABLE_CAL)?0.0:
1231 };
1232 
1233 
1234 
1235 //
1237 {
1240 
1241  clocksModelOrder_ = 2;
1244  aPrioriClockTerm_0_ = 0.0;
1245  aPrioriClockTerm_1_ = 0.0;
1246  need2useAPrioriClocks_ = false;
1247  gradientDelay_ = 0.0;
1249 
1255 //delAttr(Attr_IGNORE_CABLE_CAL);
1261 
1264  else
1266 };
1267 
1268 
1269 
1270 //
1271 // FRIENDS:
1272 //
1273 //
1274 //
1275 
1276 
1277 /*=====================================================================================================*/
1278 
1279 
1280 
1281 
1282 
1283 /*=====================================================================================================*/
1284 //
1285 // aux functions:
1286 //
1287 
1288 
1289 /*=====================================================================================================*/
1290 #endif //SG_VLBI_STATION_INFO_H
void geocentric2geodetic(const Sg3dVector &r, double &latitude, double &longitude, double &height, bool useOldEllipsoid)
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
void setFlybyCableCalSource(SgTaskConfig::CableCalSource s)
QVector< QString > & tsysIfSideBands()
static const int maxNumOfPolynomials_
double getOLoadPhase(int iWave, int iCoord) const
SgParameter * pAtmGradN_
CableCalsOrigin getCableCalsOrigin() const
void prepare2Run(SgTaskConfig::CableCalSource src)
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_
SgTaskConfig::CableCalSource flybyCableCalSource_
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_HAS_CCC_FSLG
a station has cable calibrations from FS log file
@ 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_HAS_CCC_CDMS
a station has cable calibrations from CDMS
@ Attr_HAS_CCC_PCMT
a station has cable calibrations from PCMT
@ 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()
SgVlbiAuxObservation::CableCorrectionType cccIdx() const
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
SgTaskConfig::CableCalSource getFlybyCableCalSource() 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
SgParameter * pAxisOffset()
QVector< QString > tsysIfPolarizations_
double getEstClockModelSigma(int idx) const
SgParameterCfg pcZenith_
void setAPrioriClockTerm_0(double)
double getOLoadAmplitude(int iWave, int iCoord) const
SgVlbiAuxObservation::CableCorrectionType cccIdx_
bool getNeed2useAPrioriClocks() const
double getEstWetZenithDelaySigma() const
SgParameter * pRy()
void checkPresenceOfCableCalibratioCorrections()
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)