readout software for 2 channels [0 and 1] of the tdc-gpx2 board with raspberry pi 3B SPI readout.
This code is a fork of the original design by marvin.peter@physik.uni-giessen.de
https://github.com/marvin5300/tdc-gpx2_software
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.4 KiB
49 lines
1.4 KiB
import argparse
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
#parse the command line arguments
|
|
parser = argparse.ArgumentParser(description="Plot a histogram")
|
|
parser.add_argument("input_file",help="Path to the input data set with 7 columns")
|
|
args = parser.parse_args()
|
|
|
|
# Open the file and read in the data
|
|
with open(args.input_file, 'r') as f:
|
|
lines = f.readlines()
|
|
|
|
# Extract the second column of data
|
|
data = []
|
|
for line in lines:
|
|
values = line.strip().split()
|
|
if len(values) >= 7 and float(values[5]) == 0:
|
|
data.append(float(values[6]))
|
|
|
|
#determine histrange from data
|
|
hist_range = 10 * np.std(data)
|
|
hist_mean = np.mean(data)
|
|
hist_start = hist_mean - hist_range
|
|
hist_end = hist_mean + hist_range
|
|
|
|
# Create the histogram with range
|
|
hist, bins, _ = plt.hist(data, bins=200, range=(hist_start,hist_end))
|
|
|
|
# Calculate the mean and RMS
|
|
bin_centers = 0.5 * (bins[:-1] + bins[1:])
|
|
mean = np.average(bin_centers, weights=hist)
|
|
rms = np.sqrt(np.average((bin_centers - mean)**2, weights=hist ))
|
|
|
|
# Set the x-axis label and title
|
|
plt.xlabel('time difference / seconds')
|
|
plt.title(' - ')
|
|
|
|
plt.annotate(f"Mean: {mean:.3g}\nRMS; {rms:.3g}",
|
|
xy=(0.75, 0.85),
|
|
xycoords='axes fraction',
|
|
fontsize=12,
|
|
bbox=dict(boxstyle="round,pad=0.3", edgecolor="gray", facecolor="lightgray"))
|
|
|
|
# Show the plot
|
|
plt.show()
|
|
|
|
|