/** loadData * Load the counts data from an NXInt into a workspace */ void LoadMuonNexus2::loadData(const Mantid::NeXus::NXInt &counts, const std::vector<double> &timeBins, int wsIndex, int period, int spec, API::MatrixWorkspace_sptr localWorkspace) { MantidVec &X = localWorkspace->dataX(wsIndex); MantidVec &Y = localWorkspace->dataY(wsIndex); MantidVec &E = localWorkspace->dataE(wsIndex); X.assign(timeBins.begin(), timeBins.end()); int nBins = 0; int *data = nullptr; if (counts.rank() == 3) { nBins = counts.dim2(); data = &counts(period, spec, 0); } else if (counts.rank() == 2) { nBins = counts.dim1(); data = &counts(spec, 0); } else { throw std::runtime_error("Data have unsupported dimansionality"); } assert(nBins + 1 == static_cast<int>(timeBins.size())); Y.assign(data, data + nBins); typedef double (*uf)(double); uf dblSqrt = std::sqrt; std::transform(Y.begin(), Y.end(), E.begin(), dblSqrt); }
/** loadData * Load the counts data from an NXInt into a workspace */ Histogram LoadMuonNexus2::loadData(const BinEdges &edges, const Mantid::NeXus::NXInt &counts, int period, int spec) { int nBins = 0; int *data = nullptr; if (counts.rank() == 3) { nBins = counts.dim2(); data = &counts(period, spec, 0); } else if (counts.rank() == 2) { nBins = counts.dim1(); data = &counts(spec, 0); } else { throw std::runtime_error("Data have unsupported dimensionality"); } return Histogram(edges, Counts(data, data + nBins)); }