22 const std::optional<std::pair<size_t, size_t>> &spinVecSize)
27 const std::optional<std::pair<size_t, size_t>> &spinVecSize)
28 : m_numberOfPoints(numberOfPoints), m_numberOfHistograms(numberOfHistograms),
30 if (m_numberOfHistograms > 1) {
31 m_dataShape.insert(m_dataShape.cbegin(), m_numberOfHistograms);
32 m_slabShape.insert(m_slabShape.cbegin(), 1);
35 if (spinVecSize.has_value()) {
36 const auto &[PinSize, PoutSize] = *spinVecSize;
37 m_dataShape.insert(m_dataShape.cbegin(), {PinSize, PoutSize});
38 m_slabShape.insert(m_slabShape.cbegin(), {1, 1});
41 m_dataSpace = H5::DataSpace(
static_cast<int>(m_dataShape.size()), m_dataShape.data());
62 }
catch (std::runtime_error &) {
69 : instrumentName(getInstrumentNameFromFile(entry)), idf(getIdfFromFile(instrumentName)) {}
74 const auto stateVector = std::vector<int>({-1, 1});
75 if (spinStateStr.size() == 4) {
78 }
else if (spinStateStr.size() == 2) {
79 if (spinStateStr.begin()->starts_with(
"0")) {
80 pIn = std::vector<int>(1, 0);
84 pOut = std::vector<int>(1, 0);
91 const auto dataSpace = dataSet.getSpace();
92 const auto rank = dataSpace.getSimpleExtentNdims();
93 auto dims = std::vector<hsize_t>(rank);
94 dataSpace.getSimpleExtentDims(dims.data());
98 dataSpaceInfo.
dimBin = dims[0];
102 dataSpaceInfo.
dimBin = dims[1];
107 dataSpaceInfo.
dimBin = dims[2];
112 dataSpaceInfo.
dimBin = dims[3];
115 throw std::invalid_argument(
"LoadNXcanSAS:: Cannot load a data set with " +
std::to_string(rank) +
" m_dataDims.");
117 return dataSpaceInfo;
126 const auto numberOfHists =
workspace->getNumberHistograms();
IPeaksWorkspace_sptr workspace
static std::string getInstrumentFilename(const std::string &instrumentName, const std::string &date="")
Get the IDF using the instrument name and date.
const H5::DataSpace & getDataSpace() const
H5::DataSpace m_dataSpace
DataDimensions(const hsize_t numberOfPoints, const hsize_t numberOfHistograms, const std::optional< std::pair< size_t, size_t > > &spinVecSize=std::nullopt)
std::vector< hsize_t > m_dataShape
hsize_t m_numberOfHistograms
const std::vector< hsize_t > & getSlabShape() const
const hsize_t & getNumberOfPoints() const
const H5::DataType & getDataType() const
const std::vector< hsize_t > & getDataShape() const
const hsize_t & getNumberOfHistograms() const
std::vector< hsize_t > m_slabShape
std::shared_ptr< MatrixWorkspace > MatrixWorkspace_sptr
shared pointer to the matrix workspace base class
const std::string sasInstrumentName
DataSpaceInformation getDataSpaceInfo(const H5::DataSet &dataSet)
WorkspaceDimensionality getWorkspaceDimensionality(const Mantid::API::MatrixWorkspace_sptr &workspace)
Retrieves workspace dimensionality enum value: oneD , twoD, other (error)
const std::string sasInstrumentGroupName
MANTID_NEXUS_DLL std::string readString(H5::H5File &file, const std::string &address)
MANTID_NEXUS_DLL DataType getType< double >()
Header for a base Nexus::Exception.
std::string to_string(const wide_integer< Bits, Signed > &n)
std::string instrumentName
InstrumentNameInfo(const H5::Group &entry)
static std::string getIdfFromFile(const std::string &instrumentName)
static std::string getInstrumentNameFromFile(const H5::Group &entry)
SpinVectorBuilder(const std::vector< std::string > &spinStateStr)