| 1 | import sys
|
|---|
| 2 | import numpy as np
|
|---|
| 3 | import matplotlib as mpl
|
|---|
| 4 | mpl.use('Agg')
|
|---|
| 5 | import matplotlib.pyplot as plt
|
|---|
| 6 | import pandas as pd
|
|---|
| 7 | from astropy.io import fits
|
|---|
| 8 | from calculate_burst_ratio_file import get_trigger_rates, fjd
|
|---|
| 9 |
|
|---|
| 10 |
|
|---|
| 11 | night_string = sys.argv[1]
|
|---|
| 12 | night_int = int(night_string)
|
|---|
| 13 | OFFSET=719163
|
|---|
| 14 |
|
|---|
| 15 | runs = pd.DataFrame.from_csv(
|
|---|
| 16 | 'burst_ratio.csv',
|
|---|
| 17 | infer_datetime_format=True,
|
|---|
| 18 | parse_dates=['fRunStart', 'fRunStop']
|
|---|
| 19 | ).dropna()
|
|---|
| 20 |
|
|---|
| 21 | runs = runs.loc[runs.fNight==night_int]
|
|---|
| 22 |
|
|---|
| 23 | trigger_rates = get_trigger_rates(night_int,
|
|---|
| 24 | base_path='/fact/aux/')
|
|---|
| 25 |
|
|---|
| 26 | fig, ax1 = plt.subplots(figsize=(16, 9))
|
|---|
| 27 | ax1.set_xlabel("Time")
|
|---|
| 28 | ax1.set_yscale('log')
|
|---|
| 29 | ax1.set_ylabel("Rate [Hz]")
|
|---|
| 30 | ax1.grid()
|
|---|
| 31 |
|
|---|
| 32 | plt.title("basic Ratescan information from: " + night_string)
|
|---|
| 33 |
|
|---|
| 34 | plot_0 = ax1.plot_date(
|
|---|
| 35 | trigger_rates['Time']+OFFSET,
|
|---|
| 36 | np.median(trigger_rates['BoardRate'], axis=1),
|
|---|
| 37 | 'r.', ms=4.,
|
|---|
| 38 | label="median BoardRate"
|
|---|
| 39 | )
|
|---|
| 40 |
|
|---|
| 41 | plot_1 = ax1.plot_date(
|
|---|
| 42 | trigger_rates['Time']+OFFSET,
|
|---|
| 43 | trigger_rates['TriggerRate'],
|
|---|
| 44 | 'g.', ms=4.,
|
|---|
| 45 | label="Camera TriggerRate"
|
|---|
| 46 | )
|
|---|
| 47 |
|
|---|
| 48 | for runs_index in range(len(runs)):
|
|---|
| 49 | this_run = runs.iloc[runs_index]
|
|---|
| 50 | run_number = this_run['fRunID']
|
|---|
| 51 |
|
|---|
| 52 | a = fjd(this_run['fRunStart'])+OFFSET
|
|---|
| 53 | e = fjd(this_run['fRunStop'])+OFFSET
|
|---|
| 54 |
|
|---|
| 55 | ax1.axvline(a, color='g', linestyle='dashed')
|
|---|
| 56 | ax1.axvline(e, color='r', linestyle='dashed')
|
|---|
| 57 | ax1.text(a + (e-a)/2., 900,
|
|---|
| 58 | "{0}".format(run_number),
|
|---|
| 59 | horizontalalignment='center',
|
|---|
| 60 | verticalalignment='center',
|
|---|
| 61 | fontsize=7,
|
|---|
| 62 | )
|
|---|
| 63 |
|
|---|
| 64 | med = this_run['median_of_board_rates']
|
|---|
| 65 | std_dev = this_run['std_dev_of_board_rates']
|
|---|
| 66 |
|
|---|
| 67 | ax1.plot_date(
|
|---|
| 68 | [a, e],
|
|---|
| 69 | [med+3*std_dev, med+3*std_dev],
|
|---|
| 70 | 'm-')
|
|---|
| 71 |
|
|---|
| 72 |
|
|---|
| 73 |
|
|---|
| 74 | plt.xlim((
|
|---|
| 75 | fjd(runs.iloc[0]['fRunStart'])+OFFSET,
|
|---|
| 76 | fjd(runs.iloc[-1]['fRunStop'])+OFFSET
|
|---|
| 77 | ))
|
|---|
| 78 | plt.ylim(1e-1, 1e6)
|
|---|
| 79 |
|
|---|
| 80 | plt.legend(
|
|---|
| 81 | handles=[plot_0[0], plot_1[0]],
|
|---|
| 82 | loc='lower left')
|
|---|
| 83 |
|
|---|
| 84 | plt.tight_layout()
|
|---|
| 85 | plt.savefig("board_rate_overview_"+night_string+'.png',
|
|---|
| 86 | dpi=300)
|
|---|
| 87 |
|
|---|
| 88 | plt.figure()
|
|---|
| 89 | plt.title("fHighBoardTriggerRateRatio distribution from {0}".format(night_int))
|
|---|
| 90 | plt.hist(runs.fBoardTriggerRateRatioAboveThreshold.values,
|
|---|
| 91 | bins=np.arange(0,0.6,1./60.),
|
|---|
| 92 | log=True )
|
|---|
| 93 | plt.grid()
|
|---|
| 94 | plt.xlabel("fHighBoardTriggerRateRatio")
|
|---|
| 95 | plt.savefig("ratio_dist_"+night_string+'.png')
|
|---|