Changeset 6bd3a8d1 in sasview for src/sas/calculator/slit_length_calculator.py
- Timestamp:
- Mar 2, 2015 4:09:46 PM (10 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 13e46abe
- Parents:
- c93122e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/calculator/slit_length_calculator.py
r79492222 r6bd3a8d1 11 11 """ 12 12 def __init__(self): 13 13 14 14 # x data 15 15 self.x = None … … 18 18 #default slit length 19 19 self.slit_length = 0.0 20 20 21 21 # The unit is unknown from SAXSess profile: 22 22 # It seems 1/nm but it could be not fixed, 23 23 # so users should be notified to determine the unit by themselves. 24 24 self.slit_length_unit = "unknown" 25 25 26 26 def set_data(self, x=None, y=None): 27 27 """ 28 28 Receive two vector x, y and prepare the slit calculator for 29 29 computation. 30 30 31 31 :param x: array 32 32 :param y: array … … 34 34 self.x = x 35 35 self.y = y 36 36 37 37 def calculate_slit_length(self): 38 38 """ 39 39 Calculate slit length. 40 40 41 41 :return: the slit length calculated value. 42 42 """ … … 50 50 # find max y 51 51 max_y = y.max() 52 52 53 53 # initial values 54 54 y_sum = 0.0 55 55 y_max = 0.0 56 56 ind = 0.0 57 57 58 58 # sum 10 or more y values until getting max_y, 59 59 while (True): … … 64 64 y_max = y[ind] 65 65 ind += 1 66 66 67 67 # find the average value/2 of the top values 68 68 y_half = y_sum/(2.0*ind) 69 69 70 70 # defaults 71 71 y_half_d = 0.0 … … 79 79 if y[ind] < y_half: 80 80 break 81 81 82 82 # y value and ind just before passed the spot of the half height 83 83 y_half_u = y[ind-1] 84 84 85 85 # get corresponding x values 86 86 x_half_d = x[ind] 87 87 x_half_u = x[ind-1] 88 88 89 89 # calculate x at y = y_half using linear interpolation 90 90 if y_half_u == y_half_d: … … 94 94 + x_half_d * (y_half_u - y_half)) \ 95 95 / (y_half_u - y_half_d) 96 96 97 97 # Our slit length is half width, so just give half beam value 98 98 slit_length = x_half 99 99 100 100 # set slit_length 101 101 self.slit_length = slit_length 102 102 return self.slit_length 103 103 104 104 def get_slit_length_unit(self): 105 105 """
Note: See TracChangeset
for help on using the changeset viewer.