Skip to content

Commit

Permalink
Refs #10742 Default properties for BASIS
Browse files Browse the repository at this point in the history
  • Loading branch information
jmborr committed Dec 10, 2014
1 parent 7e653b4 commit 7742404
Showing 1 changed file with 38 additions and 42 deletions.
80 changes: 38 additions & 42 deletions Code/Mantid/MantidQt/CustomInterfaces/src/Fury.cpp
Expand Up @@ -70,7 +70,7 @@ namespace IDA
m_furTree->addProperty(m_properties["SampleBins"]);
m_furTree->addProperty(m_properties["ResolutionBins"]);

m_dblManager->setValue(m_properties["SampleBinning"], 1);
m_dblManager->setValue(m_properties["SampleBinning"], 10);

m_furTree->setFactoryForManager(m_dblManager, doubleEditorFactory());

Expand Down Expand Up @@ -196,29 +196,10 @@ namespace IDA

double energyMin = m_dblManager->value(m_properties["ELow"]);
double energyMax = m_dblManager->value(m_properties["EHigh"]);

// Estimate number of SampleBinning according to whether the workspace has angles or momentum transfer
MatrixWorkspace_const_sptr workspace;
try
{
workspace = Mantid::API::AnalysisDataService::Instance().retrieveWS<const MatrixWorkspace>(wsName.toStdString());
}
catch(Mantid::Kernel::Exception::NotFoundError&)
{
showMessageBox(QString("Unable to retrieve workspace: " + wsName));
return;
}
long numBins = static_cast<long>(m_dblManager->value(m_properties["SampleBinning"])); // Default value
const std::string unitID( workspace->getAxis(0)->unit()->unitID() );
if( unitID == "MomentumTransfer")
{
numBins = 1;
}

if(numBins == 0)
return;


bool verbose = uiForm().fury_ckVerbose->isChecked();

IAlgorithm_sptr furyAlg = AlgorithmManager::Instance().create("Fury");
Expand Down Expand Up @@ -283,35 +264,50 @@ namespace IDA
try
{
const std::pair<double, double> range = getCurveRange("FuryCurve");
double rounded_min = floor(range.first * 10 + 0.5) / 10.0;
double rounded_max = floor(range.second * 10 + 0.5) / 10.0;

//corrections for if nearest value is outside of range
if (rounded_max > range.second)
{
rounded_max -= 0.1;
}

if(rounded_min < range.first)
double rounded_min(range.first);
double rounded_max(range.second);
const std::string instrName( workspace->getInstrument()->getName() );
if(instrName == "BASIS")
{
rounded_min += 0.1;
}

//check incase we have a really small range
if (fabs(rounded_min) > 0 && fabs(rounded_max) > 0)
{
m_rangeSelectors["FuryRange"]->setRange(rounded_min, rounded_max);
m_rangeSelectors["FuryRange"]->setRange(range.first, range.second);
m_dblManager->setValue(m_properties["ELow"], rounded_min);
m_dblManager->setValue(m_properties["EHigh"], rounded_max);
m_dblManager->setValue(m_properties["EWidth"], 0.0004);
m_dblManager->setValue(m_properties["SampleBinning"], 1);
}
else
{
m_rangeSelectors["FuryRange"]->setRange(range.first, range.second);
m_dblManager->setValue(m_properties["ELow"], range.first);
m_dblManager->setValue(m_properties["EHigh"], range.second);
rounded_min = floor(rounded_min * 10 + 0.5) / 10.0;
rounded_max = floor(rounded_max * 10 + 0.5) / 10.0;

//corrections for if nearest value is outside of range
if (rounded_max > range.second)
{
rounded_max -= 0.1;
}

if(rounded_min < range.first)
{
rounded_min += 0.1;
}

//check incase we have a really small range
if (fabs(rounded_min) > 0 && fabs(rounded_max) > 0)
{
m_rangeSelectors["FuryRange"]->setRange(rounded_min, rounded_max);
m_dblManager->setValue(m_properties["ELow"], rounded_min);
m_dblManager->setValue(m_properties["EHigh"], rounded_max);
}
else
{
m_rangeSelectors["FuryRange"]->setRange(range.first, range.second);
m_dblManager->setValue(m_properties["ELow"], range.first);
m_dblManager->setValue(m_properties["EHigh"], range.second);
}
//set default value for width
m_dblManager->setValue(m_properties["EWidth"], 0.005);
}
//set default value for width
m_dblManager->setValue(m_properties["EWidth"], 0.005);

replot("FuryPlot");
}
catch(std::invalid_argument & exc)
Expand Down

0 comments on commit 7742404

Please sign in to comment.