/** * Read spectra from the DAE * @param period :: Current period index * @param index :: First spectrum number * @param count :: Number of spectra to read * @param workspace :: Workspace to store the data * @param workspaceIndex :: index in workspace to store data */ void ISISHistoDataListener::getData(int period, int index, int count, API::MatrixWorkspace_sptr workspace, size_t workspaceIndex) { const int numberOfBins = m_numberOfBins[m_timeRegime]; const size_t bufferSize = count * (numberOfBins + 1) * sizeof(int); std::vector<int> dataBuffer(bufferSize); // Read in spectra from DAE int ndims = 2, dims[2]; dims[0] = count; dims[1] = numberOfBins + 1; int spectrumIndex = index + period * (m_totalNumberOfSpectra + 1); if (IDCgetdat(m_daeHandle, spectrumIndex, count, dataBuffer.data(), dims, &ndims) != 0) { g_log.error("Unable to read DATA from DAE " + m_daeName); throw Kernel::Exception::FileError("Unable to read DATA from DAE ", m_daeName); } for (size_t i = 0; i < static_cast<size_t>(count); ++i) { size_t wi = workspaceIndex + i; workspace->setBinEdges(wi, m_bins[m_timeRegime]); MantidVec &y = workspace->dataY(wi); MantidVec &e = workspace->dataE(wi); workspace->getSpectrum(wi).setSpectrumNo(index + static_cast<specnum_t>(i)); size_t shift = i * (numberOfBins + 1) + 1; y.assign(dataBuffer.begin() + shift, dataBuffer.begin() + shift + y.size()); std::transform(y.begin(), y.end(), e.begin(), dblSqrt); } }
void ConvertEmptyToTof::setTofInWS(const std::vector<double> &tofAxis, API::MatrixWorkspace_sptr outputWS) { const size_t numberOfSpectra = m_inputWS->getNumberHistograms(); g_log.debug() << "Setting the TOF X Axis for numberOfSpectra=" << numberOfSpectra << '\n'; auto axisPtr = Kernel::make_cow<HistogramData::HistogramX>(tofAxis); HistogramData::BinEdges edges(tofAxis); Progress prog(this, 0.0, 0.2, numberOfSpectra); for (size_t i = 0; i < numberOfSpectra; ++i) { // Replace bin edges with tof axis outputWS->setBinEdges(i, edges); prog.report(); } // end for i outputWS->getAxis(0)->unit() = UnitFactory::Instance().create("TOF"); }