Пример #1
0
def plot_tail(fp, **kw):
    ret = kw.pop('ret', 'subplots')
    
    (h0, b0), (h1, b1) = events.get_photon_hist(fp, **kw)
    
    fig, (ax0, ax1) = plt.subplots(2,1, figsize=(12,8))
    _plot_photon_hist(ax0, h0, b0)
    _plot_photon_hist(ax1, h1, b1)
    
    ax0.set_xlim(settings.CH0_START-5, settings.CH0_START + 100)
    ax1.set_xlim(settings.CH1_START-5, settings.CH1_START + 100)
    ax0.set_title('tail channel 0')
    ax1.set_title('tail channel 1')
    
    fitres0, fitres1 = events.fit_tail(fp)
    
    ax0.plot(fitres0['fit_x'], fitres0['fit_y'], lw=2)
    ax1.plot(fitres1['fit_x'], fitres1['fit_y'], lw=2)
    
    ax0.text(settings.CH0_START, 1, fitres0['info'], va='bottom', ha='left', color='k', size='x-small',
             bbox = {'facecolor' : 'white', 'alpha' : 0.5})
    ax1.text(settings.CH1_START, 1, fitres1['info'], va='bottom', ha='left', color='k', size='x-small',
             bbox = {'facecolor' : 'white', 'alpha' : 0.5})
    
    starts = stats.get_sequence_starts(fp)
    ax0.text(settings.CH0_START+5, max(h0)/5., 
             'tailcounts / shot: {:.2e} ({} x {} starts)'.format(fitres0['tcpsh'], starts, settings.SEQREPS))
    ax1.text(settings.CH1_START+5, max(h1)/5., 
             'tailcounts / shot: {:.2e} ({} x {} starts)'.format(fitres1['tcpsh'], starts, settings.SEQREPS))

    fig.suptitle(files.get_msmt_header(fp) + ' -- Tail')

    if ret=='subplots':
        return fig, (ax0, ax1)
Пример #2
0
def plot_tail(fp, **kw):
    ret = kw.pop('ret', 'subplots')

    (h0, b0), (h1, b1) = events.get_photon_hist(fp, **kw)

    fig, (ax0, ax1) = plt.subplots(2, 1, figsize=(12, 8))
    _plot_photon_hist(ax0, h0, b0)
    _plot_photon_hist(ax1, h1, b1)

    ax0.set_xlim(settings.CH0_START - 5, settings.CH0_START + 100)
    ax1.set_xlim(settings.CH1_START - 5, settings.CH1_START + 100)
    ax0.set_title('tail channel 0')
    ax1.set_title('tail channel 1')

    fitres0, fitres1 = events.fit_tail(fp)

    ax0.plot(fitres0['fit_x'], fitres0['fit_y'], lw=2)
    ax1.plot(fitres1['fit_x'], fitres1['fit_y'], lw=2)

    ax0.text(settings.CH0_START,
             1,
             fitres0['info'],
             va='bottom',
             ha='left',
             color='k',
             size='x-small',
             bbox={
                 'facecolor': 'white',
                 'alpha': 0.5
             })
    ax1.text(settings.CH1_START,
             1,
             fitres1['info'],
             va='bottom',
             ha='left',
             color='k',
             size='x-small',
             bbox={
                 'facecolor': 'white',
                 'alpha': 0.5
             })

    starts = stats.get_sequence_starts(fp)
    ax0.text(
        settings.CH0_START + 5,
        max(h0) / 5., 'tailcounts / shot: {:.2e} ({} x {} starts)'.format(
            fitres0['tcpsh'], starts, settings.SEQREPS))
    ax1.text(
        settings.CH1_START + 5,
        max(h1) / 5., 'tailcounts / shot: {:.2e} ({} x {} starts)'.format(
            fitres1['tcpsh'], starts, settings.SEQREPS))

    fig.suptitle(files.get_msmt_header(fp) + ' -- Tail')

    if ret == 'subplots':
        return fig, (ax0, ax1)
