#ifndef __TRANS_DETECTION_H__ #define __TRANS_DETECTION_H__ #include "Matrix.h" namespace Recon { struct SearchPosition { Aurora::Matrix startSearch; Aurora::Matrix endSearch; }; struct TimeWindowResult { Aurora::Matrix startSearch; Aurora::Matrix AscanBlockProcessed; }; struct DetectTofResult { Aurora::Matrix tof; Aurora::Matrix sosValue; }; Aurora::Matrix calculateAttenuation(const Aurora::Matrix &ascans, const Aurora::Matrix &startPos, const Aurora::Matrix &endPos, const Aurora::Matrix &ascansRef, const Aurora::Matrix &startPosRef, const Aurora::Matrix &endPosRef); SearchPosition calculateStarEndSearchPosition(const Aurora::Matrix &aVDistBlock, double minSpeedOfSound, double maxSpeedOfSound, double sampleRate, double maxSample, const Aurora::Matrix &aVSosOffsetBlock, double startOffset, double segmentLenOffset); TimeWindowResult applyTimeWindowing( const Aurora::Matrix &AscanBlock, double sampleRate, const Aurora::Matrix &distBlock, const Aurora::Matrix &sosBlock, double expectedSOSWater, double startOffset, double segmentLenOffset, double minSpeedOfSound, double maxSpeedOfSound, bool gaussWindow); Aurora::Matrix detectAttVectorized(const Aurora::Matrix &Ascan, const Aurora::Matrix &AscanRef, const Aurora::Matrix &distRef, const Aurora::Matrix &sosWaterRef, const Aurora::Matrix &tof, int aScanReconstructionFrequency, double offsetElectronic, int detectionWindowATT); Aurora::Matrix detectTofVectorized( const Aurora::Matrix &AscanBlock, const Aurora::Matrix &AscanRefBlock, const Aurora::Matrix &distBlock, const Aurora::Matrix &distBlockRef, const Aurora::Matrix &sosWaterBlock, const Aurora::Matrix &sosWaterRefBlock, double expectedSOSWater, int useTimeWindowing, int aScanReconstructionFrequency, double offsetElectronic, int detectionWindowSOS, double minSpeedOfSound, double maxSpeedOfSound, bool gaussWindow) ; } // namespace Recon #endif // __DETECTION_H__