Skip to content
Snippets Groups Projects
Commit fb15f3ec authored by Campbell, Stuart's avatar Campbell, Stuart
Browse files

Refs #5045. Updated to make use of MaskWorkspace.

parent a18f96b9
No related branches found
No related tags found
No related merge requests found
......@@ -42,7 +42,7 @@ namespace Algorithms
/// Algorithm's version for identification overriding a virtual method
virtual int version() const { return 1;};
/// Algorithm's category for identification overriding a virtual method
virtual const std::string category() const { return "Diffraction;Transforms\\Masking";}
virtual const std::string category() const { return "Transforms\\Masking";}
private:
/// Sets documentation strings for this algorithm
......
......@@ -4,7 +4,7 @@
*WIKI*/
#include "MantidAlgorithms/BinaryOperateMasks.h"
#include "MantidKernel/System.h"
#include "MantidDataObjects/SpecialWorkspace2D.h"
#include "MantidDataObjects/MaskWorkspace.h"
#include "MantidAPI/WorkspaceValidators.h"
#include "MantidKernel/ListValidator.h"
......@@ -49,14 +49,14 @@ namespace Algorithms
operators.push_back("XOR");
operators.push_back("NOT");
declareProperty(new WorkspaceProperty<DataObjects::SpecialWorkspace2D>("InputWorkspace1", "", Direction::Input),
"SpecialWorkspace2D 1 for binary operation");
declareProperty(new WorkspaceProperty<DataObjects::SpecialWorkspace2D>("InputWorkspace2", "", Direction::Input, PropertyMode::Optional),
"Optional SpecialWorkspace2D 2 for binary operation");
declareProperty(new WorkspaceProperty<DataObjects::MaskWorkspace>("InputWorkspace1", "", Direction::Input),
"MaskWorkspace 1 for binary operation");
declareProperty(new WorkspaceProperty<DataObjects::MaskWorkspace>("InputWorkspace2", "", Direction::Input, PropertyMode::Optional),
"Optional MaskWorkspace 2 for binary operation");
declareProperty("OperationType", "AND", boost::make_shared<StringListValidator>(operators),
"Operator for Workspace1 and Workspace2");
declareProperty(new WorkspaceProperty<DataObjects::SpecialWorkspace2D>("OutputWorkspace", "", Direction::Output),
"Output SpecialWorkspace2D as result of binary operation");
declareProperty(new WorkspaceProperty<DataObjects::MaskWorkspace>("OutputWorkspace", "", Direction::Output),
"Output MaskWorkspace as result of binary operation");
return;
}
......@@ -64,16 +64,16 @@ namespace Algorithms
void BinaryOperateMasks::exec(){
// 1. Read input
DataObjects::SpecialWorkspace2D_const_sptr inputws1 = getProperty("InputWorkspace1");
DataObjects::MaskWorkspace_const_sptr inputws1 = getProperty("InputWorkspace1");
std::string op = getProperty("OperationType");
// 2. Output
Mantid::DataObjects::SpecialWorkspace2D_sptr outputws = getProperty("OutputWorkspace");
Mantid::DataObjects::MaskWorkspace_sptr outputws = getProperty("OutputWorkspace");
if (outputws != inputws1)
{
// if the input and output are not the same, then create a new workspace for the output.
outputws = boost::dynamic_pointer_cast<DataObjects::SpecialWorkspace2D>(API::WorkspaceFactory::Instance().create(inputws1));
outputws = boost::dynamic_pointer_cast<DataObjects::MaskWorkspace>(API::WorkspaceFactory::Instance().create(inputws1));
outputws->copyFrom(inputws1);
}
......@@ -86,7 +86,8 @@ namespace Algorithms
} else {
// Binary operation
// a. 2nd Input
DataObjects::SpecialWorkspace2D_const_sptr inputws2 = getProperty("InputWorkspace2");
DataObjects::MaskWorkspace_const_sptr inputws2 = getProperty("InputWorkspace2");
DataObjects::SpecialWorkspace2D_const_sptr inputws2_special(inputws2);
unsigned int binop;
if (op == "AND"){
......@@ -98,7 +99,7 @@ namespace Algorithms
} else{
binop = 1000;
}
outputws->binaryOperation(inputws2, binop);
outputws->binaryOperation(inputws2_special, binop);
}
......
......@@ -4,7 +4,7 @@
#include "MantidAlgorithms/BinaryOperateMasks.h"
#include "MantidKernel/Timer.h"
#include "MantidKernel/System.h"
#include "MantidDataObjects/SpecialWorkspace2D.h"
#include "MantidDataObjects/MaskWorkspace.h"
#include "MantidTestHelpers/ComponentCreationHelper.h"
#include "MantidTestHelpers/WorkspaceCreationHelper.h"
#include "MantidGeometry/Instrument.h"
......@@ -30,14 +30,14 @@ public:
this->binoperator.initialize();
// 1. Create SpecialWorkspaces
// 1. Create Mask Workspace
Mantid::Geometry::Instrument_sptr inst1 = ComponentCreationHelper::createTestInstrumentCylindrical(5);
// Mantid::Geometry::Instrument_sptr inst1(new Geometry::Instrument);
Mantid::DataObjects::SpecialWorkspace2D_sptr ws1(new Mantid::DataObjects::SpecialWorkspace2D(inst1));
Mantid::DataObjects::SpecialWorkspace2D_const_sptr cws1 = boost::dynamic_pointer_cast<const Mantid::DataObjects::SpecialWorkspace2D>(ws1);
Mantid::DataObjects::MaskWorkspace_sptr ws1(new Mantid::DataObjects::MaskWorkspace(inst1));
Mantid::DataObjects::MaskWorkspace_const_sptr cws1 = boost::dynamic_pointer_cast<const Mantid::DataObjects::MaskWorkspace>(ws1);
Mantid::Geometry::Instrument_sptr inst2 = ComponentCreationHelper::createTestInstrumentCylindrical(5);
Mantid::DataObjects::SpecialWorkspace2D_sptr ws2(new Mantid::DataObjects::SpecialWorkspace2D(inst2));
Mantid::DataObjects::MaskWorkspace_sptr ws2(new Mantid::DataObjects::MaskWorkspace(inst2));
std::string ws3name = "BinarySum";
......@@ -57,8 +57,7 @@ public:
{
TS_ASSERT_EQUALS(this->binoperator.execute(),true);
// DataObjects::SpecialWorkspace2D_sptr ws3 = this->binoperator.getProperty("OutputWorkspace");
DataObjects::SpecialWorkspace2D_sptr ws3 = AnalysisDataService::Instance().retrieveWS<DataObjects::SpecialWorkspace2D>(ws3name);
DataObjects::MaskWorkspace_sptr ws3 = AnalysisDataService::Instance().retrieveWS<DataObjects::MaskWorkspace>(ws3name);
TS_ASSERT_EQUALS(ws3->getValue(1), 1);
TS_ASSERT_EQUALS(ws3->getValue(2), 0);
......@@ -80,9 +79,9 @@ public:
void test_NOTOperation(){
this->binoperator.initialize();
// 1. Create SpecialWorkspaces
// 1. Create Mask Workspaces
Mantid::Geometry::Instrument_sptr inst1 = ComponentCreationHelper::createTestInstrumentCylindrical(5);
Mantid::DataObjects::SpecialWorkspace2D_sptr ws1(new Mantid::DataObjects::SpecialWorkspace2D(inst1));
Mantid::DataObjects::MaskWorkspace_sptr ws1(new Mantid::DataObjects::MaskWorkspace(inst1));
ws1->setValue(1, 0);
ws1->setValue(3, 1);
......@@ -91,11 +90,11 @@ public:
std::string ws4name = "BinaryNOTResult";
this->binoperator.setPropertyValue("OutputWorkspace", ws4name);
this->binoperator.setPropertyValue("OperationType", "NOT");
DataObjects::SpecialWorkspace2D_sptr ws4;
DataObjects::MaskWorkspace_sptr ws4;
try
{
TS_ASSERT_EQUALS(this->binoperator.execute(),true);
ws4 = AnalysisDataService::Instance().retrieveWS<DataObjects::SpecialWorkspace2D>(ws4name);
ws4 = AnalysisDataService::Instance().retrieveWS<DataObjects::MaskWorkspace>(ws4name);
if (ws4 == NULL){
std::cout << "Workspace4 is NULL" << std::endl;
......@@ -127,7 +126,7 @@ public:
try
{
TS_ASSERT_EQUALS(this->binoperator.execute(),true);
DataObjects::SpecialWorkspace2D_sptr ws2 = AnalysisDataService::Instance().retrieveWS<DataObjects::SpecialWorkspace2D>(ws2name);
DataObjects::MaskWorkspace_sptr ws2 = AnalysisDataService::Instance().retrieveWS<DataObjects::MaskWorkspace>(ws2name);
for (size_t ih = 0; ih < ws2->getNumberHistograms(); ih ++){
detid_t tempdetid = ws2->getDetectorID(ih);
TS_ASSERT_EQUALS(ws2->getValue(tempdetid), 1);
......
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