Пример #3
0
def fit_tail(fp, **kw):
    (h0, b0), (h1, b1) = get_photon_hist(fp, **kw)

    _x0 = (b0[:-1] + b0[1:]) / 2.
    _x1 = (b1[:-1] + b1[1:]) / 2.
    binwidth = _x0[1] - _x0[0]
    tail0 = (_x0 >= settings.CH0_START) & (
        _x0 <= settings.CH0_START + settings.FIT_TAIL_LENGTH)
    tail1 = (_x1 >= settings.CH1_START) & (
        _x1 <= settings.CH1_START + settings.FIT_TAIL_LENGTH)
    x0, y0 = _x0[tail0], h0[tail0]
    x1, y1 = _x1[tail1], h1[tail1]

    fitres0 = _fit_tail(y0, x0)
    fitres1 = _fit_tail(y1, x1)

    starts = stats.get_sequence_starts(fp) * settings.SEQREPS
    tcpsh0 = fitres0['params_dict']['A'] * fitres0['params_dict'][
        'T'] / binwidth / starts
    tcpsh1 = fitres1['params_dict']['A'] * fitres1['params_dict'][
        'T'] / binwidth / starts

    _x0 = np.linspace(x0[0], x0[-1], 201)
    ret0 = {
        'params': fitres0['params_dict'],
        'errors': fitres0['error_dict'],
        'data_x': x0,
        'data_y': y0,
        'fit_x': _x0,
        'fit_y': fitres0['fitfunc'](_x0 - _x0[0]),
        'info': fitres0['fitfunc_str'] + '\n' + fit.str_fit_params(fitres0),
        'tcpsh': tcpsh0,
    }

    _x1 = np.linspace(x1[0], x1[-1], 201)
    ret1 = {
        'params': fitres1['params_dict'],
        'errors': fitres1['error_dict'],
        'data_x': x1,
        'data_y': y1,
        'fit_x': _x1,
        'fit_y': fitres1['fitfunc'](_x1 - _x1[0]),
        'info': fitres1['fitfunc_str'] + '\n' + fit.str_fit_params(fitres1),
        'tcpsh': tcpsh1,
    }

    keys0 = []
    params0 = np.empty((0, 2))
    for k in ret0['params']:
        keys0.append(k)
        params0 = np.vstack(
            (params0, np.array([ret0['params'][k], ret0['errors'][k]])))

    files.set_analysis_data(fp,
                            'ch0_fitparams',
                            params0,
                            subgroup='tail',
                            info=ret0['info'],
                            columns=('fitvalue', 'error'),
                            rows=keys0)
    files.set_analysis_data(fp,
                            'ch0_fit_data',
                            np.vstack(
                                (ret0['data_x'], ret0['data_y'])).transpose(),
                            subgroup='tail',
                            columns=('time bin center (ns)', 'counts per bin'))
    files.set_analysis_data(fp,
                            'ch0_fit_curve',
                            np.vstack(
                                (ret0['fit_x'], ret0['fit_y'])).transpose(),
                            subgroup='tail',
                            columns=('time (ns)', 'counts per bin'))
    files.set_analysis_data(fp,
                            'ch0_tcpsh',
                            ret0['tcpsh'],
                            subgroup='tail',
                            starts=starts)

    keys1 = []
    params1 = np.empty((0, 2))
    for k in ret1['params']:
        keys1.append(k)
        params1 = np.vstack(
            (params1, np.array([ret1['params'][k], ret1['errors'][k]])))

    files.set_analysis_data(fp,
                            'ch1_fitparams',
                            params1,
                            subgroup='tail',
                            info=ret1['info'],
                            columns=('fitvalue', 'error'),
                            rows=keys1)
    files.set_analysis_data(fp,
                            'ch1_fit_data',
                            np.vstack(
                                (ret1['data_x'], ret1['data_y'])).transpose(),
                            subgroup='tail',
                            columns=('time bin center (ns)', 'counts per bin'))
    files.set_analysis_data(fp,
                            'ch1_fit_curve',
                            np.vstack(
                                (ret1['fit_x'], ret1['fit_y'])).transpose(),
                            subgroup='tail',
                            columns=('time (ns)', 'counts per bin'))
    files.set_analysis_data(fp,
                            'ch1_tcpsh',
                            ret1['tcpsh'],
                            subgroup='tail',
                            starts=starts)

    return ret0, ret1
