Skip to content

Commit

Permalink
Added possibility to use or not slits width in the automatic scaling …
Browse files Browse the repository at this point in the history
…when looking for a perfect match. This refs #4303
  • Loading branch information
JeanBilheux committed May 29, 2012
1 parent b55a242 commit a2aab2b
Show file tree
Hide file tree
Showing 6 changed files with 126 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ def PyInit(self):
#scaling factor file
self.declareProperty("ScalingFactorFile", "",
Description="Scaling Factor configuration file")
self.declareProperty("SlitsWidthFlag", True,
Description="Looking for perfect match of slits width when using Scaling Factor file")
#incident medium
self.declareProperty("IncidentMediumSelected", "",
Description="Incident medium used for those runs")
Expand Down Expand Up @@ -145,6 +147,7 @@ def PyExec(self):
slitsValuePrecision = sfCalculator.PRECISION
sfFile = self.getProperty("ScalingFactorFile")
incidentMedium = self.getProperty("IncidentMediumSelected")
slitsWidthFlag = self.getProperty("SlitsWidthFlag")

# Pick a good workspace n ame
ws_name = "refl%d" % run_numbers[0]
Expand Down Expand Up @@ -820,7 +823,8 @@ def PyExec(self):
ws_data_scaled = wks_utility.applySF(ws_data,
incidentMedium,
sfFile,
slitsValuePrecision)
slitsValuePrecision,
slitsWidthFlag)

else:
print '-> Automatic SF not applied!'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class DataSets(BaseScriptElement):

#scaling factor file
scaling_factor_file = ''
slits_width_flag = True

#incident medium list and selected value
incident_medium_list = ['H2O']
Expand Down Expand Up @@ -100,6 +101,7 @@ def to_script(self, for_automated_reduction=False):
# sf configuration file
if self.scaling_factor_file != '':
script += "ScalingFactorFile='%s',\n" % str(self.scaling_factor_file)
script += "SlitsWidthFlag=%s,\n" % str(self.slits_width_flag)

# The output should be slightly different if we are generating
# a script for the automated reduction
Expand Down Expand Up @@ -162,6 +164,7 @@ def to_xml(self):

# scaling factor file name
xml += "<scaling_factor_file>%s</scaling_factor_file>\n" % str(self.scaling_factor_file)
xml += "<slits_width_flag>%s</slits_width_flag>\n" % str(self.slits_width_flag)

#incident medium
xml += "<incident_medium_list>%s</incident_medium_list>\n" % str(self.incident_medium_list[0])
Expand Down Expand Up @@ -260,7 +263,9 @@ def from_xml_element(self, instrument_dom):
self.angle_offset = BaseScriptElement.getFloatElement(instrument_dom, "angle_offset", default=DataSets.angle_offset)
self.angle_offset_error = BaseScriptElement.getFloatElement(instrument_dom, "angle_offset_error", default=DataSets.angle_offset_error)

#scaling factor file and options
self.scaling_factor_file = BaseScriptElement.getStringElement(instrument_dom, "scaling_factor_file")
self.slits_width_flag = BaseScriptElement.getBoolElement(instrument_dom, "slits_width_flag")

#incident medium selected
if BaseScriptElement.getStringList(instrument_dom, "incident_medium_list") != []:
Expand Down Expand Up @@ -307,8 +312,9 @@ def reset(self):
self.angle_offset = DataSets.angle_offset
self.angle_offset_error = DataSets.angle_offset_error

#scaling factor file
#scaling factor file and options
self.scaling_factor_file = DataSets.scaling_factor_file
self.slits_width_flag = DataSets.slits_width_flag

#incident medium selected
self.incident_medium_list = DataSets.incident_medium_list
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,10 @@ def initialize_content(self):
call_back = partial(self._edit_event, ctrl=self._summary.direct_pixel_edit)
self.connect(self._summary.direct_pixel_edit, QtCore.SIGNAL("textChanged(QString)"), call_back)


call_back = partial(self._edit_event, ctrl=self._summary.slits_width_flag)
self.connect(self._summary.slits_width_flag, QtCore.SIGNAL("clicked()"), call_back)

