diff --git a/Code/Mantid/MantidQt/CustomInterfaces/src/DataComparison.cpp b/Code/Mantid/MantidQt/CustomInterfaces/src/DataComparison.cpp index bcac060930fb..3dead66967ba 100644 --- a/Code/Mantid/MantidQt/CustomInterfaces/src/DataComparison.cpp +++ b/Code/Mantid/MantidQt/CustomInterfaces/src/DataComparison.cpp @@ -384,11 +384,22 @@ void DataComparison::plotDiffWorkspace() for(int row = 0; row < numRows; row++) { QString workspaceName = m_uiForm.twCurrentData->item(row, WORKSPACE_NAME)->text(); + QString currentSpecName = m_uiForm.twCurrentData->item(row, CURRENT_SPEC)->text(); + bool ok; if(workspaceName == m_diffWorkspaceNames.first) - ws1Spec = m_uiForm.twCurrentData->item(row, CURRENT_SPEC)->text().toInt(); + ws1Spec = currentSpecName.toInt(&ok); if(workspaceName == m_diffWorkspaceNames.second) - ws2Spec = m_uiForm.twCurrentData->item(row, CURRENT_SPEC)->text().toInt(); + ws2Spec = currentSpecName.toInt(&ok); + + // Check that the spectra are not out of range + if(!ok) + { + // Set info message + QString infoMessage = workspaceName + ": Index out of range."; + m_uiForm.lbDiffInfo->setText(infoMessage); + return; + } } // Extract the current spectrum for both workspaces diff --git a/Code/Mantid/docs/source/interfaces/DataComparison.rst b/Code/Mantid/docs/source/interfaces/DataComparison.rst new file mode 100644 index 000000000000..d969072ab551 --- /dev/null +++ b/Code/Mantid/docs/source/interfaces/DataComparison.rst @@ -0,0 +1,76 @@ +Data Comparison +=============== + +.. contents:: Table of Contents + :local: + +Overview +-------- + +.. interface:: Data Comparison + :align: right + +The data comparison interface provides a method of comparing the spectra of +multiple :ref:`MatrixWorkspace ` (either pre loaded into +Mantid or loaded via the interface its self) using a preview plot. + +Add Data +-------- + +.. interface:: Data Comparison + :widget: gbAddData + :align: right + +This allows new data to be added to the comparison, this can be added by either +selecting a :ref:`MatrixWorkspace ` alrady loaded into Mantid +or by selecting a file to load. + +Once the data has been selected the *Add Data* button can be used to add it to +the comparison, this will add a curve to the preview plot and assign it the next +unused colour for the curve (if all are in use then black will be used). + +Data Table +---------- + +.. interface:: Data Comparison + :widget: gbCurrentData + :align: right + +The data table shows a list of the current data shown on the plot including the +workspace name and currently plotted spectrum index. This also allows the curve +colour to be changed manually. + +This also allows a spectrum index offset to be set on a per workspace basis, +this allows workspaces to be aligned relative to each other in the venet that +the spectra that you want to compare do not have the same spectrum index in each +workspace. + +The value of the offset for a workspace defines the spectrum index that the +first spectum will line up to relative to the spectrum selection spin box. At +least one offset value must be zero (this is set check for automatically after +an offset value has been changed). + +Diff +---- + +.. interface:: Data Comparison + :widget: gbDiff + :align: right + +A diff spectra of two workspaces can be created by selecting two workspaces in +the data table (by holding Ctrl whilst making a selection) and clicking the *Diff +Selected* button, this will subtract the current spectra for the second workspace +selected from the current spectra for the first spectra selected and plot the +result spectra as a green curve on the plot. + +If either of the diff workspaces are removed then the diff will be cleared. If +one of the workspaces can no longer be displayed as it is offset from the other +workspace then a messsage will be displayed in the diff tool and no plot will be +shown, however the diff will continue to function once both workspaces can be +displayed again. + +The diff workspace is created by running :ref:`ExtractSignleSpectrum +` on the two data workspaces and then using +:ref:`Minus ` to calculate the difference. + +.. categories:: Interfaces General