Пример #4
0
def fit_tail(fp, **kw):
    (h0, b0), (h1, b1) = get_photon_hist(fp, **kw)
        
    
    _x0 = (b0[:-1]+b0[1:])/2.
    _x1 = (b1[:-1]+b1[1:])/2.
    binwidth = _x0[1] - _x0[0]
    tail0 = (_x0 >= settings.CH0_START) & (_x0 <= settings.CH0_START + settings.FIT_TAIL_LENGTH)
    tail1 = (_x1 >= settings.CH1_START) & (_x1 <= settings.CH1_START + settings.FIT_TAIL_LENGTH)
    x0, y0 = _x0[tail0], h0[tail0]
    x1, y1 = _x1[tail1], h1[tail1]
    
    fitres0 = _fit_tail(y0, x0)
    fitres1 = _fit_tail(y1, x1)
    
    starts = stats.get_sequence_starts(fp) * settings.SEQREPS
    tcpsh0 = fitres0['params_dict']['A'] * fitres0['params_dict']['T'] / binwidth / starts
    tcpsh1 = fitres1['params_dict']['A'] * fitres1['params_dict']['T'] / binwidth / starts
    
    _x0 = np.linspace(x0[0], x0[-1], 201)
    ret0 = { 'params' : fitres0['params_dict'], 
            'errors' : fitres0['error_dict'], 
            'data_x' : x0,
            'data_y' : y0, 
            'fit_x' : _x0,
            'fit_y' : fitres0['fitfunc'](_x0-_x0[0]),
            'info' : fitres0['fitfunc_str'] + '\n' + fit.str_fit_params(fitres0),
            'tcpsh' : tcpsh0,
            }
    
    _x1 = np.linspace(x1[0], x1[-1], 201)
    ret1 = { 'params' : fitres1['params_dict'], 
            'errors' : fitres1['error_dict'], 
            'data_x' : x1,
            'data_y' : y1,
            'fit_x' : _x1,
            'fit_y' : fitres1['fitfunc'](_x1-_x1[0]),
            'info' : fitres1['fitfunc_str'] + '\n' + fit.str_fit_params(fitres1),
            'tcpsh' : tcpsh1,
            }
    
    keys0 = []
    params0 = np.empty((0,2))
    for k in ret0['params']:
        keys0.append(k)
        params0 = np.vstack((params0, np.array([ret0['params'][k], ret0['errors'][k]])))
    
    files.set_analysis_data(fp, 'ch0_fitparams', params0, subgroup='tail',
                      info=ret0['info'], columns=('fitvalue', 'error'),
                      rows=keys0)
    files.set_analysis_data(fp, 'ch0_fit_data', np.vstack((ret0['data_x'], ret0['data_y'])).transpose(),
                      subgroup='tail', columns=('time bin center (ns)', 'counts per bin'))
    files.set_analysis_data(fp, 'ch0_fit_curve', np.vstack((ret0['fit_x'], ret0['fit_y'])).transpose(),
                      subgroup='tail', columns=('time (ns)', 'counts per bin'))
    files.set_analysis_data(fp, 'ch0_tcpsh', ret0['tcpsh'], subgroup='tail',
                      starts = starts)
    
    keys1 = []
    params1 = np.empty((0,2))
    for k in ret1['params']:
        keys1.append(k)
        params1 = np.vstack((params1, np.array([ret1['params'][k], ret1['errors'][k]])))
    
    files.set_analysis_data(fp, 'ch1_fitparams', params1, subgroup='tail',
                      info=ret1['info'], columns=('fitvalue', 'error'),
                      rows=keys1)
    files.set_analysis_data(fp, 'ch1_fit_data', np.vstack((ret1['data_x'], ret1['data_y'])).transpose(),
                      subgroup='tail', columns=('time bin center (ns)', 'counts per bin'))
    files.set_analysis_data(fp, 'ch1_fit_curve', np.vstack((ret1['fit_x'], ret1['fit_y'])).transpose(),
                      subgroup='tail', columns=('time (ns)', 'counts per bin'))
    files.set_analysis_data(fp, 'ch1_tcpsh', ret1['tcpsh'], subgroup='tail',
                      starts = starts)
    
    return ret0, ret1