数据/图像分析管理器
该代码定义了一些用于拟合和分析物理实验数据的数学函数。它包括一系列函数和常量,用于描述各种物理现象,例如多项式、指数衰减、高斯分布等。这些函数可以用于数据拟合和模型化实验结果。
常量定义
代码开始定义了一些常见的物理常数,用于后续计算。
m_Li
:锂原子的质量m_Ba
:钡原子的质量kB
:玻尔兹曼常数
函数定义
这些函数用于拟合和分析实验数据,每个函数都有特定的用途和参数。
多项式函数
用于拟合线性和多项式数据。
pol1(p, x)
:一阶多项式pol2(p, x)
:二阶多项式pol10(p, x)
:十阶多项式
指数函数
用于描述指数增长和衰减现象。
exponential(p, x)
:指数函数exponential_decay(p, x)
:指数衰减函数
扩展模型函数
用于描述复杂的物理现象,例如热云膨胀。
tof_temperature(p, x)
:热云膨胀模型spatial_thermometry_scaled(p, x)
:空间测温模型
高斯函数
用于描述高斯分布和光束强度分布。
gaussian(p, x)
:高斯分布函数gaussian_beam_intensity(p, x)
:高斯光束强度分布
洛伦兹函数
用于描述洛伦兹分布。
lorentzian(p, x)
:洛伦兹分布lorentzian_cutoff(p, x)
:带截止的洛伦兹分布
其他函数
描述不同物理现象的函数。
sinc_profile(p, x)
:sinc函数rabi_oscillation(p, x)
:拉比振荡ac_stark_detuned_scattering(p, x)
:AC Stark失谐散射saturation_parameter(p, x)
:饱和参数
拟合函数字典
这些函数被存储在一个字典中,可以根据需要进行调用。每个条目包含函数名称、函数公式、参数名称、初始值以及函数本身。
fitfunctions = {
'--None--': {'function_text': 'no Fitfunction', 'par_names': [], 'startvalues': [], 'function': None},
'linear': {'name': 'linear fit', 'function_text': 'a+b*x', 'par_names': ['a', 'b'], 'startvalues': [1, 0], 'function': pol1},
'quadratic': {'name': 'quadratic fit', 'function_text': 'a+b*x+c*x^2', 'par_names': ['a', 'b', 'c'], 'startvalues': [1, 0, 0], 'function': pol2},
'exponential': {'name': 'exponential', 'function_text': 'a+be^cx', 'par_names': ['a', 'b', 'c'], 'startvalues': [0, 1, 1], 'function': exponential},
'tof_temperature': {'name': 'TOF_temperature', 'function_text': 'sqrt(sigma_0**2 + kB*T/m *(t-t0)**2)', 'par_names': ['sigma_0', 'T', 't0'], 'startvalues': [5e-6, 1.5e-6, 25e-6], 'function': tof_temperature},
'spatial_thermometry_scaled': {'name': 'Spatial thermometry', 'function_text': 'sqrt(sigma_th^2 + sigma_psf^2)', 'par_names': ['T', 'sigma_psf'], 'startvalues': [360e-6, 10e-6], 'function': spatial_thermometry_scaled},
'exponential_decay': {'name': 'exponential_decay', 'function_text': 'A*exp(-x/tau) + c', 'par_names': ['tau', 'A', 'c'], 'startvalues': [0.0003, 300e-6, 0.0], 'function': exponential_decay},
'gaussian': {'name': 'gaussian', 'function_text': 'A0/(sqrt(2*pi)*sigma)*exp(-(x-mu)**2/2sigma**2) + c', 'par_names': ['mu', 'sigma', 'A0', 'c'], 'startvalues': [0, 1, 1, 0], 'function': gaussian},
'lorentzian': {'name': 'lorentzian', 'function_text': 'A0 / (1 + (mu-x / (fwhm/2))**2) + c', 'par_names': ['mu', 'fwhm', 'A0', 'c'], 'startvalues': [318, 6, 18e3, 0], 'function': lorentzian},
'sinc_profile': {'name': 'sinc_profile', 'function_text': 'A0 * sinc(b*(x-x0))**2 + c', 'par_names': ['x0', 'A0', 'b', 'c'], 'startvalues': [73.739e6, -2.3e4, 7e-4, 23e3], 'function': sinc_profile}
}