call_back = partial(self._edit_event, ctrl=self._summary.direct_pixel_check)
self.connect(self._summary.direct_pixel_check, QtCore.SIGNAL("clicked()"), call_back)
call_back = partial(self._edit_event, ctrl=self._summary.det_angle_check)
Expand Down Expand Up @@ -354,6 +358,7 @@ def _reset_warnings(self):
util.set_edited(self._summary.dq0, False)
util.set_edited(self._summary.dq_over_q, False)
util.set_edited(self._summary.fourth_column_switch, False)
util.set_edited(self._summary.slits_width_flag, False)

def _det_angle_offset_chk_changed(self):
is_checked = self._summary.det_angle_offset_check.isChecked()
Expand Down Expand Up @@ -768,6 +773,8 @@ def _add_data(self):

state.scaling_factor_file = self._summary.cfg_scaling_factor_file_name.text()

state.slits_width_flag = self._summary.slits_width_flag.isChecked()

#incident medium
_incident_medium_list = [str(self._summary.incident_medium_combobox.itemText(j))
for j in range(self._summary.incident_medium_combobox.count())]
Expand Down Expand Up @@ -903,6 +910,10 @@ def set_editing_state(self, state):
if len(str(state.output_dir).strip())>0:
self._summary.outdir_edit.setText(str(state.output_dir))

#scaling factor file and options
self._summary.cfg_scaling_factor_file_name.setText(str(state.scaling_factor_file))
self._summary.slits_width_flag.setChecked(state.slits_width_flag)

self._reset_warnings()
self._summary.data_run_number_edit.setText(str(','.join([str(i) for i in state.data_files])))

