def plot_z_range(z_list, b_min_max, name, canvas):
    graph_list = []
    for r_pos, line_color in [(160., 8), (0., 1)]:
        #z_list = [float(z_pos) for z_pos in range(19000, 20001, 10)]
        btot_list = []
        for z_pos in z_list:
            (bx_field, by_field, bz_field, ex_field, ey_field, ez_field) = \
                                     field.get_field_value(r_pos, 0., z_pos, 0.)
            btot = bz_field#(bx_field**2+by_field**2+bz_field**2)**0.5
            if bz_field < 0:
                btot *= +1
            btot_list.append(btot*1e3)  # btot in T
            #print 'z:', z_pos, ' ** b:', bx_field, by_field, bz_field, \
            #                       'e:', ex_field, ey_field, ez_field
        gz_list = [(z - Z_OFFSET)/LENGTH for z in z_list]
        [ymin, ymax] = [b_min_max[0], b_min_max[1]] # xboa.common.min_max(btot_list+[3.1])
        [xmin, xmax] = [min(gz_list), max(gz_list)]
        print xmax
        xmax += (xmax-xmin)*LEGEND_SPACE
        # now make a ROOT graph of bz against z
        hist, graph = xboa.common.make_root_graph("x="+str(r_pos/LENGTH)+" m", gz_list, "",
                                                   btot_list, "B_{z} [T]",
                                                  xmin=xmin, xmax=xmax,
                                                  ymin=ymin, ymax=ymax)
        graph.SetLineColor(line_color)
        if (abs(r_pos-160.) < 1e-9):
            prep_narrow_plot(hist, name)
        graph_list.append(graph)
        graph.Draw('l same')
        canvas.Update()
    graph_list += plot_hps(z_list, False, flip_z=17000)
    plot_tracker_stations(z_list, btot_list)
    text_box(graph_list)
    canvas.Update()
    return canvas
def get_b_field(canvas, z = None):
    global bfield_hist, bfield_graph
    if not maus_globals.has_instance():
        configuration = Configuration.Configuration().\
                                          getConfigJSON(command_line_args=True)

        maus_globals.birth(configuration)
        z_list = []
        bz_list = []
        for z_pos in range(-8000, 8001, 50):
            z_pos = float(z_pos)
            (bx_field, by_field, bz_field, ex_field, ey_field, ez_field) = \
                                            field.get_field_value(0., 0., z_pos, 0.)
            z_list.append(z_pos)  # z in mm
            bz_list.append(bz_field*1e3)  # bz in T
        bfield_hist, bfield_graph = common.make_root_graph("bz vs z", z_list, "z [m]",
                                                             bz_list, "B_{z} [T]")
    canvas.cd()
    bfield_hist.Draw()
    bfield_graph.Draw('l')
    if z != None:
        print "Plotting z", z
        marker_graph = ROOT.TGraph(2)
        marker_graph.SetPoint(0, z, -1000)
        marker_graph.SetPoint(1, z, +1000)
        marker_graph.Draw('l')
        root_list.append(marker_graph)
示例#3
0
def get_b_field(canvas, z=None):
    global bfield_hist, bfield_graph
    if not maus_globals.has_instance():
        configuration = Configuration.Configuration().\
                                          getConfigJSON(command_line_args=True)

        maus_globals.birth(configuration)
        z_list = []
        bz_list = []
        for z_pos in range(-8000, 8001, 50):
            z_pos = float(z_pos)
            (bx_field, by_field, bz_field, ex_field, ey_field, ez_field) = \
                                            field.get_field_value(0., 0., z_pos, 0.)
            z_list.append(z_pos)  # z in mm
            bz_list.append(bz_field * 1e3)  # bz in T
        bfield_hist, bfield_graph = common.make_root_graph(
            "bz vs z", z_list, "z [m]", bz_list, "B_{z} [T]")
    canvas.cd()
    bfield_hist.Draw()
    bfield_graph.Draw('l')
    if z != None:
        print "Plotting z", z
        marker_graph = ROOT.TGraph(2)
        marker_graph.SetPoint(0, z, -1000)
        marker_graph.SetPoint(1, z, +1000)
        marker_graph.Draw('l')
        root_list.append(marker_graph)
def get_beta(p_start):
    z_start = 15068-1101
    z_end = 18836.8+8.+1101
    z_step = 50.
    bz_start = field.get_field_value(0., 0., z_start, 0.)[2] # kT
    if abs(bz_start) > 1e-6:
        beta_start = 1./(abs(bz_start)*0.15/p_start*1e3)
    else:
        beta_start = 1000.
    print "Initial beta", beta_start
    n_steps = int((z_end-z_start)/z_step)
    z_list = [z_start +i*50 for i in range(n_steps)]+[z_end]
    beta_list = [beta_evolver.evolve_beta(z_start, beta_start, 0., 140., 1, z) for z in z_list]
    beta_list = [item[0] for item in beta_list]
    return z_list, beta_list
