{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Activation foil analysis"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from libra_toolbox.neutron_detection.activation_foils import *\n",
"from data import foil_data\n",
"import pandas as pd\n",
"import pint_pandas"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" run | \n",
" generator | \n",
" flux | \n",
" error | \n",
"
\n",
" \n",
" | unit | \n",
" No Unit | \n",
" No Unit | \n",
" 1 / second | \n",
" No Unit | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 4 | \n",
" P383 | \n",
" 2.61e+08 | \n",
" 8.81e-02 | \n",
"
\n",
" \n",
" | 1 | \n",
" 4 | \n",
" P383 | \n",
" 2.67e+08 | \n",
" 8.81e-02 | \n",
"
\n",
" \n",
" | 2 | \n",
" 4 | \n",
" A325 | \n",
" 9.84e+07 | \n",
" 8.82e-02 | \n",
"
\n",
" \n",
" | 3 | \n",
" 4 | \n",
" A325 | \n",
" 1.06e+08 | \n",
" 8.82e-02 | \n",
"
\n",
" \n",
" | 4 | \n",
" 5 | \n",
" A325 | \n",
" 1.15e+08 | \n",
" 8.82e-02 | \n",
"
\n",
" \n",
" | 5 | \n",
" 5 | \n",
" A325 | \n",
" 1.17e+08 | \n",
" 8.82e-02 | \n",
"
\n",
" \n",
" | 6 | \n",
" 5 | \n",
" P383 | \n",
" 2.68e+08 | \n",
" 8.81e-02 | \n",
"
\n",
" \n",
" | 7 | \n",
" 5 | \n",
" P383 | \n",
" 2.74e+08 | \n",
" 8.81e-02 | \n",
"
\n",
" \n",
" | 8 | \n",
" 6 | \n",
" A325 | \n",
" 1.06e+08 | \n",
" 8.82e-02 | \n",
"
\n",
" \n",
" | 9 | \n",
" 6 | \n",
" A325 | \n",
" 1.07e+08 | \n",
" 8.82e-02 | \n",
"
\n",
" \n",
" | 10 | \n",
" 6 | \n",
" P383 | \n",
" 2.49e+08 | \n",
" 8.81e-02 | \n",
"
\n",
" \n",
" | 11 | \n",
" 6 | \n",
" P383 | \n",
" 2.46e+08 | \n",
" 8.81e-02 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" run generator flux error\n",
"unit No Unit No Unit 1 / second No Unit\n",
"0 4 P383 2.61e+08 8.81e-02\n",
"1 4 P383 2.67e+08 8.81e-02\n",
"2 4 A325 9.84e+07 8.82e-02\n",
"3 4 A325 1.06e+08 8.82e-02\n",
"4 5 A325 1.15e+08 8.82e-02\n",
"5 5 A325 1.17e+08 8.82e-02\n",
"6 5 P383 2.68e+08 8.81e-02\n",
"7 5 P383 2.74e+08 8.81e-02\n",
"8 6 A325 1.06e+08 8.82e-02\n",
"9 6 A325 1.07e+08 8.82e-02\n",
"10 6 P383 2.49e+08 8.81e-02\n",
"11 6 P383 2.46e+08 8.81e-02"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# make a pandas dataframe based on the foil data with columns for run, generator, flux and error\n",
"\n",
"irradiations = [\n",
" {\"t_on\": 0, \"t_off\": 12 * settings.ureg.h},\n",
" {\"t_on\": 24 * settings.ureg.h, \"t_off\": 36 * settings.ureg.h},\n",
"]\n",
"\n",
"data = {\n",
" \"run\": [],\n",
" \"generator\": [],\n",
" \"flux\": [],\n",
" \"error\": [],\n",
"}\n",
"\n",
"for name, foil in foil_data.items():\n",
" flux = explicit.get_neutron_flux(foil, irradiations)\n",
" error = explicit.get_neutron_flux_error(foil)\n",
" data[\"run\"].append(foil[\"run\"])\n",
" data[\"generator\"].append(foil[\"generator\"])\n",
" data[\"flux\"].append(flux.to(settings.ureg.s**-1))\n",
" data[\"error\"].append(error)\n",
"data[\"flux\"] = pd.Series(data[\"flux\"], dtype=\"pint[s**-1]\")\n",
"pd.options.display.float_format = '{:,.2e}'.format\n",
"df = pd.DataFrame(data)\n",
"df.pint.dequantify()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" run | \n",
" generator | \n",
" flux_mean | \n",
" flux_min | \n",
" flux_max | \n",
"
\n",
" \n",
" | unit | \n",
" No Unit | \n",
" No Unit | \n",
" 1 / second | \n",
" 1 / second | \n",
" 1 / second | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 4 | \n",
" A325 | \n",
" 1.02e+08 | \n",
" 9.84e+07 | \n",
" 1.06e+08 | \n",
"
\n",
" \n",
" | 1 | \n",
" 4 | \n",
" P383 | \n",
" 2.64e+08 | \n",
" 2.61e+08 | \n",
" 2.67e+08 | \n",
"
\n",
" \n",
" | 2 | \n",
" 5 | \n",
" A325 | \n",
" 1.16e+08 | \n",
" 1.15e+08 | \n",
" 1.17e+08 | \n",
"
\n",
" \n",
" | 3 | \n",
" 5 | \n",
" P383 | \n",
" 2.71e+08 | \n",
" 2.68e+08 | \n",
" 2.74e+08 | \n",
"
\n",
" \n",
" | 4 | \n",
" 6 | \n",
" A325 | \n",
" 1.06e+08 | \n",
" 1.06e+08 | \n",
" 1.07e+08 | \n",
"
\n",
" \n",
" | 5 | \n",
" 6 | \n",
" P383 | \n",
" 2.48e+08 | \n",
" 2.46e+08 | \n",
" 2.49e+08 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" run generator flux_mean flux_min flux_max\n",
"unit No Unit No Unit 1 / second 1 / second 1 / second\n",
"0 4 A325 1.02e+08 9.84e+07 1.06e+08\n",
"1 4 P383 2.64e+08 2.61e+08 2.67e+08\n",
"2 5 A325 1.16e+08 1.15e+08 1.17e+08\n",
"3 5 P383 2.71e+08 2.68e+08 2.74e+08\n",
"4 6 A325 1.06e+08 1.06e+08 1.07e+08\n",
"5 6 P383 2.48e+08 2.46e+08 2.49e+08"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#for each run number compute the average per generator\n",
"grouped_multiple = df.groupby(['run', 'generator']).agg({'flux': ['mean', 'min', 'max']})\n",
"grouped_multiple.columns = ['flux_mean', 'flux_min', 'flux_max']\n",
"grouped_multiple = grouped_multiple.reset_index()\n",
"grouped_multiple.pint.dequantify()\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "baby-paper-env",
"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.12.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}