AnalysisSystemForRadionucli.../BgWork.h

127 lines
6.1 KiB
C
Raw Normal View History

2024-06-04 15:27:02 +08:00
#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