#include "stdafx.h" #include "SpectrumCompareEngine.h" #include "SpectrumCompareEngine/OTSSpectrumLibFileMgr.h" #include "SpectrumCompareEngine/OTSClassifyOnSpectrumCompEng.h" namespace OTSClassifyEngine { bool SpectrumCompareEngine::Init() { CSpectrumLibFileMgrPtr pLibFileMgr = CSpectrumLibFileMgrPtr(new CSpectrumLibFileMgr(m_StrName)); myLib = CSTDLibPtr(new CSTDLib(m_StrName)); myLib->Init(); myLib->LoadSpectrumSTDFromDB(m_StrName); m_Engine = new CClassifyOnSpectrumCompEng(0,myLib); return TRUE; } bool SpectrumCompareEngine::ClassifyBySpectrum(COTSParticlePtr particle, CPosXrayPtr xray) { // similarity double dSim = 0; // classify Particles auto stditm = m_Engine->GetMatchingSTD( xray, dSim); if (dSim > 0.7) { if (stditm != nullptr) { particle->SetType(OTS_PARTICLE_TYPE::IDENTIFIED); particle->SetClassifyId(stditm->GetID()); particle->SetClassifyName(stditm->GetName().GetBuffer()); particle->SetColor(std::to_string(stditm->GetColor())); } else { particle->SetType(OTS_PARTICLE_TYPE::NOT_IDENTIFIED); particle->SetClassifyName("Not Identified"); } } else { particle->SetType(OTS_PARTICLE_TYPE::NOT_IDENTIFIED); particle->SetClassifyName("Not Identified"); } return true; } bool SpectrumCompareEngine::IfNeedMaxEDS(COTSParticlePtr particle, CPosXrayPtr xray, double& MaxEDSTime) { throw std::logic_error("The method or operation is not implemented."); } bool SpectrumCompareEngine::ClassifyExpression(COTSParticlePtr particle, CPosXrayPtr xray) { return false; } bool SpectrumCompareEngine::ClassifyByExpressionTemporarySpectrum(COTSParticlePtr particle, CPosXrayPtr xray) { return false; } bool SpectrumCompareEngine::ClassifyIncA(COTSParticlePtr particle, int SteelTech, CPosXrayPtr xray) { return false; } bool SpectrumCompareEngine::ZeroElementProcess(COTSParticlePtr particle) { return false; } OTSClassifyEngine::CLEEnginePtr GetCurveCompareEngine(std::string libName) { static CLEEnginePtr engine; if (engine == NULL) { engine = CLEEnginePtr(new SpectrumCompareEngine(libName)); if (!engine->Init()) { return NULL; } } return engine; } }