454 lines
1.3 MiB
Plaintext
454 lines
1.3 MiB
Plaintext
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 1,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"import uproot\n",
|
||
|
"import numpy as np\n",
|
||
|
"import sys\n",
|
||
|
"import os\n",
|
||
|
"import matplotlib\n",
|
||
|
"import matplotlib.pyplot as plt\n",
|
||
|
"from mpl_toolkits import mplot3d\n",
|
||
|
"import itertools\n",
|
||
|
"import awkward as ak\n",
|
||
|
"import seaborn as sns\n",
|
||
|
"from scipy.optimize import curve_fit\n",
|
||
|
"%matplotlib inline"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 2,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"file = uproot.open(\"tracking_losses_ntuple_Bd2KstEE.root:PrDebugTrackingLosses.PrDebugTrackingTool/Tuple;1\")\n",
|
||
|
"#file = uproot.open(\"tracking_losses_ntuple_Dst0ToD0EE.root:PrDebugTrackingLosses.PrDebugTrackingTool/Tuple;1\")\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"#selektiere nur elektronen von B->K*ee und nur solche mit einem momentum von ueber 5 GeV \n",
|
||
|
"allcolumns = file.arrays()\n",
|
||
|
"found = allcolumns[(allcolumns.isElectron) & (~allcolumns.lost) & (allcolumns.fromSignal) & (allcolumns.p > 5e3)] #B: 9056\n",
|
||
|
"lost = allcolumns[(allcolumns.isElectron) & (allcolumns.lost) & (allcolumns.fromSignal) & (allcolumns.p > 5e3)] #B: 1466\n",
|
||
|
"\n",
|
||
|
"#ak.num(found, axis=0)\n",
|
||
|
"#ak.count(found, axis=None)\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 3,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"0.8606728758791105"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 3,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"def t_eff(found, lost):\n",
|
||
|
" sel = found[\"energy\"]\n",
|
||
|
" des = lost[\"energy\"]\n",
|
||
|
" return ak.count(sel,axis=None)/(ak.count(sel,axis=None)+ak.count(des,axis=None))\n",
|
||
|
"\n",
|
||
|
"t_eff(found, lost)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": []
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 4,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"0.96875"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 4,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"#finden wir die elektronen die keine bremsstrahlung gemacht haben mit hoher effizienz?\n",
|
||
|
"nobrem_found = found[found[\"brem_photons_pe_length\"]==0]\n",
|
||
|
"nobrem_lost = lost[lost[\"brem_photons_pe_length\"]==0]\n",
|
||
|
"\n",
|
||
|
"\"\"\"\n",
|
||
|
"die effizienz mit der wir elektronen finden, die keine bremsstrahlung gemacht haben, ist gut mit 0.9688.\n",
|
||
|
"allerdings haben wir hier nur sehr wenige teilchen (<100)\n",
|
||
|
"\"\"\"\n",
|
||
|
"\n",
|
||
|
"t_eff(nobrem_found, nobrem_lost)\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 5,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"0.8603431839847474"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 5,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"#wie viel energie relativ zur anfangsenergie verlieren die elektronen durch bremstrahlung und hat das einen einfluss darauf ob wir sie finden oder nicht?\n",
|
||
|
"brem_found = found[found[\"brem_photons_pe_length\"]!=0]\n",
|
||
|
"energy_found = ak.to_numpy(brem_found[\"energy\"])\n",
|
||
|
"eph_found = ak.to_numpy(ak.sum(brem_found[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
|
||
|
"energyloss_found = eph_found/energy_found\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"brem_lost = lost[lost[\"brem_photons_pe_length\"]!=0]\n",
|
||
|
"energy_lost = ak.to_numpy(brem_lost[\"energy\"])\n",
|
||
|
"eph_lost = ak.to_numpy(ak.sum(brem_lost[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
|
||
|
"energyloss_lost = eph_lost/energy_lost\n",
|
||
|
"\n",
|
||
|
"t_eff(brem_found,brem_lost)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 6,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"mean energyloss relative to initial energy (found): 0.6475128752780828\n",
|
||
|
"mean energyloss relative to initial energy (lost): 0.8241268441538472\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"mean_energyloss_found = ak.mean(energyloss_found)\n",
|
||
|
"mean_energyloss_lost = ak.mean(energyloss_lost)\n",
|
||
|
"print(\"mean energyloss relative to initial energy (found): \", mean_energyloss_found)\n",
|
||
|
"print(\"mean energyloss relative to initial energy (lost): \", mean_energyloss_lost)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 7,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 640x480 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"plt.hist(energyloss_lost, bins=200, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=\"lost\")\n",
|
||
|
"plt.hist(energyloss_found, bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=\"found\")\n",
|
||
|
"plt.xticks(np.arange(0,1,0.1), minor=True,)\n",
|
||
|
"plt.yticks(np.arange(0,10,1), minor=True)\n",
|
||
|
"plt.xlabel(r\"$E_\\gamma/E_0$\")\n",
|
||
|
"plt.ylabel(\"counts (normed)\")\n",
|
||
|
"plt.title(r'$E_{ph}/E_0$')\n",
|
||
|
"plt.legend()\n",
|
||
|
"plt.grid()\n",
|
||
|
"\n",
|
||
|
"\"\"\"\n",
|
||
|
"found: elektronen verlieren durchschnittlich 0.65 ihrer anfangsenergie durch bremsstrahlung\n",
|
||
|
"lost: elektronen verlieren durchschnittlich 0.82 ihrer anfangsenergie durch bremsstrahlung\n",
|
||
|
"\n",
|
||
|
"-> wir können sofort erkennen, dass verlorene elektronen im schnitt mehr energie durch bremsstrahlung verlieren als gefundene, \n",
|
||
|
"aber auch die rate der gefundenen elektronen steigt für raten nahe 1, wenn auch wesentlich schwächer als für verlorene elektronen.\n",
|
||
|
"die meisten verlorenen elektronen verlieren >0.8 ihrer anfangsenergie.\n",
|
||
|
"\"\"\"\n",
|
||
|
"\n",
|
||
|
"plt.show()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 8,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"#ist die shape der teilspur im scifi anders? (koenntest du zum beispiel durch vergleich der verteilungen der fit parameter studieren,\n",
|
||
|
"#in meiner thesis findest du das fitmodell -- ist einfach ein polynom dritten grades)\n",
|
||
|
"z_ref=8520 #mm\n",
|
||
|
"\n",
|
||
|
"def scifi_track(z, a, b, c, d):\n",
|
||
|
" return a + b*(z-z_ref) + c*(z-z_ref)**2 + d*(z-z_ref)**3\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 9,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"9056"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 9,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"scifi_found = found[found[\"scifi_hit_pos_x_length\"]>3]\n",
|
||
|
"scifi_lost = lost[lost[\"scifi_hit_pos_x_length\"]>3]\n",
|
||
|
"\n",
|
||
|
"scifi_x_found = scifi_found[\"scifi_hit_pos_x\"]\n",
|
||
|
"scifi_z_found = scifi_found[\"scifi_hit_pos_z\"]\n",
|
||
|
"\n",
|
||
|
"scifi_x_lost = scifi_lost[\"scifi_hit_pos_x\"]\n",
|
||
|
"scifi_z_lost = scifi_lost[\"scifi_hit_pos_z\"]\n",
|
||
|
"\n",
|
||
|
"ak.num(scifi_found[\"energy\"], axis=0)\n",
|
||
|
"#scifi_found.snapshot()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 10,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"scifi_fitpars_found = ak.ArrayBuilder()\n",
|
||
|
"\n",
|
||
|
"for i in range(0,ak.num(scifi_found[\"energy\"], axis=0)):\n",
|
||
|
" popt, pcov = curve_fit(scifi_track,ak.to_numpy(scifi_z_found[i,:]),ak.to_numpy(scifi_x_found[i,:]))\n",
|
||
|
" scifi_fitpars_found.begin_list()\n",
|
||
|
" scifi_fitpars_found.real(popt[0])\n",
|
||
|
" scifi_fitpars_found.real(popt[1])\n",
|
||
|
" scifi_fitpars_found.real(popt[2])\n",
|
||
|
" scifi_fitpars_found.real(popt[3])\n",
|
||
|
" scifi_fitpars_found.end_list()\n",
|
||
|
"\n",
|
||
|
"scifi_fitpars_lost = ak.ArrayBuilder()\n",
|
||
|
"\n",
|
||
|
"for i in range(0,ak.num(scifi_lost[\"energy\"], axis=0)):\n",
|
||
|
" popt, pcov = curve_fit(scifi_track,ak.to_numpy(scifi_z_lost[i,:]),ak.to_numpy(scifi_x_lost[i,:]))\n",
|
||
|
" scifi_fitpars_lost.begin_list()\n",
|
||
|
" scifi_fitpars_lost.real(popt[0])\n",
|
||
|
" scifi_fitpars_lost.real(popt[1])\n",
|
||
|
" scifi_fitpars_lost.real(popt[2])\n",
|
||
|
" scifi_fitpars_lost.real(popt[3])\n",
|
||
|
" scifi_fitpars_lost.end_list()\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"scifi_fitpars_lost = scifi_fitpars_lost.to_numpy()\n",
|
||
|
"scifi_fitpars_found = scifi_fitpars_found.to_numpy()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 12,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABPEAAANVCAYAAAAZd2vuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAD1JklEQVR4nOzdeVyU5f7/8ffI7oYrmyuau2mGpZALZmJumelRq4NaapGZKZWJaaItZpmHLJcsyspSzzlqq5lYgnqkTiqa5lJ5VMwgww1XFrl/f/Rjvg0z4IADM8Dr+XjMo+bic1/Xdd8zDB8/c1/3bTIMwxAAAAAAAAAAl1XF2RMAAAAAAAAAUDSKeAAAAAAAAICLo4gHAAAAAAAAuDiKeAAAAAAAAICLo4gHAAAAAAAAuDiKeAAAAAAAAICLo4gHAAAAAAAAuDiKeAAAAAAAAICLo4gHAAAAAAAAuDiKeEA5tXr1arVr104+Pj4ymUzavXu3YmNjZTKZLOIWL16s5cuXO2eSLu6jjz5SXFycs6dx3RITE2UymZSYmOjsqdht+fLlMplMOnr0qEX7jBkz1LhxY7m7u6tWrVqSpPDwcIWHh1+zT1d4r5tMJk2cONGpcwAAlH/kedfPGXleeHi42rdv7/B+mzZtqjFjxji839JkMpkUGxtr0fb111+rc+fOqlatmkwmkz7++ONCc8KCtm/frtjYWJ09e7bU5nwtY8aMUfXq1Z02PiBRxAPKpT/++EORkZFq3ry5NmzYoOTkZLVs2VLjxo1TcnKyRSzJXeEqShGvPBowYICSk5MVGBhobvvkk0/0wgsvaNSoUUpKStKmTZsk/fkeXrx48TX75L0OAKgIyPMcgzzPuZKTkzVu3Djzc8MwNHz4cHl4eOjTTz9VcnKyevbsaTMntGX79u2aPXu2U4t4gCtwd/YEABTfTz/9pJycHP39739Xz549ze1Vq1ZVw4YNnTgza5cvX5a3t7fVN8cV2eXLl+Xj4+PsaZTYpUuXVLVq1VIdo379+qpfv75F2759+yRJkyZNkp+fn7m9bdu2Dh8/JydHJpNJ7u78GQQAuBbyPNdW3vO8q1evKjc3V15eXqU6TteuXS2e//bbbzp9+rSGDBmi3r17W/ysYE7oCOX9dQIKw5l4QDkzZswYdevWTZI0YsQImUwm81LDgsssmjZtqh9//FFJSUkymUwymUxq2rSppP9bgrlixQpFR0crICBAPj4+6tmzp1JSUizG3LFjh0aOHKmmTZvKx8dHTZs21b333qtjx45ZxOWfDr9x40Y9+OCDql+/vqpWraqsrCz98ssveuCBB9SiRQtVrVpVDRo00KBBg7R3716LPvLn9dFHH+npp59WYGCgqlevrkGDBun333/X+fPn9dBDD6levXqqV6+eHnjgAV24cMGiD8MwtHjxYt10003y8fFR7dq1NWzYMP3vf/8zx4SHh+uLL77QsWPHzMfmr8cuOztbzz//vFq3bi0vLy/Vr19fDzzwgP744w+LsZo2baqBAwdq7dq16tSpk7y9vTV79uxCX7+EhAQNHjxYDRs2lLe3t2644QY9/PDDysjIKHSbvzp48KDuvPNOVa1aVfXq1VNUVJTOnz9vM3bTpk3q3bu3atasqapVq+q2227T119/bRGT/57ZtWuXhg0bptq1a6t58+aFjn/p0iU9+eSTCg4Olre3t+rUqaPOnTtr5cqVFnHfffedBg0apLp168rb21vNmzfX5MmTzT8vuHSiadOmmjFjhiTJ39/fYgmGPctp7Xmvf/DBB3riiSfUoEEDeXl56ZdfftEff/yhCRMmqG3btqpevbr8/Px0++23a+vWrVZjZGVlac6cOWrTpo28vb1Vt25d9erVS9u3by90XoZhaPr06fLw8NBbb71V5D4AAECeV77zvHxbt25V165d5ePjowYNGmjmzJm6evXqNbfLycnR1KlTFRAQoKpVq6pbt27673//azM2PT1dDz/8sBo2bChPT08FBwdr9uzZys3NNcccPXpUJpNJL7/8sp5//nkFBwfLy8tLmzdvLnQO//rXv9SlSxf5+vqqatWqatasmR588EGLmLNnz+qJJ55Qs2bN5OXlJT8/P/Xv318HDx40x/w1l4uNjTUXoJ9++mmL96o9y2ljY2P11FNPSZKCg4PNr2f+pWSKep0WLVqkHj16yM/PT9WqVdONN96ol19+WTk5OVbjbNiwQb179zbve5s2bTR37txC5yVJ//nPf1SvXj0NHDhQFy9eLDIWcAROQQDKmZkzZ+rWW2/Vo48+qhdffFG9evVSzZo1bcauW7dOw4YNk6+vr3k5YsFv3aZPn66bb75Zb7/9ts6dO6fY2FiFh4crJSVFzZo1k/RnAtCqVSuNHDlSderUUVpampYsWaJbbrlF+/fvV7169Sz6fPDBBzVgwAB98MEHunjxojw8PPTbb7+pbt26eumll1S/fn2dPn1a7733nrp06aKUlBS1atXKal69evXS8uXLdfToUT355JO699575e7uro4dO2rlypVKSUnR9OnTVaNGDS1cuNC87cMPP6zly5dr0qRJmjdvnk6fPq05c+YoLCxMe/bskb+/vxYvXqyHHnpIhw8f1rp16yzGzsvL0+DBg7V161ZNnTpVYWFhOnbsmGbNmqXw8HDt2LHD4pu9Xbt26cCBA5oxY4aCg4NVrVq1Ql+/w4cPKzQ0VOPGjZOvr6+OHj2qBQsWqFu3btq7d688PDwK3fb3339Xz5495eHhocWLF8vf318ffvihzWuwrVixQqNGjdLgwYP13nvvycPDQ2+++ab69u2rr776yuob0HvuuUcjR45UVFRUkQlIdHS0PvjgAz3//PPq1KmTLl68qH379unUqVPmmK+++kqDBg1SmzZttGDBAjVu3FhHjx7Vxo0bC+133bp1WrRokeLj47Vhwwb5+voW62wDe97rMTExCg0N1dKlS1WlShX5+fmZk/VZs2YpICBAFy5c0Lp16xQeHq6vv/7a/A+n3Nxc9evXT1u3btXkyZN1++23Kzc3V99++61SU1MVFhZmNaesrCyNGTNGX3zxhT777DPdeeeddu8PAKByIs8r33me9GdxbeTIkZo2bZrmzJmjL774Qs8//7zOnDmjN954o8htx48fr/fff19PPvmk+vTpo3379umee+6x+sI2PT1dt956q6pUqaJnn31WzZs3V3Jysp5//nkdPXpU7777rkX8woUL1bJlS82fP181a9ZUixYtbI6fnJysESNGaMSIEYqNjZW3t7eOHTumb775xhxz/vx5devWTUePHtXTTz+tLl266MKFC9qyZYvS0tLUunVrq37HjRunjh076p577tFjjz2m++67r1hnAo4bN06nT5/W66+/rrVr15qX3v51tUZhr9Phw4d13333KTg4WJ6entqzZ49eeOEFHTx4UO+88455+/j4eI0fP149e/bU0qVL5efnp59++sm8UsSWf/7znxo1apQefPBBvf7663Jzc7N7n4ASMwCUO5s3bzYkGf/6178s2mfNmmUU/LVu166d0bNnz0L7uPnmm428vDxz+9GjRw0PDw9j3LhxhY6fm5trXLhwwahWrZrx2muvmdvfffddQ5IxatSoa+5Dbm6ukZ2dbbRo0cKYMmWK1bwGDRpkET958mRDkjFp0iSL9rvvvtuoU6eO+XlycrIhyXj11Vct4o4fP274+PgYU6dONbcNGDDAaNKkidXcVq5caUgy1qxZY9H+/fffG5KMxYsXm9uaNGliuLm5GYcOHbrmPheUl5dn5OTkGMeOHTMkGZ988kmR8U8//bRhMpmM3bt3W7T36dPHkGRs3rzZMAzDuHjxolGnTh2rY3j16lWjY8eOxq233mpuy3/PPPvss3bNuX379sbdd99dZEzz5s2N5s2bG5cvXy40Jv+9cuTIEau5/PHHHxaxPXv2tPkeLuha7/UePXpcs4/c3FwjJyfH6N27tzFkyBBz+/vvv29IMt56660it5dkPProo8apU6eMbt26GQ0aNLB6vQAAKAp53v8pb3lez549beZ048ePN6pUqWIcO3as0G0PHDhgSLI
|
||
|
"text/plain": [
|
||
|
"<Figure size 1500x1000 with 4 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"fig, ((ax0, ax1), (ax2, ax3)) = plt.subplots(nrows=2, ncols=2, figsize=(15,10))\n",
|
||
|
"\n",
|
||
|
"ax0.hist(scifi_fitpars_found[:,0], bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$a_x$ found\")\n",
|
||
|
"ax0.hist(scifi_fitpars_lost[:,0], bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$a_x$ lost\")\n",
|
||
|
"ax0.set_xlabel(\"a\")\n",
|
||
|
"ax0.set_ylabel(\"normed\")\n",
|
||
|
"ax0.set_title(\"fitparameter a der scifi track\")\n",
|
||
|
"ax0.legend()\n",
|
||
|
"\n",
|
||
|
"ax1.hist(scifi_fitpars_found[:,1], bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$b_x$ found\")\n",
|
||
|
"ax1.hist(scifi_fitpars_lost[:,1], bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$b_x$ lost\")\n",
|
||
|
"ax1.set_xlabel(\"b\")\n",
|
||
|
"ax1.set_ylabel(\"normed\")\n",
|
||
|
"ax1.set_title(\"fitparameter b der scifi track\")\n",
|
||
|
"ax1.legend()\n",
|
||
|
"\n",
|
||
|
"ax2.hist(scifi_fitpars_found[:,2], bins=500, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$c_x$ found\")\n",
|
||
|
"ax2.hist(scifi_fitpars_lost[:,2], bins=500, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$c_x$ lost\")\n",
|
||
|
"ax2.set_xlim([-3e-5,3e-5])\n",
|
||
|
"ax2.set_xticks(np.arange(-3e-5,3.5e-5,1e-5),minor=False)\n",
|
||
|
"ax2.set_xlabel(\"c\")\n",
|
||
|
"ax2.set_ylabel(\"normed\")\n",
|
||
|
"ax2.set_title(\"fitparameter c der scifi track\")\n",
|
||
|
"ax2.legend()\n",
|
||
|
"\n",
|
||
|
"ax3.hist(scifi_fitpars_found[:,3], bins=500, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$d_x$ found\")\n",
|
||
|
"ax3.hist(scifi_fitpars_lost[:,3], bins=500, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$d_x$ lost\")\n",
|
||
|
"ax3.set(xlim=(-5e-8,5e-8))\n",
|
||
|
"ax3.text(-4e-8,3e8,\"d negligible <1e-7\")\n",
|
||
|
"ax3.set_xlabel(\"d\")\n",
|
||
|
"ax3.set_ylabel(\"normed\")\n",
|
||
|
"ax3.set_title(\"fitparameter d der scifi track\")\n",
|
||
|
"ax3.legend()\n",
|
||
|
"\n",
|
||
|
"plt.show()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 136,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"-4.6785491318157854e-07"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 136,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"np.min(scifi_fitpars_found[:,3])"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 105,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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rpyYxvnoo49y/fXXc8EFF/DYY4+RSqW49957WbFiBa+//vpEUPB+bd68mebmZr7//e9jMBi49957ufzyy+no6KCmpgaA119/nUsvvZRFixbx+OOPk8vluPfeeyeClHdz//3387nPfY6enh6eeeaZM9a57777qK+v59/+7d8wmUzU1dWRSqXw+/380z/9E6WlpaTTabZs2cIVV1zBAw88wI033jjx/ptvvplHHnmEW265he9///uoVCoOHTr0jmuWiKLIN77xDe677z5++9vfTiShHn/8cW699Va+/OUv82//9m/IZDK6u7s5ceLEu/YxmUyycuVKenp6uOuuu5g+fTq7du3innvu4ciRI2zevHliSsett95KKBTiD3/4A/DOT8r19/ezfv16zjvvPH73u99hsVgYGRnh5ZdfJp1Oo9PpyGazrF27ll27dnHbbbexatUqstkse/fuZXBwkMWLF5923PXr17Nnzx4WLVrElVdeye233/6ufXs3n/nMZ1i/fj2PPvooQ0NDfOMb3+CTn/wkW7duPWP94uJiXn75ZS666CJuueUWPvOZzwBMJAZvuOEGDh06xL/+679SX19PMBjk0KFD+Hy+v7qNEolEIpGc6+655x7uuOMOrr32Wu655x58Ph933nknixYtorm5mbq6OgDWrVs3EaNVVFTg9XrZvXs3wWAQOLk8yJVXXonZbJ5YruPdZl7s2bOHVatWsXLlSr7zne8AnHF5kfXr1/Pwww8Ti8VQKpWMjo5it9v50Y9+hMPhwO/389BDD7FgwQIOHz7M5MmTgZM3E5cuXUp/fz/f/OY3WbBgAdFolJ07dzI2NkZDQ8NpbQoGg1xxxRW0tbWxY8cO5syZA8DXv/51Hn74YX74wx8ya9YsYrEYLS0t7xlDdHR0sHjxYgoLC7nvvvuw2+088sgj3HzzzbhcLv75n//5fcdOZxNPjoyMMG/ePDKZDHfccQfTp0/H5/PxyiuvEAgEcDqdpx333X4nvB+ZTIZLLrmEW265hdtvv52dO3fygx/8ALPZzHe/+90zvmf9+vXcfffd3HHHHfzyl79k9uzZANTW1hKLxVizZg3V1dX88pe/xOl0Mj4+zrZt24hEIu+7fRKJBBAlEsk/jG3btomA+OSTT06U5XI5saSkRJw2bZqYy+UmyiORiFhYWCguXrx4ouymm24SKysrTzvu9773PfHt/zsBRKfTKYbD4Ymy8fFxUSaTiffcc89E2YIFC8SSkhIxkUhMlIXDYdFms512zDNZv379GdvU19cnAmJtba2YTqff9RjZbFbMZDLiLbfcIs6aNWuifOfOnSIgfvvb337X91dWVorr168X4/G4uHHjRtFsNotbtmw5pc6XvvQl0WKxvGd/3u7Xv/61CIh//OMfTyn/8Y9/LALiq6++OlG2fPlyccqUKe95zKeeekoExCNHjrxjnd///vciIP7mN79512NVVlaKN9100yllgPjFL37xlLK3vnvbtm171+M98MADIiDeeuutp5Tfe++9IiCOjY1NlC1fvlxcvnz5xN8ej0cExO9973unHddgMIi33Xbbu55bIpFIJJKPs7eusX19faIoimIgEBC1Wq24bt26U+oNDg6KarVavO6660RRFEWv1ysC4s9//vN3Pf6UKVNOuS6/F71ef1oM8ZftvPH
|
||
|
"text/plain": [
|
||
|
"<Figure size 1500x600 with 2 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(15,6))\n",
|
||
|
"\n",
|
||
|
"for i in range(0,ak.num(scifi_found[\"energy\"], axis=0)):\n",
|
||
|
" z_coord = np.linspace(scifi_z_found[i,0],12000,300)\n",
|
||
|
" fit = scifi_track(z_coord, *scifi_fitpars_found[i])\n",
|
||
|
" ax0.plot(z_coord, fit, \"-\", lw=0.5)\n",
|
||
|
" ax0.errorbar(ak.to_numpy(scifi_z_found[i,:]),ak.to_numpy(scifi_x_found[i,:]),fmt=\".\",ms=2)\n",
|
||
|
"\n",
|
||
|
"#ax0.legend()\n",
|
||
|
"ax0.set_xlabel(\"z [mm]\")\n",
|
||
|
"ax0.set_ylabel(\"x [mm]\")\n",
|
||
|
"ax0.set_title(\"found tracks of scifi hits\")\n",
|
||
|
"ax0.set(xlim=(7e3,12000), ylim=(-4000,4000))\n",
|
||
|
"ax0.grid()\n",
|
||
|
"\n",
|
||
|
"for i in range(0,ak.num(scifi_lost[\"energy\"], axis=0)):\n",
|
||
|
" z_coord = np.linspace(scifi_z_lost[i,0],12000,300)\n",
|
||
|
" fit = scifi_track(z_coord, *scifi_fitpars_lost[i])\n",
|
||
|
" ax1.plot(z_coord, fit, \"-\", lw=0.5)\n",
|
||
|
" ax1.errorbar(ak.to_numpy(scifi_z_lost[i,:]),ak.to_numpy(scifi_x_lost[i,:]),fmt=\".\",ms=2)\n",
|
||
|
"\n",
|
||
|
"#ax1.legend()\n",
|
||
|
"ax1.set_xlabel(\"z [mm]\")\n",
|
||
|
"ax1.set_ylabel(\"x [mm]\")\n",
|
||
|
"ax1.set_title(\"lost tracks of scifi hits\")\n",
|
||
|
"ax1.set(xlim=(7e3,12000), ylim=(-4000,4000))\n",
|
||
|
"ax1.grid()\n",
|
||
|
"\n",
|
||
|
"plt.show()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": []
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": []
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": []
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": []
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": []
|
||
|
}
|
||
|
],
|
||
|
"metadata": {
|
||
|
"kernelspec": {
|
||
|
"display_name": "env1",
|
||
|
"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.5"
|
||
|
},
|
||
|
"orig_nbformat": 4
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 2
|
||
|
}
|