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_(),
270 QMessageBox::warning(
this,
"Warning",
"A database with the next version "
271 "already exists in the catalog.\nThe 'Save' procedure will not work if you do not remove it "
272 "from the catalog first.");
281 ": the automatic analysis is disabled for vgosDa input type");
286 ": the automatic analysis is disabled by the command line argument");
319 QBoxLayout *layout, *subLayout;
322 layout =
new QHBoxLayout(
this);
324 layout =
new QVBoxLayout(
this);
325 QTabWidget *sessionTabs=
new QTabWidget(
this);
338 layout->addWidget(sessionTabs, 10);
341 subLayout =
new QVBoxLayout();
343 subLayout =
new QHBoxLayout();
344 layout->addLayout(subLayout);
347 QPushButton *ok, *
process, *dapCB, *rmOut, *save, *s2add0, *reset;
348 ok =
new QPushButton(
"Close",
this);
349 ionoC_ =
new QPushButton(
"&IonoC",
this);
350 iono0_ =
new QPushButton(
"Iono&0",
this);
351 process=
new QPushButton(
"&Process",
this);
355 dapCB =
new QPushButton(
"&CBreak",
this);
356 rmOut =
new QPushButton(
"O&utlr",
this);
358 save =
new QPushButton(
"Sa&ve",
this);
359 s2add0 =
new QPushButton(
"Au&xSig0",
this);
360 reset =
new QPushButton(
"Reset",
this);
366 ionoC_ ->setMinimumSize( btnSize );
367 iono0_ ->setMinimumSize( btnSize );
372 ok ->setMinimumSize( btnSize );
373 dapCB ->setMinimumSize( btnSize );
374 rmOut ->setMinimumSize( btnSize );
376 save ->setMinimumSize( btnSize );
378 s2add0 ->setMinimumSize( btnSize );
379 reset ->setMinimumSize( btnSize );
381 subLayout->addSpacing(btnSize.height());
383 subLayout->addWidget(
ionoC_);
384 subLayout->addWidget(
iono0_);
389 subLayout->addWidget(dapCB);
390 subLayout->addWidget(s2add0);
391 subLayout->addWidget(reset);
392 subLayout->addWidget(rmOut);
394 subLayout->addStretch(1);
396 subLayout->addWidget(save);
397 subLayout->addWidget(ok);
400 subLayout->addSpacing(btnSize.height());
401 setSizeGripEnabled(
true);
411 connect(
stationsList_, SIGNAL(refClockStationSelected (
const QString&)),
413 connect(
stationsList_, SIGNAL(refClockStationDeselected(
const QString&)),
433 connect(ok, SIGNAL(clicked()), SLOT(
accept()));
434 connect(save, SIGNAL(clicked()), SLOT(
saveData()));
440 ionoC_->setEnabled(
false);
442 iono0_->setEnabled(
false);
460 shCut =
new QShortcut(QKeySequence(tr(
"Alt+2")),
this);
461 connect(shCut, SIGNAL(activated()),
this, SLOT(
process_2times()));
462 shCut =
new QShortcut(QKeySequence(tr(
"Alt+3")),
this);
463 connect(shCut, SIGNAL(activated()),
this, SLOT(
process_3times()));
464 shCut =
new QShortcut(QKeySequence(tr(
"Alt+4")),
this);
465 connect(shCut, SIGNAL(activated()),
this, SLOT(
process_4macro()));
468 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+a")),
this);
471 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+g")),
this);
472 connect(shCut, SIGNAL(activated()),
this, SLOT(
putDataToAgv()));
474 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+h")),
this);
477 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+i")),
this);
480 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+m")),
this);
481 connect(shCut, SIGNAL(activated()),
this, SLOT(
makeMyAction()));
483 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+n")),
this);
486 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+r")),
this);
487 connect(shCut, SIGNAL(activated()),
this, SLOT(
generateReport()));
489 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+Shift+r")),
this);
492 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+s")),
this);
495 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+t")),
this);
498 shCut =
new QShortcut(QKeySequence(tr(
"Ctrl+z")),
this);
636 QMessageBox::warning(
this,
"Warning",
"The database with the new version "
637 "already exists in the catalog.\nRemove it from the catalog and try again.");
665 QMessageBox::warning(
this,
"Novice User Warning",
"Do you want to save data?",
666 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
680 "::saveData(): unrecognized type of data");
700 if (QMessageBox::warning(
this,
"Warning",
701 "This session already has been saved. "
702 "Do you want to save the session as a new version?",
703 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
714 if (QMessageBox::warning(
this,
"Novice User Warning",
715 "No ionosphere corrections evaluated for the session. "
716 "Do you want to save the session anyway?",
717 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
722 if (QMessageBox::warning(
this,
"Novice User Warning",
723 "No additional weights were calculated for the session. "
724 "Do you want to save the session anyway?",
725 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
742 if (dirName.size()>0)
761 QMessageBox::warning(
this,
"Warning",
"There are unsaved data. Are you sure to close the window?",
762 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
773 ": accept selected");
783 QMessageBox::warning(
this,
"Warning",
"There are unsaved data. Are you sure to close the window?",
784 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
793 ": reject selected");
805 QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
819 QApplication::restoreOverrideCursor();
832 QBoxLayout *layout =
new QHBoxLayout(w);
836 QBoxLayout *subLayout;
838 subLayout =
new QVBoxLayout;
839 layout->addLayout(subLayout);
842 gbox =
new QGroupBox(
"Attributes of the session", w);
843 grid =
new QGridLayout(gbox);
845 label =
new QLabel(
"Type of import file(s):", gbox);
846 label->setMinimumSize(label->sizeHint());
847 grid->addWidget(label, 0,0);
851 str =
"Mk-III database";
860 str =
"Mk4 correlator files";
863 str =
"KOMB correlator files";
872 label =
new QLabel(str, gbox);
873 label->setMinimumSize(label->sizeHint());
874 grid->addWidget(label, 0,1);
876 label =
new QLabel(
"Official Name/Code:", gbox);
877 label->setMinimumSize(label->sizeHint());
878 grid->addWidget(label, 1,0);
880 label->setMinimumSize(label->sizeHint());
881 grid->addWidget(label, 1,1);
883 label =
new QLabel(
"Experiment description:", gbox);
884 label->setMinimumSize(label->sizeHint());
885 grid->addWidget(label, 2,0);
887 label =
new QLabel(str!=
""?str:QString(
" "), gbox);
888 label->setMinimumSize(label->sizeHint());
889 grid->addWidget(label, 2,1);
891 label =
new QLabel(
"The session was scheduled at:", gbox);
892 label->setMinimumSize(label->sizeHint());
893 grid->addWidget(label, 3,0);
895 label->setMinimumSize(label->sizeHint());
896 grid->addWidget(label, 3,1);
898 label =
new QLabel(
"Correlated by:", gbox);
899 label->setMinimumSize(label->sizeHint());
900 grid->addWidget(label, 4,0);
902 label->setMinimumSize(label->sizeHint());
903 grid->addWidget(label, 4,1);
905 label =
new QLabel(
"Responsibility of:", gbox);
906 label->setMinimumSize(label->sizeHint());
907 grid->addWidget(label, 5,0);
909 label->setMinimumSize(label->sizeHint());
910 grid->addWidget(label, 5,1);
912 label =
new QLabel(
"Latest version created on:", gbox);
913 label->setMinimumSize(label->sizeHint());
914 grid->addWidget(label, 6,0);
916 label->setMinimumSize(label->sizeHint());
917 grid->addWidget(label, 6,1);
919 label =
new QLabel(
"Network ID:", gbox);
920 label->setMinimumSize(label->sizeHint());
921 grid->addWidget(label, 7,0);
922 QComboBox *cbNetID=
new QComboBox(gbox);
924 cbNetID->setInsertPolicy(QComboBox::InsertAlphabetically);
927 for (
int i=0; i<
networks.size(); i++)
929 cbNetID->addItem(
networks.at(i).getName());
932 cbNetID->setCurrentIndex(i);
939 cbNetID->setCurrentIndex(cbNetID->count() - 1);
941 cbNetID->setMinimumSize(cbNetID->sizeHint());
942 grid->addWidget(cbNetID, 7,1);
949 label =
new QLabel(
"Epoch of the first observation:", gbox);
950 label->setMinimumSize(label->sizeHint());
951 grid->addWidget(label, 8,0);
953 label->setMinimumSize(label->sizeHint());
954 grid->addWidget(label, 8,1);
956 label =
new QLabel(
"Epoch of the last observation:", gbox);
957 label->setMinimumSize(label->sizeHint());
958 grid->addWidget(label, 9,0);
960 label->setMinimumSize(label->sizeHint());
961 grid->addWidget(label, 9,1);
963 label =
new QLabel(
"Mean epoch of observations:", gbox);
964 label->setMinimumSize(label->sizeHint());
965 grid->addWidget(label, 10,0);
967 label->setMinimumSize(label->sizeHint());
968 grid->addWidget(label, 10,1);
970 label =
new QLabel(
"Reference epoch:", gbox);
971 label->setMinimumSize(label->sizeHint());
972 grid->addWidget(label, 11,0);
974 label->setMinimumSize(label->sizeHint());
975 grid->addWidget(label, 11,1);
977 label =
new QLabel(
"Interval of observations:", gbox);
978 label->setMinimumSize(label->sizeHint());
979 grid->addWidget(label, 12,0);
981 label->setMinimumSize(label->sizeHint());
982 grid->addWidget(label, 12,1);
984 subLayout->addWidget(gbox);
988 gbox =
new QGroupBox(
"Parameters", w);
989 grid =
new QGridLayout(gbox);
991 label =
new QLabel(
"User Flag:", gbox);
992 label->setMinimumSize(label->sizeHint());
993 grid->addWidget(label, 0,0);
995 QComboBox *userFlag =
new QComboBox(gbox);
996 userFlag->setInsertPolicy(QComboBox::InsertAtBottom);
998 const char* sUFlags[] =
1000 "A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K",
"L",
"M",
1001 "N",
"O",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z"
1003 for (
int i=0; i<(int)(
sizeof(sUFlags)/
sizeof(
const char*)); i++)
1005 userFlag->addItem(sUFlags[i]);
1007 userFlag->setCurrentIndex(i);
1009 userFlag->setMinimumSize(userFlag->sizeHint());
1010 grid->addWidget(userFlag, 0,1);
1011 subLayout->addWidget(gbox);
1014 gbox =
new QGroupBox(
"Bands", w);
1015 grid =
new QGridLayout(gbox);
1017 label =
new QLabel(
"<b>ID</b>", gbox);
1018 label->setAlignment(Qt::AlignCenter);
1019 grid->addWidget(label, 0, 0);
1021 label =
new QLabel(
"<b>Freq</b>", gbox);
1022 label->setAlignment(Qt::AlignCenter);
1023 grid->addWidget(label, 0, 1);
1036 label =
new QLabel(
"<b>Ver</b>", gbox);
1037 label->setAlignment(Qt::AlignCenter);
1038 grid->addWidget(label, 0, 2);
1040 label =
new QLabel(
"<b>File</b>", gbox);
1041 label->setAlignment(Qt::AlignCenter);
1042 grid->addWidget(label, 0, 3);
1044 label =
new QLabel(
"<b>Created on</b>", gbox);
1045 label->setAlignment(Qt::AlignCenter);
1046 grid->addWidget(label, 0, 4);
1048 label =
new QLabel(
"<b>CALC ver</b>", gbox);
1049 label->setAlignment(Qt::AlignCenter);
1050 grid->addWidget(label, 0, 5);
1052 label =
new QLabel(
"<b>#Total/Used</b>", gbox);
1053 label->setAlignment(Qt::AlignCenter);
1054 grid->addWidget(label, 0, 6);
1061 label =
new QLabel(
"<b>#Par/#C</b>", gbox);
1062 label->setAlignment(Qt::AlignCenter);
1063 grid->addWidget(label, 0, 7);
1067 label =
new QLabel(
"<b>WRMS</b>(ps)", gbox);
1068 label->setAlignment(Qt::AlignCenter);
1069 grid->addWidget(label, 0, 8);
1071 label =
new QLabel(
"<p><b>σ<sub>0</sub><b></p>", gbox);
1072 label->setAlignment(Qt::AlignCenter);
1073 grid->addWidget(label, 0, 9);
1075 label =
new QLabel(
"<p><b>χ<sup>2</sup><b></p>", gbox);
1076 label->setAlignment(Qt::AlignCenter);
1077 grid->addWidget(label, 0, 10);
1089 label =
new QLabel(band->
getKey(), gbox);
1090 label->setAlignment(Qt::AlignCenter);
1091 grid->addWidget(label, 1+i, 0);
1093 label =
new QLabel(str.sprintf(
"%6.1f", band->
getFrequency()), gbox);
1094 label->setAlignment(Qt::AlignRight);
1095 grid->addWidget(label, 1+i, 1);
1113 label->setAlignment(Qt::AlignCenter);
1114 grid->addWidget(label, 1+i, 2);
1117 label->setAlignment(Qt::AlignCenter);
1118 grid->addWidget(label, 1+i, 3);
1121 label->setAlignment(Qt::AlignCenter);
1122 grid->addWidget(label, 1+i, 4);
1125 label->setAlignment(Qt::AlignCenter);
1126 grid->addWidget(label, 1+i, 5);
1128 label =
new QLabel(str.sprintf(
"%3d/%3d",
1131 label->setAlignment(Qt::AlignCenter);
1132 grid->addWidget(label, 1+i, 6);
1139 label =
new QLabel(str.sprintf(
"%d/%d",
1142 label->setAlignment(Qt::AlignCenter);
1143 grid->addWidget(label, 1+i, 7);
1147 label->setAlignment(Qt::AlignCenter);
1148 grid->addWidget(label, 1+i, 8);
1152 label->setAlignment(Qt::AlignCenter);
1153 grid->addWidget(label, 1+i, 9);
1155 label =
new QLabel(str.sprintf(
"%.2f",
1158 label->setAlignment(Qt::AlignCenter);
1159 grid->addWidget(label, 1+i, 10);
1161 grid->setHorizontalSpacing(grid->horizontalSpacing() + 20);
1162 subLayout->addWidget(gbox);
1163 subLayout->addStretch(1);
1164 layout->addStretch(5);
1182 ": netIdCurrentIndexChanged(): the networkID of the session has been changed to `" + str +
"'");
1235 QTabWidget *w =
new QTabWidget(
this);
1237 w->setTabPosition(QTabWidget::East);
1242 connect(w, SIGNAL(currentChanged(
int)),
this, SLOT(
changeActiveBand(
int)));
1243 connect(
configWidget_, SIGNAL(activeBandModified(
int)), w, SLOT(setCurrentIndex(
int)));
1256 QTabWidget *w =
new QTabWidget(
this);
1257 w->setTabPosition(QTabWidget::South);
1264 w->addTab(stnInfoList,
"Stations");
1265 w->addTab(srcInfoList,
"Sources");
1266 w->addTab(baselineInfoList,
"Baselines");
1271 connect(
this, SIGNAL(
dataChanged()), stnInfoList, SLOT(updateContent()));
1272 connect(
this, SIGNAL(
dataChanged()), srcInfoList, SLOT(updateContent()));
1273 connect(
this, SIGNAL(
dataChanged()), baselineInfoList, SLOT(updateContent()));
1293 str = title +
" (group delay ambig.spacing: " + band->
strGrdAmbigsStat() +
" [ns])";
1299 str = title +
" (phase delay ambig.spacing: " + band->
strPhdAmbigsStat() +
" [ns])";
1387 QMap<QString, SgVlbiBaselineInfo*>::const_iterator it=band->
baselinesByName().constBegin();
1396 str = title + baselineInfo->
getKey() +
" (ambig. spacing: " +
1403 str = title + baselineInfo->
getKey() +
" (ambig. spacing: " +
1411 for (
int idx=0; jt!=observables->constEnd(); ++jt, idx++)
1509 unsigned int plotterModes;
1518 QString blNames(
"");
1521 blNames += it.value()->getKey() +
",";
1525 filters << it.value()->getKey();
1526 QString key=it.value()->getKey() +
":";
1527 if (blNames.contains(key))
1529 key =
":" + it.value()->getKey();
1530 if (blNames.contains(key))
1535 filtersExt << it.value()->getKey();
1541 QBoxLayout *layout =
new QVBoxLayout(w);
1542 layout->addWidget(plot);
1543 connect(plot, SIGNAL(userPressedAKey(
SgPlot*, Qt::KeyboardModifiers,
int)),
1556 QMap<QString, SgVlbiAuxObservation*> *auxObservationsByScan=NULL;
1563 bool hasTsyses=
false;
1564 QMap<QString, SgVlbiStationInfo*>::const_iterator
1614 for (
int i=0; i<numOfIfs; i++)
1616 QString(
"").sprintf(
", %.2fMHz", ifFrqs.at(i)));
1625 QMap<int, int> frq2if;
1626 for (
int i=0; i<ifFrqs.size(); i++)
1629 for (
int j=0; j<stationInfo->
tsysIfFreqs().size(); j++)
1630 if (fabs(ifFrqs.at(i) - stationInfo->
tsysIfFreqs().at(j)) < 0.01)
1638 QMap<QString, SgVlbiAuxObservation*>::const_iterator jt=auxObservationsByScan->constBegin();
1639 for (
int idx=0; jt!=auxObservationsByScan->constEnd(); ++jt, idx++)
1673 for (
int i=0; i<numOfIfs; i++)
1689 QBoxLayout *layout =
new QVBoxLayout(w);
1792 QBoxLayout *layout=
new QVBoxLayout(w);
1921 bool isNeedUpdatePlots=
true;
1924 int numOfConstrains=0;
1933 if (numOfConstrains==0)
1934 QMessageBox::warning(
this,
1935 "No reference clock station",
"No station is selected as a reference clock one.");
1943 if (isNeedUpdatePlots)
1954 labelsPrc_ .at(iBand)->setText(str.sprintf(
"%3d/%3d",
1956 labelsPar_ .at(iBand)->setText(str.sprintf(
"%d/%d",
1960 labelsChi2_.at(iBand)->setText(str.sprintf(
"%.2f",
2008 QMap<QString, SgVlbiBaselineInfo*>::const_iterator it=band->
baselinesByName().constBegin();
2009 for (
int iBaseline=0; it!=band->
baselinesByName().constEnd(); ++it, iBaseline++)
2018 for (
int idx=0; jt!=observables->constEnd(); ++jt, idx++)
2063 QMap<QString, SgVlbiAuxObservation*> *auxObservationsByScan=NULL;
2075 QMap<QString, SgVlbiAuxObservation*>::const_iterator jt=auxObservationsByScan->constBegin();
2076 for (
int idx=0; jt!=auxObservationsByScan->constEnd(); ++jt, idx++)
2131 QString keyUt1(
"EOP: dUT1, ms");
2132 QString keyPmx(
"EOP: P_x, mas");
2133 QString keyPmy(
"EOP: P_y, mas");
2160 const QMap<QString, SgParameter*>
2161 *ut1ByEpoch=NULL, *pmxByEpoch=NULL, *pmyByEpoch=NULL;
2274 if (ut1ByEpoch && ut1ByEpoch->contains(timeTag) && (par=ut1ByEpoch->value(timeTag)))
2286 if (pmxByEpoch && pmxByEpoch->contains(timeTag) && (par=pmxByEpoch->value(timeTag)))
2298 if (pmyByEpoch && pmyByEpoch->contains(timeTag) && (par=pmyByEpoch->value(timeTag)))
2322 if (QMessageBox::warning(
this,
"Novice User Warning",
2323 "It looks like ambiguities are not resolved for the session yet."
2324 "Do you want to evaluate ionosphere corrections?",
2325 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
2337 QMap<QString, SgVlbiBaselineInfo*>::const_iterator i=band->
baselinesByName().constBegin();
2338 for (
int iBaseline=0; i!=band->
baselinesByName().constEnd(); ++i, iBaseline++)
2347 for (
int idx=0; j!=observables->constEnd(); ++j, idx++)
2379 ionoC_->setEnabled(
false);
2380 iono0_->setEnabled(
true);
2397 QMap<QString, SgVlbiBaselineInfo*>::const_iterator i=band->
baselinesByName().constBegin();
2398 for (
int iBaseline=0; i!=band->
baselinesByName().constEnd(); ++i, iBaseline++)
2407 for (
int idx=0; j!=observables->constEnd(); ++j, idx++)
2439 ionoC_->setEnabled(
true);
2440 iono0_->setEnabled(
false);
2490 case Qt::ControlModifier:
2518 case Qt::AltModifier:
2547 case Qt::NoModifier:
2559 case Qt::Key_Underscore:
2582 for (
int iBaseline=0; i!=band->
baselinesByName().end(); ++i, iBaseline++)
2591 for (
int idx=0; j!=observables->end(); ++j, idx++)
2630 for (
int iBaseline=0; i!=band->
baselinesByName().end(); ++i, iBaseline++)
2639 for (
int idx=0; j!=observables->end(); ++j, idx++)
2673 QMessageBox::warning(
this,
2674 "Unable to proceed",
2675 "Cannot create the list of observations for refringing. Turn off ionosphere corrections and repeat");
2688 QMap<QString, SgVlbiBaselineInfo*>::const_iterator it=band->
baselinesByName().constBegin();
2689 for (
int iBaseline=0; it!=band->
baselinesByName().constEnd(); ++it, iBaseline++)
2697 for (
int idx=0; idx<observables->size(); idx++)
2712 if (!obsList.size())
2715 QString bandKey(obsList.at(0)->getBandKey());
2721 isOk = d.mkpath(
"./");
2725 "::generateRequest4Refringing(): cannot create directory " + str);
2731 if (fileName.at(0) ==
'$')
2732 fileName.remove(0, 1);
2733 fileName +=
".b_" + bandKey +
".4FourFit";
2734 QFile f(str +
"/" + fileName);
2735 if (!f.open(QIODevice::WriteOnly))
2738 "::generateRequest4Refringing(): error opening output file: " + str +
"/" + fileName);
2742 double dInterval=1.5e-9;
2748 for (
int i=0; i<obsList.size(); i++)
2753 if (wantedResid < -o->grDelay().getAmbiguitySpacing()/2.0)
2761 QString(
"").sprintf(
"%.6f %.6f", (wantedResid - dInterval)*1.0e6, (wantedResid + dInterval)*1.0e6);
2771 "::generateRequest4Refringing(): the file \"" + f.fileName() +
"\" has been created");
2781 if (QMessageBox::warning(
this,
"Novice User Warning",
2782 "The ionosphere corrections are evaluated and taken into account."
2783 "Modifications of ambiguity multiplier numbers will lead to unexpected results."
2784 "Do you want to continue?",
2785 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
2790 bool isDataModified(
false);
2802 QMap<QString, SgVlbiBaselineInfo*>::const_iterator i=band->
baselinesByName().constBegin();
2803 for (
int iBaseline=0; i!=band->
baselinesByName().constEnd(); ++i, iBaseline++)
2812 for (
int idx=0; j!=observables->end(); ++j, idx++)
2834 isDataModified =
true;
2848 QMap<QString, SgVlbiBaselineInfo*>::const_iterator it=band->
baselinesByName().constBegin();
2849 for (
int iBaseline=0; it!=band->
baselinesByName().constEnd(); ++it, iBaseline++)
2858 for (
int idx=0; j!=observables->end(); ++j, idx++)
2871 isDataModified =
true;
2902 QMap<QString, SgVlbiBaselineInfo*>::const_iterator i=band->
baselinesByName().constBegin();
2903 for (
int iBaseline=0; i!=band->
baselinesByName().constEnd(); ++i, iBaseline++)
2912 for (
int idx=0; j!=observables->end(); ++j, idx++)
2960 for (
int iBaseline=0; i!=band->
baselinesByName().end(); ++i, iBaseline++)
2968 bool hasMatched=
false;
2969 for (
int idx=observables->size()-2; idx>=0; idx--)
2976 markedBaselines.append(baselineInfo);
2983 obsAtBreak.append(o);
2984 obsNextToBreak.append(obsNext);
2993 if (!obsAtBreak.size())
2995 if (obsAtBreak.size() != obsNextToBreak.size())
2998 ": findClockBreakEvent(): number of points in the aux lists are not equal: " +
2999 QString(
"").sprintf(
"%d vs %d", obsAtBreak.size(), obsNextToBreak.size()));
3005 ": findClockBreakEvent(): not enough points to detect a clock break");
3006 QMessageBox::warning(
this,
"Clock Breaks detector",
"Not enough points to detect a clock break");
3011 QMap<QString, int> numByName;
3012 for (
int i=0; i<obsAtBreak.size(); i++)
3014 numByName[obsAtBreak.at(i)->stn_1()->getKey()]++;
3015 numByName[obsAtBreak.at(i)->stn_2()->getKey()]++;
3018 QMap<QString, int>::iterator iAux=numByName.begin();
3019 int minN=iAux.value(), maxN=iAux.value();
3020 QString stnName=iAux.key();
3021 for (; iAux!=numByName.end(); ++iAux)
3029 stnName = iAux.key();
3033 if (maxN!=minN || (maxN==1 && minN==1))
3041 for (
int i=0; i<obsAtBreak.size(); i++)
3042 if (tBreak < obsAtBreak.at(i)->epoch())
3044 obsBreak = obsAtBreak.at(i);
3045 tBreak = obsBreak->
epoch();
3051 ": findClockBreakEvent(): stnName " + stnName +
" is not in session_->stationsByName()");
3058 ": findClockBreakEvent(): impossible to guess the station name: maxN==minN");
3079 if (!markedBaselines.size() || !band || tBreak==
tZero || !stnBreak)
3083 double shift, sigma;
3086 shift = round(1.0E9*shift);
3089 shift = round(1.0E12*shift)*1.0E-3;
3092 if (fabs(shift) > 3.0*sigma)
3096 ": processClockBreakMarks(): detected clock break at " + stnBreak->
getKey() +
3097 " station on " + tBreak.
toString() +
"; the shift is " +
3098 QString(
"").sprintf(
"%.4f ns", shift));
3107 ": processClockBreakMarks(): here could be a clock break at " + stnBreak->
getKey() +
3108 " station on " + tBreak.
toString() +
"; however, its value is small, about " +
3109 QString(
"").sprintf(
"%.4f (+/- %.4f) ns", shift, sigma));
3127 QMap<QString, SgVlbiStationInfo*> *stationsByName;
3134 for (
int idx=0; it!=stationsByName->end(); ++it, idx++)
3138 for (
int brkIdx=0; brkIdx<breakModel.size(); brkIdx++)
3143 cbAgent->
stn_ = stn;
3144 cbAgents.append(cbAgent);
3148 ": processClockBreakMarksNew(): got " + QString(
"").setNum(cbAgents.size()) +
3149 " entries in cbAgents");
3153 markedBaselines.size() && band && tBreak!=
tZero && stnBreak )
3156 bool doesExist=
false;
3157 for (
int i=0; i<cbAgents.size(); i++)
3159 cbAgent = cbAgents.at(i);
3167 cbAgent->
epoch_ = tBreak;
3168 cbAgent->
stn_ = stnBreak;
3169 cbAgents.append(cbAgent);
3173 if (!cbAgents.size())
3176 ": processClockBreakMarksNew(): the size of clock break agents list is zero, nothing to do");
3184 for (
int idx=0; idx<cbAgents.size(); idx++)
3186 cbAgent = cbAgents.at(idx);
3187 double shift, sigma;
3188 tBreak = cbAgent->
epoch_;
3189 stnBreak = cbAgent->
stn_;
3194 shift = round(1.0E9*shift);
3197 shift = round(1.0E12*shift)*1.0E-3;
3203 if (fabs(shift) > 3.0*sigma)
3207 ": processClockBreakMarksNew(): detected clock break at " + stnBreak->
getKey() +
3208 " station on " + tBreak.
toString() +
"; shift on " +
3209 QString(
"").sprintf(
"%.4f ns", shift));
3217 ": processClockBreakMarksNew(): here could be a clock break at " + stnBreak->
getKey() +
3218 " station on " + tBreak.
toString() +
"; however, its value is small, about " +
3219 QString(
"").sprintf(
"%.4f (+/- %.4f) ns", shift, sigma));
3240 QString stnName(
"");
3245 ": processTestFunctionN1(): detected clock break at " +
3246 stnName +
" on " + tBreak.
toString());
3256 ": adjustAmbiguityMultipliers(): starting adjusting of ambiguity multipliers");
3262 for (
int iBaseline=0; i!=band->
baselinesByName().end(); ++i, iBaseline++)
3268 for (
int idx=0; idx<observables->size(); idx++)
3295 if (QMessageBox::warning(
this,
"Novice User Warning",
3296 "The ionosphere corrections are evaluated and taken into account."
3297 "Modifications of ambiguity multiplier numbers will lead to unexpected results."
3298 "Do you want to continue?",
3299 QMessageBox::Yes | QMessageBox::No, QMessageBox::No)==QMessageBox::No)
3304 ": scanAmbiguityMultipliers(): starting scanning of ambiguity multipliers");
3322 ": detectAndProcessClockBreaks(): clock break correction procedure initiated");
3338 ": processRmOutButton(): outliers detect procedure initiated");
3366 if (QMessageBox::warning(
this,
"Warning",
3367 "Are you sure to wipe out all changes you made for the session?",
3368 QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::No)
3372 ": clearAllEditings(): starting clear of all edit information");
3404 QString blName=branch->
getName();
3412 QMessageBox msgBox(
this);
3413 QString str2copy, str2copyBlName(
""), strQCs(
""), strSnrs(
""), strECs(
"");
3414 QString str4usability(
"");
3415 QString blnStat(
""), srcStat(
""), stn1Stat(
""), stn2Stat(
"");
3418 str2copy.sprintf(
"observation %d,%s %s, %s, which fits at %.2f +/- %.2f ps",
3430 for (QMap<QString, SgVlbiObservable*>::iterator it_obs=obs->
observableByKey().begin();
3433 strQCs += it_obs.key() +
":" + QString(
"").setNum(it_obs.value()->getQualityFactor()) +
", ";
3434 strSnrs+= it_obs.key() +
":" + QString(
"").sprintf(
"%.2g", it_obs.value()->getSnr()) +
", ";
3435 strECs += it_obs.key() +
":\"" + it_obs.value()->getErrorCode() +
"\", ";
3437 if (strQCs.size()>1)
3438 strQCs = strQCs.left(strQCs.size() - 2);
3439 if (strSnrs.size()>1)
3440 strSnrs = strSnrs.left(strSnrs.size() - 2);
3441 if (strECs.size()>1)
3442 strECs = strECs.left(strECs.size() - 2);
3448 str4usability +=
"Low quality factor. ";
3450 str4usability +=
"Deselected source. ";
3452 str4usability +=
"Deselected station. ";
3454 str4usability +=
"Deselected baseline. ";
3456 str4usability +=
"Not mated. ";
3458 str4usability +=
"Not enough used channels. ";
3460 str4usability +=
"Low quality factor on another band. ";
3462 str4usability +=
"Not enough used channels on another band. ";
3463 str4usability.chop(1);
3465 str4usability =
"<dt>Reason(s) of non-usability:</dt><dd>" + str4usability +
"</dd>";
3468 blnStat.sprintf(
"<small><ul><li>Numbers (T/U/P): %d/%d/%d<li>WRMS %.2fps</ul></small>",
3474 srcStat.sprintf(
"<small><ul><li>Numbers (T/U/P): %d/%d/%d<li>WRMS %.2fps</ul></small>",
3480 stn1Stat.sprintf(
"<small><ul><li>Numbers (T/U/P): %d/%d/%d<li>WRMS %.2fps"
3481 "<li>Azimuth %.1f(degree)<li>Elevation %.1f(degree)</ul></small>",
3488 stn2Stat.sprintf(
"<small><ul><li>Numbers (T/U/P): %d/%d/%d<li>WRMS %.2fps"
3489 "<li>Azimuth %.1f(degree)<li>Elevation %.1f(degree)</ul></small>",
3496 msgBox.setIcon(QMessageBox::Information);
3497 msgBox.setText(
"<b>Inquired observation</b>");
3498 msgBox.setInformativeText(
"<p>You have selected an observation of " +
3499 o->
src()->
getKey() +
" radio source on the baseline " +
3502 "<li>baseline: <b>" + o->
baseline()->
getKey() +
"</b>" + blnStat +
3503 "<li>radio source: <b>" + o->
src()->
getKey() +
"</b>" + srcStat +
3504 "<li>reference station: <b>" + o->
stn_1()->
getKey() +
"</b>" + stn1Stat +
3505 "<li>remote station: <b>" + o->
stn_2()->
getKey() +
"</b>" + stn2Stat +
3507 "<li>observation # " + QString(
"").setNum(o->
getMediaIdx()) +
3508 ", baseline idx: " + QString(
"").setNum(idx) +
"</li>" +
3510 "<li>scan name: " + obs->
getScanName() +
"</li>" +
3513 QString(
"").sprintf(
" residual: %.4f +/- %.4fps (applied: %.4fps) </li>",
3517 "<li>Attributes:<dl>"
3518 "<dt>Quality code(s):</dt><dd>{" + strQCs +
"}</dd>"
3519 "<dt>SNR(s):</dt><dd>{" + strSnrs +
"}</dd>"
3521 "<dt>Usable:</dt><dd>" + (o->
isUsable()?QString(
"<b>Yes</b>"):QString(
"No")) +
"</dd>" +
3523 "<dt>Excluded:</dt><dd>" +
3525 "<dt>Processed:</dt><dd>" +
3528 "<dt>Fringe error code(s):</dt><dd>{" + strECs +
"}</dd></dl></ul></p><p>"
3529 "Cut and copy string for reports:<br>" +
3549 isOk = d.mkpath(
"./");
3552 ": saveIntermediateResults(): the directory " + dirName +
" has been created");
3556 ": saveIntermediateResults(): cannot create directory " + dirName +
3557 "; saving the intermediate results has failed");
3563 if (dirName.size()>0)
3566 QFile file(dirName + fileName);
3567 if (!file.open(QIODevice::WriteOnly))
3570 ": saveIntermediateResults(): cannot open file " + file.fileName() +
3571 "; saving the intermediate results has failed");
3581 ": saveIntermediateResults(): the intermediate results have been saved in the file " +
3582 file.fileName() +
", elapsed time: " +
3583 QString(
"").sprintf(
"%.2f", (finisEpoch - startEpoch)*86400000.0) +
" ms");
3588 ": saveIntermediateResults(): saving the intermediate results in the file " +
3589 file.fileName() +
" has failed");
3610 if (dirName.size()>0)
3613 QFile file(dirName + fileName);
3617 ": loadIntermediateResults(): nothing to read, the file " + file.fileName() +
" does not exist");
3620 if (!file.open(QIODevice::ReadOnly))
3623 ": loadIntermediateResults(): cannot read file " + file.fileName() +
3624 "; loading the intermediate results has failed");
3629 QMessageBox::question(
this,
3630 "Found unsaved data",
3631 "There are intermediate results for this session, should we load them?\n"
3632 "If you say No, you'll start a session from the scratch, also the intermediate results "
3633 "will be overwritten.",
3634 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)==QMessageBox::No)
3645 ": loadIntermediateResults(): the intermediate results have been loaded from the file " +
3646 file.fileName() +
", elapsed time: " +
3647 QString(
"").sprintf(
"%.2f", (finisEpoch - startEpoch)*86400000.0) +
" ms");
3651 ": loadIntermediateResults(): loading the intermediate results from the file " +
3652 file.fileName() +
" has failed");
3722 ": executeTestAction(): done");
3742 nonUsableObs << obs;
3745 deselectedObs << obs;
3748 for (
int i=0; i<deselectedObs.size(); i++)
3755 for (QMap<QString, SgVlbiObservable*>::iterator it_obs=obs->
observableByKey().begin();
3757 strQCs += it_obs.key() +
":" + QString(
"").setNum(it_obs.value()->getQualityFactor()) +
",";
3766 deselectedObservations << obsInfo;
3769 for (
int i=0; i<nonUsableObs.size(); i++)
3771 QString strReasons(
"");
3777 for (QMap<QString, SgVlbiObservable*>::iterator it_obs=obs->
observableByKey().begin();
3779 strQCs += it_obs.key() +
":" + QString(
"").setNum(it_obs.value()->getQualityFactor()) +
",";
3783 strReasons +=
"Low quality factor. ";
3785 strReasons +=
"Deselected source. ";
3787 strReasons +=
"Deselected station. ";
3789 strReasons +=
"Deselected baseline. ";
3791 strReasons +=
"Not mated. ";
3793 strReasons +=
"Not enough used channels. ";
3795 strReasons +=
"Low quality factor on another band. ";
3797 strReasons +=
"Not enough used channels on another band. ";
3804 nonUsableObservations << obsInfo;
3810 browser->setModal(
false);
3811 browser->setSizeGripEnabled(
true);
3812 browser->setWindowModality(Qt::NonModal);
3813 browser->setWindowFlags(Qt::Window);
3814 browser->resize(0.8*size());
3817 browser->activateWindow();
3835 listOfExcludedObs << obs;
3837 QString lstOfObs(
"");
3838 QString str2copy(
"");
3839 for (
int i=0; i<listOfExcludedObs.size(); i++)
3841 QString str2copyBlName(
""), strQCs(
"");
3847 for (QMap<QString, SgVlbiObservable*>::iterator it_obs=obs->
observableByKey().begin();
3849 strQCs += it_obs.key() +
":" + QString(
"").setNum(it_obs.value()->getQualityFactor()) +
",";
3850 if (strQCs.size()>1)
3851 strQCs = strQCs.left(strQCs.size() - 1);
3852 str2copy.sprintf(
"observation %d,%s %s, %s, QC=(%s) which fits at %.2f +/- %.2f ps",
3859 lstOfObs += str2copy +
"\n";
3862 QMessageBox msgBox(QMessageBox::Information,
"",
"",
3863 QMessageBox::Ok, NULL, Qt::Window);
3866 msgBox.setIcon(QMessageBox::Information);
3867 msgBox.setText(
"<b>The list of potentially good observations that were excluded from data analysis "
3869 msgBox.setInformativeText(
"Total amount: " + QString(
"").setNum(listOfExcludedObs.size()));
3870 msgBox.setDetailedText(
3873 "The observations are:\n" + lstOfObs);
3874 msgBox.setSizeGripEnabled(
true);
3889 "::runExternalCommand(): no command specified");
3914 "::runExternalCommand(): executing the command \"" + command +
"\"");
3916 rc = system(qPrintable(command));
3918 "::runExternalCommand(): the command \"" + command +
3919 "\" 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)
bool getHave2ApplyFeedCorrContrib() const
bool getHave2ApplyUt1LibrationContrib() const
OutliersProcessingAction getOpAction() const
double getElement(unsigned int i) 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
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()
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 & getSessionCode() const
const SgMJD & getTMean() const
const SgMJD & getTCreation() const
SgVlbiBand * primaryBand()
int numberOfBands() 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 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)
void checkBandForClockBreaks(int, bool)
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;
SgParameterCfg * pcZenith()
SgParameterCfg * pcClocks()
SgBreakModel & clockBreaks()
SgParametersDescriptor parametersDescriptor