Add warnings if calibration standard does not cover calibration measurement range
This commit is contained in:
parent
d9b4da3a8f
commit
d02efdb146
@ -524,7 +524,7 @@ void Calibration::edit()
|
||||
ui->table->setItem(i, 0, new QTableWidgetItem(CalibrationMeasurement::Base::TypeToString(measurements[i]->getType())));
|
||||
ui->table->setCellWidget(i, 1, measurements[i]->createStandardWidget());
|
||||
ui->table->setCellWidget(i, 2, measurements[i]->createSettingsWidget());
|
||||
ui->table->setItem(i, 3, new QTableWidgetItem(measurements[i]->getStatistics()));
|
||||
ui->table->setItem(i, 3, measurements[i]->getStatisticsItem());
|
||||
ui->table->setItem(i, 4, new QTableWidgetItem(measurements[i]->getTimestamp().toString()));
|
||||
}
|
||||
ui->table->selectRow(row);
|
||||
@ -1847,12 +1847,12 @@ bool Calibration::hasFrequencyOverlap(std::vector<CalibrationMeasurement::Base *
|
||||
if(meas->numPoints() < 2) {
|
||||
return false;
|
||||
}
|
||||
auto resolution = (meas->maxFreq() - meas->minFreq()) / (meas->numPoints() - 1);
|
||||
if(meas->maxFreq() < maxFreq) {
|
||||
maxFreq = meas->maxFreq();
|
||||
auto resolution = (meas->maxUsableFreq() - meas->minUsableFreq()) / (meas->numPoints() - 1);
|
||||
if(meas->maxUsableFreq() < maxFreq) {
|
||||
maxFreq = meas->maxUsableFreq();
|
||||
}
|
||||
if(meas->minFreq() > minFreq) {
|
||||
minFreq = meas->minFreq();
|
||||
if(meas->minUsableFreq() > minFreq) {
|
||||
minFreq = meas->minUsableFreq();
|
||||
}
|
||||
if(resolution < minResolution) {
|
||||
minResolution = resolution;
|
||||
|
@ -66,6 +66,11 @@ bool CalibrationMeasurement::Base::setStandard(CalStandard::Virtual *standard)
|
||||
}
|
||||
}
|
||||
|
||||
QTableWidgetItem *CalibrationMeasurement::Base::getStatisticsItem()
|
||||
{
|
||||
return new QTableWidgetItem(getStatistics());
|
||||
}
|
||||
|
||||
QString CalibrationMeasurement::Base::getStatistics()
|
||||
{
|
||||
if(numPoints() > 0) {
|
||||
@ -222,7 +227,22 @@ CalStandard::Virtual* CalibrationMeasurement::Base::getStandard() const
|
||||
return standard;
|
||||
}
|
||||
|
||||
double CalibrationMeasurement::OnePort::minFreq()
|
||||
QTableWidgetItem *CalibrationMeasurement::OnePort::getStatisticsItem()
|
||||
{
|
||||
auto ret = Base::getStatisticsItem();
|
||||
if(numPoints() > 0) {
|
||||
if(!standard) {
|
||||
ret->setBackgroundColor(Qt::red);
|
||||
ret->setToolTip("No calibration standard assigned, unable to use this measurement");
|
||||
} else if(standard->minFrequency() > points.front().frequency || standard->maxFrequency() < points.back().frequency) {
|
||||
ret->setBackgroundColor(Qt::yellow);
|
||||
ret->setToolTip("Usable frequency range constrained by calibration standard to "+Unit::ToString(minUsableFreq(), "Hz", " kMG", 4)+" - "+Unit::ToString(maxUsableFreq(), "Hz", " kMG", 4));
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
double CalibrationMeasurement::OnePort::minUsableFreq()
|
||||
{
|
||||
if(points.size() > 0 && standard) {
|
||||
return max(points.front().frequency, standard->minFrequency());
|
||||
@ -231,7 +251,7 @@ double CalibrationMeasurement::OnePort::minFreq()
|
||||
}
|
||||
}
|
||||
|
||||
double CalibrationMeasurement::OnePort::maxFreq()
|
||||
double CalibrationMeasurement::OnePort::maxUsableFreq()
|
||||
{
|
||||
if(points.size() > 0 && standard) {
|
||||
return min(points.back().frequency, standard->maxFrequency());
|
||||
@ -366,7 +386,22 @@ std::vector<CalibrationMeasurement::OnePort::Point> CalibrationMeasurement::OneP
|
||||
return points;
|
||||
}
|
||||
|
||||
double CalibrationMeasurement::TwoPort::minFreq()
|
||||
QTableWidgetItem *CalibrationMeasurement::TwoPort::getStatisticsItem()
|
||||
{
|
||||
auto ret = Base::getStatisticsItem();
|
||||
if(numPoints() > 0) {
|
||||
if(!standard) {
|
||||
ret->setBackgroundColor(Qt::red);
|
||||
ret->setToolTip("No calibration standard assigned, unable to use this measurement");
|
||||
} else if(standard->minFrequency() > points.front().frequency || standard->maxFrequency() < points.back().frequency) {
|
||||
ret->setBackgroundColor(Qt::yellow);
|
||||
ret->setToolTip("Usable frequency range constrained by calibration standard to "+Unit::ToString(minUsableFreq(), "Hz", " kMG", 4)+" - "+Unit::ToString(maxUsableFreq(), "Hz", " kMG", 4));
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
double CalibrationMeasurement::TwoPort::minUsableFreq()
|
||||
{
|
||||
if(points.size() > 0 && standard) {
|
||||
return max(points.front().frequency, standard->minFrequency());
|
||||
@ -375,7 +410,7 @@ double CalibrationMeasurement::TwoPort::minFreq()
|
||||
}
|
||||
}
|
||||
|
||||
double CalibrationMeasurement::TwoPort::maxFreq()
|
||||
double CalibrationMeasurement::TwoPort::maxUsableFreq()
|
||||
{
|
||||
if(points.size() > 0 && standard) {
|
||||
return min(points.back().frequency, standard->maxFrequency());
|
||||
@ -574,24 +609,6 @@ int CalibrationMeasurement::TwoPort::getPort1() const
|
||||
return port1;
|
||||
}
|
||||
|
||||
double CalibrationMeasurement::Isolation::minFreq()
|
||||
{
|
||||
if(points.size() > 0) {
|
||||
return points.front().frequency;
|
||||
} else {
|
||||
return numeric_limits<double>::max();
|
||||
}
|
||||
}
|
||||
|
||||
double CalibrationMeasurement::Isolation::maxFreq()
|
||||
{
|
||||
if(points.size() > 0) {
|
||||
return points.back().frequency;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int CalibrationMeasurement::Isolation::numPoints()
|
||||
{
|
||||
return points.size();
|
||||
|
@ -6,6 +6,7 @@
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QObject>
|
||||
#include <QTableWidgetItem>
|
||||
|
||||
class Calibration;
|
||||
|
||||
@ -33,8 +34,11 @@ public:
|
||||
virtual bool setFirstSupportedStandard();
|
||||
virtual bool setStandard(CalStandard::Virtual *standard);
|
||||
|
||||
virtual QTableWidgetItem *getStatisticsItem();
|
||||
QString getStatistics();
|
||||
|
||||
virtual double minUsableFreq() = 0;
|
||||
virtual double maxUsableFreq() = 0;
|
||||
virtual double minFreq() = 0;
|
||||
virtual double maxFreq() = 0;
|
||||
virtual unsigned int numPoints() = 0;
|
||||
@ -78,8 +82,12 @@ public:
|
||||
Base(cal),
|
||||
port(0) {}
|
||||
|
||||
virtual double minFreq() override;
|
||||
virtual double maxFreq() override;
|
||||
virtual QTableWidgetItem *getStatisticsItem() override;
|
||||
|
||||
virtual double minUsableFreq() override;
|
||||
virtual double maxUsableFreq() override;
|
||||
virtual double minFreq() override {return points.size() > 0 ? points.front().frequency : std::numeric_limits<double>::max();}
|
||||
virtual double maxFreq() override {return points.size() > 0 ? points.back().frequency : 0;}
|
||||
virtual unsigned int numPoints() override {return points.size();}
|
||||
virtual bool readyForMeasurement() override {return standard != nullptr;}
|
||||
virtual bool readyForCalculation() override {return standard && points.size() > 0;}
|
||||
@ -193,8 +201,12 @@ public:
|
||||
port2(0),
|
||||
reverseStandard(false){}
|
||||
|
||||
virtual double minFreq() override;
|
||||
virtual double maxFreq() override;
|
||||
virtual QTableWidgetItem *getStatisticsItem() override;
|
||||
|
||||
virtual double minUsableFreq() override;
|
||||
virtual double maxUsableFreq() override;
|
||||
virtual double minFreq() override {return points.size() > 0 ? points.front().frequency : std::numeric_limits<double>::max();}
|
||||
virtual double maxFreq() override {return points.size() > 0 ? points.back().frequency : 0;}
|
||||
virtual unsigned int numPoints() override {return points.size();}
|
||||
virtual bool readyForMeasurement() override {return standard != nullptr;}
|
||||
virtual bool readyForCalculation() override {return standard && points.size() > 0;}
|
||||
@ -265,8 +277,10 @@ public:
|
||||
Isolation(Calibration *cal) :
|
||||
Base(cal){}
|
||||
|
||||
virtual double minFreq() override;
|
||||
virtual double maxFreq() override;
|
||||
virtual double minUsableFreq() override {return minFreq();}
|
||||
virtual double maxUsableFreq() override {return maxFreq();}
|
||||
virtual double minFreq() override {return points.size() > 0 ? points.front().frequency : std::numeric_limits<double>::max();}
|
||||
virtual double maxFreq() override {return points.size() > 0 ? points.back().frequency : 0;}
|
||||
virtual unsigned int numPoints() override;
|
||||
virtual bool readyForMeasurement() override {return true;}
|
||||
virtual bool readyForCalculation() override {return points.size() > 0;}
|
||||
|
Loading…
Reference in New Issue
Block a user