Skip to content

Commit

Permalink
Add a test for separating monitors in multiperiod NeXus
Browse files Browse the repository at this point in the history
Refs #11486
  • Loading branch information
martyngigg committed Apr 8, 2015
1 parent 702d190 commit af16c69
Showing 1 changed file with 36 additions and 28 deletions.
64 changes: 36 additions & 28 deletions Code/Mantid/Framework/DataHandling/test/LoadISISNexusTest.h
Expand Up @@ -18,6 +18,8 @@
#include "MantidDataHandling/LoadISISNexus.h"
#include "MantidDataHandling/LoadISISNexus2.h"

#include <cmath>

using namespace Mantid::API;
using namespace Mantid::Kernel;
using namespace Mantid::DataHandling;
Expand Down Expand Up @@ -46,7 +48,7 @@ class LoadISISNexusTest : public CxxTest::TestSuite
// Helper method to check that the log data contains a specific period number entry.
void checkPeriodLogData(MatrixWorkspace_sptr workspace, int expectedPeriodNumber)
{
Property* p = NULL;
Property* p = NULL;
TS_ASSERT_THROWS_NOTHING(p = fetchPeriodLog(workspace, expectedPeriodNumber));
TS_ASSERT(p != NULL)
TSM_ASSERT_THROWS("Shouldn't have a period less than the expected entry", fetchPeriodLog(workspace, expectedPeriodNumber-1), Mantid::Kernel::Exception::NotFoundError);
Expand Down Expand Up @@ -112,8 +114,8 @@ class LoadISISNexusTest : public CxxTest::TestSuite
TS_ASSERT_EQUALS(mon_ws->readY(0)[3],0.);



const std::vector< Property* >& logs = mon_ws->run().getLogData();
for(size_t i = 0; i < logs.size(); ++i) std::cerr << logs[i]->name() << "\n";
TS_ASSERT_EQUALS(logs.size(), 62);

std::string header = mon_ws->run().getPropertyValueAsType<std::string>("run_header");
Expand Down Expand Up @@ -633,38 +635,44 @@ class LoadISISNexusTest : public CxxTest::TestSuite
AnalysisDataService::Instance().remove("outWS");
}

void xestExecMonExcludedInTheEnd()
void testExecMultiPeriodMonitorSeparate()
{
Mantid::API::FrameworkManager::Instance();
LoadISISNexus2 ld;
ld.setChild(true);
ld.initialize();
ld.setPropertyValue("Filename","MAPS00018314.nxs");
ld.setPropertyValue("SpectrumMin","2");
ld.setPropertyValue("SpectrumMax","10");
ld.setPropertyValue("OutputWorkspace","outWS");
ld.setPropertyValue("LoadMonitors","Separate"); //
ld.setPropertyValue("Filename","POLREF00004699.nxs");
ld.setPropertyValue("OutputWorkspace","__unused_for_child");
ld.setPropertyValue("LoadMonitors","Separate");
TS_ASSERT_THROWS_NOTHING(ld.execute());
TS_ASSERT(ld.isExecuted());


MatrixWorkspace_sptr ws = AnalysisDataService::Instance().retrieveWS<MatrixWorkspace>("outWS");
TS_ASSERT_EQUALS(ws->blocksize(),2000);
TS_ASSERT_EQUALS(ws->getNumberHistograms(),9);

MatrixWorkspace_sptr ws_mon = AnalysisDataService::Instance().retrieveWS<MatrixWorkspace>("outWS_monitors");
TS_ASSERT(ws_mon)

TS_ASSERT_EQUALS(ws_mon->blocksize(),2000);
TS_ASSERT_EQUALS(ws_mon->getNumberHistograms(),4);
TS_ASSERT_DELTA(ws_mon->readX(0)[0],10,1.e-8);


TS_ASSERT_EQUALS(ws_mon->getSpectrum(0)->getSpectrumNo(),41473);
TS_ASSERT_EQUALS(ws_mon->getSpectrum(3)->getSpectrumNo(),41476);


AnalysisDataService::Instance().remove("outWS");
AnalysisDataService::Instance().remove("outWS_monitors");
Workspace_sptr detWS = ld.getProperty("OutputWorkspace");
auto detGroup = boost::dynamic_pointer_cast<WorkspaceGroup>(detWS);
TS_ASSERT(detGroup);
Workspace_sptr monWS = ld.getProperty("MonitorWorkspace");
auto monGroup = boost::dynamic_pointer_cast<WorkspaceGroup>(monWS);
TS_ASSERT(monGroup);

if(!(detGroup && monGroup)) return;

TS_ASSERT_EQUALS(2, detGroup->size());
TS_ASSERT_EQUALS(2, monGroup->size());

auto detWS0 = boost::dynamic_pointer_cast<MatrixWorkspace>(detGroup->getItem(0));
TS_ASSERT_EQUALS(1000, detWS0->blocksize());
TS_ASSERT_EQUALS(243, detWS0->getNumberHistograms());
TS_ASSERT_DELTA(105, detWS0->readX(1)[1], 1e-08);
TS_ASSERT_DELTA(2, detWS0->readY(1)[1], 1e-08);
TS_ASSERT_DELTA(std::sqrt(2.0), detWS0->readE(1)[1], 1e-08);
TS_ASSERT_EQUALS(detWS0->getSpectrum(0)->getSpectrumNo(),4);

auto monWS0 = boost::dynamic_pointer_cast<MatrixWorkspace>(monGroup->getItem(0));
TS_ASSERT_EQUALS(1000, monWS0->blocksize());
TS_ASSERT_EQUALS(3, monWS0->getNumberHistograms());
TS_ASSERT_DELTA(105, monWS0->readX(1)[1], 1e-08);
TS_ASSERT_DELTA(12563.0, monWS0->readY(0)[1], 1e-08);
TS_ASSERT_DELTA(std::sqrt(12563.0), monWS0->readE(0)[1], 1e-08);
TS_ASSERT_EQUALS(monWS0->getSpectrum(0)->getSpectrumNo(),1);
}

};
Expand Down

0 comments on commit af16c69

Please sign in to comment.