新增核素数据库,修改乱码问题,删除符合能谱再次符合逻辑

This commit is contained in:
anxinglong 2026-04-13 18:17:01 +08:00
parent 65e7a5787c
commit 7b6b967397
4 changed files with 29 additions and 61 deletions

BIN
bin/nuclideLib.db Normal file

Binary file not shown.

View File

@ -261,7 +261,7 @@ void TwoDSpectralCompliance::createFloatingInfoWidget()
titleLayout->addStretch();
QPushButton* hideBtn = new QPushButton(QStringLiteral(""));
hideBtn->setFixedSize(20, 20);
hideBtn->setToolTip(QStringLiteral(u"隐藏窗口"));
hideBtn->setText(QStringLiteral(u"X"));
hideBtn->setStyleSheet("border: none; font-weight: bold;");
titleLayout->addWidget(hideBtn);
mainLayout->addWidget(titleBar);
@ -316,7 +316,7 @@ void TwoDSpectralCompliance::createFloatingInfoWidget()
"}"
"QPushButton:hover { background-color: rgba(150,150,150,200); }"
);
m_showButton->setText("");
m_showButton->setText(QStringLiteral(u""));
connect(m_showButton, &QPushButton::clicked, this, &TwoDSpectralCompliance::showFloatingWidget);
m_floatingWidget->move(10, 10);

View File

@ -22,10 +22,6 @@ struct SpectrumData
uint64_t timestamp;
};
struct CoincidenceEvent
{
std::vector<SpectrumData> events;
};
ConformToTheEnergySpectrum::ConformToTheEnergySpectrum(QWidget *parent) :
MeasureAnalysisView(parent)
@ -81,48 +77,6 @@ void ConformToTheEnergySpectrum::SetAnalyzeDataFilename(const QMap<QString, QVar
}
}
static std::vector<CoincidenceEvent> processCoincidence(const std::vector<SpectrumData>& data,
uint64_t time_window_ns = 50,
int min_order = 2,
int max_order = 9)
{
std::vector<CoincidenceEvent> result;
if (data.empty()) return result;
std::vector<SpectrumData> sorted = data;
std::sort(sorted.begin(), sorted.end(),
[](const SpectrumData& a, const SpectrumData& b) { return a.timestamp < b.timestamp; });
size_t n = sorted.size();
for (size_t i = 0; i < n; ++i)
{
std::vector<SpectrumData> cluster;
cluster.push_back(sorted[i]);
uint64_t base = sorted[i].timestamp;
for (size_t j = i + 1; j < n && (sorted[j].timestamp - base) <= time_window_ns; ++j)
cluster.push_back(sorted[j]);
for (size_t j = i; j > 0 && (base - sorted[j-1].timestamp) <= time_window_ns; --j)
if (j-1 != i) cluster.push_back(sorted[j-1]);
std::sort(cluster.begin(), cluster.end(),
[](const SpectrumData& a, const SpectrumData& b) { return a.timestamp < b.timestamp; });
cluster.erase(std::unique(cluster.begin(), cluster.end(),
[](const SpectrumData& a, const SpectrumData& b) {
return a.timestamp == b.timestamp && a.board_id == b.board_id && a.channel_id == b.channel_id;
}), cluster.end());
int order = (int)cluster.size();
if (order >= min_order && order <= max_order)
{
CoincidenceEvent ev;
ev.events = cluster;
result.push_back(ev);
i += (cluster.size() - 1);
}
}
return result;
}
void ConformToTheEnergySpectrum::loadAndProcess()
{
@ -156,24 +110,32 @@ void ConformToTheEnergySpectrum::loadAndProcess()
return;
}
const uint64_t TIME_WINDOW_NS = 50;
const int MIN_ORDER = 2;
const int MAX_ORDER = 9;
std::vector<CoincidenceEvent> coincidences = processCoincidence(rawData, TIME_WINDOW_NS, MIN_ORDER, MAX_ORDER);
// const uint64_t TIME_WINDOW_NS = 50;
// const int MIN_ORDER = 2;
// const int MAX_ORDER = 9;
// std::vector<CoincidenceEvent> coincidences = processCoincidence(rawData, TIME_WINDOW_NS, MIN_ORDER, MAX_ORDER);
if (coincidences.empty()) {
_busy_indicator->Stop();
return;
}
// if (coincidences.empty()) {
// _busy_indicator->Stop();
// return;
// }
// const int STEP = 1;
// std::map<int, double> hist;
// for (const auto& ev : coincidences) {
// for (const auto& spdt : ev.events) {
// int idx = static_cast<int>(spdt.energy) / STEP;
// hist[idx] += 1.0;
// }
// }
const int STEP = 1;
std::map<int, double> hist;
for (const auto& ev : coincidences) {
for (const auto& spdt : ev.events) {
int idx = static_cast<int>(spdt.energy) / STEP;
hist[idx] += 1.0;
}
for (const auto& spdt : rawData) {
int idx = static_cast<int>(spdt.energy) / STEP;
hist[idx] += 1.0;
}
QVector<double> vx, vy;

View File

@ -104,6 +104,7 @@
<addaction name="action_energy_scale_mrg"/>
<addaction name="action_efficiency_scale_mrg"/>
<addaction name="action_roi"/>
<addaction name="action_nuclideLib"/>
</widget>
<action name="action_help_manual">
<property name="text">
@ -179,6 +180,11 @@
<string>感兴趣区</string>
</property>
</action>
<action name="action_nuclideLib">
<property name="text">
<string>核素库</string>
</property>
</action>
</widget>
<resources/>
<connections/>