Skip to content

Commit

Permalink
Make necessary changes re #8402
Browse files Browse the repository at this point in the history
Unit test needs extending to test these changes.

Signed-off-by: Karl Palmen <karl.palmen@stfc.ac.uk>
  • Loading branch information
KarlPalmen committed Jan 16, 2014
1 parent 3508842 commit b2f850a
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 35 deletions.
Expand Up @@ -86,7 +86,7 @@ namespace DataHandling
DataObjects::TableWorkspace_sptr genInfoTableWorkspace(std::vector<int> banks);

/// Put parameters into a metrix workspace
void putParametersIntoWorkspace( const API::ITableWorkspace_sptr &tws, API::MatrixWorkspace_sptr ws);
void putParametersIntoWorkspace( size_t wsNumber, const API::ITableWorkspace_sptr &tws, API::MatrixWorkspace_sptr ws);

/// Add an ALFBE parameter
void addALFBEParameter(const API::Column_const_sptr, Poco::XML::Document* mDoc, Poco::XML::Element* parent, const std::string& paramName);
Expand Down
60 changes: 29 additions & 31 deletions Code/Mantid/Framework/DataHandling/src/LoadFullprofResolution.cpp
Expand Up @@ -195,12 +195,24 @@ namespace DataHandling


// If workspace, put parameters there
if(wsg)
{
Workspace_sptr wsi = wsg->getItem(0);
auto workspace = boost::dynamic_pointer_cast<MatrixWorkspace>(wsi);
putParametersIntoWorkspace( outTabWs, workspace );
}
if(wsg) {
// First check that number of workspaces in group matches number of banks
if( wsg->size() != vec_bankids.size() )
{
std::ostringstream mess;
mess << "Number of banks"<< vec_bankids.size() << "does not match number of workspaces" << wsg->size() << "in group. Parameters not put into workspaces.";
g_log.error( mess.str() );
}
else // Numbers match, so put parameters into workspaces.
{
for (size_t i=0; i < wsg->size(); ++i)
{
Workspace_sptr wsi = wsg->getItem(i);
auto workspace = boost::dynamic_pointer_cast<MatrixWorkspace>(wsi);
putParametersIntoWorkspace( i+1, outTabWs, workspace );
}
}
}
else if( getPropertyValue("OutputTableWorkspace") == "")
{
// We don't know where to output
Expand Down Expand Up @@ -769,13 +781,16 @@ namespace DataHandling
return tablews;
}

void LoadFullprofResolution::putParametersIntoWorkspace( const API::ITableWorkspace_sptr &tws, API::MatrixWorkspace_sptr ws)
void LoadFullprofResolution::putParametersIntoWorkspace( size_t wsNumber, const API::ITableWorkspace_sptr &tws, API::MatrixWorkspace_sptr ws)
{

// Get instrument name from matrix workspace
std::string instrumentName = ws->getInstrument()->getName();

// Convert table workspace into DOM XML document
// Get column from table workspace
API::Column_const_sptr column = tws->getColumn( wsNumber );

// Convert table workspace column into DOM XML document
// Set up writer to Paremeter file
DOMWriter writer;
writer.setNewLine("\n");
Expand All @@ -797,30 +812,13 @@ namespace DataHandling
AutoPtr<Element> instrumentElem = mDoc->createElement("component-link");
instrumentElem->setAttribute("name",instrumentName);
rootElem->appendChild(instrumentElem);
API::Column_const_sptr column1 = tws->getColumn( 1 );
addALFBEParameter( column1, mDoc, instrumentElem, "Alph0");
addALFBEParameter( column1, mDoc, instrumentElem, "Beta0");
addALFBEParameter( column1, mDoc, instrumentElem, "Alph1");
addALFBEParameter( column1, mDoc, instrumentElem, "Beta1");

// Add banks
if(tws->columnCount() < 2){
throw std::runtime_error("No banks found");
}
size_t num_banks = tws->columnCount()-1;
addALFBEParameter( column, mDoc, instrumentElem, "Alph0");
addALFBEParameter( column, mDoc, instrumentElem, "Beta0");
addALFBEParameter( column, mDoc, instrumentElem, "Alph1");
addALFBEParameter( column, mDoc, instrumentElem, "Beta1");
addSigmaParameters( column, mDoc, instrumentElem );
addGammaParameters( column, mDoc, instrumentElem );

for( size_t i=0; i<num_banks; ++i)
{
API::Column_const_sptr column = tws->getColumn( i+1 );
const double bankNumber = column->cell<double>(0);
std::ostringstream bankName;
bankName << "bank" << bankNumber;
AutoPtr<Element> bankElem = mDoc->createElement("component-link");
bankElem->setAttribute("name",bankName.str());
addSigmaParameters( column, mDoc, bankElem );
addGammaParameters( column, mDoc, bankElem );
rootElem->appendChild(bankElem);
}

// Convert DOM XML document into string
std::ostringstream outFile;
Expand Down
Expand Up @@ -342,8 +342,7 @@ class LoadFullprofResolutionTest : public CxxTest::TestSuite
}


boost::shared_ptr<const Mantid::Geometry::IComponent> bank = instr->getComponentByName("bank1");
Mantid::Geometry::Parameter_sptr sigmaSqParam = paramMap.get(&(*bank), "SigmaSquared", "fitting");
Mantid::Geometry::Parameter_sptr sigmaSqParam = paramMap.get(&(*instr), "SigmaSquared", "fitting");
TS_ASSERT(sigmaSqParam);
if(sigmaSqParam)
{
Expand All @@ -354,7 +353,7 @@ class LoadFullprofResolutionTest : public CxxTest::TestSuite
TS_ASSERT_DELTA( formulaValueCantreAt10, 0.399, 0.0000001);
}

Mantid::Geometry::Parameter_sptr gammaParam = paramMap.get(&(*bank), "Gamma", "fitting");
Mantid::Geometry::Parameter_sptr gammaParam = paramMap.get(&(*instr), "Gamma", "fitting");
TS_ASSERT(gammaParam);
if(gammaParam)
{
Expand Down

0 comments on commit b2f850a

Please sign in to comment.