Exemple #1
0
exp_data = R_exp
exp_err = dR_exp

if fit_normalized:
    exp_data = R_exp_n
    exp_err = dR_exp_n

# now read the data

views = []

for i, f in enumerate(view_files):
    print(i)
    print(f)
    vv = vd.view(f, neutron_camera=False)  # is_NC[i]) my mod Alex
    views.append(vv)
xv = np.arange(len(views))

# get zero crossings
R0 = np.array([get_zero_crossing(v) for v in views])


# define the fitting function:
def S_f(x):
    eff = []
    for i in x:
        global r_maxis, z_maxis
        r_maxis, z_maxis = mag_axis[i]
        v = views[i]
        if v.is_NC:
Exemple #2
0
    view_dir+'track_h_neg_1.00.data', \
        view_dir+'track_h_neg_2.00.data', \
        view_dir+'track_h_pos_0.00.data', \
        view_dir+'track_h_pos_1.00.data', \
        view_dir+'track_v_neg_1.00.data', \
        view_dir+'track_v_pos_0.00.data', \
        view_dir+'track_v_neg_2.00.data', \
        view_dir+'track_v_pos_1.00.data', \
        ]
data_sets[view_name] = view_files

# initialize data and setup exp. data file
view_files = data_sets[use_data_set]
Ntot = total_rate * integration_time

views = [vd.view(f) for f in view_files]
exp_dat = [view.eff_exp for view in views]
exp_counts = np.array(exp_dat) * Ntot
xv = np.arange(len(views))

exp_err = np.sqrt(exp_counts)
exp_err.clip(1., out=exp_err) * 1.  # make sure the min.error is 1 not 0

sigma = 1. / exp_err

exp_eff = np.zeros_like(exp_counts)
for i, e in enumerate(exp_counts):
    random_factor = 1. + np.random.normal(scale=sigma[i])
    exp_eff[i] = max(e * random_factor, 0.)
#
# add an error
Exemple #3
0
PD_views_f = []
PD_accept = []
PD_channel_number = []
PD_step = []
for i, i_d in enumerate(idet):
    cc = ch[i]
    idd = idet[i]
    name_patt = orbit_output_dir + '/track_{}*.data'.format(i_d)
    PD_view_files = G.glob(name_patt)
    # use the first file in the list to get some parameters used for calculating rates
    PDd = DF.pdfile(PD_view_files[0])
    PD_accept.append(PDd.par.get_value('accept'))
    PD_channel_number.append(PDd.par.get_value('channel_number', var_type=int))
    PD_step.append(PDd.par.get_value('stepsize'))
    # load the trajectories for each view
    PD_v = [vd.view(f) for f in PD_view_files]
    PD_views_f.append(PD_view_files)
    PD_views.append(PD_v)
    print('channel : ', cc, ', detecor : ', idd, ' loaded')
PD_accept = np.array(PD_accept)
#----------------------------------------------------------------------
# start drawing
#----------------------------------------------------------------------

# draw side view
if draw_top_view:
    f1 = pl.figure(1, figsize=(11, 6))
else:
    f1 = pl.figure(1, figsize=(5, 8))
