Mantid
Loading...
Searching...
No Matches
SavePolarizedNXcanSAS.cpp
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2025 ISIS Rutherford Appleton Laboratory UKRI,
4// NScD Oak Ridge National Laboratory, European Spallation Source,
5// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
6// SPDX - License - Identifier: GPL - 3.0 +
7
10#include "MantidAPI/Progress.h"
15
16using namespace Mantid::API;
17
18namespace Mantid::DataHandling {
19// Register the algorithm into the AlgorithmFactory
21
22
24
29
30std::map<std::string, std::string> SavePolarizedNXcanSAS::validateInputs() {
31 std::map<std::string, std::string> results;
34
35 auto const standardResults = validateStandardInputs();
36 results.insert(standardResults.cbegin(), standardResults.cend());
37
38 auto const polarizedWSResults = validatePolarizedInputWorkspace(spinVec);
39 results.insert(polarizedWSResults.cbegin(), polarizedWSResults.cend());
40
41 auto const polarizedSpinStatesResults = validateSpinStateStrings(spinVec);
42 results.insert(polarizedSpinStatesResults.cbegin(), polarizedSpinStatesResults.cend());
43
44 auto const polarizedMetadata = validatePolarizedMetadata();
45 results.insert(polarizedMetadata.cbegin(), polarizedMetadata.cend());
46
47 return results;
48}
49
51 m_progress = std::make_unique<API::Progress>(this, 0.1, 1.0, 4);
52
53 auto const baseFilename = getPropertyValue("Filename");
54 Workspace_sptr const workspace = getProperty("InputWorkspace");
55 auto const wsGroup = std::dynamic_pointer_cast<WorkspaceGroup>(workspace);
56 savePolarizedGroup(wsGroup, NXcanSAS::prepareFilename(baseFilename));
57}
58} // namespace Mantid::DataHandling
#define DECLARE_ALGORITHM(classname)
Definition Algorithm.h:538
IPeaksWorkspace_sptr workspace
std::string getPropertyValue(const std::string &name) const override
Get the value of a property as a string.
TypedValue getProperty(const std::string &name) const override
Get the value of a property.
std::map< std::string, std::string > validatePolarizedMetadata() const
std::map< std::string, std::string > validateStandardInputs() const
std::unique_ptr< API::Progress > m_progress
void savePolarizedGroup(const API::WorkspaceGroup_sptr &wsGroup, const std::filesystem::path &path) const
Saves NXcanSAS data for a group workspace.
std::map< std::string, std::string > validateSpinStateStrings(const std::vector< std::string > &spinVec) const
std::map< std::string, std::string > validatePolarizedInputWorkspace(const std::vector< std::string > &spinVec) const
SavePolarizedNXcanSAS : Extends SaveNXcanSAS adding metadata for polarized SANS measurements.
std::map< std::string, std::string > validateInputs() override
Perform validation of ALL the input properties of the algorithm.
std::shared_ptr< Workspace > Workspace_sptr
shared pointer to Mantid::API::Workspace
std::filesystem::path MANTID_DATAHANDLING_DLL prepareFilename(const std::string &baseFilename, bool addDigitSuffix=false, size_t index=0)
template DLLExport std::vector< std::string > splitStringIntoVector< std::string >(std::string listString, const std::string &separator)