77 KiB
77 KiB
Scripts for Calibration of Cernox Sensors¶
Make a copy of this notebook for an other run
In [1]:
import numpy as np import matplotlib.pyplot as plt import math from zcalib import read_curve, convert_res, compare_calib, make_calib, logrange, Sensor, CalibRun, nplog, npexp
In [2]:
run = CalibRun([ Sensor(3, 'X75610'), # the reference sensor must be the first Sensor(1, 'X133979', 'CX-1050-SD'), Sensor(2, 'X133978', 'CX-1050-SD'), Sensor(4, 'X133928', 'CX-1050-SD'), Sensor(6, 'X133981', 'CX-1050-SD'), ], t_points = (1.0, 1.2) + logrange(1.4, 310, n=195) + (330,), caldate = '2018-10-25', logT = False, logR = True, calib_data_file = 'calib_data/calib%s_p%d_c%d.dat', outputpath='%s/%s.340') # use slightly lower smoothtst as we measured less points (1e-7 for 60, 0.8e-7 for 48 and 0.4e-7 for 24 points) run.make(diflim=0.001, smoothref=1e-7, smoothtst=0.8e-7) print('calibration file has %d points' % len(run.t_points))
('lsdat', 'READ /afs/psi.ch/project/SampleEnvironment/SE_internal/Thermometer_calibs/2012/73027 Cernox 5/X75610.dat')
('zdat', 'READ calib_data/calib2018-10-25_p0_c1.dat')
('zdat', 'READ calib_data/calib2018-10-25_p1_c1.dat')
('zdat', 'READ calib_data/calib2018-10-25_p2_c1.dat')
{'selected': 2, 'averaged': 46}
('zdat', 'READ calib_data/calib2018-10-25_p0_c2.dat')
('zdat', 'READ calib_data/calib2018-10-25_p1_c2.dat')
('zdat', 'READ calib_data/calib2018-10-25_p2_c2.dat')
{'selected': 2, 'averaged': 46}
('zdat', 'READ calib_data/calib2018-10-25_p0_c4.dat')
('zdat', 'READ calib_data/calib2018-10-25_p1_c4.dat')
('zdat', 'READ calib_data/calib2018-10-25_p2_c4.dat')
{'selected': 2, 'averaged': 46}
('zdat', 'READ calib_data/calib2018-10-25_p0_c6.dat')
('zdat', 'READ calib_data/calib2018-10-25_p1_c6.dat')
('zdat', 'READ calib_data/calib2018-10-25_p2_c6.dat')
{'selected': 2, 'averaged': 46}
calibration file has 199 points
In [ ]:
In [3]:
# compare calibration files from points 1,2 and 3 # with the optimized from above. To estimate the precision # at each point the curve with the biggest difference does # not have to be taken in to account for sensor in run.sensors: r0, t0 = read_curve(sensor.outputpath, sensor.outputkind) plt.figure() dif = [0,0,0] for j in range(3): rref, rtst = read_curve(sensor.caldat_file[j], 'zdat') rc, tc = make_calib(run.rref, run.tref, rref, rtst, run.t_points) dif[j] = compare_calib(r0, t0, rc, tc) plt.plot(t0, dif[j], '-') #n = len(dif[0]) #dd = np.zeros(n) #for i in range(n): # # determine second biggest absolute value # dd[i] = sorted([abs(dif[j][i]) for j in range(3)])[1] #plt.plot(t0, dd, '.') plt.xscale('log') # plt.yscale('symlog', linthreshy=0.001) plt.grid(True, axis='y') plt.axis([min(t0),max(t0),-0.005,0.005]) plt.legend(['dif1','dif2','dif3','est']) plt.show()
('z340', 'READ 2018-10-25/X133979.340')
('zdat', 'READ calib_data/calib2018-10-25_p0_c1.dat')
('zdat', 'READ calib_data/calib2018-10-25_p1_c1.dat')
('zdat', 'READ calib_data/calib2018-10-25_p2_c1.dat')
('z340', 'READ 2018-10-25/X133978.340')
('zdat', 'READ calib_data/calib2018-10-25_p0_c2.dat')
('zdat', 'READ calib_data/calib2018-10-25_p1_c2.dat')
('zdat', 'READ calib_data/calib2018-10-25_p2_c2.dat')
('z340', 'READ 2018-10-25/X133928.340')
('zdat', 'READ calib_data/calib2018-10-25_p0_c4.dat')
('zdat', 'READ calib_data/calib2018-10-25_p1_c4.dat')
('zdat', 'READ calib_data/calib2018-10-25_p2_c4.dat')
('z340', 'READ 2018-10-25/X133981.340')
('zdat', 'READ calib_data/calib2018-10-25_p0_c6.dat')
('zdat', 'READ calib_data/calib2018-10-25_p1_c6.dat')
('zdat', 'READ calib_data/calib2018-10-25_p2_c6.dat')
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]: