def _draw_materials_2d(self, step_data, material_dict, x_range, z_range): """Make a 2D plot of position vs material in r, z""" # we plot G4_AIR first, then G4_GALACTIC? canvas = common.make_root_canvas("Material vs position") hist, graph = common.make_root_graph("Material vs position", [1e9], "z [mm]", [1e9], "r [mm]", xmin=z_range[0], xmax=z_range[1], ymin=x_range[0], ymax=x_range[1]) hist.Draw() draw_list = step_data.keys() draw_list = self.move(draw_list, "G4_AIR", 0) draw_list = self.move(draw_list, "G4_Galactic", 1) graph_list = [] for material in draw_list: x_list = [step["r"] for step in step_data[material]] z_list = [step["z"] for step in step_data[material]] hist, graph = common.make_root_graph(material, z_list, "z [mm]", x_list, "r [mm]") graph.SetMarkerColor(material_dict[material]) graph.SetMarkerStyle(7) graph.SetLineColor(10) graph.Draw('p') graph_list.append(graph) common.make_root_legend(canvas, graph_list) canvas.Update() for _format in self.formats: canvas.Print(self.mat_2d + "." + _format)
def main(): data = load_json("single_tracking.json") plot_heat(data) heat_canvas = None for plane in range(len(data[0]["an_area_list"])): heat_canvas = plot_heat(data, plane, heat_canvas) graph_z_list = [] graph_traj_list = [] canvas_z = None canvas_traj = None line_color_index = 0 plot_data = select(data, [(a*20., a*2.) for a in range(11)]) for item in reversed(plot_data): line_color_index += 1 pos = 1.*line_color_index/(len(plot_data)+1) red = 0.5*(math.sin(2*math.pi*pos)+1.) green = 0.5*(math.cos(2*math.pi*pos)+1.) blue = 0.5 norm = (red**2+green**2+blue**2)**0.5 red, green, blue = red/norm, green/norm, blue/norm line_color = ROOT.TColor.GetColor(red, green, blue) canvas_z, graph_z = plot_z(item, line_color, False, canvas_z) canvas_traj, graph_traj = plot_trajectory(item, line_color, canvas_traj) graph_z_list.append(graph_z) graph_traj_list.append(graph_traj) common.make_root_legend(canvas_traj, graph_traj_list) common.make_root_legend(canvas_z, graph_z_list)
def _draw_materials_2d(self, step_data, material_dict, x_range, z_range): """Make a 2D plot of position vs material in r, z""" # we plot G4_AIR first, then G4_GALACTIC? canvas = common.make_root_canvas("Material vs position") hist, graph = common.make_root_graph("Material vs position", [1e9], "z [mm]", [1e9], "r [mm]", xmin=z_range[0], xmax=z_range[1], ymin=x_range[0], ymax=x_range[1]) hist.Draw() draw_list = step_data.keys() draw_list = self.move(draw_list, "G4_AIR", 0) draw_list = self.move(draw_list, "G4_Galactic", 1) graph_list = [] for material in draw_list: x_list = [step["r"] for step in step_data[material]] z_list = [step["z"] for step in step_data[material]] hist, graph = common.make_root_graph(material, z_list, "z [mm]", x_list, "r [mm]") graph.SetMarkerColor(material_dict[material]) graph.SetMarkerStyle(7) graph.SetLineColor(10) graph.Draw('p') graph_list.append(graph) common.make_root_legend(canvas, graph_list) canvas.Update() for _format in self.formats: canvas.Print(self.mat_2d+"."+_format)
def main(): data = load_json("single_tracking.json") plot_heat(data) heat_canvas = None for plane in range(len(data[0]["an_area_list"])): heat_canvas = plot_heat(data, plane, heat_canvas) graph_z_list = [] graph_traj_list = [] canvas_z = None canvas_traj = None line_color_index = 0 plot_data = select(data, [(a * 20., a * 2.) for a in range(11)]) for item in reversed(plot_data): line_color_index += 1 pos = 1. * line_color_index / (len(plot_data) + 1) red = 0.5 * (math.sin(2 * math.pi * pos) + 1.) green = 0.5 * (math.cos(2 * math.pi * pos) + 1.) blue = 0.5 norm = (red**2 + green**2 + blue**2)**0.5 red, green, blue = red / norm, green / norm, blue / norm line_color = ROOT.TColor.GetColor(red, green, blue) canvas_z, graph_z = plot_z(item, line_color, False, canvas_z) canvas_traj, graph_traj = plot_trajectory(item, line_color, canvas_traj) graph_z_list.append(graph_z) graph_traj_list.append(graph_traj) common.make_root_legend(canvas_traj, graph_traj_list) common.make_root_legend(canvas_z, graph_z_list)
def demit_graph(material, mom, thickness): emittance_canvas = None graph_list = [] for eps, color in [(3., ROOT.kRed), (6., ROOT.kRed + 2), (10., 1)]: emittance_canvas, hist, graph = dbeta_graph(material, eps, mom, thickness, emittance_canvas, color) hist.SetTitle(str(thickness) + " mm " + material + " p = " + str(mom)) graph_list.append(graph) common.make_root_legend(emittance_canvas, graph_list) emittance_canvas.Update() emittance_canvas.Print("demit_" + material + "_" + str(mom) + ".eps")
def plot_fields(data, plot_dir, foil_probe, foil_var, axis_name): bump_fields = {} bump_position = get_bump_position(data, foil_probe, foil_var) for bump in data: for key in bump["bump_fields"]: if key not in bump_fields: bump_fields[key] = [] bump_fields[key].append(bump["bump_fields"][key]) print("bump_fields = {") for key in bump_fields: print(" \"" + key + "\" :", bump_fields[key], ",") print("}") canvas = common.make_root_canvas("fields") all_fields = [] for key in bump_fields: all_fields += bump_fields[key] delta = 0.2 max_pos = (1. + delta) * max(bump_position) - delta * min(bump_position) hist, graph = common.make_root_graph( "fields", bump_position * len(bump_fields) + [max_pos], axis_name, all_fields + [0.], "Dipole field [T]") hist.Draw() color = [ ROOT.kBlue, ROOT.kGreen + 2, ROOT.kRed, ROOT.kYellow + 2, ROOT.kCyan + 1 ] marker = [20, 24, 21, 25] leg_list = [] index = 0 marker_index = 0 for key, field in sorted(bump_fields.items()): name = key.replace("__", "") name = name.replace("_", " ") hist, graph = common.make_root_graph(name, bump_position, axis_name, field, "Dipole field [T]") graph.SetMarkerStyle(marker[marker_index]) graph.SetMarkerColor(color[index]) graph.SetLineColor(color[index]) graph.SetLineStyle(color[index]) graph.Draw("lpsame") leg_list.append(graph) index += 1 if index == len(color): index = 0 marker_index += 1 leg = common.make_root_legend(canvas, leg_list) leg.SetBorderSize(1) leg.SetX1NDC(0.75) leg.SetX2NDC(0.9) leg.SetY1NDC(0.5) leg.SetY2NDC(0.9) leg.Draw() canvas.Update() for format in ["png"]: canvas.Print(plot_dir + "/bump_fields." + format)
def main(): #test_energy_loss() eqm_graph("beryllium") eqm_graph("carbon") eqm_graph("liquid_hydrogen") eqm_graph("gaseous_hydrogen") demit_graph("liquid_hydrogen", 140., 350.) demit_graph("aluminium", 140., 1.) demit_graph("lithium_hydride", 140., 65.) #emittance_canvas.Print("plots/emittance_vs_demittance.png") #emittance_canvas = dp_graph() #emittance_canvas.Print("plots/emittance_vs_dp.png") return emittance_canvas, hist, graph_3 = dbeta_graph(3, None, 2) emittance_canvas, hist, graph_6 = dbeta_graph(6, emittance_canvas, 4) emittance_canvas, hist, graph_12 = dbeta_graph(12, emittance_canvas, 6) common.make_root_legend(emittance_canvas, [graph_3, graph_6, graph_12]) emittance_canvas.Print("plots/emittance_vs_dbeta.png") emittance_canvas.Print("plots/emittance_vs_dbeta.root")
def eqm_graph(material): channel = CoolingChannel(material, 11.) channel.mass = common.pdg_pid_to_mass[2212] canvas = None ke_list = [1] + list(range(5, 31, 5)) graph_list = [] print(material) for i, ke in enumerate(ke_list): i_rat = i / float(len(ke_list)) if i_rat > 0.5: color = ROOT.TColor.GetColor(0., i_rat, (1. - i_rat) * 2) else: color = ROOT.TColor.GetColor(i_rat * 2, 0., 0.) channel.set_ke(ke) print(ke, channel.p, channel.dEdz()) beta_list = [float(i) for i in range(100, 5001, 100)] eqm_list = [] for beta in beta_list: channel.beta_hill = beta eqm_list.append(channel.eqm_emittance()) #print beta_list, eqm_list hist, graph = common.make_root_graph("KE = " + str(ke) + " MeV", beta_list, "#beta [mm]", eqm_list, "#varepsilon_{n} [mm]", ymin=0., ymax=3.) if canvas == None: canvas = common.make_root_canvas("eqm_graph - " + material) canvas.Draw() hist.SetTitle(material) hist.Draw() graph.SetLineColor(color) graph.Draw("SAME") graph_list.append(graph) common.make_root_legend(canvas, graph_list) canvas.Update()
def plot_fields(data, plot_dir, foil_probe): print("\nfield", end=' ') bump_fields = [[], [], [], []] bump_position = [] for bump_run in data: bump_position += [ bump["tracking"][foil_probe][1] for bump in bump_run["bumps"] ] for bump in bump_run["bumps"]: for i in range(4): bump_fields[i].append(bump["bump_fields"][i]) canvas = common.make_root_canvas("fields") all_fields = bump_fields[0] + bump_fields[1] + bump_fields[ 2] + bump_fields[3] delta = 0.2 max_pos = (1. + delta) * max(bump_position) - delta * min(bump_position) hist, graph = common.make_root_graph("fields", bump_position * 4 + [max_pos], "Radial position [mm]", all_fields + [0.], "Dipole field [T]") hist.Draw() color = [ROOT.kBlue, ROOT.kGreen + 2, ROOT.kRed, ROOT.kYellow + 2] leg_list = [] for i, field in enumerate(bump_fields): hist, graph = common.make_root_graph("Bump " + str(i + 1), bump_position, "Radial position [mm]", field, "Dipole field [T]") graph.SetMarkerStyle(20) graph.SetMarkerColor(color[i]) graph.SetLineColor(color[i]) graph.Draw("lpsame") leg_list.append(graph) leg = common.make_root_legend(canvas, leg_list) leg.SetBorderSize(1) leg.SetX1NDC(0.75) leg.SetX2NDC(0.9) leg.SetY1NDC(0.5) leg.SetY2NDC(0.9) leg.Draw() canvas.Update() for format in "eps", "png", "root": canvas.Print(plot_dir + "/bump_fields." + format)
def plot(plot_dir, data_list_pairs): tmp_data = [] for i, data in enumerate(data_list_pairs): pos_peak = numpy.mean( [x["y"] for x in data["RF"]["pos_peak_with_errors"]]) neg_peak = numpy.mean( [-x["y"] for x in data["RF"]["neg_peak_with_errors"]]) voltage = (pos_peak - neg_peak) data["rf_peak_to_peak_voltage"] = voltage rf_list = ["0.2", "0.32", "0.46", "0.62", "0.81", "3.01", "7.18"] if True or str(round(voltage, 2)) in rf_list: print "Using", voltage tmp_data.append(data) else: print "Not using", voltage data_list_pairs = tmp_data peak_delta_canvas = common.make_root_canvas("delta rf vs bpm") peak_delta_canvas.Draw() peak_delta_hist_canvas = common.make_root_canvas("delta rf vs bpm - hist") peak_delta_hist_canvas.Draw() graph_list = [] hist_list = [] dt_mean_list = [] dt_err_list = [] measured_voltage_list = [] max_y = -1e9 min_y = 1e9 delta_hist_min = 1e9 delta_hist_max = -1e9 for i, data in enumerate(data_list_pairs): """ voltage_str = "V="+str(round(data["rf_peak_to_peak_voltage"], 2)) print "Plotting measured "+voltage_str formats = ["png", "root"] times = data["RF"]["time_list"] rf_voltage_list = data["RF"]["voltage_list"] rf_peak_error_list = data["RF"]["pos_peak_with_errors"] rf_peak_list = [x["x"] for x in rf_peak_error_list] rf_period = sum([rf_peak_list[j+1] - rf_peak_list[j] for j, index in enumerate(rf_peak_list[:-1])]) rf_period = DT*rf_period/float(len(rf_peak_list)) rf_frequency = 1./rf_period print " RF Period", rf_period, "Frequency", rf_frequency print " Plotting RF magnitude and error" canvas_rf_v, hist_rf_v, graph_rf_v = graph_peak_magnitude(data["RF"]["pos_peak_with_errors"], data["RF"]["neg_peak_with_errors"], title=voltage_str) for format in formats: canvas_rf_v.Print(plot_dir+voltage_str+"_rf_voltage."+format) print " Plotting peak finding errors" canvas_err, hist_err, graph_err = graph_peak_errors(data["signal"]["peak_with_errors"], 4, title=voltage_str) graph_peak_errors(data["RF"]["pos_peak_with_errors"], 2, canvas_err) for format in formats: canvas_err.Print(plot_dir+voltage_str+"_peak_errors."+format) print " Plotting peak to peak distance" print " signal", canvas_pp, hist_pp, graph_pp = graph_delta_times(data["signal"]["peak_with_errors"], 4, title=voltage_str) print " RF", graph_delta_times(data["RF"]["pos_peak_with_errors"], 2, canvas_pp) for format in formats: canvas_pp.Print(plot_dir+voltage_str+"_peak_deltas."+format) print " Plotting data" y_range = common.min_max(data["RF"]["voltage_list"]+data["signal"]["voltage_list"]+data["dc_signal"]["voltage_list"]) canvas, hist, graph, peak_hist, peak_graph = graph_peak_times(data["RF"], data["RF"]["pos_peak_with_errors"], 2, y_range, title=voltage_str) bpm_peak_indices = data["signal"]["peak_indices"] bpm_voltage_list = data["signal"]["voltage_list"] bpm_peak_list = [index for index in bpm_peak_indices] graph_peak_times(data["signal"], data["signal"]["peak_with_errors"], 4, y_range, canvas) graph_peak_times(data["dc_signal"], [{"x":0, "y":0}], 6, y_range, canvas) canvas.Update() for format in formats: canvas.Print(plot_dir+voltage_str+"_signals."+format) """ print " Plotting distance between bpm and rf peaks" peak_delta_canvas.cd() peak_time_list = data["peak_time_list"] peak_delta_list = data["peak_delta_list"] hist, graph = common.make_root_graph(voltage_str, peak_time_list, "time [ns]", peak_delta_list, "dt [ns]") min_y = min([hist.GetYaxis().GetXmin(), min_y]) max_y = max([hist.GetYaxis().GetXmax(), max_y]) if len(data_list_pairs) > 1: hist.Draw() color_fraction = float(i) / float(len(data_list_pairs) - 1) else: color_fraction = 1 color = ROOT.TColor.GetColor(color_fraction, 1. - color_fraction, 0) graph.SetMarkerColor(color) graph.SetLineColor(color) graph.SetMarkerStyle(6) graph_list.append(graph) peak_delta_hist_canvas.cd() filtered_list = [] for j, peak in enumerate(peak_delta_list): if peak_time_list[j] > 30.e3 and \ peak_time_list[j] < 40.e3: filtered_list.append(peak) if len(filtered_list) > 0: dt_mean_list.append(max(filtered_list)) #dt_err_list.append(numpy.std(filtered_list)/len(filtered_list)**0.5) measured_voltage_list.append(data["rf_peak_to_peak_voltage"]) hist = common.make_root_histogram(voltage_str, filtered_list, "dt [ns]", 4) delta_hist_min = min([hist.GetXaxis().GetXmin(), delta_hist_min]) delta_hist_max = max([hist.GetXaxis().GetXmax(), delta_hist_max]) hist.SetLineColor(color) hist_list.append(hist) peak_delta_canvas.cd() hist, graph = common.make_root_graph(voltage_str, peak_time_list, "t [ns]", peak_delta_list, "dt [ns]", ymin=0., ymax=700.) hist.Draw() # redraw hist to get axes right for graph in graph_list: graph.Draw("p") legend = common.make_root_legend(peak_delta_canvas, graph_list) legend.Draw() peak_delta_canvas.Update() for format in formats: peak_delta_canvas.Print(plot_dir + "bpm_to_rf_deltas." + format) peak_delta_hist_canvas.cd() print delta_hist_min, delta_hist_max hist = common.make_root_histogram(voltage_str, [-1], "dt [ns]", 1000, [-1], "Counts", 1000, xmin=delta_hist_min, xmax=delta_hist_max, ymin=1e-2, ymax=20.) hist.Draw() # redraw hist to get axes right for a_hist in hist_list: a_hist.Draw("same") legend = common.make_root_legend(peak_delta_hist_canvas, hist_list) legend.Draw() peak_delta_hist_canvas.Update() for format in formats: peak_delta_hist_canvas.Print(plot_dir + "bpm_to_rf_deltas_hist." + format) if len(dt_mean_list) < 2: return phase_mean_list = [ 2. * math.pi * dt / rf_period for dt in dt_mean_list[1:] ] measured_voltage_list = measured_voltage_list[1:] for popper in []: phase_mean_list.pop(popper) phase_err_list.pop(popper) measured_voltage_list.pop(popper) synchronous_phase_canvas = common.make_root_canvas( "Synchronous phase vs voltage") hist, graph = common.make_root_graph("Synchronous phase vs voltage", phase_mean_list, "#phi [rad]", measured_voltage_list, "V [au]") graph = ROOT.TGraph(len(phase_mean_list)) graph.SetMarkerStyle(4) for i in range(len(phase_mean_list)): graph.SetPoint(i, phase_mean_list[i], measured_voltage_list[i]) print phase_mean_list print measured_voltage_list hist.Draw() graph.Draw('p') print "Doing unweighted fit" fit_unweighted = ROOT.TF1("fit", "[0]/sin([1]+x)") fit_unweighted.SetParameter(0, 0.1) fit_unweighted.SetParameter(1, 0.) fit_unweighted.SetLineColor(4) graph.Fit(fit_unweighted, "EX0") fit_unweighted.Draw("SAME") synchronous_phase_canvas.Update() for format in formats: synchronous_phase_canvas.Print( plot_dir + "synchronous_phase_vs_voltage_unweighted." + format)
def plot(plot_dir, data_list_pairs): tmp_data = [] for i, data in enumerate(data_list_pairs): pos_peak = numpy.mean([x["y"] for x in data["RF"]["pos_peak_with_errors"]]) neg_peak = numpy.mean([-x["y"] for x in data["RF"]["neg_peak_with_errors"]]) voltage = (pos_peak-neg_peak) data["rf_peak_to_peak_voltage"] = voltage rf_list = ["0.2", "0.32", "0.46", "0.62", "0.81", "3.01", "7.18"] if True or str(round(voltage, 2)) in rf_list: print "Using", voltage tmp_data.append(data) else: print "Not using", voltage data_list_pairs = tmp_data peak_delta_canvas = common.make_root_canvas("delta rf vs bpm") peak_delta_canvas.Draw() peak_delta_hist_canvas = common.make_root_canvas("delta rf vs bpm - hist") peak_delta_hist_canvas.Draw() graph_list = [] hist_list = [] dt_mean_list = [] dt_err_list = [] measured_voltage_list = [] max_y = -1e9 min_y = 1e9 delta_hist_min = 1e9 delta_hist_max = -1e9 for i, data in enumerate(data_list_pairs): """ voltage_str = "V="+str(round(data["rf_peak_to_peak_voltage"], 2)) print "Plotting measured "+voltage_str formats = ["png", "root"] times = data["RF"]["time_list"] rf_voltage_list = data["RF"]["voltage_list"] rf_peak_error_list = data["RF"]["pos_peak_with_errors"] rf_peak_list = [x["x"] for x in rf_peak_error_list] rf_period = sum([rf_peak_list[j+1] - rf_peak_list[j] for j, index in enumerate(rf_peak_list[:-1])]) rf_period = DT*rf_period/float(len(rf_peak_list)) rf_frequency = 1./rf_period print " RF Period", rf_period, "Frequency", rf_frequency print " Plotting RF magnitude and error" canvas_rf_v, hist_rf_v, graph_rf_v = graph_peak_magnitude(data["RF"]["pos_peak_with_errors"], data["RF"]["neg_peak_with_errors"], title=voltage_str) for format in formats: canvas_rf_v.Print(plot_dir+voltage_str+"_rf_voltage."+format) print " Plotting peak finding errors" canvas_err, hist_err, graph_err = graph_peak_errors(data["signal"]["peak_with_errors"], 4, title=voltage_str) graph_peak_errors(data["RF"]["pos_peak_with_errors"], 2, canvas_err) for format in formats: canvas_err.Print(plot_dir+voltage_str+"_peak_errors."+format) print " Plotting peak to peak distance" print " signal", canvas_pp, hist_pp, graph_pp = graph_delta_times(data["signal"]["peak_with_errors"], 4, title=voltage_str) print " RF", graph_delta_times(data["RF"]["pos_peak_with_errors"], 2, canvas_pp) for format in formats: canvas_pp.Print(plot_dir+voltage_str+"_peak_deltas."+format) print " Plotting data" y_range = common.min_max(data["RF"]["voltage_list"]+data["signal"]["voltage_list"]+data["dc_signal"]["voltage_list"]) canvas, hist, graph, peak_hist, peak_graph = graph_peak_times(data["RF"], data["RF"]["pos_peak_with_errors"], 2, y_range, title=voltage_str) bpm_peak_indices = data["signal"]["peak_indices"] bpm_voltage_list = data["signal"]["voltage_list"] bpm_peak_list = [index for index in bpm_peak_indices] graph_peak_times(data["signal"], data["signal"]["peak_with_errors"], 4, y_range, canvas) graph_peak_times(data["dc_signal"], [{"x":0, "y":0}], 6, y_range, canvas) canvas.Update() for format in formats: canvas.Print(plot_dir+voltage_str+"_signals."+format) """ print " Plotting distance between bpm and rf peaks" peak_delta_canvas.cd() peak_time_list = data["peak_time_list"] peak_delta_list = data["peak_delta_list"] hist, graph = common.make_root_graph(voltage_str, peak_time_list, "time [ns]", peak_delta_list, "dt [ns]") min_y = min([hist.GetYaxis().GetXmin(), min_y]) max_y = max([hist.GetYaxis().GetXmax(), max_y]) if len(data_list_pairs) > 1: hist.Draw() color_fraction = float(i)/float(len(data_list_pairs)-1) else: color_fraction = 1 color = ROOT.TColor.GetColor(color_fraction, 1.-color_fraction, 0) graph.SetMarkerColor(color) graph.SetLineColor(color) graph.SetMarkerStyle(6) graph_list.append(graph) peak_delta_hist_canvas.cd() filtered_list = [] for j, peak in enumerate(peak_delta_list): if peak_time_list[j] > 30.e3 and \ peak_time_list[j] < 40.e3: filtered_list.append(peak) if len(filtered_list) > 0: dt_mean_list.append(max(filtered_list)) #dt_err_list.append(numpy.std(filtered_list)/len(filtered_list)**0.5) measured_voltage_list.append(data["rf_peak_to_peak_voltage"]) hist = common.make_root_histogram(voltage_str, filtered_list, "dt [ns]", 4) delta_hist_min = min([hist.GetXaxis().GetXmin(), delta_hist_min]) delta_hist_max = max([hist.GetXaxis().GetXmax(), delta_hist_max]) hist.SetLineColor(color) hist_list.append(hist) peak_delta_canvas.cd() hist, graph = common.make_root_graph(voltage_str, peak_time_list, "t [ns]", peak_delta_list, "dt [ns]", ymin=0., ymax=700.) hist.Draw() # redraw hist to get axes right for graph in graph_list: graph.Draw("p") legend = common.make_root_legend(peak_delta_canvas, graph_list) legend.Draw() peak_delta_canvas.Update() for format in formats: peak_delta_canvas.Print(plot_dir+"bpm_to_rf_deltas."+format) peak_delta_hist_canvas.cd() print delta_hist_min, delta_hist_max hist = common.make_root_histogram(voltage_str, [-1], "dt [ns]", 1000, [-1], "Counts", 1000, xmin=delta_hist_min, xmax=delta_hist_max, ymin=1e-2, ymax=20.) hist.Draw() # redraw hist to get axes right for a_hist in hist_list: a_hist.Draw("same") legend = common.make_root_legend(peak_delta_hist_canvas, hist_list) legend.Draw() peak_delta_hist_canvas.Update() for format in formats: peak_delta_hist_canvas.Print(plot_dir+"bpm_to_rf_deltas_hist."+format) if len(dt_mean_list) < 2: return phase_mean_list = [2.*math.pi*dt/rf_period for dt in dt_mean_list[1:]] measured_voltage_list = measured_voltage_list[1:] for popper in []: phase_mean_list.pop(popper) phase_err_list.pop(popper) measured_voltage_list.pop(popper) synchronous_phase_canvas = common.make_root_canvas("Synchronous phase vs voltage") hist, graph = common.make_root_graph("Synchronous phase vs voltage", phase_mean_list, "#phi [rad]", measured_voltage_list, "V [au]") graph = ROOT.TGraph(len(phase_mean_list)) graph.SetMarkerStyle(4) for i in range(len(phase_mean_list)): graph.SetPoint(i, phase_mean_list[i], measured_voltage_list[i]) print phase_mean_list print measured_voltage_list hist.Draw() graph.Draw('p') print "Doing unweighted fit" fit_unweighted = ROOT.TF1("fit", "[0]/sin([1]+x)") fit_unweighted.SetParameter(0, 0.1) fit_unweighted.SetParameter(1, 0.) fit_unweighted.SetLineColor(4) graph.Fit(fit_unweighted, "EX0") fit_unweighted.Draw("SAME") synchronous_phase_canvas.Update() for format in formats: synchronous_phase_canvas.Print(plot_dir+"synchronous_phase_vs_voltage_unweighted."+format)