f1.text(0.1, 0.925, eq_file)
Exemple #4
0
def main(c_file):
    control_file = c_file

    # contpour plotting controle
    cont_scale = 1.0
    ncont = 25

    #colormap = pl.get_cmap('CMRmap')
    #colormap = pl.get_cmap('gnuplot')
    #colormap = pl.get_cmap('gnuplot2')
    colormap = pl.get_cmap('gist_heat')
    #colormap = pl.get_cmap('jet')
    #colormap = pl.get_cmap('hot')

    # open control file
    p_file = control_file
    pf = PF.pfile(p_file)

    output_dir = pf.get_value('output_dir')
    # ???
    plot_em = pf.get_value('plot_em', var_type=pf.Bool)
    # ??
    em_filled = pf.get_value('em_filled', var_type=pf.Bool)
    # ??
    plot_psirel = pf.get_value('plot_psirel', var_type=pf.Bool)
    # ??
    psirel_filled = pf.get_value('psirel_filled', var_type=pf.Bool)
    ##
    all_yellow = pf.get_value('all_yellow', var_type=pf.Bool)

    # color array
    if all_yellow:
        colors = ['y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y',
                  'y']  # make everything yellow
    else:
        colors = [
            'red', 'green', 'blue', 'yellow', 'magenta', 'cyan', 'orange',
            'lavenderblush', 'maroon', 'plum'
        ]

    # dynamic input file for detector/channels assignment
    di_dir = pf.get_value('dynamic_dir')
    di_file = pf.get_value('dynamic_file')

    dynamic_file = di_dir + di_file
    df = B.get_file(dynamic_file)
    dfd = df.par

    # get channel/detector assignement
    try:
        dn = np.array(dfd.get_value('detector_to_use').split(','), dtype=int)
    except:
        dn = np.array([int(dfd.get_value('detector_to_use'))])

    channel_number = B.get_data(df, 'ch')
    detector_id = B.get_data(df, 'detector_id')
    ch_touse = channel_number[np.in1d(detector_id, dn)]

    # flux grid
    try:
        flux_data_file = pf.get_value('flux_data_file')
    except:
        flux_data_file = 'flux.data'
    print('using : ', flux_data_file, ' for flux and Em data')

    # flux limiter
    try:
        flux_limiter_file = pf.get_value('flux_limiter_file')
    except:
        flux_limiter_file = 'flux_limit.data'
    print('using : ', flux_limiter_file, ' for flux limit data')

    # plot n-flux at mid-plane
    try:
        flux_data_file_mp = pf.get_value('flux_data_file_mp')
    except:
        flux_data_file_mp = None

    orbit_output = open(output_dir + 'orbit_output').readlines()

    # find the EQ file used:
    eq_file = 'generic'
    for d in orbit_output:
        if (d.find('--> EQ File unit, name') >= 0.):
            eq_file = d.split()[-1:][0]

    # flux
    print('reading flux data')
    fl = gf.flux(output_dir + flux_data_file)

    print('reading flux limit data')
    fll_d = DF.dfile(output_dir + flux_limiter_file)
    r_fll = np.array(fll_d.get_data('xlim'))
    z_fll = np.array(fll_d.get_data('ylim'))

    # limiter
    print('reading limiter data')
    li = gl.limiter(output_dir + 'limiter_drawing.data')
    #orbits

    print('reading orbits data')

    # each view can now have several trajectories
    PD_views = []
    PD_views_f = []
    PD_accept = []
    PD_channel_number = []
    PD_step = []
    for i, i_d in enumerate(dn):
        cc = ch_touse[i]

        name_patt = output_dir + '/track_{}*.data'.format(i_d)

        PD_view_files = G.glob(name_patt)

        # use the first file in the list to get some parameters used for calculating rates
        PDd = DF.pdfile(PD_view_files[0])
        PD_accept.append(PDd.par.get_value('accept'))
        PD_channel_number.append(
            PDd.par.get_value('channel_number', var_type=int))
        PD_step.append(PDd.par.get_value('stepsize'))
        # load the trajectories for each view
        PD_v = [vd.view(f) for f in PD_view_files]
        PD_views_f.append(PD_view_files)
        PD_views.append(PD_v)
        print('channel : ', cc, ', detecor : ', i_d, ' loaded')
    PD_accept = np.array(PD_accept)

    #----------------------------------------------------------------------
    # start drawing
    #----------------------------------------------------------------------

    draw_top_view = pf.get_value('draw_top_view', var_type=pf.Bool)
    draw_top_view = True
    if draw_top_view:
        f1 = pl.figure(figsize=(11, 6))