Expand Down
42 changes: 42 additions & 0 deletions Code/Mantid/scripts/Interface/ui/reflectometer/data_refl_simple.ui
Original file line number Diff line number Diff line change
Expand Up @@ -3319,6 +3319,48 @@ p, li { white-space: pre-wrap; }
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_26">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QCheckBox" name="slits_width_flag">
<property name="minimumSize">
<size>
<width>180</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>180</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Match slits width.</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# Form implementation generated from reading ui file 'data_refl_simple.ui'
#
# Created: Wed May 23 07:27:09 2012
# Created: Tue May 29 12:13:32 2012
# by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!
Expand Down Expand Up @@ -1120,6 +1120,18 @@ def setupUi(self, Frame):
self.cfg_scaling_factor_file_name_browse.setObjectName("cfg_scaling_factor_file_name_browse")
self.horizontalLayout_25.addWidget(self.cfg_scaling_factor_file_name_browse)
self.verticalLayout_11.addLayout(self.horizontalLayout_25)
self.horizontalLayout_26 = QtGui.QHBoxLayout()
self.horizontalLayout_26.setSpacing(0)
self.horizontalLayout_26.setObjectName("horizontalLayout_26")
self.slits_width_flag = QtGui.QCheckBox(self.groupBox_5)
self.slits_width_flag.setMinimumSize(QtCore.QSize(180, 0))
self.slits_width_flag.setMaximumSize(QtCore.QSize(180, 16777215))
self.slits_width_flag.setChecked(True)
self.slits_width_flag.setObjectName("slits_width_flag")
self.horizontalLayout_26.addWidget(self.slits_width_flag)
spacerItem15 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.horizontalLayout_26.addItem(spacerItem15)
self.verticalLayout_11.addLayout(self.horizontalLayout_26)
self.verticalLayout_4.addWidget(self.groupBox_5)
self.groupBox_4 = QtGui.QGroupBox(self.scrollAreaWidgetContents)
self.groupBox_4.setObjectName("groupBox_4")
Expand Down Expand Up @@ -1172,13 +1184,13 @@ def setupUi(self, Frame):
self.q_step_unit_label = QtGui.QLabel(self.groupBox_4)
self.q_step_unit_label.setObjectName("q_step_unit_label")
self.horizontalLayout_14.addWidget(self.q_step_unit_label)
spacerItem15 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum)
self.horizontalLayout_14.addItem(spacerItem15)
spacerItem16 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum)
self.horizontalLayout_14.addItem(spacerItem16)
self.log_scale_chk = QtGui.QCheckBox(self.groupBox_4)
self.log_scale_chk.setObjectName("log_scale_chk")
self.horizontalLayout_14.addWidget(self.log_scale_chk)
spacerItem16 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.horizontalLayout_14.addItem(spacerItem16)
spacerItem17 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.horizontalLayout_14.addItem(spacerItem17)
self.verticalLayout_8.addLayout(self.horizontalLayout_14)
self.horizontalLayout_16 = QtGui.QHBoxLayout()
self.horizontalLayout_16.setSpacing(0)
Expand Down Expand Up @@ -1209,8 +1221,8 @@ def setupUi(self, Frame):
self.angle_offset_unit_label = QtGui.QLabel(self.groupBox_4)
self.angle_offset_unit_label.setObjectName("angle_offset_unit_label")
self.horizontalLayout_16.addWidget(self.angle_offset_unit_label)
spacerItem17 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.horizontalLayout_16.addItem(spacerItem17)
spacerItem18 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.horizontalLayout_16.addItem(spacerItem18)
self.verticalLayout_8.addLayout(self.horizontalLayout_16)
self.horizontalLayout_19 = QtGui.QHBoxLayout()
self.horizontalLayout_19.setSpacing(0)
Expand Down Expand Up @@ -1282,41 +1294,41 @@ def setupUi(self, Frame):
self.dq_over_q.setMaximumSize(QtCore.QSize(60, 16777215))
self.dq_over_q.setObjectName("dq_over_q")
self.horizontalLayout_29.addWidget(self.dq_over_q)
spacerItem18 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.horizontalLayout_29.addItem(spacerItem18)
spacerItem19 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.horizontalLayout_29.addItem(spacerItem19)
self.create_ascii_button = QtGui.QPushButton(self.groupBox_4)
self.create_ascii_button.setMinimumSize(QtCore.QSize(150, 0))
self.create_ascii_button.setMaximumSize(QtCore.QSize(150, 16777215))
self.create_ascii_button.setObjectName("create_ascii_button")
self.horizontalLayout_29.addWidget(self.create_ascii_button)
self.verticalLayout_8.addLayout(self.horizontalLayout_29)
self.verticalLayout_4.addWidget(self.groupBox_4)
spacerItem19 = QtGui.QSpacerItem(20, 25, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
self.verticalLayout_4.addItem(spacerItem19)
spacerItem20 = QtGui.QSpacerItem(20, 25, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
self.verticalLayout_4.addItem(spacerItem20)
self.auto_reduce_help_label = QtGui.QLabel(self.scrollAreaWidgetContents)
self.auto_reduce_help_label.setObjectName("auto_reduce_help_label")
self.verticalLayout_4.addWidget(self.auto_reduce_help_label)
self.horizontalLayout_13 = QtGui.QHBoxLayout()
self.horizontalLayout_13.setSpacing(0)
self.horizontalLayout_13.setObjectName("horizontalLayout_13")
spacerItem20 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.horizontalLayout_13.addItem(spacerItem20)
spacerItem21 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.horizontalLayout_13.addItem(spacerItem21)
self.auto_reduce_tip_label = QtGui.QLabel(self.scrollAreaWidgetContents)
font = QtGui.QFont()
font.setItalic(True)
self.auto_reduce_tip_label.setFont(font)
self.auto_reduce_tip_label.setObjectName("auto_reduce_tip_label")
self.horizontalLayout_13.addWidget(self.auto_reduce_tip_label)
spacerItem21 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum)
self.horizontalLayout_13.addItem(spacerItem21)
spacerItem22 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum)
self.horizontalLayout_13.addItem(spacerItem22)
self.auto_reduce_btn = QtGui.QPushButton(self.scrollAreaWidgetContents)
self.auto_reduce_btn.setMinimumSize(QtCore.QSize(150, 0))
self.auto_reduce_btn.setMaximumSize(QtCore.QSize(150, 16777215))
self.auto_reduce_btn.setObjectName("auto_reduce_btn")
self.horizontalLayout_13.addWidget(self.auto_reduce_btn)
self.verticalLayout_4.addLayout(self.horizontalLayout_13)
spacerItem22 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.verticalLayout_4.addItem(spacerItem22)
spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.verticalLayout_4.addItem(spacerItem23)
self.auto_reduce_check = QtGui.QCheckBox(self.scrollAreaWidgetContents)
self.auto_reduce_check.setObjectName("auto_reduce_check")
self.verticalLayout_4.addWidget(self.auto_reduce_check)
Expand Down Expand Up @@ -1434,6 +1446,7 @@ def retranslateUi(self, Frame):
self.outdir_label_3.setText(QtGui.QApplication.translate("Frame", "File name:", None, QtGui.QApplication.UnicodeUTF8))
self.cfg_scaling_factor_file_name.setText(QtGui.QApplication.translate("Frame", "/home/j35/Desktop/RefLsf.cfg", None, QtGui.QApplication.UnicodeUTF8))
self.cfg_scaling_factor_file_name_browse.setText(QtGui.QApplication.translate("Frame", "Browse...", None, QtGui.QApplication.UnicodeUTF8))
self.slits_width_flag.setText(QtGui.QApplication.translate("Frame", "Match slits width", None, QtGui.QApplication.UnicodeUTF8))
self.groupBox_4.setTitle(QtGui.QApplication.translate("Frame", "Output", None, QtGui.QApplication.UnicodeUTF8))
self.q_min_label.setText(QtGui.QApplication.translate("Frame", "Q min", None, QtGui.QApplication.UnicodeUTF8))
self.q_min_edit.setText(QtGui.QApplication.translate("Frame", "0", None, QtGui.QApplication.UnicodeUTF8))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -707,7 +707,8 @@ def isWithinPrecisionRange(value_file, value_run, precision):
def applySF(InputWorkspace,
incidentMedium,
sfFile,
valuePrecision):
valuePrecision,
slitsWidthFlag):
"""
Function that apply scaling factor to data using sfCalculator.txt
file created by the sfCalculator procedure
Expand Down Expand Up @@ -771,26 +772,39 @@ def applySF(InputWorkspace,
if(isWithinPrecisionRange(_file_s2h,
s2h_value,
valuePrecision)):
_file_s1w = getFieldValue(sfFactorTable,i,4)
if(isWithinPrecisionRange(_file_s1w,
s1w_value,
valuePrecision)):
_file_s2w = getFieldValue(sfFactorTable,i,5)
if(isWithinPrecisionRange(_file_s2w,
s2w_value,
if (slitsWidthFlag):
_file_s1w = getFieldValue(sfFactorTable,i,4)
if(isWithinPrecisionRange(_file_s1w,
s1w_value,
valuePrecision)):
_file_s2w = getFieldValue(sfFactorTable,i,5)
if(isWithinPrecisionRange(_file_s2w,
s2w_value,
valuePrecision)):

print '--> Found a perfect match'
a = float(getFieldValue(sfFactorTable,i,6))
b = float(getFieldValue(sfFactorTable,i,7))
a_error = float(getFieldValue(sfFactorTable,i,8))
b_error = float(getFieldValue(sfFactorTable,i,9))

OutputWorkspace = _applySFtoArray(InputWorkspace,
a, b, a_error, b_error)

return OutputWorkspace

else:


print '--> Found a perfect match'
a = float(getFieldValue(sfFactorTable,i,6))
b = float(getFieldValue(sfFactorTable,i,7))
a_error = float(getFieldValue(sfFactorTable,i,8))
b_error = float(getFieldValue(sfFactorTable,i,9))
print '--> Found a perfect match'
a = float(getFieldValue(sfFactorTable,i,6))
b = float(getFieldValue(sfFactorTable,i,7))
a_error = float(getFieldValue(sfFactorTable,i,8))
b_error = float(getFieldValue(sfFactorTable,i,9))

OutputWorkspace = _applySFtoArray(InputWorkspace,
a, b, a_error, b_error)
OutputWorkspace = _applySFtoArray(InputWorkspace,
a, b, a_error, b_error)

return OutputWorkspace
return OutputWorkspace

# #retrieve the lambdaRequested and check if we can find the sfCalculator
# #file corresponding to that lambda
Expand Down

0 comments on commit a2aab2b

Please sign in to comment.