Changeset a309667 in sasview for src/sas/sascalc/corfunc
- Timestamp:
- Sep 11, 2017 6:07:53 AM (7 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, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- ccf58fb
- Parents:
- 9b90bf8
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sascalc/corfunc/transform_thread.py
r9b90bf8 ra309667 53 53 54 54 # ----- Interface Distribution function ----- 55 # dmax = 200.0 # Max real space value to calculate IDF up to 56 # dstep = 0.5 # Evaluate the IDF in steps of dstep along the real axis 57 # qmax = 1.0 # Max q value to integrate up to when calculating IDF 55 idf = dct(-qs**4 * (iqs-background)) 58 56 59 # Units of x axis depend on qmax (for some reason?). This scales 60 # the xgamma array appropriately, since qmax was set to 0.6 in 61 # the original fortran code. 62 # x_scale = qmax / 0.6 57 if self.check_if_cancelled(): return 63 58 64 # xgamma = np.arange(0, dmax/x_scale, step=dstep/x_scale) 65 # idf = np.zeros(len(xgamma)) 66 idf = dct(-qs**4 * (iqs-background)) 59 # Manually calculate IDF(0.0), since scipy DCT tends to give us a 60 # very large negative value. 61 # IDF(x) = int_0^inf q^4 * I(q) * cos(q*x) * dq 62 # => IDF(0) = int_0^inf q^4 * I(q) * dq 67 63 idf[0] = trapz(-qs**4 * (iqs-background), qs) 68 idf /= Q 69 70 # nth moment = integral(q^n * I(q), q=0, q=inf) 71 # moment = np.zeros(5) 72 # for n in range(5): 73 # integrand = qs**n * (iqs-background) 74 # moment[n] = trapz(integrand[qs < qmax], qs[qs < qmax]) 75 # if self.check_if_cancelled(): return 76 # 77 # # idf(x) = -integral(q^4 * I(q)*cos(qx), q=0, q=inf) / 2nd moment 78 # # => idf(0) = -integral(q^4 * I(q), 0, inf) / (2nd moment) 79 # # = -(4th moment)/(2nd moment) 80 # idf[0] = -moment[4] / moment[2] 81 # for i in range(1, len(xgamma)): 82 # d = xgamma[i] 83 # 84 # integrand = -qs**4 * (iqs-background) * np.cos(d*qs) 85 # idf[i] = trapz(integrand[qs < qmax], qs[qs < qmax]) 86 # idf[i] /= moment[2] 87 # if self.check_if_cancelled(): return 88 # 89 # xgamma *= x_scale 64 idf /= Q # Normalise using scattering invariant 90 65 91 66 except Exception as e:
Note: See TracChangeset
for help on using the changeset viewer.