def plot_sensor_energies(towers_list): c = TCanvas("c", "c", 800, 1200) # gStyle.SetPalette(0) c.SetGridx(1) c.SetGridy(1) gStyle.SetOptStat(0) h = TH2F("h", "title", 4, 0., 4., 44, 20., 64.) h.GetXaxis().SetTitle("sector number") h.GetYaxis().SetTitle("pad number") for t in towers_list: h.Fill(t.sector, t.pad, t.energy) h.SetTitle("") h.DrawCopy("colztext") # input("wait plot sensor") c.Print("./energies.png") TColor.InvertPalette()
def parse_rocketio_errors(results): rode_dict_buff = {} rode_dict_lock = {} rod_dict_buff = {} rod_dict_lock = {} sb_suf = "_nonsb" if(results[0].sb == 1): sb_suf = "_sb" for error in results: #print error.date, error.sb_total_time, error.sb_time_run, error.sb_length #cool magic numbers, because string looks like #ROD 0x320900: rocketio problem: Lock status == 0xf , buffer status == 0x5 pos_rod = error.text.find("ROD") + 4 pos_lock = error.text.find("Lock") + 15 pos_buff = error.text.find("buffer") + 17 if error.msgID == 'TRT::ROD05Module': rod = '0x'+str(error.text[pos_rod:pos_rod+6]) else: rod = str(error.text[pos_rod:pos_rod+8]) lock = str(error.text[pos_lock:pos_lock+3]) buff = str(error.text[pos_buff:pos_buff+3]) bin_lock = bin(int(lock, 16))[2:].zfill(4) bin_buff = bin(int(buff, 16))[2:].zfill(4) if buff == '0xf': if not rod+'_'+lock in rode_dict_lock: rode_dict_lock[rod+'_'+lock] = 1 else: rode_dict_lock[rod+'_'+lock] += 1 if not rod in rod_dict_lock: rod_dict_lock[rod] = 1 else: rod_dict_lock[rod] += 1 else: if not rod+'_'+buff in rode_dict_buff: rode_dict_buff[rod+'_'+buff] = 1 else: rode_dict_buff[rod+'_'+buff] += 1 if not rod in rod_dict_buff: rod_dict_buff[rod] = 1 else: rod_dict_buff[rod] += 1 rode_dict_lock = OrderedDict(sorted(rode_dict_lock.items())) rod_dict_lock = OrderedDict(sorted(rod_dict_lock.items())) rode_dict_buff = OrderedDict(sorted(rode_dict_buff.items())) rod_dict_buff = OrderedDict(sorted(rod_dict_buff.items())) for key, value in rod_dict_buff.items(): if rod_dict_buff[key] < 10: del rod_dict_buff[key] for key2, val2 in rode_dict_buff.items(): if key2[:8] == key: del rode_dict_buff[key2] for key, value in rod_dict_lock.items(): if rod_dict_lock[key] < 10: del rod_dict_lock[key] for key2, val2 in rode_dict_lock.items(): if key2[:8] == key: del rode_dict_lock[key2] for key, value in rod_dict_lock.items(): print key, value #gStyle.SetPalette(kBird) #gStyle.SetPalette(kCMYK) gStyle.SetPalette(kRainBow) TColor.InvertPalette() make_plot_all_rods(rode_dict_lock, rod_dict_lock, "all_rods_lock_errors" + sb_suf) make_plot_all_rods(rode_dict_buff, rod_dict_buff, "all_rods_buff_errors" + sb_suf) if(results[0].sb == 1): make_time_rod_evo(rode_dict_lock, rod_dict_lock, results, True) make_minute_plots(rod_dict_buff, rod_dict_lock, results)
def plot_hist(group_data, stacked=False, fitted=False): group_name = str(group_data[0].run_number) group_size = len(group_data) if stacked: print('Plotting stacked histogram.') run_canvas = TCanvas() run_canvas.SetLogy() gStyle.SetPalette(87) if group_name == '2946': TColor.InvertPalette() hs = THStack('hs', 'Group %s Histograms' % group_name) for run in group_data: tab = ' ' title = str(run.run_number) + tab + 'Average temperature: ' + str( round(run.temperature_average, 2)) hist = make_hist(title, run.energies, 0, 270000) hs.Add(hist) hs.Draw('nostack PLC') run_canvas.BuildLegend() path = 'output/group_' + str(group_data[0].run_number) + '/' run_canvas.Print( (path + str(group_data[0].run_number) + '_stacked_histogram.pdf[')) run_canvas.Print( (path + str(group_data[0].run_number) + '_stacked_histogram.pdf')) run_canvas.Print( (path + str(group_data[0].run_number) + '_stacked_histogram.pdf]')) else: hists_and_fits = [] hist_range = [20000, 60000, 150000, 350000, 550000] for i in range(len(group_data)): run = group_data[i] hist = make_hist(str(run.run_number), run.energies, 0, hist_range[i]) if fitted: K_key = 'K_' + str(run.run_number) K_pars = parameters.fit_pars[K_key] K_fit = find_peak_fit('K', K_pars[0], K_pars[1], K_pars[2], K_pars[3], K_pars[4], K_pars[5], K_pars[6]) Tl_key = 'Tl_' + str(run.run_number) Tl_pars = parameters.fit_pars[Tl_key] Tl_fit = find_peak_fit('Tl', Tl_pars[0], Tl_pars[1], Tl_pars[2], Tl_pars[3], Tl_pars[4], Tl_pars[5], Tl_pars[6]) hists_and_fits.append([hist, K_fit, Tl_fit]) write_run_output(group_name, run, K_fit, Tl_fit) else: hists_and_fits.append([hist]) run_canvas = TCanvas("run_canvas", "run canvas") run_canvas.Divide(3, int(group_size / 2)) file_name = '' canvas_index = 1 for entry in hists_and_fits: pad = run_canvas.cd(canvas_index) pad.SetLogy() run = entry[0] if len(entry) == 3: print('Plotting fitted histogram.') file_name = '_fitted_histograms.pdf' fit1 = entry[1] fit2 = entry[2] run.Fit(fit1, 'LR') run.Fit(fit2, 'LR+') else: print('Plotting histogram.') file_name = '_histograms.pdf' run.Draw() canvas_index += 1 path = 'output/group_' + group_name + '/' run_canvas.Print((path + group_name + file_name + '[')) run_canvas.Print((path + group_name + file_name)) run_canvas.Print((path + group_name + file_name + ']'))