#        f1=pickle.load(file('neutron.pickle_both_view'))
    else:
        f1 = pl.gcf()  #figure(figsize= (5,8))
    #f1.text(0.1, 0.925, eq_file)

    # draw 3 regions
    if draw_top_view:
        li.draw_all()
    else:
        li.draw_side_all()

    # draw the rel. flux
    # get a nice set of contour lines
    # select the first plot
    Em_cont = None

    # axes = li.ax1.get_axes()
    # f1.sca( axes )
    axes = li.ax1
    f1.sca(axes)

    # draw the flux limit
    pl.plot(r_fll, z_fll, color='m', linewidth=2.)

    if plot_em:
        Em_range = fl.Em.max() - fl.Em.min()
        Em_min = fl.Em.min() + Em_range / 100.
        v = np.linspace(Em_min, fl.Em.max() * cont_scale, ncont)
        if em_filled:
            Em_cont = fl.draw_Em_filled(v, cmap=colormap)
        else:
            Em_cont = fl.draw_Em(v)

    if plot_psirel:
        v = np.linspace(-0.1, fl.Zrel.max(), 23)
        if psirel_filled:
            fl.draw_psirel_filled(v, cmap=colormap)
        else:
            fl.draw_psirel(v)

    # make a nice x-axis
    axes.xaxis.set_major_locator(MaxNLocator(4))

    #----------------------------------------------------------------------
    # draw orbits
    #----------------------------------------------------------------------
    #    # animation part
    #    for i, PDv in enumerate(PD_views):
    #        icol = dn[i]-1
    #        animate(li, PDv, color = colors[icol])
    #
    # axes = li.ax1.get_axes()
    axes = li.ax1
    f1.sca(axes)
    for i, PDv in enumerate(PD_views):
        icol = dn[i] - 1
        plot_view_side(PDv, color=colors[icol], label='Ch {0:d}'.format(dn[i]))

    #pl.legend(fontsize = 12,loc = 'upper left')
    pl.title
    # draw  orbits into the top view
    #draw_top_view=True
    if draw_top_view:
        # axes = li.ax2.get_axes()
        axes = li.ax2
        f1.sca(axes)
        # draw a few orbits
        for i, PDv in enumerate(PD_views):
            icol = dn[i] - 1
            plot_view_top(PDv,
                          color=colors[icol],
                          label='Ch {0:d}'.format(dn[i]))
        # get the mid-plane emmissivity
        if plot_em:
            if (flux_data_file_mp != None):
                # load data file
                d = np.load(output_dir + '/' + flux_data_file_mp)
                X = d['X']
                Y = d['Y']
                Em_mid = d['EM_mp']
                Em_range = Em_mid.max() - Em_mid.min()
                Em_min = Em_mid.min() + Em_range / 100.
                v = np.linspace(Em_min, Em_mid.max() * cont_scale, ncont)
                if em_filled:
                    Em_cont = pl.contourf(X, Y, Em_mid, v, cmap=colormap)
                else:
                    Em_cont = pl.contour(X, Y, Em_mid, v, cmap=colormap)

        #pl.legend(fontsize = 12, loc = 'upper left')


# The following code plots histogram of orbits midplane intersection radii
#    h_range =(0.0, 0.3)#(0.6, 1.6)
#    r0 = []
#    f2 = pl.figure()
#    for  i,PDv in enumerate( PD_views ):
#        icol = dn[i]-1
#        rr = []
#        for v in PDv:
#            rr.append(get_effective_dist(v))#get_zero_crossing(v))
#
#        rr = np.array(rr)
#        r = rr.mean()
#        h = B.histo(rr, range =h_range, bins = 200)
#        h.plot(color = colors[icol])
#        print colors[icol]
#        sig_r = np.sqrt(rr.var())
#        r0.append([h, r, sig_r, rr])
#    # all done
#    pl.xlabel('R (m)')
#    pl.ylabel('counts')
#    pl.title('mid-plane Radius')
#
#    #pl.savefig(orbit_dir+'image.png')
    pl.show()