数据/图像分析管理器

该代码定义了一些用于拟合和分析物理实验数据的数学函数。它包括一系列函数和常量,用于描述各种物理现象,例如多项式、指数衰减、高斯分布等。这些函数可以用于数据拟合和模型化实验结果。

常量定义

代码开始定义了一些常见的物理常数,用于后续计算。

  • 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}
}