Skip to content

Commit

Permalink
Added flag for low resolution axis of data and norm. This refs #4303
Browse files Browse the repository at this point in the history
  • Loading branch information
JeanBilheux committed Feb 13, 2012
1 parent 6f3494a commit 0c43ff4
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 33 deletions.
27 changes: 22 additions & 5 deletions Code/Mantid/Framework/PythonAPI/PythonAlgorithms/RefLReduction.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ def PyInit(self):
self.declareListProperty("NormPeakPixelRange", [127, 133], Validator=ArrayBoundedValidator(Lower=0))
self.declareProperty("SubtractNormBackground", True)
self.declareListProperty("NormBackgroundPixelRange", [123, 137], Validator=ArrayBoundedValidator(Lower=0))
self.declareListProperty("LowResAxisPixelRange", [115, 210], Validator=ArrayBoundedValidator(Lower=0))
self.declareListProperty("LowResDataAxisPixelRange", [115, 210], Validator=ArrayBoundedValidator(Lower=0))
self.declareListProperty("LowResNormAxisPixelRange", [115, 210], Validator=ArrayBoundedValidator(Lower=0))
self.declareListProperty("TOFRange", [9000., 23600.], Validator=ArrayBoundedValidator(Lower=0))
self.declareProperty("QMin", 0.001, Description="Minimum Q-value")
self.declareProperty("QStep", 0.001, Description="Step-size in Q. Enter a negative value to get a log scale.")
Expand Down Expand Up @@ -66,8 +67,12 @@ def PyExec(self):
#Due to the frame effect, it's sometimes necessary to narrow the range
#over which we add all the pixels along the low resolution
#Parameter
Xrange = self.getProperty("LowResAxisPixelRange")
Xrange = self.getProperty("LowResDataAxisPixelRange")

print 'LowResDataAxisPixelRange'
print Xrange
print

h = 6.626e-34 #m^2 kg s^-1
m = 1.675e-27 #kg

Expand Down Expand Up @@ -214,7 +219,8 @@ def PyExec(self):
ws_data = "__DataWks"
ws_transposed = '__TransposedID'
if subtract_data_bck:
print 'in subtract_data_bck'

print "with data background"
ConvertToHistogram(InputWorkspace=ws_integrated_data,
OutputWorkspace=ws_integrated_data)

Expand Down Expand Up @@ -270,12 +276,16 @@ def PyExec(self):
mtd.deleteWorkspace(ws_transposed)

else:

print "without data background"
ConvertToHistogram(InputWorkspace=ws_integrated_data,
OutputWorkspace=ws_data)

# Work on Normalization file #########################################
if (NormFlag):


print "with normalization"
# Find full path to event NeXus data file
f = FileFinder.findRuns("REF_L%d" %normalization_run)
if len(f)>0 and os.path.isfile(f[0]):
Expand Down Expand Up @@ -303,15 +313,22 @@ def PyExec(self):
NormaliseByCurrent(InputWorkspace=ws_norm_histo_data, OutputWorkspace=ws_norm_histo_data)

##Background subtraction
Yrange = self.getProperty("LowResNormAxisPixelRange")

print 'LowResDataAxisPixelRange'
print Yrange
print



