优化
This commit is contained in:
parent
1f750a6f17
commit
1a2afa2416
|
|
@ -7,6 +7,14 @@
|
||||||
BackgroundTaskListView::BackgroundTaskListView(QWidget* parent)
|
BackgroundTaskListView::BackgroundTaskListView(QWidget* parent)
|
||||||
: QTableView(parent)
|
: QTableView(parent)
|
||||||
{
|
{
|
||||||
|
this->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
|
||||||
|
QPalette palette = this->palette();
|
||||||
|
palette.setColor(QPalette::Base, Qt::gray);
|
||||||
|
palette.setColor(QPalette::Text, Qt::white);
|
||||||
|
this->setPalette(palette);
|
||||||
|
this->setAutoFillBackground(true);
|
||||||
|
this->setGridStyle(Qt::NoPen);
|
||||||
|
|
||||||
this->setModel(BackgroundTaskListModel::Instance());
|
this->setModel(BackgroundTaskListModel::Instance());
|
||||||
|
|
||||||
this->verticalHeader()->setVisible(false);
|
this->verticalHeader()->setVisible(false);
|
||||||
|
|
@ -17,8 +25,6 @@ BackgroundTaskListView::BackgroundTaskListView(QWidget* parent)
|
||||||
|
|
||||||
this->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
this->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||||
this->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
this->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||||
|
|
||||||
this->setGridStyle(Qt::NoPen);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ProgressBarItem::ProgressBarItem(const QString &text, QWidget *parent)
|
// ProgressBarItem::ProgressBarItem(const QString &text, QWidget *parent)
|
||||||
|
|
|
||||||
|
|
@ -695,35 +695,41 @@ bool ChannelEnergyScaleFittingTask::processTask()
|
||||||
if (fit_degree <= 0) {
|
if (fit_degree <= 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
std::vector<double> vec_x, vec_y1, vec_y2;
|
std::vector<double> vec_x_addr, vec_y_set_energy, vec_y_peak_fwhm;
|
||||||
for (const int& addr : energy_scale_fit_data.keys()) {
|
for (const int& addr : energy_scale_fit_data.keys()) {
|
||||||
vec_x.push_back(addr);
|
vec_x_addr.push_back(addr);
|
||||||
vec_y1.push_back(energy_scale_fit_data.value(addr)[0]);
|
vec_y_set_energy.push_back(energy_scale_fit_data.value(addr)[0]);
|
||||||
vec_y2.push_back(energy_scale_fit_data.value(addr)[1]);
|
vec_y_peak_fwhm.push_back(energy_scale_fit_data.value(addr)[1]);
|
||||||
}
|
}
|
||||||
std::vector<double> energy_scale_fit_result_coeffs;
|
std::vector<double> energy_scale_fit_result_coeffs;
|
||||||
try {
|
try {
|
||||||
energy_scale_fit_result_coeffs = GaussPolyCoe::PolynomialFit(vec_x, vec_y1, fit_degree);
|
energy_scale_fit_result_coeffs = GaussPolyCoe::PolynomialFit(vec_x_addr, vec_y_set_energy, fit_degree);
|
||||||
} catch(const std::exception& e) {
|
} catch(const std::exception& e) {
|
||||||
QString error = QStringLiteral(u"[%1]%2能量刻度多项式%3次拟合异常:%4!").arg(this->GetProjectName()).arg(channel).arg(fit_degree).arg(QString::fromStdString(e.what()));
|
QString error = QStringLiteral(u"[%1]%2能量刻度多项式%3次拟合异常:%4!").arg(this->GetProjectName()).arg(channel).arg(fit_degree).arg(QString::fromStdString(e.what()));
|
||||||
LOG_WARN(error);
|
LOG_WARN(error);
|
||||||
}
|
}
|
||||||
|
std::vector<double> vec_fit_energy;
|
||||||
|
for (int i = 0; i < vec_x_addr.size(); i++) {
|
||||||
|
int addr = vec_x_addr[i];
|
||||||
|
double fit_energy = GaussPolyCoe::Predict(energy_scale_fit_result_coeffs, addr);
|
||||||
|
vec_fit_energy.push_back(fit_energy);
|
||||||
|
}
|
||||||
arma::vec fwhm_fit_result_coeffs;
|
arma::vec fwhm_fit_result_coeffs;
|
||||||
try {
|
try {
|
||||||
fwhm_fit_result_coeffs = NolinearLeastSquaresCurveFit::Lsqcurvefit(FwhmModel, vec_y1, vec_y2, { 1.0, 1.0 });
|
fwhm_fit_result_coeffs = NolinearLeastSquaresCurveFit::Lsqcurvefit(FwhmModel, vec_fit_energy, vec_y_peak_fwhm, { 1.0, 1.0 });
|
||||||
} catch(const std::exception& e) {
|
} catch(const std::exception& e) {
|
||||||
QString error = QStringLiteral(u"[%1]%2分辨率拟合异常:%3!").arg(this->GetProjectName()).arg(channel).arg(QString::fromStdString(e.what()));
|
QString error = QStringLiteral(u"[%1]%2分辨率拟合异常:%3!").arg(this->GetProjectName()).arg(channel).arg(QString::fromStdString(e.what()));
|
||||||
LOG_WARN(error);
|
LOG_WARN(error);
|
||||||
}
|
}
|
||||||
const QString& info = QStringLiteral(u"[%1]%2能量刻度拟合完成.").arg(this->GetProjectName()).arg(channel);
|
const QString& info = QStringLiteral(u"[%1]%2能量刻度拟合完成.").arg(this->GetProjectName()).arg(channel);
|
||||||
LOG_INFO(info);
|
LOG_INFO(info);
|
||||||
|
|
||||||
std::vector<std::vector<double> > fit_result_data;
|
std::vector<std::vector<double> > fit_result_data;
|
||||||
for (int i = 0; i < vec_x.size(); i++) {
|
for (int i = 0; i < vec_x_addr.size(); i++) {
|
||||||
int addr = vec_x[i];
|
int addr = vec_x_addr[i];
|
||||||
double set_energy = vec_y1[i];
|
double set_energy = vec_y_set_energy[i];
|
||||||
double fit_energy = GaussPolyCoe::Predict(energy_scale_fit_result_coeffs, addr);
|
double fit_energy = vec_fit_energy[i];
|
||||||
double peak_fwhm = vec_y2[i];
|
double peak_fwhm = vec_y_peak_fwhm[i];
|
||||||
double fit_fwhm = FwhmModel(addr, fwhm_fit_result_coeffs);
|
double fit_fwhm = FwhmModel(addr, fwhm_fit_result_coeffs);
|
||||||
std::vector<double> fit_result_item_data;
|
std::vector<double> fit_result_item_data;
|
||||||
fit_result_item_data.push_back(addr);
|
fit_result_item_data.push_back(addr);
|
||||||
|
|
@ -744,7 +750,7 @@ bool ChannelEnergyScaleFittingTask::processTask()
|
||||||
if (!energy_scale_data_model.SaveData()) {
|
if (!energy_scale_data_model.SaveData()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString& info = QStringLiteral(u"[%1]能量刻度拟合完成.").arg(this->GetProjectName());
|
const QString& info = QStringLiteral(u"[%1]能量刻度拟合完成.").arg(this->GetProjectName());
|
||||||
LOG_INFO(info);
|
LOG_INFO(info);
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -965,7 +971,7 @@ bool EnergyScaleCoincidenceDataTask::processTask()
|
||||||
data_item.energy = GaussPolyCoe::Predict(coeffs, data_item.energy);
|
data_item.energy = GaussPolyCoe::Predict(coeffs, data_item.energy);
|
||||||
out_stream << event_id << "," << data_item.board_id << "," << data_item.channel_id << "," << data_item.energy << "," << data_item.timestamp << "\n" ;
|
out_stream << event_id << "," << data_item.board_id << "," << data_item.channel_id << "," << data_item.energy << "," << data_item.timestamp << "\n" ;
|
||||||
} else {
|
} else {
|
||||||
LOG_WARN(QStringLiteral(u"[%1]符合能谱数据处理异常:%2能量刻度拟合参数为空!").arg(this->GetProjectName()).arg(channel_name));
|
// LOG_WARN(QStringLiteral(u"[%1]符合能谱数据处理异常:%2能量刻度拟合参数为空!").arg(this->GetProjectName()).arg(channel_name));
|
||||||
// out_stream.close();
|
// out_stream.close();
|
||||||
// QFile::remove(coincidence_energy_data_filename);
|
// QFile::remove(coincidence_energy_data_filename);
|
||||||
// return false;
|
// return false;
|
||||||
|
|
@ -1057,7 +1063,7 @@ bool EnergyScaleaAntiCoincidenceDataTask::processTask()
|
||||||
data_item.energy = GaussPolyCoe::Predict(coeffs, data_item.energy);
|
data_item.energy = GaussPolyCoe::Predict(coeffs, data_item.energy);
|
||||||
out_stream << time_window << "," << data_item.board_id << "," << data_item.channel_id << "," << data_item.energy << "," << data_item.timestamp << "\n" ;
|
out_stream << time_window << "," << data_item.board_id << "," << data_item.channel_id << "," << data_item.energy << "," << data_item.timestamp << "\n" ;
|
||||||
} else {
|
} else {
|
||||||
LOG_WARN(QStringLiteral(u"[%1]符合能谱数据处理异常:%2能量刻度拟合参数为空!").arg(this->GetProjectName()).arg(channel_name));
|
// LOG_WARN(QStringLiteral(u"[%1]符合能谱数据处理异常:%2能量刻度拟合参数为空!").arg(this->GetProjectName()).arg(channel_name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
out_stream.close();
|
out_stream.close();
|
||||||
|
|
|
||||||
|
|
@ -308,11 +308,6 @@ void MainWindow::initAction()
|
||||||
void MainWindow::initStatusBar()
|
void MainWindow::initStatusBar()
|
||||||
{
|
{
|
||||||
_w_watcher_task_list = new BackgroundTaskListView(this);
|
_w_watcher_task_list = new BackgroundTaskListView(this);
|
||||||
_w_watcher_task_list->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
|
|
||||||
QPalette palette = _w_watcher_task_list->palette();
|
|
||||||
palette.setColor(QPalette::Base, Qt::gray);
|
|
||||||
_w_watcher_task_list->setPalette(palette);
|
|
||||||
_w_watcher_task_list->setAutoFillBackground(true);
|
|
||||||
|
|
||||||
_btn_task_watcher = new QPushButton(QStringLiteral(u"后台任务监视"), _status_bar);
|
_btn_task_watcher = new QPushButton(QStringLiteral(u"后台任务监视"), _status_bar);
|
||||||
_status_bar->addPermanentWidget(_btn_task_watcher);
|
_status_bar->addPermanentWidget(_btn_task_watcher);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user