#include "getAscanBlock.h" #include "Function.h" #include "Matrix.h" #include "Parser.h" #include "Data/OneTasAScanData.h" #include "Data/AScanData.h" #include "Data/TasElementIndex.h" #include "Data/ElementIndex.h" #include "Data/GeometryIndex.h" #include "Data/ElectricIndex.h" #include "Data/MetaData.h" #include "ShotList/ShotList.h" #include using namespace Recon; using namespace Aurora; namespace { std::vector findTasIndex(TasIndicesPointer aTasIndices, int aTasNum) { std::vector result; for(int i=0; igetMetaData().getSampleNumber(); double* ascanBlockData = new double[ascanBlockSize]; double* mpBlockData = new double[numScans]; double* slBlockData = new double[numScans]; double* snBlockData = new double[numScans]; double* rlBlockData = new double[numScans]; double* rnBlockData = new double[numScans]; double* gainBlockData = new double[numScans]; result.ascanBlock = Matrix::fromRawData(ascanBlockData, aParser->getMetaData().getSampleNumber(), numScans); result.mpBlock = Matrix::fromRawData(mpBlockData, 1, numScans); result.slBlock = Matrix::fromRawData(slBlockData, 1, numScans); result.snBlock = Matrix::fromRawData(snBlockData, 1, numScans); result.rlBlock = Matrix::fromRawData(rlBlockData, 1, numScans); result.rnBlock = Matrix::fromRawData(rnBlockData, 1, numScans); result.gainBlock = Matrix::fromRawData(gainBlockData, 1, numScans); OneTasAScanData oenTasData = aParser->getOneTasAscanDataOfMotorPosition(1); auto tasIndices = aParser->getMetaData().getTasIndices(); auto receiverIndices = aParser->getMetaData().getReceiverIndices(); for(int mpIndex=0; mpIndexgetOneTasAscanDataOfMotorPosition(aSl[slIndex]); for(int snIndex=0; snIndexsearchAscanDataFromOneTasAscanDataOfMP(oenTasData, ElementIndex(GeometryIndex(aSn[snIndex])), TasElementIndex(aRl[rlIndex], ElementIndex(GeometryIndex(receiverIndices.get()[rElementIndex[rnIndex]]))), mp); std::copy(ascan.get() ,ascan.get() + ascan.getAscanDataLength(), ascanBlockData); ascanBlockData += ascan.getAscanDataLength(); mpBlockData[numScansIndex] = aMp[mpIndex]; slBlockData[numScansIndex] = aSl[slIndex]; snBlockData[numScansIndex] = aSn[snIndex]; rlBlockData[numScansIndex] = aRl[rlIndex]; rnBlockData[numScansIndex] = receiverIndices.get()[rElementIndex[rnIndex]]; gainBlockData[numScansIndex] = ascan.getAmplification()[0]; ++numScansIndex; } } } } } // 改分支不会进,暂不实现 todo // % initialized and calculated numbers agree?, otherwise reduce block sizes // if num ~= numScans // warning([mfilename, ':MissingSenderReceiverInfos'],'Not all defined data available.') // writeReconstructionLog('Not all defined sender/receiver available', 3); // usedDataIdxs = 1:num; // [slBlock, snBlock, rlBlock, rnBlock, mpBlock, gainBlock] = removeDataFromArrays(usedDataIdxs, slBlock, snBlock, rlBlock, rnBlock, mpBlock, gainBlock); // AscanBlock = AscanBlock(:,usedDataIdxs); // end return result; }