mirror of
https://github.com/slsdetectorgroup/aare.git
synced 2026-11-09 18:53:53 +01:00
test for interpolation with simulated normal energy distribution
This commit is contained in:
1 parent
c78a73ebaf
commit
72a2604ca5
5 files changed
+822
-6
No files matched your search
@@ -44,14 +44,14 @@ void define_ClusterFile(py::module &m, const std::string &typestr) {
|
||||
auto v = new ClusterVector<ClusterType>(self.read_frame());
|
||||
return v;
|
||||
})
|
||||
.def("set_roi", &ClusterFile<ClusterType>::set_roi,
|
||||
py::arg("roi"))
|
||||
.def("set_roi", &ClusterFile<ClusterType>::set_roi, py::arg("roi"))
|
||||
.def(
|
||||
"set_noise_map",
|
||||
[](ClusterFile<ClusterType> &self, py::array_t<int32_t> noise_map) {
|
||||
auto view = make_view_2d(noise_map);
|
||||
self.set_noise_map(view);
|
||||
}, py::arg("noise_map"))
|
||||
},
|
||||
py::arg("noise_map"))
|
||||
|
||||
.def("set_gain_map",
|
||||
[](ClusterFile<ClusterType> &self, py::array_t<double> gain_map) {
|
||||
@@ -84,11 +84,19 @@ template <typename Type, uint8_t CoordSizeX, uint8_t CoordSizeY,
|
||||
typename CoordType = uint16_t>
|
||||
void register_calculate_eta(py::module &m) {
|
||||
using ClusterType = Cluster<Type, CoordSizeX, CoordSizeY, CoordType>;
|
||||
|
||||
m.def("calculate_eta2",
|
||||
[](const aare::ClusterVector<ClusterType> &clusters) {
|
||||
auto eta2 = new NDArray<double, 2>(calculate_eta2(clusters));
|
||||
return return_image_data(eta2);
|
||||
});
|
||||
|
||||
m.def("calculate_eta2", [](const aare::Cluster<Type, CoordSizeX, CoordSizeY,
|
||||
CoordType> &cluster) {
|
||||
auto eta2 = calculate_eta2(cluster);
|
||||
// TODO return proper eta class
|
||||
return py::make_tuple(eta2.x, eta2.y, eta2.sum);
|
||||
});
|
||||
}
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
@@ -87,6 +87,8 @@ PYBIND11_MODULE(_aare, m) {
|
||||
DEFINE_CLUSTER_BINDINGS(double, 9, 9, uint16_t, d);
|
||||
DEFINE_CLUSTER_BINDINGS(float, 9, 9, uint16_t, f);
|
||||
|
||||
// DEFINE_CLUSTER_BINDINGS(double, 2, 1, uint16_t, d);
|
||||
|
||||
define_3x3_reduction<int, 3, 3, uint16_t>(m);
|
||||
define_3x3_reduction<double, 3, 3, uint16_t>(m);
|
||||
define_3x3_reduction<float, 3, 3, uint16_t>(m);
|
||||
|
||||
@@ -53,8 +53,8 @@ def test_Interpolator():
|
||||
|
||||
assert interpolated_photons.size == 1
|
||||
|
||||
assert interpolated_photons[0]["x"] == -1
|
||||
assert interpolated_photons[0]["y"] == -1
|
||||
assert interpolated_photons[0]["x"] == 0
|
||||
assert interpolated_photons[0]["y"] == 0
|
||||
assert interpolated_photons[0]["energy"] == 4 #eta_sum = 4, dx, dy = -1,-1 m_ietax = 0, m_ietay = 0
|
||||
|
||||
clustervector = _aare.ClusterVector_Cluster2x2i()
|
||||
@@ -84,7 +84,7 @@ def test_calculate_eta():
|
||||
assert eta2[0,0] == 0.5
|
||||
assert eta2[0,1] == 0.5
|
||||
assert eta2[1,0] == 0.5
|
||||
assert eta2[1,1] == 0.6 #1/5
|
||||
assert eta2[1,1] == 0.4 #2/5
|
||||
|
||||
def test_cluster_finder():
|
||||
"""Test ClusterFinder"""
|
||||
|
||||
@@ -0,0 +1,143 @@
|
||||
import pytest
|
||||
import numpy as np
|
||||
import boost_histogram as bh
|
||||
import pickle
|
||||
from scipy.stats import multivariate_normal
|
||||
|
||||
from aare import Interpolator, calculate_eta2
|
||||
from aare._aare import ClusterVector_Cluster2x2d, Cluster2x2d, Cluster3x3d, ClusterVector_Cluster3x3d
|
||||
|
||||
from conftest import test_data_path
|
||||
|
||||
pixel_width = 1e-4
|
||||
values = np.arange(0.5*pixel_width, 0.1, pixel_width)
|
||||
num_pixels = values.size
|
||||
X, Y = np.meshgrid(values, values)
|
||||
data_points = np.stack([X.ravel(), Y.ravel()], axis=1)
|
||||
variance = 10*pixel_width
|
||||
covariance_matrix = np.array([[variance, 0],[0, variance]])
|
||||
|
||||
def create_photon_hit_with_gaussian_distribution(mean, covariance_matrix, data_points):
|
||||
gaussian = multivariate_normal(mean=mean, cov=covariance_matrix)
|
||||
probability_values = gaussian.pdf(data_points)
|
||||
return (probability_values.reshape(X.shape)).round() #python bindings only support frame types of uint16_t
|
||||
|
||||
def photon_hit_in_euclidean_space(cluster_center, pixels_per_superpixel, photon_hit):
|
||||
scaled_photon_hit_x = cluster_center - (1 - photon_hit[0][0])*0.5*pixels_per_superpixel*pixel_width
|
||||
scaled_photon_hit_y = cluster_center - (1 - photon_hit[0][1])*0.5*pixels_per_superpixel*pixel_width
|
||||
return (scaled_photon_hit_x, scaled_photon_hit_y)
|
||||
|
||||
def create_2x2cluster_from_frame(frame, pixels_per_superpixel):
|
||||
return Cluster2x2d(1, 1, np.array([frame[0:pixels_per_superpixel, 0:pixels_per_superpixel].sum(),
|
||||
frame[0:pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum(),
|
||||
frame[pixels_per_superpixel:2*pixels_per_superpixel, 0:pixels_per_superpixel].sum(),
|
||||
frame[pixels_per_superpixel:2*pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum()], dtype=np.float64))
|
||||
|
||||
|
||||
def create_3x3cluster_from_frame(frame, pixels_per_superpixel):
|
||||
return Cluster3x3d(1, 1, np.array([frame[0:pixels_per_superpixel, 0:pixels_per_superpixel].sum(),
|
||||
frame[0:pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum(),
|
||||
frame[0:pixels_per_superpixel, 2*pixels_per_superpixel:3*pixels_per_superpixel].sum(),
|
||||
frame[pixels_per_superpixel:2*pixels_per_superpixel, 0:pixels_per_superpixel].sum(),
|
||||
frame[pixels_per_superpixel:2*pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum(),
|
||||
frame[pixels_per_superpixel:2*pixels_per_superpixel, 2*pixels_per_superpixel:3*pixels_per_superpixel].sum(),
|
||||
frame[2*pixels_per_superpixel:3*pixels_per_superpixel, 0:pixels_per_superpixel].sum(),
|
||||
frame[2*pixels_per_superpixel:3*pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum(),
|
||||
frame[2*pixels_per_superpixel:3*pixels_per_superpixel, 2*pixels_per_superpixel:3*pixels_per_superpixel].sum()], dtype=np.float64))
|
||||
|
||||
|
||||
def calculate_eta_distribution(num_frames, pixels_per_superpixel, cluster_2x2 = True):
|
||||
hist = bh.Histogram(
|
||||
bh.axis.Regular(100, -0.2, 1.2),
|
||||
bh.axis.Regular(100, -0.2, 1.2), bh.axis.Regular(1, 0, num_pixels*num_pixels*1/(variance*2*np.pi)))
|
||||
|
||||
for frame_index in range(0, num_frames):
|
||||
mean_x = np.random.uniform(pixels_per_superpixel*pixel_width, 2*pixels_per_superpixel*pixel_width)
|
||||
mean_y = np.random.uniform(pixels_per_superpixel*pixel_width, 2*pixels_per_superpixel*pixel_width)
|
||||
frame = create_photon_hit_with_gaussian_distribution(np.array([mean_x, mean_y]), variance, data_points)
|
||||
|
||||
cluster = None
|
||||
|
||||
if cluster_2x2:
|
||||
cluster = create_2x2cluster_from_frame(frame, pixels_per_superpixel)
|
||||
else:
|
||||
cluster = create_3x3cluster_from_frame(frame, pixels_per_superpixel)
|
||||
|
||||
eta2 = calculate_eta2(cluster)
|
||||
hist.fill(eta2[0], eta2[1], eta2[2])
|
||||
|
||||
return hist
|
||||
|
||||
@pytest.mark.withdata
|
||||
def test_interpolation_of_2x2_cluster(test_data_path):
|
||||
"""Test Interpolation of 2x2 cluster from Photon hit with Gaussian Distribution"""
|
||||
|
||||
#TODO maybe better to compute in test instead of loading - depends on eta
|
||||
"""
|
||||
filename = test_data_path/"eta_distributions"/"eta_distribution_2x2cluster_gaussian.pkl"
|
||||
with open(filename, "rb") as f:
|
||||
eta_distribution = pickle.load(f)
|
||||
"""
|
||||
|
||||
num_frames = 1000
|
||||
pixels_per_superpixel = int(num_pixels*0.5)
|
||||
eta_distribution = calculate_eta_distribution(num_frames, pixels_per_superpixel)
|
||||
|
||||
interpolation = Interpolator(eta_distribution, eta_distribution.axes[0].edges[:-1], eta_distribution.axes[1].edges[:-1], eta_distribution.axes[2].edges[:-1])
|
||||
|
||||
#actual photon hit
|
||||
mean = 1.2*pixels_per_superpixel*pixel_width
|
||||
mean = np.array([mean, mean])
|
||||
frame = create_photon_hit_with_gaussian_distribution(mean, covariance_matrix, data_points)
|
||||
cluster = create_2x2cluster_from_frame(frame, pixels_per_superpixel)
|
||||
|
||||
clustervec = ClusterVector_Cluster2x2d()
|
||||
clustervec.push_back(cluster)
|
||||
|
||||
interpolated_photon = interpolation.interpolate(clustervec)
|
||||
|
||||
assert interpolated_photon.size == 1
|
||||
|
||||
cluster_center = 1.5*pixels_per_superpixel*pixel_width
|
||||
|
||||
scaled_photon_hit = photon_hit_in_euclidean_space(cluster_center, pixels_per_superpixel, interpolated_photon)
|
||||
|
||||
assert (np.linalg.norm(scaled_photon_hit - mean) < np.linalg.norm(np.array([cluster_center, cluster_center] - mean)))
|
||||
|
||||
|
||||
@pytest.mark.withdata
|
||||
def test_interpolation_of_3x3_cluster(test_data_path):
|
||||
"""Test Interpolation of 3x3 Cluster from Photon hit with Gaussian Distribution"""
|
||||
|
||||
#TODO maybe better to compute in test instead of loading - depends on eta
|
||||
"""
|
||||
filename = test_data_path/"eta_distributions"/"eta_distribution_3x3cluster_gaussian.pkl"
|
||||
with open(filename, "rb") as f:
|
||||
eta_distribution = pickle.load(f)
|
||||
"""
|
||||
|
||||
num_frames = 1000
|
||||
pixels_per_superpixel = int(num_pixels/3)
|
||||
eta_distribution = calculate_eta_distribution(num_frames, pixels_per_superpixel, False)
|
||||
|
||||
interpolation = Interpolator(eta_distribution, eta_distribution.axes[0].edges[:-1], eta_distribution.axes[1].edges[:-1], eta_distribution.axes[2].edges[:-1])
|
||||
|
||||
#actual photon hit
|
||||
mean = 1.2*pixels_per_superpixel*pixel_width
|
||||
mean = np.array([mean, mean])
|
||||
frame = create_photon_hit_with_gaussian_distribution(mean, covariance_matrix, data_points)
|
||||
cluster = create_3x3cluster_from_frame(frame, pixels_per_superpixel)
|
||||
|
||||
clustervec = ClusterVector_Cluster3x3d()
|
||||
clustervec.push_back(cluster)
|
||||
|
||||
interpolated_photon = interpolation.interpolate(clustervec)
|
||||
|
||||
assert interpolated_photon.size == 1
|
||||
|
||||
cluster_center = 1.5*pixels_per_superpixel*pixel_width
|
||||
|
||||
scaled_photon_hit = photon_hit_in_euclidean_space(cluster_center, pixels_per_superpixel, interpolated_photon)
|
||||
|
||||
assert (np.linalg.norm(scaled_photon_hit - mean) < np.linalg.norm(np.array([cluster_center, cluster_center] - mean)))
|
||||
|
||||
@@ -0,0 +1,663 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 38,
|
||||
"id": "bda7256e",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import numpy as np \n",
|
||||
"from scipy.stats import multivariate_normal\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"from aare import ClusterFinder, calculate_eta2, Interpolator\n",
|
||||
"import boost_histogram as bh\n",
|
||||
"from aare._aare import Cluster2x2d, ClusterVector_Cluster2x2d"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "cb2fa3eb",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"### create frame of one photon hit using gaussian distribution \n",
|
||||
"def create_photon_hit_with_gaussian_distribution(mean, covariance_matrix, data_points):\n",
|
||||
" gaussian = multivariate_normal(mean=mean, cov=covariance_matrix)\n",
|
||||
" probability_values = gaussian.pdf(data_points)\n",
|
||||
" return (probability_values.reshape(X.shape)).round() #python bindings only support frame types of uint16_t\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def calculate_scaled_photon_hit(cluster_center_in_subpixels, pixels_per_superpixel, photon_hit): \n",
|
||||
" scaled_photon_hit_x = cluster_center_in_subpixels - (1 - photon_hit[0][0])*0.5*pixels_per_superpixel \n",
|
||||
" scaled_photon_hit_y = cluster_center_in_subpixels - (1 - photon_hit[0][1])*0.5*pixels_per_superpixel\n",
|
||||
" return [scaled_photon_hit_x, scaled_photon_hit_y]\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "9453f403",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"### plotting functions\n",
|
||||
"\n",
|
||||
"def plot_eta_distribution(hist):\n",
|
||||
" plt.imshow(\n",
|
||||
" hist[:, :, 0].to_numpy(view=True).transpose(), \n",
|
||||
" origin='lower', \n",
|
||||
" extent=[hist.axes[0].edges[0], hist.axes[0].edges[-1], hist.axes[1].edges[0], hist.axes[1].edges[-1]],\n",
|
||||
" aspect='auto')\n",
|
||||
" plt.colorbar()\n",
|
||||
" plt.xlabel('eta_x')\n",
|
||||
" plt.ylabel('eta_y')\n",
|
||||
"\n",
|
||||
"def plot_uniform_eta_distribution(uniform_etax, uniform_etay, eta_extent): \n",
|
||||
" fig, axes = plt.subplots(1, 2, figsize=(10, 5)) # (rows, cols)\n",
|
||||
"\n",
|
||||
" im1 = axes[0].imshow(\n",
|
||||
" uniform_etax[:, :, 0].to_numpy(view=True).transpose(), \n",
|
||||
" origin='lower', \n",
|
||||
" extent=[eta_extent[0], eta_extent[1], eta_extent[0], eta_extent[1]],\n",
|
||||
" aspect='auto'\n",
|
||||
" )\n",
|
||||
" axes[0].set_title(\"uniform distribution of etax\")\n",
|
||||
" fig.colorbar(im1, ax=axes[0], fraction=0.046, pad=0.04)\n",
|
||||
" axes[0].set_xlabel(\"eta_x\")\n",
|
||||
" axes[0].set_ylabel(\"eta_y\")\n",
|
||||
"\n",
|
||||
" im2 = axes[1].imshow(\n",
|
||||
" uniform_etay[:, :, 0].to_numpy(view=True).transpose(), \n",
|
||||
" origin='lower', \n",
|
||||
" extent=[eta_extent[0], eta_extent[1], eta_extent[0], eta_extent[1]],\n",
|
||||
" aspect='auto'\n",
|
||||
" )\n",
|
||||
" axes[1].set_title(\"uniform distribution of etay\")\n",
|
||||
" fig.colorbar(im2, ax=axes[1], fraction=0.046, pad=0.04)\n",
|
||||
" axes[1].set_xlabel(\"eta_x\")\n",
|
||||
" axes[1].set_ylabel(\"eta_y\")\n",
|
||||
"\n",
|
||||
" plt.tight_layout()\n",
|
||||
" plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 146,
|
||||
"id": "f57feae4",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"num pixels: (1000 x 1000)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"pixel_width = 1e-4\n",
|
||||
"\n",
|
||||
"values = np.arange(0.5*pixel_width, 0.1, pixel_width)\n",
|
||||
"\n",
|
||||
"num_pixels = values.size\n",
|
||||
"\n",
|
||||
"print(f\"num pixels: ({values.size} x {values.size})\")\n",
|
||||
"\n",
|
||||
"X, Y = np.meshgrid(values, values)\n",
|
||||
"\n",
|
||||
"data_points = np.stack([X.ravel(), Y.ravel()], axis=1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 158,
|
||||
"id": "5a93b339",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"Text(0, 0.5, 'y_0')"
|
||||
]
|
||||
},
|
||||
"execution_count": 158,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAg0AAAG2CAYAAAD8/bW/AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs/X+8ZkVxJ46/69w7DD+EAQaZYXRQiGgUUBGNK2oki8IS0TUmsmqiJvGbJR/UhIC6um4i8RXhq1mVfHFjousKkbi4SdRoPkkE1g1KiFFBopiNPxJEQEY0Ij8EZuA+/f3jdHVXVVefH8/z3Dtz8Sl45p7TXV3dp0+frvepqu5DIYSABS1oQQta0IIWtKAeanZ3Axa0oAUtaEELWtD6oAVoWNCCFrSgBS1oQYNoARoWtKAFLWhBC1rQIFqAhgUtaEELWtCCFjSIFqBhQQta0IIWtKAFDaIFaFjQgha0oAUtaEGDaAEaFrSgBS1oQQta0CBagIYFLWhBC1rQghY0iBagYUELWtCCFrSgBQ2iBWhY0IIWtKAFLWhBg+hBAxp+//d/H0cccQT23ntvHH/88fjMZz6zu5u0oAUtaEELWtCDih4UoOHDH/4wzjrrLLzpTW/CF7/4RTzzmc/Eqaeeim9961u7u2kLWtCCFrSgBT1oiB4MH6x66lOfiic96Ul4z3vek9Ie+9jH4gUveAHOP//83diyBS1oQQta0IIePLS8uxswK+3atQvXXHMN3vCGN6j0k08+GVdffbVbZufOndi5c2c6n0wm+P73v4/NmzeDiFa1vQta0IIWtKD5UwgBd911F7Zt24amWR0j+n333Yddu3bNRdZee+2Fvffeey6y1pLWPWj43ve+h5WVFWzZskWlb9myBTt27HDLnH/++fjt3/7ttWjegha0oAUtaA3ppptuwsMf/vC5y73vvvtwxCMegh23rcxF3tatW3HDDTesO+Cw7kEDk7UQhBCqVoM3vvGNOPvss9P5HXfcgcMPPxzPwE9jGRuAeVobiEDUALOIJMJUAhoadylEwBiETjS4r4gIaIbwEjC0v3rrplZOTztJ8vbJ42vorZrl9TBKnqHXPPSmMl/8+8Udn8ATtz5vWFnZoLk8DuQe5rQ9wMLneWpD9WTKOqaTlXqH2zjUqxzCMF7Zrl72yNMnl7MnAb1CQ/tPJxdfS5DCMz0w2YUrb/9j7L///t11TUm7du3CjttWcOM1j8QB+89mybjzrgkecfw3sWvXrgVoWGs65JBDsLS0VFgVbrvttsL6wLRx40Zs3LixSF/GBiw3e82vcbsVMDQj5uGoiAYpdRTKqF/0kD6I9Q+SucZgQcrpqpvrnCdQGNnX6V4CCKbI9k1PwPJSOe7nBg5kG4cApnVNRrnOGho2EkwQsw0FBcwr/w5pyyAA0cPXiHoH1T0beFhtF/ND9ic8ZP/Z6pis42dj3a+e2GuvvXD88cfj8ssvV+mXX345TjjhhHHCHgwWBiLQ0kjA0IwEDAPfdokI1PT1QbQsNM1AMNCnkPl66vLaXuXr6JPVZDBTq5v5qEFVoAQxXG+tbubha+gEKvl6Q9MgNIRAJWAoGjO0LbW2yX5uGt3WseOW9qDfmEarvhD90Ji8UX0wrA/5HoeGEJZMvdU6Bo4rry1VsQOeXzteBgDv9r+O6xhyvatEK2Eyl996pXVvaQCAs88+Gy972cvw5Cc/GU972tPw3ve+F9/61rfwq7/6q7unQdS0aHfq8cxlRwogAg1V/pF/VdwRRMOuf/DEOh9ZNEdZ9q2+n29gnX0kLA8hye8tBBBwy51fxpb9Hz2kAFSbx07MvezUebpn0dC3cknmfsv+S2/7A2TbOaCjTJDjLESF22VZsBasmhWA7EGHVYHHcAgVPspgJFkLKsLi9VCX5UHWt4aLACcImMzoqpq1/O6kBwVo+A//4T/gX//1X/GWt7wFt956K4455hj85V/+JR7xiEesfWOaZkbz2JSAoaER9dI4lD7UPw+0oGWoxaAXWOyJYGFAX8j8rjqHuh5End0WBNGAMcOHZFvHgM6OxD0aCHRQ0e6OCwmc3RcLIcV5fS0UbJfyGwoiKKbGuihQrqOqpKXCr/AV46MCINhKQh11WoU/F/Cw7g3n64IeFKABAM4880yceeaZu7cRD1rAMOQNGAPcMfymMTDGoVdWN/AYBBaUjD6w0KfcB9Qn37Y62dr6hlkThoGEo7f8uyxb/h0gvpo4b3AwcKwNpiEvdNO+pRZv4aLOUWBC3D/55t/XtoEgomqF6LNA1OIGiuuuWR/EWO+qjwyo6QAsveBhDWiCCWZ1LswuYffRgwY07HaaFTCM9QOjZafR7oWRKxMGXNNg68JgK8SA/J7raOeYASBgVrAgyw8BJ10U2xMGgYBhQEG+2X7zB1/AYw79qU6R1YRZ52Pv2tdikh/TR5LclRQDwUUvmOATk+e1KbVtgDVCjsUhVohAoC4LhHw+epS5upCa9aHTlcDPNWKwRh946AmWXEVaCQErM7pDZi2/O2kBGuZBuwUwrGL8wlDrAjAg0JHlDeQb0q4+V8RagoW5AIUhFoURb/aV6/vhrn91RY6W77WN9OkMwqaqPtG85uJekBPUn3zcZxlwTjzLRC0eILWjz90g6pCrIQxPAqhDLBBd8Q/FPV9t8JDbu37V7/qkBWiYlfZ4wECr4o4Ytu/C0Lr73pr75cwFLBC674ecGGcBC4NjFPr6RciTfyui9tlwYDm5jxl6ZMvMCAqoomLHPk+zgAZHIVn93VlpAZaE0pRyet0M4qDm3lCnrFyFIq/V48l3AUQrrzcGok/xd/WDlVFdsjkePKwVLQIhFzQ97Q7AsFrxC+nNeQBg6JXJD/zAGIfOfKnsXY7+NvdZKAaBhVmBAsuYB1AQE2ovwMknjzr0mePAYyo6XomnKdHWNyPOGFL3OP6yQDGd24SooLrBhQEVo90M6qDfGqGAIyv8SgPlPXV4ZAwEscL2LAeDrA8G0bnggNAGTXaAhySi1mdj5sXZaIKAlQVoWNBo2i2AYcT+C6vhjiBgULDjEKAyo6JfP2ChLR+GgKxOItHeWlu7ZX75lk/gSYe/yG+j/DuEks5x2j7z3L02k39LAybv4voolywABUC1t2sWVgAJdFsKVBuEsifDGwSPBJUdGyENAhDxGSGWMw/rw1jwYOWv45iA9U4L0DAN/QgChkHuiEGxC30Ksht00BAZqw4WehS4aMNMVoU+ZU7OSd+tHGtBoIrVYNTw7eqnMXJWg5wGdOqjmi8/nwelhLlYj3WiuNc9FolC2UODCGuFkACiT2YFYIQoh3rcBVm5O3IeBOBh4Z5Y0Dhaa8BAGL9CYgh/UowDAMOgXR1JTE4dbeuUgc62U5+MNQELHfnzsCoMibsYKovlRdbDDjq2p/+yX9uvr7OiztN1RX1jnanPjyHl1KwTIVSAhLi30uUQy/j1CBDRBSCszC63wrTWBx7H0r1Rq2OdgYfF6okFDac9GjDQuG83DHjTpCFAABGk9IKKvvbU294LFtK1J+56HfUKesBAP1ipWxUG9GGaiL22DZUj21MUxnIjvjuRdIJUTgNkzx0cjAAoJN7iR9XgKSVDoXrS2R43YSSYUHq56t6ogIhByyCNsMKNQRhkGXABRCujan2QQL037qEDPKACDCQ4maxnpLp+aAEahtJMgGGYki6KrBpg6Ofrd0cIRT81YOiX0QsYuI+qgGAVwUJDvk9fVjAELFXbNkAGy5F/K/Ju+v41OGTTo4z8jgLO4WjqsFpMAwCmoUH7XhhwRlZ7Oa6GYbJMQg2cCOBWuDdca4QBmkN3cpRWiC4Xxkj3RbI+8N4Pk5FxD33goTNmIrZ9zBL0GWgSf7PKWK+0AA1DaK0Bw5gVEn0meY+3j22I5WDoCoq+tkxrXeh1RawSWGAXRLX8kOtOjXDaNUBGn5yYrFwNJH61Ah3iOtthREwFBtZmvu8m9TJuGiRPxTW7VoFByyvFSWKvWCQKa4QDIoa4HZJM2YgagOiQY0GIAT8hzg/VjaNWCzys0RhamcPqiVnL705agIY+mhkwjCw7FjDMO+CxDzAQYbZgx9iOylsB9ZXfrWBhWhcE6bfCok195WUbVCFFartgh+XHH/bvbKXDJlrbbhoIDKr97GTuYaAhJdTm9qRrHbBFPIqd8oP3UXAa5YGIeKAXUsjxNguAEHL63Bc18EDocF2sEnhYZVoJ7W9WGeuVFqChix4MgGGI6RqYnztiBusADSnfVDRimiRrink3gIWaXDInvSCtKJSKFtaEWhsB3PL96/Cow07sqEzUKeX3aXTyjkcCkz2BinY69yZIXs/KIA+d8qSLdoOIeNIFIuLYCEKekj8WQEj3hZTT576ogQdk18XqgYfKNS1oVWgBGmpE83BJjKBRgKEZ5r+bZ/zCTO6ImFcBOYPAwjTWhdUEC0Pa67anp02pvCqgZATF4wow9bV01707/LqS3K5rqrSzljctTf3MzUBjFI5V6DatCwy0N47/xLKElFor69VpXRpCXrZCTAEg5LjrjH8YoOTDWoGHnvlhzrSIaVhQSTTL7mIdE36NxgCGphn2cKylO6IPTPTtu9AHBubtilgNsFBT9GQOOgFMhYGQl3GOBAqSNm44YBhIsMmzgINVnMi7VP2oWse2cUjMgpUZYp4tK90comwniJD1KEuEtULoWIi0PJIZhgIIbru1rKTnqCN2wWn/zOAhENJnt736VpkmIKzMiJQn68b8VtICNFgiQv+uh9XC4wfu7gIMhJ7r5EllBsDQATg6wUIqW7mONQcLFXmpXKrYtGPKsjGp26IwUJELhf/o7f/O30OC5N8pAELtGhxy1e2082fH+AnTmqv7vAWd9XbEQHhgQirjINIwEkRYYFqxQgSi6SwQFqAU1gcujx7woApNDx7UeOvo8wWtCi1Ag6Q1BwxDd3mkuS6pXBN3xGpZF7piGqptYpn1+qYDCx0KeMqyswOFPIFLine truncated
|
||||
"text/plain": [
|
||||
"<Figure size 640x480 with 2 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# mean is in bottom right quadrant \n",
|
||||
"variance = 10*pixel_width\n",
|
||||
"\n",
|
||||
"covariance_matrix = np.array([[variance, 0], [0, variance]])\n",
|
||||
"\n",
|
||||
"mean = 650*pixel_width\n",
|
||||
"\n",
|
||||
"mean = np.array([mean, mean])\n",
|
||||
"\n",
|
||||
"base_frame = create_photon_hit_with_gaussian_distribution(mean, variance, data_points)\n",
|
||||
"\n",
|
||||
"pixels_per_superpixel = int(num_pixels*0.5)\n",
|
||||
"\n",
|
||||
"plt.imshow(base_frame) \n",
|
||||
"\n",
|
||||
"plt.colorbar()\n",
|
||||
"\n",
|
||||
"plt.axvline(x=pixels_per_superpixel, color='black', linestyle='--', linewidth=0.5)\n",
|
||||
"plt.axhline(y=pixels_per_superpixel, color='black', linestyle='--', linewidth=0.5)\n",
|
||||
"\n",
|
||||
"plt.xlabel('x_0')\n",
|
||||
"plt.ylabel('y_0')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 176,
|
||||
"id": "2376390e",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"max energy: 636619772.3675814\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "AttributeError",
|
||||
"evalue": "'Histogram' object has no attribute 'transpose'",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
|
||||
"\u001b[31mAttributeError\u001b[39m Traceback (most recent call last)",
|
||||
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[176]\u001b[39m\u001b[32m, line 23\u001b[39m\n\u001b[32m 20\u001b[39m eta2 = calculate_eta2(cluster)\n\u001b[32m 21\u001b[39m hist.fill(eta2[\u001b[32m0\u001b[39m], eta2[\u001b[32m1\u001b[39m], eta2[\u001b[32m2\u001b[39m])\n\u001b[32m---> \u001b[39m\u001b[32m23\u001b[39m \u001b[43mplot_eta_distribution\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhist\u001b[49m\u001b[43m)\u001b[49m\n",
|
||||
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[175]\u001b[39m\u001b[32m, line 5\u001b[39m, in \u001b[36mplot_eta_distribution\u001b[39m\u001b[34m(hist)\u001b[39m\n\u001b[32m 3\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mplot_eta_distribution\u001b[39m(hist):\n\u001b[32m 4\u001b[39m plt.imshow(\n\u001b[32m----> \u001b[39m\u001b[32m5\u001b[39m \u001b[43mhist\u001b[49m\u001b[43m[\u001b[49m\u001b[43m:\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m:\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m.\u001b[49m\u001b[43mtranspose\u001b[49m(), \n\u001b[32m 6\u001b[39m origin=\u001b[33m'\u001b[39m\u001b[33mlower\u001b[39m\u001b[33m'\u001b[39m, \n\u001b[32m 7\u001b[39m extent=[hist.axes[\u001b[32m0\u001b[39m].edges[\u001b[32m0\u001b[39m], hist.axes[\u001b[32m0\u001b[39m].edges[-\u001b[32m1\u001b[39m], hist.axes[\u001b[32m1\u001b[39m].edges[\u001b[32m0\u001b[39m], hist.axes[\u001b[32m1\u001b[39m].edges[-\u001b[32m1\u001b[39m]],\n\u001b[32m 8\u001b[39m aspect=\u001b[33m'\u001b[39m\u001b[33mauto\u001b[39m\u001b[33m'\u001b[39m)\n\u001b[32m 9\u001b[39m plt.colorbar()\n\u001b[32m 10\u001b[39m plt.xlabel(\u001b[33m'\u001b[39m\u001b[33meta_x\u001b[39m\u001b[33m'\u001b[39m)\n",
|
||||
"\u001b[31mAttributeError\u001b[39m: 'Histogram' object has no attribute 'transpose'"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"### create eta distribution\n",
|
||||
"num_frames = 1000\n",
|
||||
"\n",
|
||||
"hist = bh.Histogram(\n",
|
||||
" bh.axis.Regular(100, -0.2, 1.2), \n",
|
||||
" bh.axis.Regular(100, -0.2, 1.2), bh.axis.Regular(1, 0, num_pixels*num_pixels*1/(variance*2*np.pi))) \n",
|
||||
"\n",
|
||||
"print(\"max energy: \", 4*num_pixels*num_pixels*1/(variance*2*np.pi))\n",
|
||||
"\n",
|
||||
"for frame_index in range(0, num_frames):\n",
|
||||
" mean_x = np.random.uniform(num_pixels*0.5*pixel_width, num_pixels*pixel_width)\n",
|
||||
" mean_y = np.random.uniform(num_pixels*0.5*pixel_width, num_pixels*pixel_width)\n",
|
||||
" frame = create_photon_hit_with_gaussian_distribution(np.array([mean_x, mean_y]), variance, data_points)\n",
|
||||
"\n",
|
||||
" cluster = Cluster2x2d(1, 1, np.array([frame[0:pixels_per_superpixel, 0:pixels_per_superpixel].sum(), \n",
|
||||
" frame[0:pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum(), \n",
|
||||
" frame[pixels_per_superpixel:2*pixels_per_superpixel, 0:pixels_per_superpixel].sum(), \n",
|
||||
" frame[pixels_per_superpixel:2*pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum()], dtype=np.float64))\n",
|
||||
" \n",
|
||||
" eta2 = calculate_eta2(cluster)\n",
|
||||
" hist.fill(eta2[0], eta2[1], eta2[2])\n",
|
||||
"\n",
|
||||
"plot_eta_distribution(hist)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 132,
|
||||
"id": "68f283b3",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"interpolator = Interpolator(hist, hist.axes[0].edges[:-1], hist.axes[1].edges[:-1], hist.axes[2].edges[:-1])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "7170170f",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA94AAAHqCAYAAADyGZa5AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAbu9JREFUeJzt3Xt4VNW9//HP5Da5QBLCJSQQIFhRFG8NRUEpahUERetPK60eQIUeOagoVFsobUGOp1RtPXgDtJVSLeXQKtbapiqtclGwFQTbClUrSEASMAGSEMhtZv3+oJk9e5IJk0wmkz3zfj3PPM/Mvs3aCcMna/b+ruUyxhgBAAAAAICISIh2AwAAAAAAiGV0vAEAAAAAiCA63gAAAAAARBAdbwAAAAAAIoiONwAAAAAAEUTHGwAAAACACKLjDQAAAABABNHxBgAAAAAgguh4AwAAAAAQQXS80alWrlwpl8ulTz/91Lb8e9/7ngYMGKCkpCRlZ2dHpW3huvXWWzVo0CDbMpfLpYULF7bpOMXFxW3ep6X3avpZb926tc3HCubAgQNauHChduzY0WzdwoUL5XK5Ouy9IqG+vl4zZsxQXl6eEhMTdf7554d9zM2bN2vhwoU6evRo2McCgK6CvD418jpyyGvEoqRoNwDx5eqrr9aWLVuUl5fnW/byyy/rf/7nfzR//nyNHz9ebrc7ii3sWFu2bFH//v3btE9xcbGeeuqpNod5e96rrQ4cOKAHHnhAgwYNahaC06dP11VXXRXR9w/XsmXL9PTTT+uJJ55QUVGRunXrFvYxN2/erAceeEC33nqrY/8IBYBA5PWpkdeRQ14jFtHxRqfq3bu3evfubVv2j3/8Q5I0a9Ys9enTp0Pe5/jx40pPT++QY4XjoosuiujxjTGqra1VWlpaxN/rVPr37x/xPyTC9Y9//ENpaWm66667ot0UAOjSyOuORV63DXmNWMSt5giqpVuxpJZvUXK5XLrrrrv0/PPPa+jQoUpPT9d5552n3//+97btAm9dGzRokL73ve9JknJzc223X3m9Xj388MM688wz5Xa71adPH02ZMkX79++3HfPSSy/VsGHDtHHjRo0aNUrp6em6/fbb9emnn8rlcumRRx7RQw89pEGDBiktLU2XXnqpPvroIzU0NGju3LnKz89XVlaWrr/+eh06dCikn83KlSt1xhlnyO12a+jQoXruueda3C7wdrLjx4/rvvvuU2FhoVJTU5WTk6Phw4dr9erVvp/5U0895du36dH082r6OS9fvlxDhw6V2+3WL37xixbfq8mRI0d02223KScnRxkZGZo4caJ2795t22bQoEG69dZbm+176aWX6tJLL5UkrV+/Xl/60pckSbfddpuvbU3v2dK/i7b+Dt99912NHj1a6enpGjx4sH70ox/J6/W2+LP1V1tbq3nz5qmwsFApKSnq16+f7rzzTtvtZC6XSz/72c904sQJX9tXrlzZ6nH/9Kc/6Stf+YoyMzOVnp6uiy++WH/+85996xcuXKj7779fklRYWOg77vr16yVJa9as0dixY5WXl6e0tDQNHTpUc+fOVU1Nje8Y5eXlKigo0KhRo9TQ0OBbvnPnTmVkZGjy5MmnPH8A8Y28Do68Jq+bzjncvH7++eflcrm0ZcuWZu+/aNEiJScn68CBA6f8GSCOGSCIqVOnmoEDBzZbvmDBAhP4T0eSGTRokBkxYoT59a9/bYqLi82ll15qkpKSzCeffOLb7uc//7mRZPbs2WOMMea9994z06ZNM5LMq6++arZs2WL27dtnjDHmP//zP40kc9ddd5lXX33VLF++3PTu3dsUFBSYzz//3HfMMWPGmJycHFNQUGCeeOIJ8+abb5oNGzaYPXv2GElm4MCBZuLEieb3v/+9+eUvf2lyc3PNkCFDzOTJk83tt99u/vjHP5rly5ebbt26mYkTJ57y59J0Dtddd5155ZVXzC9/+UvzhS98wRQUFDT7eUkyCxYs8L2+4447THp6unn00UfNm2++aX7/+9+bH/3oR+aJJ54wxhjzr3/9y9x4441GktmyZYvvUVtb6ztev379zLnnnmt+9atfmTfeeMP84x//aPG9mtpZUFDgO89nnnnG9OnTxxQUFJgjR474th04cKCZOnVqs3MdM2aMGTNmjDHGmMrKSt8xv/e97/na1vT7aunfRVt+hz179jSnn366Wb58uVm3bp2ZOXOmkWR+8YtftPr78Hq9Zty4cSYpKcl8//vfN6+//rr58Y9/bDIyMswFF1zg+9lt2bLFTJgwwaSlpfnafujQoaDHff75543L5TJf/epXzdq1a80rr7xirrnmGpOYmGj+9Kc/GWOM2bdvn7n77ruNJLN27VrfcSsrK40xxvz3f/+3+d///V/zhz/8waxfv94sX77cFBYWmssuu8z2Xm+99ZZJSkoys2fPNsYYU1NTY8466yxz5plnmmPHjrV6/gBAXreMvCavOzKv6+rqTN++fc0tt9xie/+GhgaTn59vvva1r7V6/gAdbwTV1iDPzc01VVVVvmVlZWUmISHBLF682LcsMMj9j+f/H/uuXbuMJDNz5kzb+/zlL38xksx3v/td37IxY8YYSebPf/6zbdumID/vvPOMx+PxLV+yZImRZK699lrb9vfee6+R5PtPuCUej8fk5+ebL37xi8br9fqWf/rppyY5OfmUQT5s2DDz1a9+NejxjTHmzjvvbPbz9T9eVlaWOXz4cIvrWgry66+/3rbd22+/bSSZBx980LcslCA3xph3333XSDI///nPm20b+O+iPb/Dv/zlL7ZtzzrrLDNu3Lhm7+Xv1VdfNZLMww8/bFu+Zs0aI8k888wzvmVTp041GRkZrR7PmJMd35ycnGZ/2Hk8HnPeeeeZESNG+JY98sgjzf5Nt8Tr9ZqGhgazYcMGI8m8//77tvUPPfSQkWReeuklM3XqVJOWlmb+9re/nbKtAEBeN0dek9eRyOsFCxaYlJQUc/DgwWbt37Bhwynbi/jGreboMJdddpm6d+/ue52bm6s+ffpo7969bT7Wm2++KUnNbqcaMWKEhg4dart9SJJ69Oihyy+/vMVjTZgwQQkJ1j/1oUOHSjo5cIy/puUlJSVB2/Xhhx/qwIEDuvnmm223aQ0cOFCjRo06xVmdbP8f//hHzZ07V+vXr9eJEydOuU+gyy+/XD169Ah5+1tuucX2etSoURo4cKDvZxwpbf0d9u3bVyNGjLAtO/fcc0/57+eNN95o8X2+9rWvKSMjo9n7hGLz5s06fPiwpk6dqsbGRt/D6/Xqqquu0rvvvmu7/SyY3bt36+abb1bfvn2VmJio5ORkjRkzRpK0a9cu27b333+/rr76an3jG9/QL37xCz3xxBM655xz2tx2ADgV8pq89kdeh57X//Vf/yVJ+ulPf+pb9uSTT+qcc87Rl7/85Ta3H/GFwdXQYXr27NlsmdvtbldYVVRUSJJtNNUm+fn5zf5zb2m7Jjk5ObbXKSkprS6vra09Zbv69u3bbF3fvn2bTbsS6PHHH1f//v21Zs0aPfTQQ0pNTdW4ceP0yCOP6PTTT2913yatnWtLgrW16Vwipa2/w/b++6moqFBSUlKzQYBcLle7z/PgwYOSpBtvvDHoNocPH1ZGRkbQ9ceOHdPo0aOVmpqqBx98UEOGDFF6err27dun//f//l+z83K5XLr11lv1hz/8QX379qW2G0DEkNfktT/yOvS8zs3N1aRJk/T0009r7ty5+uCDD7Rp0yY9/fTTbW474g8dbwSVmpqqurq6ZsvLy8sj/t5N/6mXlpY2G3nzwIED6tWrl21ZZ81H2dSusrKyZutaWhYoIyNDDzzwgB544AEdPHjQ9236xIkT9c9//jOkNrT1XIO19Qtf+ILvdWu/68Cfdaja+jtsr549e6qxsVGff/65LcyNMSorK/MNMNMWTW174okngo4+m5ub2+ox3njjDR04cEDr16/3fWsuKej8oaWlpbrzzjt1/vnn64MPPtB9992nxx9/vM1tBxB/yOvg7SKvT428blte33PPPXr++ef18ssv69VXX1V2dnazuxWAlnCrOYIaNGiQDh065Ps2UZLq6+v12muvRfy9m25D++Uvf2lb/u6772rXrl36yle+EvE2tOSMM85QXl6eVq9eLWOMb/nevXu1efPmNh0rNzdXt956q77xjW/oww8/1PHjxyXJNy9qe648tGTVqlW215s3b9bevXt9o59KJ3/Xf/vb32zbffTRR/rwww9ty9rSts76HTYdJ/B9XnzxRdXU1LTrfS6++GJlZ2dr586dGj58eIuPpisuwX4mTX9wBc5z29K34h6PR9/4xjfkcrn0xz/+UYsXL9YTTzyhtWvXtrntAOIPed0ceU1eRyKvJamoqEijRo3SQw89pFWrVunWW29t9Yo60IQr3ghq0qRJ+sEPfqCvf/3ruv/++1VbW6vHH39cHo8n4u99xhln6D//8z/1xBNPKCEhQePHj9enn36q73//+yooKNDs2bMj3oaWJCQk6L//+781ffp0XX/99frmN7+po0ePauHChS3eIhbowgsv1DXXXKNzzz1XPXr00K5du/T8889r5MiRvnlMm+p6H3roIY0fP16JiYk699xzfcHRVlu3btX06dP1ta99Tfv27dP8+fPVr18/zZw507fN5MmT9R//8R+aOXOmbrjhBu3du1cPP/xws9vBTjvtNKWlpWnVqlUaOnSounXrpvz8fOXn5zd73876HV555ZUaN26cvvOd76iqqkoXX3yx/va3v2nBggW64IIL2nXLdrdu3fTEE09o6tSpOnz4sG688Ub16dNHn3/+ud5//319/vnnWrZsmSTr9/XYY49p6tSpSk5O1hlnnKFRo0apR48emjFjhhYsWKDk5GStWrVK77//frP3W7BggTZt2qTXX39dffv21be+9S1t2LBB06ZN0wUXXKDCwsLwfkgAYhp53Rx5TV5HIq+b3HPLine truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1000x500 with 4 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"uniform_etax = interpolator.get_ietax()\n",
|
||||
"uniform_etay = interpolator.get_ietay()\n",
|
||||
"\n",
|
||||
"plot_uniform_eta_distribution(uniform_etax, uniform_etay, [hist.axes[0].edges[0], hist.axes[0].edges[-1]])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 163,
|
||||
"id": "2de329be",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"eta: (0.3519491547025806, 0.3519491547025806, 71553511.0)\n",
|
||||
"distance x: 0.6923076923076923\n",
|
||||
"distance y: 0.6363636363636364\n",
|
||||
"[(-0.38461538, -0.27272727, 71553511.)]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"\n",
|
||||
"cluster = Cluster2x2d(1, 1, np.array([base_frame[0:pixels_per_superpixel, 0:pixels_per_superpixel].sum(), \n",
|
||||
" base_frame[0:pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum(), \n",
|
||||
" base_frame[pixels_per_superpixel:2*pixels_per_superpixel, 0:pixels_per_superpixel].sum(), \n",
|
||||
" base_frame[pixels_per_superpixel:2*pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum()], dtype=np.float64))\n",
|
||||
"\n",
|
||||
"clustervec = ClusterVector_Cluster2x2d()\n",
|
||||
"clustervec.push_back(cluster)\n",
|
||||
"\n",
|
||||
"eta = calculate_eta2(cluster)\n",
|
||||
"print(\"eta: \", eta)\n",
|
||||
"bin_size = (hist.axes[0].edges[-1] - hist.axes[0].edges[0])/hist.axes[0].edges.shape[0]\n",
|
||||
"\n",
|
||||
"bin_index_x = int((eta[0] - hist.axes[0].edges[0])/bin_size)\n",
|
||||
"bin_index_y = int((eta[1] - hist.axes[1].edges[0])/bin_size)\n",
|
||||
"\n",
|
||||
"print(\"distance x:\", uniform_etax[bin_index_x, bin_index_y, 0])\n",
|
||||
"print(\"distance y:\", uniform_etay[bin_index_x, bin_index_y, 0])\n",
|
||||
"\n",
|
||||
"photon_hit = interpolator.interpolate(clustervec)\n",
|
||||
"\n",
|
||||
"print(photon_hit)\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 165,
|
||||
"id": "dadb07f2",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"previous center: (750.0, 750.0)\n",
|
||||
"interpolated center: (-0.3846153846153846,-0.2727272727272727)\n",
|
||||
"scaled interpolated center: (403.84615384615387,431.8181818181818)\n",
|
||||
"actual center: ([650. 650.],[650. 650.])\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# scale to cluster pixel width \n",
|
||||
"cluster_center_in_subpixels = num_pixels*0.75\n",
|
||||
"scaled_photon_hit = calculate_scaled_photon_hit(cluster_center_in_subpixels, pixels_per_superpixel, photon_hit)\n",
|
||||
"\n",
|
||||
"print(f\"previous center: ({cluster_center_in_subpixels}, {cluster_center_in_subpixels})\")\n",
|
||||
"print(f\"interpolated center: ({photon_hit[0][0]},{photon_hit[0][1]})\")\n",
|
||||
"print(f\"scaled interpolated center: ({scaled_photon_hit[0]},{scaled_photon_hit[1]})\")\n",
|
||||
"print(f\"actual center: ({mean/pixel_width},{mean/pixel_width})\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 166,
|
||||
"id": "e6968416",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"Text(0, 0.5, 'y_0')"
|
||||
]
|
||||
},
|
||||
"execution_count": 166,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 640x480 with 2 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"plt.imshow(base_frame) \n",
|
||||
"\n",
|
||||
"plt.colorbar()\n",
|
||||
"\n",
|
||||
"plt.axvline(x=pixels_per_superpixel, color='black', linestyle='--', linewidth=0.5)\n",
|
||||
"plt.axhline(y=pixels_per_superpixel, color='black', linestyle='--', linewidth=0.5)\n",
|
||||
"\n",
|
||||
"plt.scatter(mean/pixel_width, mean/pixel_width, color='red', s=40, marker='x', label='Actual photon hit')\n",
|
||||
"plt.scatter(scaled_photon_hit[0], scaled_photon_hit[1], color = 'blue', s=40, marker='x', label='interpolated photon hit')\n",
|
||||
"\n",
|
||||
"plt.xlabel('x_0')\n",
|
||||
"plt.ylabel('y_0')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "ba2c856e",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## 3x3 Cluster"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 75,
|
||||
"id": "b4e274ed",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from aare._aare import Cluster3x3d, ClusterVector_Cluster3x3d"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 167,
|
||||
"id": "d9b6c7ba",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"Text(0, 0.5, 'y_0')"
|
||||
]
|
||||
},
|
||||
"execution_count": 167,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 640x480 with 2 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# mean is in center quadrant \n",
|
||||
"variance = 10*pixel_width\n",
|
||||
"\n",
|
||||
"covariance_matrix = np.array([[variance, 0], [0, variance]])\n",
|
||||
"\n",
|
||||
"mean = (1 + 0.3)*(num_pixels/3)*pixel_width\n",
|
||||
"\n",
|
||||
"mean = np.array([mean, mean])\n",
|
||||
"\n",
|
||||
"base_frame = create_photon_hit_with_gaussian_distribution(mean, variance, data_points)\n",
|
||||
"\n",
|
||||
"pixels_per_superpixel = int(num_pixels/3)\n",
|
||||
"\n",
|
||||
"plt.imshow(base_frame) \n",
|
||||
"\n",
|
||||
"plt.colorbar()\n",
|
||||
"\n",
|
||||
"plt.axvline(x=pixels_per_superpixel, color='black', linestyle='--', linewidth=0.5)\n",
|
||||
"plt.axhline(y=pixels_per_superpixel, color='black', linestyle='--', linewidth=0.5)\n",
|
||||
"plt.axvline(x=2*pixels_per_superpixel, color='black', linestyle='--', linewidth=0.5)\n",
|
||||
"plt.axhline(y=2*pixels_per_superpixel, color='black', linestyle='--', linewidth=0.5)\n",
|
||||
"\n",
|
||||
"plt.xlabel('x_0')\n",
|
||||
"plt.ylabel('y_0')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 168,
|
||||
"id": "87f061a6",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"max energy: 636619772.3675814\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"### calculate eta distribution\n",
|
||||
"\n",
|
||||
"num_frames = 1000\n",
|
||||
"\n",
|
||||
"hist = bh.Histogram(\n",
|
||||
" bh.axis.Regular(100, -0.2, 1.2), \n",
|
||||
" bh.axis.Regular(100, -0.2, 1.2), bh.axis.Regular(1, 0, num_pixels*num_pixels*1/(variance*2*np.pi))) \n",
|
||||
"\n",
|
||||
"print(\"max energy: \", 4*num_pixels*num_pixels*1/(variance*2*np.pi))\n",
|
||||
"\n",
|
||||
"for frame_index in range(0, num_frames):\n",
|
||||
" mean_x = np.random.uniform(pixels_per_superpixel*pixel_width, 2*pixels_per_superpixel*pixel_width)\n",
|
||||
" mean_y = np.random.uniform(pixels_per_superpixel*pixel_width, 2*pixels_per_superpixel*pixel_width) \n",
|
||||
" frame = create_photon_hit_with_gaussian_distribution(np.array([mean_x, mean_y]), variance, data_points)\n",
|
||||
"\n",
|
||||
" cluster = Cluster3x3d(1, 1, np.array([frame[0:pixels_per_superpixel, 0:pixels_per_superpixel].sum(), \n",
|
||||
" frame[0:pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum(), \n",
|
||||
" frame[0:pixels_per_superpixel, 2*pixels_per_superpixel:3*pixels_per_superpixel].sum(), \n",
|
||||
" frame[pixels_per_superpixel:2*pixels_per_superpixel, 0:pixels_per_superpixel].sum(), \n",
|
||||
" frame[pixels_per_superpixel:2*pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum(), \n",
|
||||
" frame[pixels_per_superpixel:2*pixels_per_superpixel, 2*pixels_per_superpixel:3*pixels_per_superpixel].sum(), \n",
|
||||
" frame[2*pixels_per_superpixel:3*pixels_per_superpixel, 0:pixels_per_superpixel].sum(), \n",
|
||||
" frame[2*pixels_per_superpixel:3*pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum(), \n",
|
||||
" frame[2*pixels_per_superpixel:3*pixels_per_superpixel, 2*pixels_per_superpixel:3*pixels_per_superpixel].sum()], dtype=np.float64))\n",
|
||||
" \n",
|
||||
" eta2 = calculate_eta2(cluster)\n",
|
||||
" #print(eta2)\n",
|
||||
" hist.fill(eta2[0], eta2[1], eta2[2])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 169,
|
||||
"id": "cd109d25",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 640x480 with 2 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"plot_eta_distribution(hist)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 170,
|
||||
"id": "c38b2b9e",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"interpolator = Interpolator(hist, hist.axes[0].edges[:-1], hist.axes[1].edges[:-1], hist.axes[2].edges[:-1])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 171,
|
||||
"id": "04a9a588",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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51dffSVJuuGGG1rd58CBA0pJSWl1+5EjRzRixAglJSXp4Ycf1sCBA9WpUyft2bNH/+///b9m5+VyuTRx4kT98Y9/VO/evRnbDSBgyGvyujHy2v+8zsjI0NixY/XMM89o5syZ+vjjj7VhwwY988wzbS47og8Vb7QqKSlJNTU1zdaXl5cH/L0bvtRLS0ubzby5b98+9ejRw7IuWPejbChXWVlZs20trWsqJSVFDz30kB566CF99dVX3qvpY8aM0b/+9S+/ytDWc22trN/85je9z0/2u276s/ZXW3+H7dW9e3fV19fr66+/toS5MUZlZWXeCWbaoqFsCxcubHX22YyMjJO+xttvv619+/Zp7dq13qvmklq9f2hpaaluv/12nXPOOfr44491zz336Mknn2xz2QFEH/K69XKR16dGXrctr++66y699NJLeuONN7R69Wp17dq1WW8FoCV0NUer+vfvr/3793uvJkpSbW2t3nrrrYC/d0M3tN/85jeW9R988IF27Nih7373uwEvQ0tOP/10ZWZmasWKFTLGeNfv3r1bGzdubNNrZWRkaOLEifrBD36gTz75REePHpUk731R29Py0JLly5dbnm/cuFG7d+/2zn4qnfhd//3vf7fs9+mnn+qTTz6xrGtL2YL1O2x4nabv89prr6m6urpd73PBBReoa9eu2r59u4YOHdri0tDi0trPpOEfrqb3uW3pqrjb7dYPfvADuVwu/elPf9L8+fO1cOFCrVq1qs1lBxB9yOvmyGvyOhB5LUn5+fkqKCjQI488ouXLl2vixIknbVEHGtDijVaNHTtWDz74oL7//e/r3nvv1fHjx/Xkk0/K7XYH/L1PP/10/fjHP9bChQsVExOj0aNH64svvtBPf/pTZWdna/r06QEvQ0tiYmL0s5/9TJMnT9Z1112nH/3oRzp06JDmzp3bYhexps477zxdddVVGjx4sLp166YdO3bopZde0vDhw733MW0Y1/vII49o9OjRio2N1eDBg73B0VabN2/W5MmT9b3vfU979uzR7Nmz1adPH02dOtW7z7hx4/TDH/5QU6dO1fXXX6/du3fr0UcfbdYd7Bvf+IaSk5O1fPly5eXlqXPnzsrKylJWVlaz9w3W7/Cyyy7TqFGjdN9996mqqkoXXHCB/v73v2vOnDk699xz29Vlu3Pnzlq4cKEmTJigAwcO6IYbblCvXr309ddf66OPPtLXX3+txYsXS/L9vp544glNmDBB8fHxOv3001VQUKBu3bppypQpmjNnjuLj47V8+XJ99NFHzd5vzpw52rBhg9asWaPevXvrJz/5idatW6dJkybp3HPPVW5urr0fEoCIRl43R16T14HI6wZ33XWXxo4dK5fLZfn9ACcLine truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1000x500 with 4 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"uniform_etax = interpolator.get_ietax()\n",
|
||||
"uniform_etay = interpolator.get_ietay()\n",
|
||||
"\n",
|
||||
"plot_uniform_eta_distribution(uniform_etax, uniform_etay, [hist.axes[0].edges[0], hist.axes[0].edges[-1]])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 172,
|
||||
"id": "9e00f659",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"\n",
|
||||
"cluster = Cluster3x3d(1, 1, np.array([base_frame[0:pixels_per_superpixel, 0:pixels_per_superpixel].sum(), \n",
|
||||
" base_frame[0:pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum(), \n",
|
||||
" base_frame[0:pixels_per_superpixel, 2*pixels_per_superpixel:3*pixels_per_superpixel].sum(), \n",
|
||||
" base_frame[pixels_per_superpixel:2*pixels_per_superpixel, 0:pixels_per_superpixel].sum(), \n",
|
||||
" base_frame[pixels_per_superpixel:2*pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum(), \n",
|
||||
" base_frame[pixels_per_superpixel:2*pixels_per_superpixel, 2*pixels_per_superpixel:3*pixels_per_superpixel].sum(), \n",
|
||||
" base_frame[2*pixels_per_superpixel:3*pixels_per_superpixel, 0:pixels_per_superpixel].sum(), \n",
|
||||
" base_frame[2*pixels_per_superpixel:3*pixels_per_superpixel, pixels_per_superpixel:2*pixels_per_superpixel].sum(), \n",
|
||||
" base_frame[2*pixels_per_superpixel:3*pixels_per_superpixel, 2*pixels_per_superpixel:3*pixels_per_superpixel].sum()], dtype=np.float64))\n",
|
||||
"clustervec = ClusterVector_Cluster3x3d()\n",
|
||||
"clustervec.push_back(cluster)\n",
|
||||
"\n",
|
||||
"photon_hit = interpolator.interpolate(clustervec)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 173,
|
||||
"id": "2f878b6c",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"previous center: (499.5, 499.5)\n",
|
||||
"interpolated center: (0.6521739130434783,0.6140350877192983)\n",
|
||||
"scaled interpolated center: (441.5869565217391,435.2368421052632)\n",
|
||||
"actual center: ([433.33333333 433.33333333],[433.33333333 433.33333333])\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"## scale to cluster pixel width \n",
|
||||
"cluster_center_in_subpixels = (1+0.5)*pixels_per_superpixel\n",
|
||||
"\n",
|
||||
"scaled_photon_hit = calculate_scaled_photon_hit(cluster_center_in_subpixels, pixels_per_superpixel, photon_hit)\n",
|
||||
"\n",
|
||||
"print(f\"previous center: ({cluster_center_in_subpixels}, {cluster_center_in_subpixels})\")\n",
|
||||
"print(f\"interpolated center: ({photon_hit[0][0]},{photon_hit[0][1]})\")\n",
|
||||
"print(f\"scaled interpolated center: ({scaled_photon_hit[0]},{scaled_photon_hit[1]})\")\n",
|
||||
"print(f\"actual center: ({mean/pixel_width},{mean/pixel_width})\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 174,
|
||||
"id": "1b9a9823",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"Text(0, 0.5, 'y_0')"
|
||||
]
|
||||
},
|
||||
"execution_count": 174,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 640x480 with 2 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"plt.imshow(base_frame) \n",
|
||||
"\n",
|
||||
"plt.colorbar()\n",
|
||||
"\n",
|
||||
"plt.axvline(x=pixels_per_superpixel, color='black', linestyle='--', linewidth=0.5)\n",
|
||||
"plt.axhline(y=pixels_per_superpixel, color='black', linestyle='--', linewidth=0.5)\n",
|
||||
"plt.axvline(x=2*pixels_per_superpixel, color='black', linestyle='--', linewidth=0.5)\n",
|
||||
"plt.axhline(y=2*pixels_per_superpixel, color='black', linestyle='--', linewidth=0.5)\n",
|
||||
"\n",
|
||||
"plt.scatter(mean/pixel_width, mean/pixel_width, color='red', s=40, marker='x', label='Actual photon hit')\n",
|
||||
"plt.scatter(scaled_photon_hit[0], scaled_photon_hit[1], color = 'blue', s=40, marker='x', label='interpolated photon hit')\n",
|
||||
"\n",
|
||||
"plt.xlabel('x_0')\n",
|
||||
"plt.ylabel('y_0')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "1698728e",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "base",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.11.11"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
Reference in new issue
Block a user