In [1]:
using DataArrays, DataFrames, Gadfly, Distributions, LinearLeastSquares, Grid
Se utilizó un arreglo de centelladoras, llamado arreglo de coincidencias, con el cual se desea medir el punto de operación del sistema, y el rango de operación del mismo.
A continuación se describen los pasos realizados para hacer la primera parte del diseño experimental, en el cual como se comentó se buscó el punto y rango de operación lo cual nos servirá para mediciones posteriores.
Se activan las paletas y se ponen para hacer coincidencia. Se conectan las paletas a la fuente de alto voltaje y mediante el programa HyperTerminal se fija un voltaje inicial y se fue aumentando el voltaje lentamente. Las paletas se colocan para hacer coincidencia una sobre la otra y se fijan al mesón.
Posteriormente se conectan las paletas al osciloscopio para comprobar la coincidencia, para esto se deben ajustar las escalas de voltaje y temporal del osciloscopio.
Se conectan las paletas al discriminador con cables de la misma longitud, para evitar desfases en la señal.
Se ajusta el voltaje del discriminador y se revisa que exista coincidencia.
Se conectan los canales correspondientes y se procede a tomar nota de las cuentas de partículas que llegan al sistema en coincidencia en un tiempo determinado.
Estas mediciones se repiten para cada voltaje y así obtener una estadística del proceso de detección, se hace una tabla y se grafican los valores.
In [8]:
# Medición del punto de operación del sistema
df = DataFrame()
df[:Voltaje] = [550, 570, 590, 610, 630, 650, 670, 690, 710,
730, 750, 770, 790, 810, 830, 850]
df[:Medicion1] = [4,7,12,62,60,110,92,110,128,130,143,154,161,190,192,213]
df[:Medicion2] = [5,18,18,26,93,89,93,132,140,140,134,161,147,148,196,167]
df[:Medicion3] = [3,21,37,30,72,85,92,128,139,138,146,159,157,178,184,185]
df[:Medicion4] = [11,3,13,29,59,104,96,131,140,168,156,162,174,184,191,178]
df[:Medicion5] = [3,10,20,32,57,98,101,130,152,153,154,173,154,163,156,193]
df[:Promedio] = [(df[:Medicion1][1]+df[:Medicion2][1]+df[:Medicion3][1]+df[:Medicion4][1]+df[:Medicion5][1])/5,
(df[:Medicion1][2]+df[:Medicion2][2]+df[:Medicion3][2]+df[:Medicion4][2]+df[:Medicion5][2])/5,
(df[:Medicion1][3]+df[:Medicion2][3]+df[:Medicion3][3]+df[:Medicion4][3]+df[:Medicion5][3])/5,
(df[:Medicion1][4]+df[:Medicion2][4]+df[:Medicion3][4]+df[:Medicion4][4]+df[:Medicion5][4])/5,
(df[:Medicion1][5]+df[:Medicion2][5]+df[:Medicion3][5]+df[:Medicion4][5]+df[:Medicion5][5])/5,
(df[:Medicion1][6]+df[:Medicion2][6]+df[:Medicion3][6]+df[:Medicion4][6]+df[:Medicion5][6])/5,
(df[:Medicion1][7]+df[:Medicion2][7]+df[:Medicion3][7]+df[:Medicion4][7]+df[:Medicion5][7])/5,
(df[:Medicion1][8]+df[:Medicion2][8]+df[:Medicion3][8]+df[:Medicion4][8]+df[:Medicion5][8])/5,
(df[:Medicion1][9]+df[:Medicion2][9]+df[:Medicion3][9]+df[:Medicion4][9]+df[:Medicion5][9])/5,
(df[:Medicion1][10]+df[:Medicion2][10]+df[:Medicion3][10]+df[:Medicion4][10]+df[:Medicion5][10])/5,
(df[:Medicion1][11]+df[:Medicion2][11]+df[:Medicion3][11]+df[:Medicion4][11]+df[:Medicion5][11])/5,
(df[:Medicion1][12]+df[:Medicion2][12]+df[:Medicion3][12]+df[:Medicion4][12]+df[:Medicion5][12])/5,
(df[:Medicion1][13]+df[:Medicion2][13]+df[:Medicion3][13]+df[:Medicion4][13]+df[:Medicion5][13])/5,
(df[:Medicion1][14]+df[:Medicion2][14]+df[:Medicion3][14]+df[:Medicion4][14]+df[:Medicion5][14])/5,
(df[:Medicion1][15]+df[:Medicion2][15]+df[:Medicion3][15]+df[:Medicion4][15]+df[:Medicion5][15])/5,
(df[:Medicion1][16]+df[:Medicion2][16]+df[:Medicion3][16]+df[:Medicion4][16]+df[:Medicion5][16])/5]
df[:Error] = [trunc(std([df[:Medicion1][1],df[:Medicion2][1],df[:Medicion3][1],df[:Medicion4][1],df[:Medicion5][1]]),1),
trunc(std([df[:Medicion1][2],df[:Medicion2][2],df[:Medicion3][2],df[:Medicion4][2],df[:Medicion5][2]]),1),
trunc(std([df[:Medicion1][3],df[:Medicion2][3],df[:Medicion3][3],df[:Medicion4][3],df[:Medicion5][3]]),1),
trunc(std([df[:Medicion1][4],df[:Medicion2][4],df[:Medicion3][4],df[:Medicion4][4],df[:Medicion5][4]]),1),
trunc(std([df[:Medicion1][5],df[:Medicion2][5],df[:Medicion3][5],df[:Medicion4][5],df[:Medicion5][5]]),1),
trunc(std([df[:Medicion1][6],df[:Medicion2][6],df[:Medicion3][6],df[:Medicion4][6],df[:Medicion5][6]]),1),
trunc(std([df[:Medicion1][7],df[:Medicion2][7],df[:Medicion3][7],df[:Medicion4][7],df[:Medicion5][7]]),1),
trunc(std([df[:Medicion1][8],df[:Medicion2][8],df[:Medicion3][8],df[:Medicion4][8],df[:Medicion5][8]]),1),
trunc(std([df[:Medicion1][9],df[:Medicion2][9],df[:Medicion3][9],df[:Medicion4][9],df[:Medicion5][9]]),1),
trunc(std([df[:Medicion1][10],df[:Medicion2][10],df[:Medicion3][10],df[:Medicion4][10],df[:Medicion5][10]]),1),
trunc(std([df[:Medicion1][11],df[:Medicion2][11],df[:Medicion3][11],df[:Medicion4][11],df[:Medicion5][11]]),1),
trunc(std([df[:Medicion1][12],df[:Medicion2][12],df[:Medicion3][12],df[:Medicion4][12],df[:Medicion5][12]]),1),
trunc(std([df[:Medicion1][13],df[:Medicion2][13],df[:Medicion3][13],df[:Medicion4][13],df[:Medicion5][13]]),1),
trunc(std([df[:Medicion1][14],df[:Medicion2][14],df[:Medicion3][14],df[:Medicion4][14],df[:Medicion5][14]]),1),
trunc(std([df[:Medicion1][15],df[:Medicion2][15],df[:Medicion3][15],df[:Medicion4][15],df[:Medicion5][15]]),1),
trunc(std([df[:Medicion1][16],df[:Medicion2][16],df[:Medicion3][16],df[:Medicion4][16],df[:Medicion5][16]]),1)]
df
Out[8]:
In [81]:
# Plot
#Gadfly
#plot(df, layer(x="Voltaje", y="Medicion1", Geom.point),layer(x="Voltaje", y="Medicion2", Geom.point))
#lower = [1,2,0.3,0,0,0,0,0,0,0,0,0,0,0,0,0]
#upper = [1,1.2,0.3,0,0,0,0,0,0,0,0,0,0,0,0,0]
ymins = df[:Promedio] .- df[:Error]
ymaxs = df[:Promedio] .+ df[:Error]
#draw(PDF("muones.png", 10inch, 10inch), plot(df,x="Voltaje",y="Promedio", ymin=ymins, ymax=ymaxs, Geom.point, Geom.errorbar))
# Regresión lineal
x_data = convert(Array,df[:Voltaje])
y_data = convert(Array,df[:Promedio])
t = [510; 870]
slope = Variable()
offset = Variable()
line = offset + x_data * slope
residuals = line - y_data
fit_error = sum_squares(residuals)
optval = minimize!(fit_error)
plot(layer(df,x="Voltaje",y="Promedio", ymin=ymins, ymax=ymaxs, Geom.point, Geom.errorbar),layer(x=t, y=evaluate(slope) * t + evaluate(offset), Geom.line))
Out[81]:
In [116]:
ymins = df[:Promedio] .- df[:Error]
ymaxs = df[:Promedio] .+ df[:Error]
#draw(PDF("muones.png", 10inch, 10inch), plot(df,x="Voltaje",y="Promedio", ymin=ymins, ymax=ymaxs, Geom.point, Geom.errorbar))
# Regresión cuadrática (por 2 XD)
x_data = convert(Array,df[:Voltaje])
y_data = convert(Array,df[:Promedio])
t = [510; 870]
t = reshape([530 : 0.1 : 870], length([530 : 0.1 : 870]), 1)
t_squared = t .^ 4
quadratic_coeff = Variable()
slope = Variable()
offset = Variable()
quadratic = offset + x_data * slope + quadratic_coeff * x_data .^ 4
residuals = quadratic - y_data
fit_error = sum_squares(residuals)
optval = minimize!(fit_error)
plot(layer(df,x="Voltaje",y="Promedio", ymin=ymins, ymax=ymaxs, Geom.point, Geom.errorbar),layer(x=t, y=evaluate(offset) + t * evaluate(slope) + t_squared * evaluate(quadratic_coeff), Geom.line))
Out[116]:
In [9]:
writetable("datosMuones.csv", df, separator = ',', header = true)
Haremos dos mediciones por cada voltaje para validar algunos arreglos que se hicieron en el sistema.
In [44]:
# Mediciones de calibración para el sistema
df2 = DataFrame()
df2[:Voltaje] = [650, 670, 690, 710,730, 750, 770, 790,810,830,850]
df2[:Medicion1] = [90,133,135,131,153,148,139,143,144,178,180]
df2[:Medicion2] = [89,113,138,131,142,139,146,148,140,166,195]
df2[:Promedio] = [(df2[:Medicion1][1]+df2[:Medicion2][1])/2,
(df2[:Medicion1][2]+df2[:Medicion2][2])/2,
(df2[:Medicion1][3]+df2[:Medicion2][3])/2,
(df2[:Medicion1][4]+df2[:Medicion2][4])/2,
(df2[:Medicion1][5]+df2[:Medicion2][5])/2,
(df2[:Medicion1][6]+df2[:Medicion2][6])/2,
(df2[:Medicion1][7]+df2[:Medicion2][7])/2,
(df2[:Medicion1][8]+df2[:Medicion2][8])/2,
(df2[:Medicion1][9]+df2[:Medicion2][9])/2,
(df2[:Medicion1][10]+df2[:Medicion2][10])/2,
(df2[:Medicion1][11]+df2[:Medicion2][11])/2]
df2[:Error] = [trunc(std([df2[:Medicion1][1],df2[:Medicion2][1]]),1),
trunc(std([df2[:Medicion1][2],df2[:Medicion2][2]]),1),
trunc(std([df2[:Medicion1][3],df2[:Medicion2][3]]),1),
trunc(std([df2[:Medicion1][4],df2[:Medicion2][4]]),1),
trunc(std([df2[:Medicion1][5],df2[:Medicion2][5]]),1),
trunc(std([df2[:Medicion1][6],df2[:Medicion2][6]]),1),
trunc(std([df2[:Medicion1][7],df2[:Medicion2][7]]),1),
trunc(std([df2[:Medicion1][8],df2[:Medicion2][8]]),1),
trunc(std([df2[:Medicion1][9],df2[:Medicion2][9]]),1),
trunc(std([df2[:Medicion1][10],df2[:Medicion2][10]]),1),
trunc(std([df2[:Medicion1][11],df2[:Medicion2][11]]),1)]
df2
Out[44]:
In [27]:
ymins2 = df2[:Promedio] .- df2[:Error]
ymaxs2 = df2[:Promedio] .+ df2[:Error]
#draw(PDF("muones.png", 10inch, 10inch), plot(df,x="Voltaje",y="Promedio", ymin=ymins, ymax=ymaxs, Geom.point, Geom.errorbar))
# Regresión cuadrática (por 2 XD)
x_data2 = convert(Array,df2[:Voltaje])
y_data2 = convert(Array,df2[:Promedio])
t2 = [630; 830]
t2 = reshape([630 : 0.1 : 850], length([630 : 0.1 : 850]), 1)
t_squared2 = t2 .^ 2
quadratic_coeff = Variable()
slope = Variable()
offset = Variable()
quadratic = offset + x_data2 * slope + quadratic_coeff * x_data2 .^ 2
residuals = quadratic - y_data2
fit_error = sum_squares(residuals)
optval = minimize!(fit_error)
#plot(layer(df2,x="Voltaje",y="Promedio", ymin=ymins2, ymax=ymaxs2, Geom.point, Geom.errorbar),layer(x=t2, y=evaluate(offset) + t2 * evaluate(slope) + t_squared2 * evaluate(quadratic_coeff), Geom.line))
plot(layer(df2,x="Voltaje",y="Promedio", ymin=ymins2, ymax=ymaxs2, Geom.point, Geom.errorbar))
Out[27]:
In [29]:
# Añadiedo más puntos en el plató
df2 = DataFrame()
df2[:Voltaje] = [650, 670, 690, 710,730, 750, 770, 790,810,830,850]
df2[:Medicion1] = [90,133,135,131,153,148,139,143,144,178,180]
df2[:Medicion2] = [89,113,138,131,142,139,146,148,140,166,195]
df2[:Medicion3] = [91,130,147,159,157,138,168,168,162,192,197]
df2[:Medicion4] = [104,135,146,152,153,146,159,171,177,173,199]
df2[:Medicion5] = [90,123,133,142,170,149,159,165,178,204,193]
df2[:Promedio] = [(df2[:Medicion1][1]+df2[:Medicion2][1]+df2[:Medicion3][1]+df2[:Medicion4][1]+df2[:Medicion5][1])/5,
(df2[:Medicion1][2]+df2[:Medicion2][2]+df2[:Medicion3][2]+df2[:Medicion4][2]+df2[:Medicion5][2])/5,
(df2[:Medicion1][3]+df2[:Medicion2][3]+df2[:Medicion3][3]+df2[:Medicion4][3]+df2[:Medicion5][3])/5,
(df2[:Medicion1][4]+df2[:Medicion2][4]+df2[:Medicion3][4]+df2[:Medicion4][4]+df2[:Medicion5][4])/5,
(df2[:Medicion1][5]+df2[:Medicion2][5]+df2[:Medicion3][5]+df2[:Medicion4][5]+df2[:Medicion5][5])/5,
(df2[:Medicion1][6]+df2[:Medicion2][6]+df2[:Medicion3][6]+df2[:Medicion4][6]+df2[:Medicion5][6])/5,
(df2[:Medicion1][7]+df2[:Medicion2][7]+df2[:Medicion3][7]+df2[:Medicion4][7]+df2[:Medicion5][7])/5,
(df2[:Medicion1][8]+df2[:Medicion2][8]+df2[:Medicion3][8]+df2[:Medicion4][8]+df2[:Medicion5][8])/5,
(df2[:Medicion1][9]+df2[:Medicion2][9]+df2[:Medicion3][9]+df2[:Medicion4][9]+df2[:Medicion5][9])/5,
(df2[:Medicion1][10]+df2[:Medicion2][10]+df2[:Medicion3][10]+df2[:Medicion4][10]+df2[:Medicion5][10])/5,
(df2[:Medicion1][11]+df2[:Medicion2][11]+df2[:Medicion3][11]+df2[:Medicion4][11]+df2[:Medicion5][11])/5]
df2[:Error] = [trunc(std([df2[:Medicion1][1],df2[:Medicion2][1],df2[:Medicion3][1],df2[:Medicion4][1],df2[:Medicion5][1]]),1),
trunc(std([df2[:Medicion1][2],df2[:Medicion2][2],df2[:Medicion3][2],df2[:Medicion4][2],df2[:Medicion5][2]]),1),
trunc(std([df2[:Medicion1][3],df2[:Medicion2][3],df2[:Medicion3][3],df2[:Medicion4][3],df2[:Medicion5][3]]),1),
trunc(std([df2[:Medicion1][4],df2[:Medicion2][4],df2[:Medicion3][4],df2[:Medicion4][4],df2[:Medicion5][4]]),1),
trunc(std([df2[:Medicion1][5],df2[:Medicion2][5],df2[:Medicion3][5],df2[:Medicion4][5],df2[:Medicion5][5]]),1),
trunc(std([df2[:Medicion1][6],df2[:Medicion2][6],df2[:Medicion3][6],df2[:Medicion4][6],df2[:Medicion5][6]]),1),
trunc(std([df2[:Medicion1][7],df2[:Medicion2][7],df2[:Medicion3][7],df2[:Medicion4][7],df2[:Medicion5][7]]),1),
trunc(std([df2[:Medicion1][8],df2[:Medicion2][8],df2[:Medicion3][8],df2[:Medicion4][8],df2[:Medicion5][8]]),1),
trunc(std([df2[:Medicion1][9],df2[:Medicion2][9],df2[:Medicion3][9],df2[:Medicion4][9],df2[:Medicion5][9]]),1),
trunc(std([df2[:Medicion1][10],df2[:Medicion2][10],df2[:Medicion3][10],df2[:Medicion4][10],df2[:Medicion5][10]]),1),
trunc(std([df2[:Medicion1][11],df2[:Medicion2][11],df2[:Medicion3][11],df2[:Medicion4][11],df2[:Medicion5][11]]),1)]
df2
Out[29]:
In [35]:
ymins2 = df2[:Promedio] .- df2[:Error]
ymaxs2 = df2[:Promedio] .+ df2[:Error]
x_data2 = convert(Array,df2[:Voltaje])
y_data2 = convert(Array,df2[:Promedio])
t2 = [630; 870]
t2 = reshape([630 : 0.1 : 870], length([630 : 0.1 : 870]), 1)
t_squared2 = t2 .^ 3
quadratic_coeff = Variable()
slope = Variable()
offset = Variable()
quadratic = offset + x_data2 * slope + quadratic_coeff * x_data2 .^ 3
residuals = quadratic - y_data2
fit_error = sum_squares(residuals)
optval = minimize!(fit_error)
plot(layer(df2,x="Voltaje",y="Promedio", ymin=ymins2, ymax=ymaxs2, Geom.point, Geom.errorbar),layer(x=t2, y=evaluate(offset) + t2 * evaluate(slope) + t_squared2 * evaluate(quadratic_coeff), Geom.line))
Out[35]: