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)
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"
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"
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"