#Create a new event workspace of only the range of pixel of interest
#background range (along the y-axis) and of only the pixel
#of interest along the x-axis (to avoid the frame effect)
ws_integrated_data = "__IntegratedNormWks"
wks_utility.createIntegratedWorkspace(mtd[ws_norm_histo_data],
ws_integrated_data,
fromXpixel=Xrange[0],
toXpixel=Xrange[1],
fromXpixel=Yrange[0],
toXpixel=Yrange[1],
fromYpixel=BackfromYpixel,
toYpixel=BacktoYpixel,
maxX=maxX,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@ class DataSets(BaseScriptElement):
DataBackgroundRoi = [115, 137,123, 137]
DataTofRange = [9600., 21600.]

x_range = [115,210]
norm_x_min = 115
norm_x_max = 210
data_x_range_flag = True
data_x_range = [115,210]

norm_x_range_flag = True
norm_x_range = [115,210]

NormFlag = True
NormPeakPixels = [120, 130]
NormBackgroundFlag = False
Expand Down Expand Up @@ -60,7 +62,8 @@ def to_script(self, for_automated_reduction=False):
script += " NormPeakPixelRange=%s,\n" % str(self.NormPeakPixels)
script += " NormBackgroundPixelRange=%s,\n" % str(self.NormBackgroundRoi)
script += " SubtractNormBackground=%s,\n" % str(self.NormBackgroundFlag)
script += " LowResAxisPixelRange=%s,\n" % str(self.x_range)
script += " LowResDataAxisPixelRange=%s,\n" % str(self.data_x_range)
script += " LowResNormAxisPixelRange=%s,\n" % str(self.norm_x_range)
script += " TOFRange=%s,\n" % str(self.DataTofRange)
script += " QMin=%s,\n" % str(self.q_min)
script += " QStep=%s,\n" % str(self.q_step)
Expand Down Expand Up @@ -103,12 +106,14 @@ def to_xml(self):
xml += "<from_tof_range>%s</from_tof_range>\n" % str(self.DataTofRange[0])
xml += "<to_tof_range>%s</to_tof_range>\n" % str(self.DataTofRange[1])
xml += "<data_sets>%s</data_sets>\n" % ','.join([str(i) for i in self.data_files])
xml += "<x_min_pixel>%s</x_min_pixel>\n" % str(self.x_range[0])
xml += "<x_max_pixel>%s</x_max_pixel>\n" % str(self.x_range[1])
xml += "<x_min_pixel>%s</x_min_pixel>\n" % str(self.data_x_range[0])
xml += "<x_max_pixel>%s</x_max_pixel>\n" % str(self.data_x_range[1])
xml += "<x_range_flag>%s</x_range_flag>\n" % str(self.data_x_range_flag)

xml += "<norm_flag>%s</norm_flag>\n" % str(self.NormFlag)
xml += "<norm_x_max>%s</norm_x_max>\n" % str(self.norm_x_max)
xml += "<norm_x_min>%s</norm_x_min>\n" % str(self.norm_x_min)
xml += "<nrom_x_range_flag>%s</norm_x_range_flag>\n" % str(self.norm_x_range_flag)
xml += "<norm_x_max>%s</norm_x_max>\n" % str(self.norm_x_range[0])
xml += "<norm_x_min>%s</norm_x_min>\n" % str(self.norm_x_range[1])

xml += "<norm_from_peak_pixels>%s</norm_from_peak_pixels>\n" % str(self.NormPeakPixels[0])
xml += "<norm_to_peak_pixels>%s</norm_to_peak_pixels>\n" % str(self.NormPeakPixels[1])
Expand Down Expand Up @@ -150,13 +155,19 @@ def from_xml_element(self, instrument_dom):
self.DataPeakPixels = [BaseScriptElement.getIntElement(instrument_dom, "from_peak_pixels"),
BaseScriptElement.getIntElement(instrument_dom, "to_peak_pixels")]

self.x_range = [BaseScriptElement.getIntElement(instrument_dom, "x_min_pixel"),
BaseScriptElement.getIntElement(instrument_dom, "x_max_pixel")]

self.norm_x_min = BaseScriptElement.getIntElement(instrument_dom, "norm_x_min",
default=DataSets.norm_x_min)
self.norm_x_max = BaseScriptElement.getIntElement(instrument_dom, "norm_x_max",
default=DataSets.norm_x_max)
#low resolution range
self.data_x_range_flag = BaseScriptElement.getBoolElement(instrument_dom, "data_x_range_flag",
default=DataSets.data_x_range_flag)

self.data_x_range = [BaseScriptElement.getIntElement(instrument_dom, "x_min_pixel"),
BaseScriptElement.getIntElement(instrument_dom, "x_max_pixel")]

self.norm_x_range_flag = BaseScriptElement.getBoolElement(instrument_dom, "norm_x_range_flag",
default=DataSets.norm_x_range_flag)

self.norm_x_range = [BaseScriptElement.getIntElement(instrument_dom, "norm_x_min"),
BaseScriptElement.getIntElement(instrument_dom, "norm_x_max")]

#discrete selection string
self.DataPeakDiscreteSelection = BaseScriptElement.getStringElement(instrument_dom, "peak_discrete_selection")
Expand Down Expand Up @@ -223,9 +234,10 @@ def reset(self):
self.NormBackgroundRoi = DataSets.NormBackgroundRoi
self.NormPeakPixels = DataSets.NormPeakPixels
self.norm_file = DataSets.norm_file
self.x_range = DataSets.x_range
self.norm_x_max = DataSets.norm_x_max
self.norm_x_min = DataSets.norm_x_min
self.data_x_range_flag = DataSets.data_x_range_flag
self.data_x_range = DataSets.data_x_range
self.norm_x_range_flag = DataSets.norm_x_range_flag
self.norm_x_range = DataSets.norm_x_range

# Q range
self.q_min = DataSets.q_min
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -380,11 +380,11 @@ def set_editing_state(self, state):
self._summary.data_peak_from_pixel.setText(str(state.DataPeakPixels[0]))
self._summary.data_peak_to_pixel.setText(str(state.DataPeakPixels[1]))

self._summary.x_min_edit.setText(str(state.x_range[0]))
self._summary.x_max_edit.setText(str(state.x_range[1]))
self._summary.x_min_edit.setText(str(state.data_x_range[0]))
self._summary.x_max_edit.setText(str(state.data_x_range[1]))

self._summary.norm_x_min_edit.setText(str(state.norm_x_min))
self._summary.norm_x_max_edit.setText(str(state.norm_x_max))
self._summary.norm_x_min_edit.setText(str(state.norm_x_range[0]))
self._summary.norm_x_max_edit.setText(str(state.norm_x_range[1]))

#Background flag
self._summary.data_background_switch.setChecked(state.DataBackgroundFlag)
Expand All @@ -399,10 +399,7 @@ def set_editing_state(self, state):
self._summary.data_to_tof.setText(str(state.DataTofRange[1]))

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

#normalization flag
self._summary.norm_switch.setChecked(state.NormFlag)


# Normalization options
self._summary.norm_run_number_edit.setText(str(state.norm_file))
self._summary.norm_peak_from_pixel.setText(str(state.NormPeakPixels[0]))
Expand All @@ -414,6 +411,10 @@ def set_editing_state(self, state):
self._summary.norm_background_from_pixel1.setText(str(state.NormBackgroundRoi[0]))
self._summary.norm_background_to_pixel1.setText(str(state.NormBackgroundRoi[1]))

#normalization flag
self._summary.norm_switch.setChecked(state.NormFlag)
self._norm_clicked(state.NormFlag)

# Q binning
#self._summary.q_min_edit.setText(str(state.q_min))
#self._summary.log_scale_chk.setChecked(state.q_step<0)
Expand Down Expand Up @@ -463,11 +464,13 @@ def get_editing_state(self):
m.DataPeakPixels = [int(self._summary.data_peak_from_pixel.text()),
int(self._summary.data_peak_to_pixel.text())]

m.x_range = [int(self._summary.x_min_edit.text()),
m.data_x_range = [int(self._summary.x_min_edit.text()),
int(self._summary.x_max_edit.text())]
m.data_x_range_flag = self._summary.data_low_res_range_switch.isChecked()

m.norm_x_min = int(self._summary.norm_x_min_edit.text())
m.norm_x_max = int(self._summary.norm_x_max_edit.text())
m.norm_x_range = [int(self._summary.norm_x_min_edit.text()),
int(self._summary.norm_x_max_edit.text())]
m.norm_x_range_flag = self._summary.norm_low_res_range_switch.isChecked()

#Background flag
m.DataBackgroundFlag = self._summary.data_background_switch.isChecked()
Expand Down

0 comments on commit 0c43ff4

Please sign in to comment.