事件分析模块

该代码定义了一些用于计算和处理物理实验数据的函数,包括计算概率、频率和数据过滤。代码还定义了一个事件函数字典 eventfunctions,其中包含了一些预定义的函数及其相关信息。这些函数主要用于统计分析和数据处理,特别是实验中测量的原子数量和频率。

代码概述

该代码定义了一些用于计算和处理物理实验数据的函数,包括计算概率、频率和数据过滤。代码还定义了一个事件函数字典 eventfunctions,其中包含了一些预定义的函数及其相关信息。这些函数主要用于统计分析和数据处理,特别是实验中测量的原子数量和频率。

依赖库

  • numpy:用于数值计算和数组操作。
  • scipy.constants:用于获取物理常数。
  • scipy.special:用于特殊函数的计算。
  • pytiamo.odt.utils:自定义工具库,用于计算 Wilson 误差。

物理常数

  • m_Li:锂原子的质量。
  • m_Ba:钡原子的质量。
  • kB:玻尔兹曼常数。

函数

P_n(data, args)

计算每个 xvalargs['n'] 的概率,并排除 args['x'] 中的值。

参数:

  • data:包含 x 和 y 值的数组。
  • args:包含 nx 的字典,n 是要计算的值,x 是要排除的值。

返回:

  • xvals:唯一的 x 值数组。
  • p:每个 x 值对应的概率。
  • [l, u]:每个概率的 Wilson 误差。
def P_n(data, args):
    n = float(args['n'])
    x = args['x']
    x = eval(x)
    if type(x) == tuple:
        x = list(x)
    else:
        x = [x]
    xvals = np.array(list(set(data[0])))
    yvals = [data[1][data[0] == i] for i in xvals]
    k = np.array([len(np.where(i==n)[0]) for i in yvals])
    N = np.array([len(i) for i in yvals])
    Nx = np.zeros(len(xvals))
    for j in x:
        Nx += np.array([len(np.where(i==j)[0]) for i in yvals])
    N = N - Nx
    p, l, u = ut.wilson_err(N, k)
    return xvals, p, [l,u]

freq(data, args)

计算每个 xvalargs['n'] 的频率和泊松误差。

参数:

  • data:包含 x 和 y 值的数组。
  • args:包含 n 的字典,n 是要计算的值。

返回:

  • xvals:唯一的 x 值数组。
  • yvals:每个 x 值对应的频率。
  • yerr:每个频率的泊松误差。
def freq(data, args):
    n = float(args['n'])
    xvals = np.array(list(set(data[0])))
    yvals = [data[1][data[0] == i] for i in xvals]
    yvals = np.array([len(np.where(i==n)[0]) for i in yvals])
    yerr = np.sqrt(yvals)
    return xvals, yvals, yerr

getFilter(data, n)

根据给定的值 n 过滤数据集,返回过滤后的数据。

参数:

  • data:包含 x 和 y 值的数组。
  • n:用于过滤数据的值。

返回:

  • filtdat:过滤后的数据数组。
def getFilter(data, n):
    dzip = [list(i) for i in zip(*data)]
    filt = filter(lambda d: d[1] == n, dzip)
    flist = list(filt)
    filtdat = [np.array(i) for i in zip(*flist)]
    return filtdat

事件函数字典 eventfunctions

包含预定义的事件函数及其相关信息,包括函数名称、公式、参数名和初始值。

eventfunctions = {
    '--None--': {
        'function_text': 'no Fitfunction',
        'arg_names': [],
        'start_values': [],
        'function': None
    },
    'P_n': {
        'name': 'P_n',
        'function_text': 'N_n/(N_tot-N_x)',
        'function': P_n,
        'arg_names': ['n', 'x'],
        'start_values': [1, 0]
    },
    'freq': {
        'name': 'freq',
        'function_text': 'N',
        'function': freq,
        'arg_names': ['n'],
        'start_values': [1]
    }
}

总结

该代码实现了一些用于物理实验数据处理的实用函数,包括计算概率、频率和数据过滤。事件函数字典 eventfunctions 提供了预定义的函数和其相关信息,方便在实验分析中使用。