37 #include <QtCore/QDataStream>
38 #include <QtCore/QDir>
39 #include <QtCore/QFile>
40 #include <QtCore/QFileInfo>
44 #if QT_VERSION >= 0x050000
45 # include <QtWidgets/QApplication>
46 # include <QtWidgets/QBoxLayout>
47 # include <QtWidgets/QButtonGroup>
48 # include <QtWidgets/QCheckBox>
49 # include <QtWidgets/QComboBox>
50 # include <QtWidgets/QFrame>
51 # include <QtWidgets/QGroupBox>
52 # include <QtWidgets/QHeaderView>
53 # include <QtWidgets/QLabel>
54 # include <QtWidgets/QMessageBox>
55 # include <QtWidgets/QPushButton>
56 # include <QtWidgets/QRadioButton>
57 # include <QtWidgets/QShortcut>
58 # include <QtWidgets/QTabWidget>
60 # include <QtGui/QApplication>
61 # include <QtGui/QBoxLayout>
62 # include <QtGui/QButtonGroup>
63 # include <QtGui/QCheckBox>
64 # include <QtGui/QComboBox>
65 # include <QtGui/QFrame>
66 # include <QtGui/QGroupBox>
67 # include <QtGui/QHeaderView>
68 # include <QtGui/QLabel>
69 # include <QtGui/QMessageBox>
70 # include <QtGui/QPushButton>
71 # include <QtGui/QRadioButton>
72 # include <QtGui/QShortcut>
73 # include <QtGui/QTabWidget>
77 #include <QtGui/QIcon>
210 plotCarriers4Baselines_(),
272 QMessageBox::warning(
this,
"Warning",
"A database with the next version "
273 "already exists in the catalog.\nThe 'Save' procedure will not work if you do not remove it "
274 "from the catalog first.");
283 ": the automatic analysis is disabled for vgosDa input type");
288 ": the automatic analysis is disabled by the command line argument");
345 QBoxLayout *layout, *subLayout;
348 layout =
new QHBoxLayout(
this);
350 layout =
new QVBoxLayout(
this);
351 QTabWidget *sessionTabs=
new QTabWidget(
this);
364 layout->addWidget(sessionTabs, 10);
367 subLayout =
new QVBoxLayout();
369 subLayout =
new QHBoxLayout();
370 layout->addLayout(subLayout);
373 QPushButton *ok, *
process, *dapCB, *rmOut, *save, *s2add0, *reset;
374 ok =
new QPushButton(
"Close",
this);
375 ionoC_ =
new QPushButton(
"&IonoC",
this);
376 iono0_ =
new QPushButton(
"Iono&0",
this);
377 process=
new QPushButton(
"&Process",
this);
378 dapCB =
new QPushButton(
"&CBreak",
this);
379 rmOut =
new QPushButton(
"O&utlr",
this);
381 save =
new QPushButton(
"Sa&ve",
this);
382 s2add0 =
new QPushButton(
"Au&xSig0",
this);
383 reset =
new QPushButton(
"Reset",
this);
389 ionoC_ ->setMinimumSize( btnSize );
390 iono0_ ->setMinimumSize( btnSize );
392 ok ->setMinimumSize( btnSize );
393 dapCB ->setMinimumSize( btnSize );
394 rmOut ->setMinimumSize( btnSize );
396 save ->setMinimumSize( btnSize );
398 s2add0 ->setMinimumSize( btnSize );
399 reset ->setMinimumSize( btnSize );
401 subLayout->addSpacing(btnSize.height());
403 subLayout->addWidget(
ionoC_);
404 subLayout->addWidget(
iono0_);
406 subLayout->addWidget(dapCB);
407 subLayout->addWidget(s2add0);
408 subLayout->addWidget(reset);
409 subLayout->addWidget(rmOut);
411 subLayout->addStretch(1);
413 subLayout->addWidget(save);
414 subLayout->addWidget(ok);
417 subLayout->addSpacing(btnSize.height());
418 setSizeGripEnabled(
true);
428 connect(
stationsList_, SIGNAL(refClockStationSelected (
const QString&)),
430 connect(
stationsList_, SIGNAL(refClockStationDeselected(
const QString&)),
447 connect(ok, SIGNAL(clicked()), SLOT(
accept()));
448 connect(save, SIGNAL(clicked()), SLOT(
saveData()));
454 ionoC_->setEnabled(
false);
456 iono0_->setEnabled(
false);
474 shCut =
new QShortcut(QKeySequence(tr(
"Alt+2")),
this);
475 connect(shCut, SIGNAL(activated()),
this, SLOT(
process_2times()));
476 shCut =
new QShortcut(QKeySequence(tr(
"Alt+3")),
this);
477 connect(shCut, SIGNAL(activated()),
this, SLOT(
process_3times()));
478 shCut =
new QShortcut(QKeySequence(tr(
"Alt+4")),
this);
479 connect(shCut, SIGNAL(activated()),
this, SLOT(
process_4macro()));
482 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+a")),
this);
485 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+g")),
this);
486 connect(shCut, SIGNAL(activated()),
this, SLOT(
putDataToAgv()));
488 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+h")),
this);
491 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+i")),
this);
494 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+m")),
this);
495 connect(shCut, SIGNAL(activated()),
this, SLOT(
makeMyAction()));
497 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+n")),
this);
500 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+r")),
this);
501 connect(shCut, SIGNAL(activated()),
this, SLOT(
generateReport()));
503 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+Shift+r")),
this);
506 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+s")),
this);
509 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+t")),
this);
512 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+z")),
this);
650 QMessageBox::warning(
this,
"Warning",
"The database with the new version "
651 "already exists in the catalog.\nRemove it from the catalog and try again.");
679 QMessageBox::warning(
this,
"Novice User Warning",
"Do you want to save data?",
680 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
694 "::saveData(): unrecognized type of data");
714 if (QMessageBox::warning(
this,
"Warning",
715 "This session already has been saved. "
716 "Do you want to save the session as a new version?",
717 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
728 if (QMessageBox::warning(
this,
"Novice User Warning",
729 "No ionosphere corrections evaluated for the session. "
730 "Do you want to save the session anyway?",
731 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
736 if (QMessageBox::warning(
this,
"Novice User Warning",
737 "No additional weights were calculated for the session. "
738 "Do you want to save the session anyway?",
739 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
756 if (dirName.size()>0)
775 QMessageBox::warning(
this,
"Warning",
"There are unsaved data. Are you sure to close the window?",
776 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
787 ": accept selected");
797 QMessageBox::warning(
this,
"Warning",
"There are unsaved data. Are you sure to close the window?",
798 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
807 ": reject selected");
819 QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
833 QApplication::restoreOverrideCursor();
846 QBoxLayout *layout =
new QHBoxLayout(w);
850 QBoxLayout *subLayout;
852 subLayout =
new QVBoxLayout;
853 layout->addLayout(subLayout);
856 gbox =
new QGroupBox(
"Attributes of the session", w);
857 grid =
new QGridLayout(gbox);
859 label =
new QLabel(
"Type of import file(s):", gbox);
860 label->setMinimumSize(label->sizeHint());
861 grid->addWidget(label, 0,0);
865 str =
"Mk-III database";
874 str =
"Mk4 correlator files";
877 str =
"KOMB correlator files";
886 label =
new QLabel(str, gbox);
887 label->setMinimumSize(label->sizeHint());
888 grid->addWidget(label, 0,1);
892 label =
new QLabel(
"Official Name/Code:", gbox);
893 label->setMinimumSize(label->sizeHint());
894 grid->addWidget(label, 1,0);
896 label->setMinimumSize(label->sizeHint());
897 grid->addWidget(label, 1,1);
901 label =
new QLabel(
"Network Type/Code:", gbox);
902 label->setMinimumSize(label->sizeHint());
903 grid->addWidget(label, 1,0);
905 label->setMinimumSize(label->sizeHint());
906 grid->addWidget(label, 1,1);
909 label =
new QLabel(
"Experiment description:", gbox);
910 label->setMinimumSize(label->sizeHint());
911 grid->addWidget(label, 2,0);
913 label =
new QLabel(str!=
""?str:QString(
" "), gbox);
914 label->setMinimumSize(label->sizeHint());
915 grid->addWidget(label, 2,1);
917 label =
new QLabel(
"The session was scheduled at:", gbox);
918 label->setMinimumSize(label->sizeHint());
919 grid->addWidget(label, 3,0);
921 label->setMinimumSize(label->sizeHint());
922 grid->addWidget(label, 3,1);
924 label =
new QLabel(
"Correlated by:", gbox);
925 label->setMinimumSize(label->sizeHint());
926 grid->addWidget(label, 4,0);
928 label->setMinimumSize(label->sizeHint());
929 grid->addWidget(label, 4,1);
931 label =
new QLabel(
"Responsibility of:", gbox);
932 label->setMinimumSize(label->sizeHint());
933 grid->addWidget(label, 5,0);
935 label->setMinimumSize(label->sizeHint());
936 grid->addWidget(label, 5,1);
938 label =
new QLabel(
"Latest version created on:", gbox);
939 label->setMinimumSize(label->sizeHint());
940 grid->addWidget(label, 6,0);
942 label->setMinimumSize(label->sizeHint());
943 grid->addWidget(label, 6,1);
945 label =
new QLabel(
"Network ID:", gbox);
946 label->setMinimumSize(label->sizeHint());
947 grid->addWidget(label, 7,0);
948 QComboBox *cbNetID=
new QComboBox(gbox);
950 cbNetID->setInsertPolicy(QComboBox::InsertAlphabetically);
953 for (
int i=0; i<
networks.size(); i++)
955 cbNetID->addItem(
networks.at(i).getName());
958 cbNetID->setCurrentIndex(i);
965 cbNetID->setCurrentIndex(cbNetID->count() - 1);
967 cbNetID->setMinimumSize(cbNetID->sizeHint());
968 grid->addWidget(cbNetID, 7,1);
975 label =
new QLabel(
"Epoch of the first observation:", gbox);
976 label->setMinimumSize(label->sizeHint());
977 grid->addWidget(label, 8,0);
979 label->setMinimumSize(label->sizeHint());
980 grid->addWidget(label, 8,1);
982 label =
new QLabel(
"Epoch of the last observation:", gbox);
983 label->setMinimumSize(label->sizeHint());
984 grid->addWidget(label, 9,0);
986 label->setMinimumSize(label->sizeHint());
987 grid->addWidget(label, 9,1);
989 label =
new QLabel(
"Mean epoch of observations:", gbox);
990 label->setMinimumSize(label->sizeHint());
991 grid->addWidget(label, 10,0);
993 label->setMinimumSize(label->sizeHint());
994 grid->addWidget(label, 10,1);
996 label =
new QLabel(
"Reference epoch:", gbox);
997 label->setMinimumSize(label->sizeHint());
998 grid->addWidget(label, 11,0);
1000 label->setMinimumSize(label->sizeHint());
1001 grid->addWidget(label, 11,1);
1003 label =
new QLabel(
"Interval of observations:", gbox);
1004 label->setMinimumSize(label->sizeHint());
1005 grid->addWidget(label, 12,0);
1007 label->setMinimumSize(label->sizeHint());
1008 grid->addWidget(label, 12,1);
1010 label =
new QLabel(
"Last modified on:", gbox);
1011 label->setMinimumSize(label->sizeHint());
1012 grid->addWidget(label, 13,0);
1014 label->setMinimumSize(label->sizeHint());
1015 grid->addWidget(label, 13,1);
1018 subLayout->addWidget(gbox);
1022 gbox =
new QGroupBox(
"Parameters", w);
1023 grid =
new QGridLayout(gbox);
1025 label =
new QLabel(
"User Flag:", gbox);
1026 label->setMinimumSize(label->sizeHint());
1027 grid->addWidget(label, 0,0);
1029 QComboBox *userFlag =
new QComboBox(gbox);
1030 userFlag->setInsertPolicy(QComboBox::InsertAtBottom);
1032 const char* sUFlags[] =
1034 "A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K",
"L",
"M",
1035 "N",
"O",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z"
1037 for (
int i=0; i<(int)(
sizeof(sUFlags)/
sizeof(
const char*)); i++)
1039 userFlag->addItem(sUFlags[i]);
1041 userFlag->setCurrentIndex(i);
1043 userFlag->setMinimumSize(userFlag->sizeHint());
1044 grid->addWidget(userFlag, 0,1);
1045 subLayout->addWidget(gbox);
1048 gbox =
new QGroupBox(
"Bands", w);
1049 grid =
new QGridLayout(gbox);
1051 label =
new QLabel(
"<b>ID</b>", gbox);
1052 label->setAlignment(Qt::AlignCenter);
1053 grid->addWidget(label, 0, 0);
1055 label =
new QLabel(
"<b>Freq</b>", gbox);
1056 label->setAlignment(Qt::AlignCenter);
1057 grid->addWidget(label, 0, 1);
1070 label =
new QLabel(
"<b>Ver</b>", gbox);
1071 label->setAlignment(Qt::AlignCenter);
1072 grid->addWidget(label, 0, 2);
1074 label =
new QLabel(
"<b>File</b>", gbox);
1075 label->setAlignment(Qt::AlignCenter);
1076 grid->addWidget(label, 0, 3);
1078 label =
new QLabel(
"<b>Created on</b>", gbox);
1079 label->setAlignment(Qt::AlignCenter);
1080 grid->addWidget(label, 0, 4);
1082 label =
new QLabel(
"<b>CALC ver</b>", gbox);
1083 label->setAlignment(Qt::AlignCenter);
1084 grid->addWidget(label, 0, 5);
1086 label =
new QLabel(
"<b>#Total/Used</b>", gbox);
1087 label->setAlignment(Qt::AlignCenter);
1088 grid->addWidget(label, 0, 6);
1095 label =
new QLabel(
"<b>#Par/#C</b>", gbox);
1096 label->setAlignment(Qt::AlignCenter);
1097 grid->addWidget(label, 0, 7);
1101 label =
new QLabel(
"<b>WRMS</b>(ps)", gbox);
1102 label->setAlignment(Qt::AlignCenter);
1103 grid->addWidget(label, 0, 8);
1105 label =
new QLabel(
"<p><b>σ<sub>0</sub><b></p>", gbox);
1106 label->setAlignment(Qt::AlignCenter);
1107 grid->addWidget(label, 0, 9);
1109 label =
new QLabel(
"<p><b>χ<sup>2</sup><b></p>", gbox);
1110 label->setAlignment(Qt::AlignCenter);
1111 grid->addWidget(label, 0, 10);
1123 label =
new QLabel(band->
getKey(), gbox);
1124 label->setAlignment(Qt::AlignCenter);
1125 grid->addWidget(label, 1+i, 0);
1127 label =
new QLabel(str.sprintf(
"%6.1f", band->
getFrequency()), gbox);
1128 label->setAlignment(Qt::AlignRight);
1129 grid->addWidget(label, 1+i, 1);
1147 label->setAlignment(Qt::AlignCenter);
1148 grid->addWidget(label, 1+i, 2);
1151 label->setAlignment(Qt::AlignCenter);
1152 grid->addWidget(label, 1+i, 3);
1155 label->setAlignment(Qt::AlignCenter);
1156 grid->addWidget(label, 1+i, 4);
1159 label->setAlignment(Qt::AlignCenter);
1160 grid->addWidget(label, 1+i, 5);
1162 label =
new QLabel(str.sprintf(
"%3d/%3d",
1165 label->setAlignment(Qt::AlignCenter);
1166 grid->addWidget(label, 1+i, 6);
1173 label =
new QLabel(str.sprintf(
"%d/%d",
1176 label->setAlignment(Qt::AlignCenter);
1177 grid->addWidget(label, 1+i, 7);
1181 label->setAlignment(Qt::AlignCenter);
1182 grid->addWidget(label, 1+i, 8);
1186 label->setAlignment(Qt::AlignCenter);
1187 grid->addWidget(label, 1+i, 9);
1189 label =
new QLabel(str.sprintf(
"%.2f",
1192 label->setAlignment(Qt::AlignCenter);
1193 grid->addWidget(label, 1+i, 10);
1195 grid->setHorizontalSpacing(grid->horizontalSpacing() + 20);
1196 subLayout->addWidget(gbox);
1197 subLayout->addStretch(1);
1198 layout->addStretch(5);
1216 ": netIdCurrentIndexChanged(): the networkID of the session has been changed to `" + str +
"'");
1269 QTabWidget *w =
new QTabWidget(
this);
1271 w->setTabPosition(QTabWidget::East);
1276 connect(w, SIGNAL(currentChanged(
int)),
this, SLOT(
changeActiveBand(
int)));
1277 connect(
configWidget_, SIGNAL(activeBandModified(
int)), w, SLOT(setCurrentIndex(
int)));
1290 QTabWidget *w =
new QTabWidget(
this);
1291 w->setTabPosition(QTabWidget::South);
1298 w->addTab(stnInfoList,
"Stations");
1299 w->addTab(srcInfoList,
"Sources");
1300 w->addTab(baselineInfoList,
"Baselines");
1305 connect(
this, SIGNAL(
dataChanged()), stnInfoList, SLOT(updateContent()));
1306 connect(
this, SIGNAL(
dataChanged()), srcInfoList, SLOT(updateContent()));
1307 connect(
this, SIGNAL(
dataChanged()), baselineInfoList, SLOT(updateContent()));
1324 str = title +
" (group delay ambig.spacing: " + band->
strGrdAmbigsStat() +
" [ns])";
1330 str = title +
" (phase delay ambig.spacing: " + band->
strPhdAmbigsStat() +
" [ns])";
1417 QMap<QString, SgVlbiBaselineInfo*>::const_iterator it=band->
baselinesByName().constBegin();
1426 str = title + baselineInfo->
getKey() +
" (ambig. spacing: " +
1433 str = title + baselineInfo->
getKey() +
" (ambig. spacing: " +
1441 for (
int idx=0; jt!=observables->constEnd(); ++jt, idx++)
1537 unsigned int plotterModes;
1546 QString blNames(
"");
1549 blNames += it.value()->getKey() +
",";
1553 filters << it.value()->getKey();
1554 QString key=it.value()->getKey() +
":";
1555 if (blNames.contains(key))
1557 key =
":" + it.value()->getKey();
1558 if (blNames.contains(key))
1563 filtersExt << it.value()->getKey();
1569 QBoxLayout *layout =
new QVBoxLayout(w);
1570 layout->addWidget(plot);
1571 connect(plot, SIGNAL(userPressedAKey(
SgPlot*, Qt::KeyboardModifiers,
int)),
1584 QMap<QString, SgVlbiAuxObservation*> *auxObservationsByScan=NULL;
1591 bool hasTsyses=
false;
1594 QMap<QString, SgVlbiStationInfo*>::const_iterator
1611 if (hasCdms || hasPcmt)
1621 if (hasCdms || hasPcmt)
1662 for (
int i=0; i<numOfIfs; i++)
1664 "Tsys @IF " + ifIds.at(i) + QString(
"").sprintf(
", %.2fMHz", ifFrqs.at(i)));
1672 QMap<int, int> frq2if;
1673 for (
int i=0; i<ifFrqs.size(); i++)
1676 for (
int j=0; j<stationInfo->
tsysIfFreqs().size(); j++)
1677 if (fabs(ifFrqs.at(i) - stationInfo->
tsysIfFreqs().at(j)) < 0.01)
1685 QMap<QString, SgVlbiAuxObservation*>::const_iterator jt=auxObservationsByScan->constBegin();
1686 for (
int idx=0; jt!=auxObservationsByScan->constEnd(); ++jt, idx++)
1692 if (hasCdms || hasPcmt)
1749 for (
int i=0; i<numOfIfs; i++)
1764 QBoxLayout *layout =
new QVBoxLayout(w);
1867 QBoxLayout *layout=
new QVBoxLayout(w);
1996 bool isNeedUpdatePlots=
true;
1999 int numOfConstrains=0;
2008 if (numOfConstrains==0)
2009 QMessageBox::warning(
this,
2010 "No reference clock station",
"No station is selected as a reference clock one.");
2018 if (isNeedUpdatePlots)
2029 labelsPrc_ .at(iBand)->setText(str.sprintf(
"%3d/%3d",
2031 labelsPar_ .at(iBand)->setText(str.sprintf(
"%d/%d",
2035 labelsChi2_.at(iBand)->setText(str.sprintf(
"%.2f",
2083 QMap<QString, SgVlbiBaselineInfo*>::const_iterator it=band->
baselinesByName().constBegin();
2084 for (
int iBaseline=0; it!=band->
baselinesByName().constEnd(); ++it, iBaseline++)
2096 for (
int idx=0; jt!=observables->constEnd(); ++jt, idx++)
2140 QMap<QString, SgVlbiAuxObservation*> *auxObservationsByScan=NULL;
2152 QMap<QString, SgVlbiAuxObservation*>::const_iterator jt=auxObservationsByScan->constBegin();
2153 for (
int idx=0; jt!=auxObservationsByScan->constEnd(); ++jt, idx++)
2216 QString keyUt1(
"EOP: dUT1, ms");
2217 QString keyPmx(
"EOP: P_x, mas");
2218 QString keyPmy(
"EOP: P_y, mas");
2233 const QMap<QString, SgParameter*>
2234 *ut1ByEpoch=NULL, *pmxByEpoch=NULL, *pmyByEpoch=NULL;
2360 if (ut1ByEpoch && ut1ByEpoch->contains(timeTag) && (par=ut1ByEpoch->value(timeTag)))
2374 if (pmxByEpoch && pmxByEpoch->contains(timeTag) && (par=pmxByEpoch->value(timeTag)))
2387 if (pmyByEpoch && pmyByEpoch->contains(timeTag) && (par=pmyByEpoch->value(timeTag)))
2413 if (QMessageBox::warning(
this,
"Novice User Warning",
2414 "It looks like ambiguities are not resolved for the session yet."
2415 "Do you want to evaluate ionosphere corrections?",
2416 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
2428 QMap<QString, SgVlbiBaselineInfo*>::const_iterator i=band->
baselinesByName().constBegin();
2429 for (
int iBaseline=0; i!=band->
baselinesByName().constEnd(); ++i, iBaseline++)
2438 for (
int idx=0; j!=observables->constEnd(); ++j, idx++)
2468 ionoC_->setEnabled(
false);
2469 iono0_->setEnabled(
true);
2486 QMap<QString, SgVlbiBaselineInfo*>::const_iterator i=band->
baselinesByName().constBegin();
2487 for (
int iBaseline=0; i!=band->
baselinesByName().constEnd(); ++i, iBaseline++)
2496 for (
int idx=0; j!=observables->constEnd(); ++j, idx++)
2526 ionoC_->setEnabled(
true);
2527 iono0_->setEnabled(
false);
2577 case Qt::ControlModifier:
2605 case Qt::AltModifier:
2634 case Qt::NoModifier:
2646 case Qt::Key_Underscore:
2669 for (
int iBaseline=0; i!=band->
baselinesByName().end(); ++i, iBaseline++)
2678 for (
int idx=0; j!=observables->end(); ++j, idx++)
2717 for (
int iBaseline=0; i!=band->
baselinesByName().end(); ++i, iBaseline++)
2726 for (
int idx=0; j!=observables->end(); ++j, idx++)
2760 QMessageBox::warning(
this,
2761 "Unable to proceed",
2762 "Cannot create the list of observations for refringing. Turn off ionosphere corrections and repeat");
2772 QMap<QString, SgVlbiBaselineInfo*>::const_iterator it=band->
baselinesByName().constBegin();
2773 for (
int iBaseline=0; it!=band->
baselinesByName().constEnd(); ++it, iBaseline++)
2781 for (
int idx=0; idx<observables->size(); idx++)
2796 if (!obsList.size())
2799 QString bandKey(obsList.at(0)->getBandKey());
2805 isOk = d.mkpath(
"./");
2809 "::generateRequest4Refringing(): cannot create directory " + str);
2815 if (fileName.at(0) ==
'$')
2816 fileName.remove(0, 1);
2817 fileName +=
".b_" + bandKey +
".4FourFit";
2818 QFile f(str +
"/" + fileName);
2819 if (!f.open(QIODevice::WriteOnly))
2822 "::generateRequest4Refringing(): error opening output file: " + str +
"/" + fileName);
2826 double dInterval=1.5e-9;
2832 for (
int i=0; i<obsList.size(); i++)
2837 if (wantedResid < -o->grDelay().getAmbiguitySpacing()/2.0)
2845 QString(
"").sprintf(
"%.6f %.6f", (wantedResid - dInterval)*1.0e6, (wantedResid + dInterval)*1.0e6);
2855 "::generateRequest4Refringing(): the file \"" + f.fileName() +
"\" has been created");
2865 if (QMessageBox::warning(
this,
"Novice User Warning",
2866 "The ionosphere corrections are evaluated and taken into account."
2867 "Modifications of ambiguity multiplier numbers will lead to unexpected results."
2868 "Do you want to continue?",
2869 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
2874 bool isDataModified(
false);
2886 QMap<QString, SgVlbiBaselineInfo*>::const_iterator i=band->
baselinesByName().constBegin();
2887 for (
int iBaseline=0; i!=band->
baselinesByName().constEnd(); ++i, iBaseline++)
2896 for (
int idx=0; j!=observables->end(); ++j, idx++)
2916 isDataModified =
true;
2930 QMap<QString, SgVlbiBaselineInfo*>::const_iterator it=band->
baselinesByName().constBegin();
2931 for (
int iBaseline=0; it!=band->
baselinesByName().constEnd(); ++it, iBaseline++)
2940 for (
int idx=0; j!=observables->end(); ++j, idx++)
2953 isDataModified =
true;
2984 QMap<QString, SgVlbiBaselineInfo*>::const_iterator i=band->
baselinesByName().constBegin();
2985 for (
int iBaseline=0; i!=band->
baselinesByName().constEnd(); ++i, iBaseline++)
2994 for (
int idx=0; j!=observables->end(); ++j, idx++)
3042 for (
int iBaseline=0; i!=band->
baselinesByName().end(); ++i, iBaseline++)
3050 bool hasMatched=
false;
3051 for (
int idx=observables->size()-2; idx>=0; idx--)
3058 markedBaselines.append(baselineInfo);
3065 obsAtBreak.append(o);
3066 obsNextToBreak.append(obsNext);
3075 if (!obsAtBreak.size())
3077 if (obsAtBreak.size() != obsNextToBreak.size())
3080 ": findClockBreakEvent(): number of points in the aux lists are not equal: " +
3081 QString(
"").sprintf(
"%d vs %d", obsAtBreak.size(), obsNextToBreak.size()));
3087 ": findClockBreakEvent(): not enough points to detect a clock break");
3088 QMessageBox::warning(
this,
"Clock Breaks detector",
"Not enough points to detect a clock break");
3093 QMap<QString, int> numByName;
3094 for (
int i=0; i<obsAtBreak.size(); i++)
3096 numByName[obsAtBreak.at(i)->stn_1()->getKey()]++;
3097 numByName[obsAtBreak.at(i)->stn_2()->getKey()]++;
3100 QMap<QString, int>::iterator iAux=numByName.begin();
3101 int minN=iAux.value(), maxN=iAux.value();
3102 QString stnName=iAux.key();
3103 for (; iAux!=numByName.end(); ++iAux)
3111 stnName = iAux.key();
3115 if (maxN!=minN || (maxN==1 && minN==1))
3123 for (
int i=0; i<obsAtBreak.size(); i++)
3124 if (tBreak < obsAtBreak.at(i)->epoch())
3126 obsBreak = obsAtBreak.at(i);
3127 tBreak = obsBreak->
epoch();
3133 ": findClockBreakEvent(): stnName " + stnName +
" is not in session_->stationsByName()");
3140 ": findClockBreakEvent(): impossible to guess the station name: maxN==minN");
3161 if (!markedBaselines.size() || !band || tBreak==
tZero || !stnBreak)
3165 double shift, sigma;
3168 shift = round(1.0E9*shift);
3171 shift = round(1.0E12*shift)*1.0E-3;
3174 if (fabs(shift) > 3.0*sigma)
3178 ": processClockBreakMarks(): detected clock break at " + stnBreak->
getKey() +
3179 " station on " + tBreak.
toString() +
"; the shift is " +
3180 QString(
"").sprintf(
"%.4f ns", shift));
3189 ": processClockBreakMarks(): here could be a clock break at " + stnBreak->
getKey() +
3190 " station on " + tBreak.
toString() +
"; however, its value is small, about " +
3191 QString(
"").sprintf(
"%.4f (+/- %.4f) ns", shift, sigma));
3209 QMap<QString, SgVlbiStationInfo*> *stationsByName;
3216 for (
int idx=0; it!=stationsByName->end(); ++it, idx++)
3220 for (
int brkIdx=0; brkIdx<breakModel.size(); brkIdx++)
3225 cbAgent->
stn_ = stn;
3226 cbAgents.append(cbAgent);
3230 ": processClockBreakMarksNew(): got " + QString(
"").setNum(cbAgents.size()) +
3231 " entries in cbAgents");
3235 markedBaselines.size() && band && tBreak!=
tZero && stnBreak )
3238 bool doesExist=
false;
3239 for (
int i=0; i<cbAgents.size(); i++)
3241 cbAgent = cbAgents.at(i);
3249 cbAgent->
epoch_ = tBreak;
3250 cbAgent->
stn_ = stnBreak;
3251 cbAgents.append(cbAgent);
3255 if (!cbAgents.size())
3258 ": processClockBreakMarksNew(): the size of clock break agents list is zero, nothing to do");
3266 for (
int idx=0; idx<cbAgents.size(); idx++)
3268 cbAgent = cbAgents.at(idx);
3269 double shift, sigma;
3270 tBreak = cbAgent->
epoch_;
3271 stnBreak = cbAgent->
stn_;
3276 shift = round(1.0E9*shift);
3279 shift = round(1.0E12*shift)*1.0E-3;
3285 if (fabs(shift) > 3.0*sigma)
3289 ": processClockBreakMarksNew(): detected clock break at " + stnBreak->
getKey() +
3290 " station on " + tBreak.
toString() +
"; shift on " +
3291 QString(
"").sprintf(
"%.4f ns", shift));
3299 ": processClockBreakMarksNew(): here could be a clock break at " + stnBreak->
getKey() +
3300 " station on " + tBreak.
toString() +
"; however, its value is small, about " +
3301 QString(
"").sprintf(
"%.4f (+/- %.4f) ns", shift, sigma));
3322 QString stnName(
"");
3327 ": processTestFunctionN1(): detected clock break at " +
3328 stnName +
" on " + tBreak.
toString());
3338 ": adjustAmbiguityMultipliers(): starting adjusting of ambiguity multipliers");
3344 for (
int iBaseline=0; i!=band->
baselinesByName().end(); ++i, iBaseline++)
3350 for (
int idx=0; idx<observables->size(); idx++)
3377 if (QMessageBox::warning(
this,
"Novice User Warning",
3378 "The ionosphere corrections are evaluated and taken into account."
3379 "Modifications of ambiguity multiplier numbers will lead to unexpected results."
3380 "Do you want to continue?",
3381 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
3386 ": scanAmbiguityMultipliers(): starting scanning of ambiguity multipliers");
3404 ": detectAndProcessClockBreaks(): clock break correction procedure initiated");
3420 ": processRmOutButton(): outliers detect procedure initiated");
3448 if (QMessageBox::warning(
this,
"Warning",
3449 "Are you sure to wipe out all changes you made for the session?",
3450 QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::No)
3454 ": clearAllEditings(): starting clear of all edit information");
3486 QString blName=branch->
getName();
3494 QMessageBox msgBox(
this);
3495 QString str2copy, str2copyBlName(
""), strQCs(
""), strSnrs(
""), strECs(
"");
3496 QString str4usability(
"");
3497 QString blnStat(
""), srcStat(
""), stn1Stat(
""), stn2Stat(
"");
3500 str2copy.sprintf(
"observation %d,%s %s, %s, which fits at %.2f +/- %.2f ps",
3512 for (QMap<QString, SgVlbiObservable*>::iterator it_obs=obs->
observableByKey().begin();
3515 strQCs += it_obs.key() +
":" + QString(
"").setNum(it_obs.value()->getQualityFactor()) +
", ";
3516 strSnrs+= it_obs.key() +
":" + QString(
"").sprintf(
"%.2g", it_obs.value()->getSnr()) +
", ";
3517 strECs += it_obs.key() +
":\"" + it_obs.value()->getErrorCode() +
"\", ";
3519 if (strQCs.size()>1)
3520 strQCs = strQCs.left(strQCs.size() - 2);
3521 if (strSnrs.size()>1)
3522 strSnrs = strSnrs.left(strSnrs.size() - 2);
3523 if (strECs.size()>1)
3524 strECs = strECs.left(strECs.size() - 2);
3530 str4usability +=
"Low quality factor. ";
3532 str4usability +=
"Deselected source. ";
3534 str4usability +=
"Deselected station. ";
3536 str4usability +=
"Deselected baseline. ";
3538 str4usability +=
"Not mated. ";
3540 str4usability +=
"Not enough used channels. ";
3542 str4usability +=
"Low quality factor on another band. ";
3544 str4usability +=
"Not enough used channels on another band. ";
3545 str4usability.chop(1);
3547 str4usability =
"<dt>Reason(s) of non-usability:</dt><dd>" + str4usability +
"</dd>";
3550 blnStat.sprintf(
"<small><ul><li>Numbers (T/U/P): %d/%d/%d<li>WRMS %.2fps</ul></small>",
3556 srcStat.sprintf(
"<small><ul><li>Numbers (T/U/P): %d/%d/%d<li>WRMS %.2fps</ul></small>",
3562 stn1Stat.sprintf(
"<small><ul><li>Numbers (T/U/P): %d/%d/%d<li>WRMS %.2fps"
3563 "<li>Azimuth %.1f(degree)<li>Elevation %.1f(degree)</ul></small>",
3570 stn2Stat.sprintf(
"<small><ul><li>Numbers (T/U/P): %d/%d/%d<li>WRMS %.2fps"
3571 "<li>Azimuth %.1f(degree)<li>Elevation %.1f(degree)</ul></small>",
3578 msgBox.setIcon(QMessageBox::Information);
3579 msgBox.setText(
"<b>Inquired observation</b>");
3580 msgBox.setInformativeText(
"<p>You have selected an observation of " +
3581 o->
src()->
getKey() +
" radio source on the baseline " +
3584 "<li>baseline: <b>" + o->
baseline()->
getKey() +
"</b>" + blnStat +
3585 "<li>radio source: <b>" + o->
src()->
getKey() +
"</b>" + srcStat +
3586 "<li>reference station: <b>" + o->
stn_1()->
getKey() +
"</b>" + stn1Stat +
3587 "<li>remote station: <b>" + o->
stn_2()->
getKey() +
"</b>" + stn2Stat +
3589 "<li>observation # " + QString(
"").setNum(o->
getMediaIdx()) +
3590 ", baseline idx: " + QString(
"").setNum(idx) +
"</li>" +
3592 "<li>scan name: " + obs->
getScanName() +
"</li>" +
3595 QString(
"").sprintf(
" residual: %.4f +/- %.4fps (applied: %.4fps) </li>",
3599 "<li>Attributes:<dl>"
3600 "<dt>Quality code(s):</dt><dd>{" + strQCs +
"}</dd>"
3601 "<dt>SNR(s):</dt><dd>{" + strSnrs +
"}</dd>"
3603 "<dt>Usable:</dt><dd>" + (o->
isUsable()?QString(
"<b>Yes</b>"):QString(
"No")) +
"</dd>" +
3605 "<dt>Excluded:</dt><dd>" +
3607 "<dt>Processed:</dt><dd>" +
3610 "<dt>Fringe error code(s):</dt><dd>{" + strECs +
"}</dd></dl></ul></p><p>"
3611 "Cut and copy string for reports:<br>" +
3631 isOk = d.mkpath(
"./");
3634 ": saveIntermediateResults(): the directory " + dirName +
" has been created");
3638 ": saveIntermediateResults(): cannot create directory " + dirName +
3639 "; saving the intermediate results has failed");
3645 if (dirName.size()>0)
3648 QFile file(dirName + fileName);
3649 if (!file.open(QIODevice::WriteOnly))
3652 ": saveIntermediateResults(): cannot open file " + file.fileName() +
3653 "; saving the intermediate results has failed");
3663 ": saveIntermediateResults(): the intermediate results have been saved in the file " +
3664 file.fileName() +
", elapsed time: " +
3665 QString(
"").sprintf(
"%.2f", (finisEpoch - startEpoch)*86400000.0) +
" ms");
3670 ": saveIntermediateResults(): saving the intermediate results in the file " +
3671 file.fileName() +
" has failed");
3692 if (dirName.size()>0)
3695 QFile file(dirName + fileName);
3699 ": loadIntermediateResults(): nothing to read, the file " + file.fileName() +
" does not exist");
3702 if (!file.open(QIODevice::ReadOnly))
3705 ": loadIntermediateResults(): cannot read file " + file.fileName() +
3706 "; loading the intermediate results has failed");
3711 QMessageBox::question(
this,
3712 "Found unsaved data",
3713 "There are intermediate results for this session, should we load them?\n"
3714 "If you say No, you'll start a session from the scratch, also the intermediate results "
3715 "will be overwritten.",
3716 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)==QMessageBox::No)
3727 ": loadIntermediateResults(): the intermediate results have been loaded from the file " +
3728 file.fileName() +
", elapsed time: " +
3729 QString(
"").sprintf(
"%.2f", (finisEpoch - startEpoch)*86400000.0) +
" ms");
3733 ": loadIntermediateResults(): loading the intermediate results from the file " +
3734 file.fileName() +
" has failed");
3802 ": executeTestAction(): done");
3822 nonUsableObs << obs;
3825 deselectedObs << obs;
3828 for (
int i=0; i<deselectedObs.size(); i++)
3835 for (QMap<QString, SgVlbiObservable*>::iterator it_obs=obs->
observableByKey().begin();
3837 strQCs += it_obs.key() +
":" + QString(
"").setNum(it_obs.value()->getQualityFactor()) +
",";
3846 deselectedObservations << obsInfo;
3849 for (
int i=0; i<nonUsableObs.size(); i++)
3851 QString strReasons(
"");
3857 for (QMap<QString, SgVlbiObservable*>::iterator it_obs=obs->
observableByKey().begin();
3859 strQCs += it_obs.key() +
":" + QString(
"").setNum(it_obs.value()->getQualityFactor()) +
",";
3863 strReasons +=
"Low quality factor. ";
3865 strReasons +=
"Deselected source. ";
3867 strReasons +=
"Deselected station. ";
3869 strReasons +=
"Deselected baseline. ";
3871 strReasons +=
"Not mated. ";
3873 strReasons +=
"Not enough used channels. ";
3875 strReasons +=
"Low quality factor on another band. ";
3877 strReasons +=
"Not enough used channels on another band. ";
3884 nonUsableObservations << obsInfo;
3890 browser->setModal(
false);
3891 browser->setSizeGripEnabled(
true);
3892 browser->setWindowModality(Qt::NonModal);
3893 browser->setWindowFlags(Qt::Window);
3894 browser->resize(0.8*size());
3897 browser->activateWindow();
3915 listOfExcludedObs << obs;
3917 QString lstOfObs(
"");
3918 QString str2copy(
"");
3919 for (
int i=0; i<listOfExcludedObs.size(); i++)
3921 QString str2copyBlName(
""), strQCs(
"");
3927 for (QMap<QString, SgVlbiObservable*>::iterator it_obs=obs->
observableByKey().begin();
3929 strQCs += it_obs.key() +
":" + QString(
"").setNum(it_obs.value()->getQualityFactor()) +
",";
3930 if (strQCs.size()>1)
3931 strQCs = strQCs.left(strQCs.size() - 1);
3932 str2copy.sprintf(
"observation %d,%s %s, %s, QC=(%s) which fits at %.2f +/- %.2f ps",
3939 lstOfObs += str2copy +
"\n";
3942 QMessageBox msgBox(QMessageBox::Information,
"",
"",
3943 QMessageBox::Ok, NULL, Qt::Window);
3946 msgBox.setIcon(QMessageBox::Information);
3947 msgBox.setText(
"<b>The list of potentially good observations that were excluded from data analysis "
3949 msgBox.setInformativeText(
"Total amount: " + QString(
"").setNum(listOfExcludedObs.size()));
3950 msgBox.setDetailedText(
3953 "The observations are:\n" + lstOfObs);
3954 msgBox.setSizeGripEnabled(
true);
3969 "::runExternalCommand(): no command specified");
3994 "::runExternalCommand(): executing the command \"" + command +
"\"");
3996 rc = system(qPrintable(command));
3998 "::runExternalCommand(): the command \"" + command +
3999 "\" has been executed with rc=" + QString(
"").setNum(rc));
void longOperationStartDisplay(int minStep, int maxStep, const QString &message)
void longOperationStopDisplay()
void longOperationMessageDisplay(const QString &message)
void longOperationShowStats(const QString &label, int numTot, int numPrc, double wrms, double chi2)
void longOperationProgressDisplay(int step)
QString interval2Str(double days)
const SgMJD tZero(1957, 10, 4)
#define RAD2MAS
radians to ms:
#define DAY2SEC
radians to mas:
#define RAD2DEG
radians to degrees:
QMap< QString, SgVlbiBaselineInfo * >::iterator BaselinesByName_it
QList< SgVlbiNetworkId > networks
QMap< QString, SgVlbiSourceInfo * >::iterator SourcesByName_it
QMap< QString, SgVlbiStationInfo * >::iterator StationsByName_it
QString className() const
void generateReport4Tzds()
void netIdCurrentIndexChanged(const QString &)
bool findClockBreakEvent(SgPlot *, QList< SgVlbiBaselineInfo * > &, SgVlbiBand *&, SgMJD &, SgVlbiStationInfo *&)
QWidget * tab4SessionPlot()
bool h2aOldOceanTideContrib_
QList< QLabel * > labelsWRMS_
void generateRequest4Refringing(SgPlot *)
QWidget * tab4SourcesInfo()
void changeNumOfAmbigSpacing4MarkedPoints(SgPlot *, int)
void processRmOutButton()
void activeBandChanged(int)
void changePrimaryBand(int)
bool h2aPxyLibrationContrib_
void changeActiveBand(int idx)
bool h2aTiltRemvrContrib_
void scanAmbiguityMultipliers()
void changeNumOfSubAmbig4MarkedPoints(SgPlot *, int)
void generateReport_Extended()
QWidget * tab4GeneralInfo()
QAction * generateReportAct_
SgGuiVlbiSourceList * sourcesList_
SgGuiTaskConfig * configWidget_
void processClockBreakMarks(SgPlot *)
void displayExcludedObs()
void detectAndProcessClockBreaks()
void dispatchChangeOfClocksParameterModel(SgParameterCfg::PMode)
QList< SgPlot * > plots4Baselines_
QWidget * tab4BandPlots(SgVlbiBand *)
bool h2aNutationHFContrib_
void excludeMarkedPoints(SgPlot *)
void saveIntermediateResults()
bool h2aOceanTideContrib_
bool h2aPxyOceanTideHFContrib_
virtual ~NsSessionEditDialog()
void displayPointInfo(SgPlot *, SgPlotBranch *, int, int, int)
void dispatchUserKey(SgPlot *, Qt::KeyboardModifiers, int)
QWidget * tab4BaselinesInfo()
QWidget * tab4Band(SgVlbiBand *)
void adjustAmbiguityMultipliers()
NsSessionEditDialog(const QString &fileName, const QString &fileNameAux, SgTaskConfig *, SgParametersDescriptor *, SgVlbiSessionInfo::OriginType, bool isLnfs, QWidget *parent=0, Qt::WindowFlags flags=Qt::Dialog)
void processClockBreakMarksNew(SgPlot *)
bool isImpossibleUpdateCat_
bool h2aEarthTideContrib_
void generateAposterioriFiles()
QList< SgPlotCarrier * > plotCarriers4Baselines_
QWidget * tab4BaselinesPlot()
QPushButton * saveButton_
QWidget * tab4StationsInfo()
QList< QLabel * > labelsPar_
bool h2aUt1LibrationContrib_
QList< QWidget * > widgets2Block_
bool loadIntermediateResults(bool)
QList< QLabel * > labelsPrc_
bool h2aUt1OceanTideHFContrib_
bool processHasBeenCalled_
bool exportDataIntoVgosDb()
void runExternalCommand()
void dispatchChangeOfYAxis(int)
void displayExcludedObs_old()
bool h2aOceanPoleTideContrib_
void includeMarkedPoints(SgPlot *)
QList< QLabel * > labelsSig0_
SgPlotCarrier * plotCarrier4Session_
SgGuiVlbiStationList * stationsList_
void delayTypeChanged(int)
void dispatchChangeOfZenithParameterModel(SgParameterCfg::PMode)
bool h2aOldPoleTideContrib_
void processTestFunctionN1(SgPlot *)
QList< QLabel * > labelsChi2_
SgGuiVlbiBaselineList * baselinesList_
SgPlotCarrier * plotCarrier4Stations_
QPushButton * scanAmbigs_
void updateSessionWideSolutions()
void generateReport4StcPars()
QWidget * tab4StationsPlot()
SgSolutionReporter * reporter_
void generateReport(bool isExtended=false)
void generateAposterioriFiles()
bool importSession(bool guiExpected)
bool exportDataIntoVgosDb(QString output=QString(""))
void generateReport4Tzds()
SgVlbiSessionInfo::OriginType oType_
SgParametersDescriptor * parametersDescriptor_
bool exportDataIntoVgosDa(QString output=QString(""))
void generateReport4StcPars()
QString path2(const QString &) const
AutoSaving getAutoSavingMode() const
bool getHave2SkipAutomaticProcessing() const
bool getExecExternalCommand() const
const QString & getPath2SpoolFileOutput() const
const QString & getExternalCommand() const
void setLnfsOriginType(SgVlbiSessionInfo::OriginType)
SgPlot::OutputFormat getPlotterOutputFormat() const
SgIdentities & identities()
int getSeWinWidth() const
bool getIsShortScreen() const
bool getHave2UpdateCatalog() const
int getSeWinHeight() const
const QString & getPath2PlotterOutput() const
bool getHave2WarnCloseWindow() const
void setLnfsFileName(const QString &)
void setLnfsIsThroughCatalog(bool)
bool getIsBandPlotPerSrcView() const
bool getHave2ForceAutomaticProcessing() const
const QString & getPath2IntermediateResults() const
double calcSolution(const SgMJD &)
double calcSigma(const SgMJD &)
bool isAttr(uint a) const
void displayParametersDesriptor()
void addRefClockStation(const QString &)
const QString & getUserDefaultInitials() const
virtual void write(LogLevel, quint32, const QString &, bool=false)
@ F_HHMMSS
Just time: 17:02:43.6.
@ F_Simple
Digits: 2010/04/02 17:02:43.6.
@ F_INTERNAL
Digits, date and time: 20100402.71.
QString toString(Format format=F_Verbose) const
static SgMJD currentMJD()
void setElement(unsigned int i, unsigned int j, double d)
double getElement(unsigned int i, unsigned int j) const
double getPressure() const
double getTemperature() const
double getRelativeHumidity() const
double getDversion() const
double getSigma2add(DataType) const
const QString & getKey() const
int numProcessed(DataType dType) const
int numUsable(DataType) const
double chi2(DataType) const
double wrms(DataType) const
int numTotal(DataType dType) const
@ Attr_NOT_VALID
omit the observation;
@ Attr_PROCESSED
the observation has been processed;
void setPMode(PMode mode)
double getSolution() const
const SgParameterCfg & getPolusUT1() const
const SgParameterCfg & getPolusXY() const
const QString & getName() const
unsigned int getDataAttr(unsigned int) const
void addDataAttr(unsigned int, unsigned int)
void setExtKey(int idx, const QString &key)
void setAlternativeTitleName(const QString &aName, int idx=-1)
void delDataAttr(unsigned int, unsigned int)
void createBranch(unsigned int numberOfRows, const QString &branchName, bool hasExtKeys=false)
QList< SgPlotBranch * > * listOfBranches()
void setFile2SaveBaseName(const QString &name)
void setNameOfColumn(unsigned int, const QString &)
void setAxisType(int columnIdx, AxisType axisType)
void setStdVarIdx(int columnIdx, int sigmaColumnIdx)
void setName(const QString &name, int idx=-1)
void setOutputFormat(OutputFormat fmt)
int getNumOfYColumn() const
void setFilterNames(const QList< QString > &)
void dataContentChanged()
SgPlotCarrier * carrier()
void setFilterExtNames(const QList< QString > &)
void changeYaxisTemp2(int)
void setFilterAuxNames(const QList< QString > &)
virtual double calcSolution(const SgMJD &)
virtual double calcRateSigma(const SgMJD &)
const QMap< QString, SgArcStorage * > & arcByName()
QMap< QString, QMap< QString, SgParameter * > > * stcParByName()
const QMap< QString, SgPwlStorage * > & pwlByName()
void setHave2ApplyUt1OceanTideHFContrib(bool b)
bool getHave2ApplyNutationHFContrib() const
bool getIsObservableFollowsPlot() const
bool getHave2ApplyOldPoleTideContrib() const
void setHave2ApplyEarthTideContrib(bool b)
void setHave2ApplyOceanPoleTideContrib(bool b)
void setHave2ApplyTiltRemvrContrib(bool b)
VlbiDelayType getUseDelayType() const
bool getHave2ApplyEarthTideContrib() const
bool getHave2ApplyPyContrib() const
QMap< QString, AutomaticProcessing > & apByNetId()
bool getHave2ApplyOceanTideContrib() const
void setActiveBandIdx(int)
VlbiRateType getUseRateType() const
bool getHave2ApplyUt1OceanTideHFContrib() const
bool getIsNoviceUser() const
bool getContribsAreFromDatabase() const
bool getHave2ApplyPxyOceanTideHFContrib() const
void setHave2ApplyOceanTideContrib(bool b)
bool getHave2ApplyOldOceanTideContrib() const
bool getHave2ApplyPoleTideContrib() const
void setHave2ApplyPoleTideContrib(bool b)
void setHave2ApplyOldPoleTideContrib(bool b)
bool getIsActiveBandFollowsTab() const
bool getHave2ApplyPxyLibrationContrib() const
void setHave2ApplyPxyOceanTideHFContrib(bool b)
bool getHave2ApplyTiltRemvrContrib() const
bool getUseDynamicClockBreaks() const
void setHave2ApplyOldOceanTideContrib(bool b)
bool getHave2ApplyPxContrib() const
bool getHave2ApplyOceanPoleTideContrib() const
void setHave2ApplyPxyLibrationContrib(bool b)
void setUseDelayType(VlbiDelayType)
void setHave2ApplyPyContrib(bool b)
void setHave2ApplyPxContrib(bool b)
void setHave2ApplyFeedCorrContrib(bool b)
void setHave2ApplyNutationHFContrib(bool b)
void setHave2ApplyUt1LibrationContrib(bool b)
int getActiveBandIdx() const
bool getHave2ApplyFeedCorrContrib() const
bool getHave2ApplyUt1LibrationContrib() const
OutliersProcessingAction getOpAction() const
double getElement(unsigned int i) const
int getCurrentVersion() const
double getZenithDelayW() const
double getEstAtmGradN() const
double getCableCalibration() const
double getElevationAngle() const
double getEstZenithDelay() const
double getEstAtmGradE() const
double getEstAtmGradNSigma() const
SgVlbiObservation * getOwner() const
double getEstClocks() const
const SgMeteoData & getMeteoData() const
double getZenithDelayH() const
double getEstAtmGradESigma() const
double getEstClocksSigma() const
double getEstZenithDelaySigma() const
double getParallacticAngle() const
const SgVector & cableCorrections() const
double getAzimuthAngle() const
QMap< QString, SgVlbiBaselineInfo * > & baselinesByName()
QMap< QString, SgVlbiStationInfo * > & stationsByName()
int getInputFileVersion() const
const SgMJD & getTCreation() const
const QString & getInputFileName() const
QList< SgVlbiObservable * > & observables()
const QString & strGrdAmbigsStat() const
QMap< QString, SgVlbiSourceInfo * > & sourcesByName()
double getFrequency() const
SgVlbiHistory & history()
const QString & strPhdAmbigsStat() const
@ Attr_HAS_AMBIGS
the band contains group delays and ambiguities;
@ Attr_NOT_VALID
omit the baseline;
const QString & strPhdAmbigsStat() const
QList< SgVlbiObservable * > & observables()
void calculateClockF1(SgTaskConfig *)
const QString & strGrdAmbigsStat() const
double sigma2Apply() const
double getEffFreq() const
double getAmbiguitySpacing() const
void setNumOfSubAmbigs(int n)
void setNumOfAmbiguities(int)
int getNumOfAmbiguities() const
double getIonoValue() const
double getSubAmbigSpacing() const
double getResidual() const
double getResidualFringeFitting() const
int getNumOfSubAmbigs() const
const QString & getName() const
double getResidualNorm() const
double getIonoSigma() const
const QString & getFourfitOutputFName() const
double getPhaseCalPhDelays(int i) const
double getUvFrPerAsec(int i) const
double getPhaseCalGrDelays(int i) const
const SgMJD & epoch() const
int getQualityFactor() const
SgVlbiStationInfo *& stn_2()
SgVlbiStationInfo *& stn_1()
SgVlbiObservation * owner()
SgVlbiMeasurement & phDRate()
@ NUR_DESELECTED_BASELINE
int errorCode2Int() const
SgVlbiSourceInfo *& src()
const QString & getFourfitControlFile() const
const QString & getBandKey() const
const SgAttribute & nonUsableReason() const
SgVlbiBaselineInfo *& baseline()
SgVlbiMeasurement & phDelay()
SgVlbiMeasurement * activeDelay()
double getCorrCoeff() const
SgVlbiMeasurement & grDelay()
SgVlbiMeasurement & sbDelay()
@ Attr_SBD_NOT_VALID
omit the observation if single band delay is analysed;
SgVlbiStationInfo * stn_1()
SgVlbiAuxObservation * auxObs_2()
SgVlbiSession * session()
double getDTecStdDev() const
SgVlbiBaselineInfo * baseline()
bool modifyNotValidAttribute(bool=false)
double getAprioriUt1HfContrib() const
SgVlbiStationInfo * stn_2()
double getAprioriPyHfContrib() const
SgVlbiObservable * primeObs()
const QString & getScanName() const
QMap< QString, SgVlbiObservable * > & observableByKey()
double getDdel_dUT1() const
SgVlbiAuxObservation * auxObs_1()
double getAprioriPxHfContrib() const
double getCalcHiFyUt1Delay() const
SgVlbiObservable * activeObs()
const SgMJD & getTFinis() const
const QString & getName() const
const QString & getNetworkID() const
const SgMJD & getTStart() const
void setNetworkID(const QString &netID)
const QString & getSubmitterName() const
const QString & getUserFlag() const
@ OT_DBH
observations are from database files provided by correlators;
@ OT_MK4
observations are from Mk4-compatible correlator output;
@ OT_AGV
observations are in AGV format;
@ OT_VDB
observations are from vgosDb data tree;
@ OT_NGS
observations are from a NGS file provided by other AC;
@ OT_KOMB
observations are from KOMB output (generated by NICT, Japan);
@ OT_UNKNOWN
unknown (=all others) source of import;
@ Attr_FF_EDIT_INFO_MODIFIED
edit info has been modified by user;
@ Attr_FF_WEIGHTS_CORRECTED
weights have been corrected;
@ Attr_FF_ION_C_CALCULATED
ionospheric corrections have been calculated;
@ Attr_FF_AMBIGS_RESOLVED
ambiguities have been resolved;
@ Attr_FF_AUTOPROCESSED
automatic data processing performed successfully;
@ Attr_HAS_IONO_CORR
the theoretical values are available;
OriginType getOriginType() const
const QString & getCorrelatorName() const
const QString & getOfficialName() const
const QString & getDescription() const
const QString & getSchedulerName() const
const QString & getSessionType() const
const QString & getSessionCode() const
const SgMJD & getTMean() const
const SgMJD & getTCreation() const
SgVlbiBand * primaryBand()
int checkBandForClockBreaks(int, bool)
int numberOfBands() const
const SgMJD & getLastProcessed() const
int getNumOfConstraints() const
bool need2runAutomaticDataProcessing()
void setLongOperationStart(void(*operation)(int, int, const QString &))
SgModelsInfo & calcInfo()
QList< SgVlbiBand * > & bands()
void setPrimaryBandByIdx(int)
void calculateIonoCorrections(const SgTaskConfig *)
int restoreOutliers(int bandIdx)
void setLongOperationProgress(void(*operation)(int))
QMap< QString, SgVlbiStationInfo * > & stationsByName()
const SgMJD & tRefer() const
void setLongOperationShowStats(void(*operation)(const QString &label, int numTot, int numPrc, double wrms, double chi2))
bool saveIntermediateResults(QDataStream &) const
bool detectClockBreaks_mode1(SgVlbiBand *, QString &, SgMJD &)
QList< SgVlbiObservation * > & observations()
void process(bool haveProcessAllBands, bool interactWithGui)
void pickupReferenceCoordinatesStation()
QString name4SirFile(bool)
void scanBaselines4GrDelayAmbiguities(int bandIdx)
void resetAllEditings(bool have2resetConfig)
void eliminateLargeOutliers(int bandIdx, int maxNumOfPasses, double wrmsRatio)
void correctClockBreak(SgVlbiBand *, SgVlbiStationInfo *, const SgMJD &, double, double, bool, bool=true)
void zerofyIonoCorrections(const SgTaskConfig *)
const QList< SgMJD * > & scanEpochs() const
void calculateClockBreaksParameters(QList< SgClockBreakAgent * > &, SgVlbiBand *)
QMap< QString, SgVlbiSourceInfo * > & sourcesByName()
void calculateClockBreakParameter(const SgMJD &, SgVlbiStationInfo *, SgVlbiBand *, double &, double &)
int eliminateOutliers(int bandIdx)
void eliminateOutliersSimpleMode(int bandIdx, int maxNumOfPasses, double threshold, double=0.0)
void setLongOperationMessage(void(*operation)(const QString &))
int getNumOfParameters() const
bool loadIntermediateResults(QDataStream &)
void setHave2InteractWithGui(bool have2)
QMap< QString, double > & skyFreqByIfId()
void setClockModelOrder4Stations(int)
QMap< QString, SgVlbiBaselineInfo * > & baselinesByName()
void setLongOperationStop(void(*operation)())
QMap< QString, SgVlbiAuxObservation * > * auxObservationByScanId()
QVector< double > & tsysIfFreqs()
@ Attr_NOT_VALID
omit the station;
@ Attr_REFERENCE_CLOCKS
the clocks are the reference ones;
@ Attr_HAS_CCC_CDMS
a station has cable calibrations from CDMS
@ Attr_HAS_CCC_PCMT
a station has cable calibrations from PCMT
SgParameterCfg * pcZenith()
SgParameterCfg * pcClocks()
SgBreakModel & clockBreaks()
SgParametersDescriptor parametersDescriptor