{ "cells": [ { "cell_type": "code", "execution_count": null, "id": "imports", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from pyprojroot import here" ] }, { "cell_type": "code", "execution_count": null, "id": "load", "metadata": {}, "outputs": [], "source": [ "data = pd.read_csv(here() / 'data/base/data.csv')" ] }, { "cell_type": "code", "execution_count": null, "id": "plot", "metadata": {}, "outputs": [], "source": [ "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6))\n", "\n", "# Scatter plot: Singles vs Coincidence\n", "geometric_mean_singles = np.sqrt(data['Singles Rate A (Hz)'] * data['Singles Rate B (Hz)'])\n", "ax1.scatter(geometric_mean_singles, data['Coincidence Rate (Hz)'],\n", " alpha=0.6, s=80, c=data['Visibility (%)'], cmap='viridis',\n", " edgecolors='black', linewidth=0.5)\n", "ax1.set_xlabel('Geometric Mean of Singles Rates (Hz)', fontsize=11)\n", "ax1.set_ylabel('Coincidence Rate (Hz)', fontsize=11)\n", "ax1.set_title('Coincidence vs Singles Rates', fontsize=12)\n", "ax1.grid(True, alpha=0.3)\n", "cbar1 = plt.colorbar(ax1.collections[0], ax=ax1)\n", "cbar1.set_label('Visibility (%)', fontsize=10)\n", "\n", "# CAR distribution\n", "ax2.hist(data['CAR'], bins=20, color='coral', alpha=0.7, edgecolor='black')\n", "ax2.set_xlabel('Coincidence-to-Accidental Ratio (CAR)', fontsize=11)\n", "ax2.set_ylabel('Frequency', fontsize=11)\n", "ax2.set_title('Distribution of CAR Values', fontsize=12)\n", "ax2.grid(True, alpha=0.3)\n", "\n", "plt.tight_layout()\n", "plt.savefig(here() / 'output/plots/coincidence_rates.png', dpi=300, bbox_inches='tight')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 5 }