def main():
    """
    Make a plot of z, bz
    """
    # set up datacards
    print "Welcome to MAUS field map maker example"
    configuration = Configuration.Configuration().\
                                          getConfigJSON(command_line_args=True)

    # initialise field maps and geometry
    print "Building field maps and other initialisation (this can take a while)"
    maus_globals.birth(configuration)

    # make lists of z, bz points
    print "Getting field values"
    canvas = None
    graph_list = []
    for r_pos, line_color in [(0., 1), (150., 2)]:
        z_list = [float(z_pos) for z_pos in range(12000, 18001, 50)]
        bz_list = []
        for z_pos in z_list:
            (bx_field, by_field, bz_field, ex_field, ey_field, ez_field) = \
                                     field.get_field_value(r_pos, 0., z_pos, 0.)
            bz_list.append(bz_field * 1e3)  # bz in T
            print 'z:', z_pos, ' ** b:', bx_field, by_field, bz_field, \
                                   'e:', ex_field, ey_field, ez_field

        # now make a ROOT graph of bz against z
        print "Graphing field values"
        hist, graph = xboa.common.make_root_graph("x=" + str(r_pos) + " mm",
                                                  z_list, "z [m]", bz_list,
                                                  "B_{z} [T]")
        graph.SetLineColor(line_color)
        if canvas == None:
            canvas = xboa.common.make_root_canvas("bz vs z")
            hist.Draw()
        graph_list.append(graph)
        graph.Draw('l')
        canvas.Update()
    legend = xboa.common.make_root_legend(canvas, graph_list)
    print legend.GetX1NDC(), legend.GetX2NDC()
    legend.SetX1NDC(0.7)
    legend.SetX2NDC(0.9)
    legend.SetBorderSize(1)
    #legend.Draw()
    canvas.Print('plots/bfield_vs_z.png')
    # Clean up
    maus_globals.death()
def main():
    """
    Make a plot of z, bz
    """
    # set up datacards
    print "Welcome to MAUS field map maker example"
    configuration = Configuration.Configuration().\
                                          getConfigJSON(command_line_args=True)

    # initialise field maps and geometry
    print "Building field maps and other initialisation (this can take a while)"
    maus_globals.birth(configuration)

    # make lists of z, bz points
    print "Getting field values"
    z_list = []
    bz_list = []
    for z_pos in range(-8000, 8001, 50):
        z_pos = float(z_pos)
        (bx_field, by_field, bz_field, ex_field, ey_field, ez_field) = \
                                        field.get_field_value(0., 0., z_pos, 0.)
        z_list.append(z_pos*1e-3)  # z in metres
        bz_list.append(bz_field*1e3)  # bz in T
        print 'z:', z_pos, ' ** b:', bx_field, by_field, bz_field, \
                               'e:', ex_field, ey_field, ez_field

    # now make a ROOT graph of bz against z
    print "Graphing field values"
    canvas = xboa.common.make_root_canvas("bz vs z")
    hist, graph = xboa.common.make_root_graph("bz vs z", z_list, "z [m]",
                                                         bz_list, "B_{z} [T]")
    hist.Draw()
    graph.Draw('l')
    canvas.Update()
    canvas.Print('bfield_vs_z.png')
    # Clean up
    maus_globals.death()
    # Finished
    print "Finished - press <Carriage Return> to continue"
示例#7
0
def main():
    """
    Make a plot of z, bz
    """
    # set up datacards
    print "Welcome to MAUS field map maker example"
    configuration = Configuration.Configuration().\
                                          getConfigJSON(command_line_args=True)

    # initialise field maps and geometry
    print "Building field maps and other initialisation (this can take a while)"
    maus_globals.birth(configuration)

    # make lists of z, bz points
    print "Getting field values"
    z_list = []
    bz_list = []
    for z_pos in range(-8000, 8001, 50):
        z_pos = float(z_pos)
        (bx_field, by_field, bz_field, ex_field, ey_field, ez_field) = \
                                        field.get_field_value(0., 0., z_pos, 0.)
        z_list.append(z_pos * 1e-3)  # z in metres
        bz_list.append(bz_field * 1e3)  # bz in T
        print 'z:', z_pos, ' ** b:', bx_field, by_field, bz_field, \
                               'e:', ex_field, ey_field, ez_field

    # now make a ROOT graph of bz against z
    print "Graphing field values"
    canvas = xboa.Common.make_root_canvas("bz vs z")
    hist, graph = xboa.Common.make_root_graph("bz vs z", z_list, "z [m]",
                                              bz_list, "B_{z} [T]")
    hist.Draw()
    graph.Draw('l')
    canvas.Update()
    canvas.Print('bfield_vs_z.png')
    # Clean up
    maus_globals.death()
    # Finished
    print "Finished"
示例#8
0
 def setup_beam(self):
     self.particles_in = []
     for emittance in self.emittance_list:
         bz = field.get_field_value(0., 0., self.tracker_z, 0.)[2]
         if abs(bz) < 1e-3:
             bz = 3e-3
         p = 140.
         mass = xboa.common.pdg_pid_to_mass[13]
         beta = p / 150. / bz
         alpha = 0.
         q = 1.
         ellipse = Bunch.build_penn_ellipse(emittance, mass, beta, alpha, p,
                                            0., bz, q)
         #events = Bunch.new_hit_shell(7, ellipse, ["x", "px", "y", "py"], "", defaults)
         mean = numpy.array([0.] * 4)
         events = numpy.random.multivariate_normal(mean, ellipse,
                                                   self.n_events)
         for event in events:
             hit = self.event_from_four_vector(event)
             if hit != None:
                 self.particles_in.append(hit)
             else:
                 continue
     print "Generated", len(self.particles_in), "events"