def common_make_root_histogram_test(): x_list = list(range(0,10000)) w_list = [] for i in range( len(x_list) ): x_list[i] = float(x_list[i])/10000. w_list.append(x_list[i]) y_list = __sine_list(2., 2.*math.pi, x_list) hist1 = common.make_root_histogram('hist sin(x)', y_list, 'hist of x', 100) hist2 = common.make_root_histogram('hist sin(x)', y_list, 'hist of x', 50, x_list, 'hist of y', 50) hist3 = common.make_root_histogram('hist sin(x)', y_list, 'hist of x', 10, x_list, 'hist of y', 10, w_list) testpass = __test_root_hist(hist3,'hist sin(x)','hist of x','hist of y',common.min_max(y_list, w_list, rg.histo_margin)[0], common.min_max(y_list, w_list, rg.histo_margin)[1], common.min_max(x_list, w_list, rg.histo_margin)[0], common.min_max(x_list, w_list, rg.histo_margin)[1], rg.line_color, rg.line_style, rg.line_width, rg.fill_color, '') hist4 = common.make_root_histogram('hist sin(x)', y_list, 'hist of x', 10, x_list, 'hist of y', 10, w_list, xmin=y_list[7500],xmax=y_list[2500],ymin=x_list[2500],ymax=x_list[7500], line_color=1, line_style=2, line_width=3, fill_color=4, hist_title_string='title_string') testpass = __test_root_hist(hist4,'hist sin(x)', 'hist of x', 'hist of y', y_list[7500], y_list[2500], x_list[2500], x_list[7500], 1, 2, 3, 4, 'title_string') canvas1 = common.make_root_canvas('hist_test1') hist1.Draw() canvas2 = common.make_root_canvas('hist_test2') hist2.Draw('cont1z') canvas3 = common.make_root_canvas('hist_test3') hist3.Draw('lego') canvas4 = common.make_root_canvas('hist_test4') hist4.Draw('lego') if not testpass: return 'fail' return 'pass'
def plot_trajectory(item, line_color, canvas = None): z_list = [hit["z"] for hit in item["seed"]] x_list = [hit["x"] for hit in item["seed"]] y_list = [hit["y"] for hit in item["seed"]] r_list = [hit["r"] for hit in item["seed"]] x_min, x_max = common.min_max(x_list+r_list+y_list) title = "x: "+str(item["seed"][0]["x"])+" mm "+\ "p_{x}: "+str(item["seed"][0]["px"])+" MeV/c" hist_r, graph_r = common.make_root_graph(title, z_list, "z [mm]", r_list, "Radius [mm]", ymin=0.0, ymax=250.) hist_x, graph_x = common.make_root_graph("x", z_list, "z [mm]", x_list, "Position [mm]") hist_y, graph_y = common.make_root_graph("y", z_list, "z [mm]", y_list, "Position [mm]") graph_r.SetLineColor(line_color) graph_x.SetLineColor(line_color) graph_x.SetLineStyle(3) graph_y.SetLineColor(line_color) graph_y.SetLineStyle(4) if canvas == None: canvas = common.make_root_canvas("trajectory") #hist_r.SetTitle("x = "+str(x_list[0])+" px = "+str(item["seed"][0]["px"])) hist_r.Draw() canvas.cd() graph_r.Draw("SAMEPL") #graph_x.Draw("SAMEPL") #graph_y.Draw("SAMEPL") canvas.Update() return canvas, graph_r
def graph_peak_magnitude(pos_peak_with_errors, neg_peak_with_errors, title): peak_time_list, peak_voltage_list, peak_err_list = [], [], [] for i, v_pos in enumerate(pos_peak_with_errors): di = 0 if i >= len(neg_peak_with_errors): break while neg_peak_with_errors[i+di]["x"] < pos_peak_with_errors[i]["x"]: if i+di+1 >= len(neg_peak_with_errors): break di += 1 v_neg = neg_peak_with_errors[i+di] v_0 = (v_pos["y"]+v_neg["y"])/2. v_err = abs(v_0)*(v_pos["cov(x,y)"][1][1]/v_pos["y"]**2+v_neg["cov(x,y)"][1][1]/v_neg["y"]**2)**0.5 peak_voltage_list.append(v_0) peak_err_list.append(v_err*1e3) peak_time_list.append(v_pos["x"]*DT) print " Peak voltage mean:", numpy.mean(peak_voltage_list[-20:-10]), print "sigma:", numpy.std(peak_voltage_list[-20:-10]) canvas = common.make_root_canvas(title+" rf voltage") canvas.Draw() canvas.cd() y_range = common.min_max(peak_voltage_list+peak_err_list) hist, graph = common.make_root_graph("Peaks", peak_time_list, "Time of peak [ns]", peak_voltage_list, "Peak voltage [kV]", ymin = y_range[0], ymax = y_range[1]) hist.Draw() graph.SetMarkerStyle(6) graph.Draw("p") hist, graph = common.make_root_graph("Errors", peak_time_list, "Time of peak [ns]", peak_err_list, "Error [V]", ymin = y_range[0], ymax = y_range[1]) graph.SetMarkerColor(2) graph.SetMarkerStyle(6) graph.Draw("p") canvas.Update() return canvas, hist, graph
def common_make_root_graph_test(): testpass = True canvas = common.make_root_canvas('graph_test') x_list = list(range(0,100)) for i in range( len(x_list) ): x_list[i] = float(x_list[i])/100. y_list = __sine_list(2., 2.*math.pi, x_list) mm = common.min_max(x_list) + common.min_max(y_list) (hist,graph) = common.make_root_graph('test', x_list, 'x [2#pi rad]', y_list, 'a*sin(b*x)') if not __test_root_hist(hist, '', 'x [2#pi rad]', 'a*sin(b*x)', mm[0], mm[1], mm[2], mm[3], rg.line_color, rg.line_style, rg.line_width, rg.fill_color, ''): return 'fail' (hist,graph) = common.make_root_graph('test', x_list, 'x [2#pi rad]', y_list, 'a*sin(b*x)', xmin=-1001., xmax=+1001, ymin=-1002., ymax=+1002.,line_color=201, line_style=202, line_width=203, fill_color=204, hist_title_string='mr title') testpass &= __test_root_hist(hist, 'namey', 'x [2#pi rad]', 'a*sin(b*x)', -1001., +1001., -1002., +1002., rg.line_color, rg.line_style, rg.line_width, rg.fill_color, 'mr title') testpass &= __test_root_graph(graph, 'namey', x_list, y_list, 201, 202, 203, 204) (x_list, y_list) = ([3,2,1], [3,2,1]) #check that x_list and y_list are not changed by sort (hist,graph) = common.make_root_graph('test', x_list, 'x', y_list, 'y') testpass &= (x_list, y_list) == ([3,2,1], [3,2,1]) hist.Draw() graph.Draw() common.clear_root() if testpass: return 'pass' else: return 'fail'
def plot_trajectory(item, line_color, canvas=None): z_list = [hit["z"] for hit in item["seed"]] x_list = [hit["x"] for hit in item["seed"]] y_list = [hit["y"] for hit in item["seed"]] r_list = [hit["r"] for hit in item["seed"]] x_min, x_max = common.min_max(x_list + r_list + y_list) title = "x: "+str(item["seed"][0]["x"])+" mm "+\ "p_{x}: "+str(item["seed"][0]["px"])+" MeV/c" hist_r, graph_r = common.make_root_graph(title, z_list, "z [mm]", r_list, "Radius [mm]", ymin=0.0, ymax=250.) hist_x, graph_x = common.make_root_graph("x", z_list, "z [mm]", x_list, "Position [mm]") hist_y, graph_y = common.make_root_graph("y", z_list, "z [mm]", y_list, "Position [mm]") graph_r.SetLineColor(line_color) graph_x.SetLineColor(line_color) graph_x.SetLineStyle(3) graph_y.SetLineColor(line_color) graph_y.SetLineStyle(4) if canvas == None: canvas = common.make_root_canvas("trajectory") #hist_r.SetTitle("x = "+str(x_list[0])+" px = "+str(item["seed"][0]["px"])) hist_r.Draw() canvas.cd() graph_r.Draw("SAMEPL") #graph_x.Draw("SAMEPL") #graph_y.Draw("SAMEPL") canvas.Update() return canvas, graph_r
def common_min_max_test(): test_pass = True out = common.min_max([-0.1,-0.5,-0.9,0.0]) test_pass = test_pass and abs(out[0]--0.99) < __float_tol test_pass = test_pass and abs(out[1]-+0.09) < __float_tol out = common.min_max(x_float_list=[-0.1,-0.5,-0.9,0.0], weight_list=[1,1,0,1]) test_pass = test_pass and abs(out[0]--0.55) < __float_tol test_pass = test_pass and abs(out[1]-+0.05) < __float_tol out = common.min_max(x_float_list=[-0.1,-0.5,-0.9,0.0], weight_list=[1,1,0,1], margin=0.0) test_pass = test_pass and abs(out[0]--0.5) < __float_tol test_pass = test_pass and abs(out[1]-+0.0) < __float_tol out = common.min_max(x_float_list=[-0.1,-0.5,-0.9,0.0], weight_list=[1,1,0,1], margin=0.0, xmin=+100.) test_pass = test_pass and abs(out[0]-100.) < __float_tol test_pass = test_pass and abs(out[1]-+0.0) < __float_tol out = common.min_max(x_float_list=[-0.1,-0.5,-0.9,0.0], weight_list=[1,1,0,1], margin=0.0, xmax=-100.) test_pass = test_pass and abs(out[0]--0.5) < __float_tol test_pass = test_pass and abs(out[1]+100.) < __float_tol out = common.min_max([-10., 10.], [0.,0.]) test_pass = test_pass and abs(out[0]+1.) < __float_tol test_pass = test_pass and abs(out[1]-1.) < __float_tol if test_pass: return 'pass' else: return 'fail'
def plot_2d(data, foil_probe, foil_var1, foil_var2, z_lambda, plot_title, canvas): name = plot_title.replace("__", "") name = name.replace("_", " ") x_data, y_data, z_data = [], [], [] for bump in data: for hit in bump["tracking"]: if hit[0] == foil_probe: x_data.append(hit[foil_var1]) y_data.append(hit[foil_var2]) break if len(x_data) != len(z_data): # meaning we found foil probe z_data.append(z_lambda(bump)) if abs(max(z_data) - min(z_data)) < 1e-5: print("Not plotting", name) print(" ", "z_data", z_data) return False print("Plotting ", name) print(" ", "x_data", x_data) print(" ", "y_data", y_data) print(" ", "z_data", z_data) n_points = len(x_data) if canvas == None: canvas = common.make_root_canvas(name) canvas.Draw() canvas.cd() x_min_max = common.min_max(x_data) y_min_max = common.min_max(y_data) z_min_max = common.min_max(z_data) hist = ROOT.TH3D( "", "", 10, x_min_max[0], x_min_max[1], 10, y_min_max[0], y_min_max[1], 10, z_min_max[0], z_min_max[1], ) hist.GetXaxis().SetTitleOffset(3) hist.SetStats(False) hist.GetZaxis().SetLabelSize(0.01) hist.Draw() root_objects.append(hist) graph2d = ROOT.TGraph2D(n_points) root_objects.append(graph2d) ROOT.gStyle.SetPalette(1) graph2d.SetMarkerStyle(20) graph2d.SetTitle("") graph2d.Draw('same pcolz') for i in range(n_points): graph2d.SetPoint(i, x_data[i], y_data[i], z_data[i]) #palette = ROOT.TPaletteAxis(hist.GetListOfFunctions().FindObject("palette")) #palette.SetX2NDC(0.99) canvas.SetRightMargin(0.13) text = ROOT.TPaveText(0.1, 0.6, 0.65, 0.7) text.SetBorderSize(1) text.SetFillColor(10) text.AddText(name) text.Draw() root_objects.append(text) name = name.replace(" ", "_") canvas.SetTheta(90) canvas.SetPhi(-90) canvas.Update() return canvas, graph2d