Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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 + ']'))