Skip to content
Snippets Groups Projects
Commit 879d8ad0 authored by Owen Arnold's avatar Owen Arnold
Browse files

refs #13989. Use LoadNexusLogs.

parent 1b768211
No related branches found
No related tags found
No related merge requests found
...@@ -4,10 +4,12 @@ ...@@ -4,10 +4,12 @@
#include "MantidAPI/AlgorithmManager.h" #include "MantidAPI/AlgorithmManager.h"
#include "MantidAPI/Workspace.h" #include "MantidAPI/Workspace.h"
#include "MantidAPI/MatrixWorkspace.h" #include "MantidAPI/MatrixWorkspace.h"
#include "MantidAPI/WorkspaceFactory.h"
#include "MantidKernel/TimeSeriesProperty.h" #include "MantidKernel/TimeSeriesProperty.h"
#include <iostream> #include <iostream>
#include <string> #include <string>
#include <sstream> #include <sstream>
#include <boost/regex.hpp>
using namespace Mantid::API; using namespace Mantid::API;
using namespace Mantid::Kernel; using namespace Mantid::Kernel;
...@@ -37,24 +39,20 @@ ReflNexusMeasurementSource::obtain(const std::string &definedPath, ...@@ -37,24 +39,20 @@ ReflNexusMeasurementSource::obtain(const std::string &definedPath,
} }
} }
try { try {
auto hostWorkspace =
WorkspaceFactory::Instance().create("Workspace2D", 1, 1, 1);
IAlgorithm_sptr algLoadRun = IAlgorithm_sptr algLoadRun =
AlgorithmManager::Instance().create("LoadISISNexus"); AlgorithmManager::Instance().create("LoadNexusLogs");
algLoadRun->setChild(true); algLoadRun->setChild(true);
algLoadRun->setRethrows(true); algLoadRun->setRethrows(true);
algLoadRun->initialize(); algLoadRun->initialize();
algLoadRun->setProperty("Filename", filenameArg); algLoadRun->setProperty("Filename", filenameArg);
algLoadRun->setPropertyValue("OutputWorkspace", "dummy"); algLoadRun->setProperty("Workspace", hostWorkspace);
algLoadRun->execute(); algLoadRun->execute();
Workspace_sptr temp = algLoadRun->getProperty("OutputWorkspace");
MatrixWorkspace_sptr outWS = auto run = hostWorkspace->run();
boost::dynamic_pointer_cast<MatrixWorkspace>(temp);
if (outWS.get() == NULL) {
WorkspaceGroup_sptr tempGroup =
boost::dynamic_pointer_cast<WorkspaceGroup>(temp);
outWS =
boost::dynamic_pointer_cast<MatrixWorkspace>(tempGroup->getItem(0));
}
auto run = outWS->run();
const std::string measurementId = const std::string measurementId =
run.getPropertyValueAsType<std::string>("measurement_id"); run.getPropertyValueAsType<std::string>("measurement_id");
const std::string measurementSubId = const std::string measurementSubId =
...@@ -63,8 +61,15 @@ ReflNexusMeasurementSource::obtain(const std::string &definedPath, ...@@ -63,8 +61,15 @@ ReflNexusMeasurementSource::obtain(const std::string &definedPath,
run.getPropertyValueAsType<std::string>("measurement_label"); run.getPropertyValueAsType<std::string>("measurement_label");
const std::string measurementType = const std::string measurementType =
run.getPropertyValueAsType<std::string>("measurement_type"); run.getPropertyValueAsType<std::string>("measurement_type");
const std::string runNumber = std::string runNumber;
run.getPropertyValueAsType<std::string>("run_number"); try {
runNumber = run.getPropertyValueAsType<std::string>("run_number");
} catch (Exception::NotFoundError &) {
boost::regex re("([0-9]*)$");
boost::smatch match;
boost::regex_search(fuzzyName, match, re);
runNumber = match[0];
}
double theta = -1.0; double theta = -1.0;
try { try {
......
...@@ -12,29 +12,35 @@ class ReflNexusMeasurementSourceTest : public CxxTest::TestSuite { ...@@ -12,29 +12,35 @@ class ReflNexusMeasurementSourceTest : public CxxTest::TestSuite {
public: public:
// This pair of boilerplate methods prevent the suite being created statically // This pair of boilerplate methods prevent the suite being created statically
// This means the constructor isn't called when running other tests // This means the constructor isn't called when running other tests
static ReflNexusMeasurementSourceTest *createSuite() { return new ReflNexusMeasurementSourceTest(); } static ReflNexusMeasurementSourceTest *createSuite() {
static void destroySuite( ReflNexusMeasurementSourceTest *suite ) { delete suite; } return new ReflNexusMeasurementSourceTest();
}
static void destroySuite(ReflNexusMeasurementSourceTest *suite) {
delete suite;
}
void test_obatin_via_full_path() { void test_obtain_via_full_path() {
std::string path = std::string path =
Mantid::API::FileFinder::Instance().findRun("POLREF14966"); Mantid::API::FileFinder::Instance().findRun("POLREF14966");
Poco::File file(path); Poco::File file(path);
TSM_ASSERT("Test setup incorrect", !path.empty() && file.exists()); TSM_ASSERT("Test setup incorrect", !path.empty() && file.exists());
ReflNexusMeasurementSource source; ReflNexusMeasurementSource source;
Measurement measurement = source.obtain(path, "made_up"); Measurement measurement = source.obtain(path, "POLREF1111");
TS_ASSERT(measurement.isUseable()); TS_ASSERT(measurement.isUseable());
TS_ASSERT(measurement.isUseable()); TS_ASSERT(measurement.isUseable());
TS_ASSERT_EQUALS("34", measurement.id()); TS_ASSERT_EQUALS("34", measurement.id());
TS_ASSERT_EQUALS("0", measurement.subId()); TS_ASSERT_EQUALS("0", measurement.subId());
TS_ASSERT_EQUALS("14966", measurement.run()); TS_ASSERT_EQUALS(
TS_ASSERT_EQUALS("", measurement.label()); "1111",
TS_ASSERT_EQUALS("", measurement.label()); measurement
.run()); // Run number is taken from fuzzy because log is missing.
TS_ASSERT_EQUALS("", measurement.label());
TS_ASSERT_EQUALS("", measurement.label());
} }
void test_obtain_via_fuzzy_path() void test_obtain_via_fuzzy_path() {
{
ReflNexusMeasurementSource source; ReflNexusMeasurementSource source;
Measurement measurement = source.obtain("made_up", "POLREF14966"); Measurement measurement = source.obtain("made_up", "POLREF14966");
...@@ -45,8 +51,6 @@ public: ...@@ -45,8 +51,6 @@ public:
TS_ASSERT_EQUALS("", measurement.label()); TS_ASSERT_EQUALS("", measurement.label());
TS_ASSERT_EQUALS("", measurement.label()); TS_ASSERT_EQUALS("", measurement.label());
} }
}; };
#endif /* MANTIDQT_CUSTOMINTERFACES_REFLNEXUSMEASUREMENTSOURCETEST_H_ */ #endif /* MANTIDQT_CUSTOMINTERFACES_REFLNEXUSMEASUREMENTSOURCETEST_H_ */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment