AnalysisSystemForRadionucli.../BgWork.h
2024-06-04 15:27:02 +08:00

127 lines
6.1 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef PACKAGING_H
#define PACKAGING_H
////////////////////////////////////////////////////////////////////////
// 类说明此类为b_g谱业务逻辑
//
// 注意事项1、ExtractSROIcts 用到2次拟合算法 请注意
//
////////////////////////////////////////////////////////////////////////
#include <QVector>
#include <QString>
#include "BgWorkDef.h"
class CBgWork
{
public:
CBgWork();
CBgWork(BgFileI& _fileHanle);
~CBgWork();
//log拆分而来错误日志
static QString BgAnlyseError(const BgErrorType& _error);
void SetBgFile(BgFileI& _fileHanle);
/////////////////////////////////////////////////////////////////////
// 函数说明:重新设置要分析的文件名
// _fileHanle
// 返回值void
//////////////////////////////////////////////////////////////////////
void RenameAnalyseFile(BgFileI& _fileHanle);
/////////////////////////////////////////////////////////////////////
// 函数说明:界面交互分析
// 函数参数b_e_calb能刻度计数方程系数
// g_e_cal: g能刻度计数方程系数
// 返回值void
//////////////////////////////////////////////////////////////////////
bool MutialAnalyse(BgCalibratePara& _BgCalPara);
////////////////////////////////////////////////////////////////////
// 函数说明:自动分析
// 函数参数void
// 返回值void
//////////////////////////////////////////////////////////////////////
bool AutoAnalyse();
/////////////////////////////////////////////////////////////////////
// 函数说明GetAllValue 获取所有分析结果
// 函数参数void
// 返回值: 分析的所有结构 详解请看结构
//////////////////////////////////////////////////////////////////////
BgAllGenerate GetAllValue();
/////////////////////////////////////////////////////////////////////
// 函数说明GetUIValue 获取与界面相关的结果
// 函数参数void
// 返回值: 分析的所有结构 详解请看结构
//////////////////////////////////////////////////////////////////////
BgUINeed GetUIValue();
/////////////////////////////////////////////////////////////////////
// 函数说明GetLastError 返回计算标示
// 函数参数void
// 返回值: 分析的所有结构 详解请看结构
//////////////////////////////////////////////////////////////////////
BgErrorType GetLastError();
BgSample GetSampleUseData();
BgGas GetGasUseData();
BgDetbgr GetDetbgrUseData();
/////////////////////////////////////////////////////////////////////
// 函数说明CaculateXeActivity 计算符合外推 核素活动值
// 函数参数: _watch_x:拟合观察点x; _watch_y拟合观察点y;_lamadaXe:Xe参数;_acqRealTime:生存时间;,QVector<double> &_fittingPara:拟合系数返回_fittingType:拟合方式
// 返回值: 分析的所有结构 详解请看结构
//////////////////////////////////////////////////////////////////////
static double CaculateXeActivity(QVector<double>&_watch_x,QVector<double>&_watch_y,const double& _lamadaXe,const double& _acqRealTime,QVector<double> &_fittingPara,int _fittingType=_default);
static bool GetFittingPara(QVector<double>& _watch_x,QVector<double> &_watch_y,FitType _fittype,QVector<double> &_fittingPara);
static bool GetFittingData(QVector<double>& _watch,FitType _fittype,QVector<double> &_fittingPara,QVector<int> &_rData);
static bool GetFittingData(QVector<double>& _watch,FitType _fittype,QVector<double> &_fittingPara,QVector<double> &_rData);
static bool GetFileFittingPara(QVector<double>& _watch_x,QVector<double> &_watch_y,QVector<double> &_fittingPara);
static bool GetFileFittingData(QVector<double>& _watch,QVector<double> &_fittingPara,QVector<int> &_rData);
static bool GetFileFittingData(QVector<double>& _watch,QVector<double> &_fittingPara,QVector<double> &_rData);
static QString GetFittingDescriptionByType(int _type);
static QString GetFittingEquation(int _type);
// 根据不同的拟合方法计算边界值, 默认2次拟合 可以继承书写新的拟合
virtual bool CalcBgBoundary(BgROILimit& _roi_limit,BgEC& _b_g_e_c,BgCalibratePara& _BgCalPara,BgBoundary& _output);
protected:
// 根据不同的拟合方法计算边界值, 默认2次拟合 可以继承书写新的拟合
virtual bool CalcBgBoundary(BgROILimit& _roi_limit,BgEC& _b_g_e_c,BgCalibratePara& _BgCalPara,BgBoundary& _output,BgFittingPara& _fittingPara);
private:
//初始化
bool SetPara(BgFileI& _fileHanle);
//处理流程
bool Analyse();
//获取样品谱感兴趣区计数
bool ExtractSROIcts();
//获取气体本底谱感兴趣区计数
bool ExtractGROIcts();
//获取探测器本底谱感兴趣区计数
bool ExtractDROIcts();
//样品谱扣除探测器本底谱计数
bool SDetuctDcts();
//气体本底谱扣除探测器本底谱计数
bool GDetuctDcts();
//获取净计数
bool ExtractNetCounts();
//日期差值计算
double SubtractTime(QString _begin,QString _end);
//计算感兴趣区浓度和不确定度
bool CalcRoiConUncer();
//计算同位素浓度和不确定度
bool CalcXeConUncer();
//MDC计算
bool MDC();
//所需数据
BgSample m_sampleData; //样品谱数据
BgGas m_gasData; //气体本底谱数据
BgDetbgr m_detbgrData; //探测器本地谱数据
BgAllGenerate m_allGenerate;
BgUINeed m_uiNeed;
BgSampleGenerate m_sampleGenerate; //样品谱生成数据
BgGasGenerate m_gasGenerate; //气体本底谱生成数据
BgDetbgrGenerate m_detbgrGenerate; //探测器本地谱生成数据
BgOtherGenerate m_otherGenerate; //生成的其他数据
const static double cst_fixed_volXe;
const static double cst_defvolXe; // Value substituted when Xe volume read as below 0.1 ml - warning issued.
static bool m_initAlgorithm;
BgCalibratePara m_bgCalPara;
BgFileI m_file;
bool m_flag_read_file;
BgErrorType m_lastError;
};
#endif