From 244a624af7e646c04895c38575af366b4b5e4341 Mon Sep 17 00:00:00 2001 From: cetin Date: Tue, 26 Sep 2023 12:18:03 +0200 Subject: [PATCH] finding shared tracks --- D_tasks.ipynb | 184 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 118 insertions(+), 66 deletions(-) diff --git a/D_tasks.ipynb b/D_tasks.ipynb index e19af6f..e8369d3 100644 --- a/D_tasks.ipynb +++ b/D_tasks.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 73, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -21,7 +21,7 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 29, "metadata": {}, "outputs": [], "source": [ @@ -38,7 +38,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -47,7 +47,7 @@ "0.5759057568348522" ] }, - "execution_count": 75, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -63,7 +63,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -72,7 +72,7 @@ "0.7960893854748603" ] }, - "execution_count": 76, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -94,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -103,7 +103,7 @@ "0.5568703211784594" ] }, - "execution_count": 77, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -126,7 +126,7 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -147,7 +147,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -184,7 +184,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ @@ -213,7 +213,7 @@ }, { "cell_type": "code", - "execution_count": 81, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ @@ -244,7 +244,7 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 37, "metadata": {}, "outputs": [], "source": [ @@ -282,7 +282,7 @@ }, { "cell_type": "code", - "execution_count": 83, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -340,7 +340,7 @@ }, { "cell_type": "code", - "execution_count": 84, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -376,7 +376,7 @@ }, { "cell_type": "code", - "execution_count": 85, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -385,7 +385,7 @@ "-1.5438992626615335e-08" ] }, - "execution_count": 85, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -396,7 +396,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -444,7 +444,7 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -471,7 +471,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -505,49 +505,43 @@ }, { "cell_type": "code", - "execution_count": 102, + "execution_count": 44, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "6" - ] - }, - "execution_count": 102, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "2591\n", + "1908\n", + "4499\n" + ] } ], "source": [ "shared = np.array([0,1,0,1,1,2])\n", - "len(shared)" + "len(shared)\n", + "\n", + "both = ak.concatenate([found,lost])\n", + "print(ak.num(found,axis=0))\n", + "print(ak.num(lost,axis=0))\n", + "print(ak.num(both,axis=0))" ] }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 48, "metadata": {}, "outputs": [ { - "ename": "ValueError", - "evalue": "cannot broadcast records in equal", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m/work/cetin/Projektpraktikum/D_tasks.ipynb Cell 18\u001b[0m line \u001b[0;36m2\n\u001b[1;32m 20\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mlen\u001b[39m(temp)\u001b[39m<\u001b[39m\u001b[39m2\u001b[39m:\n\u001b[1;32m 21\u001b[0m \u001b[39mcontinue\u001b[39;00m\n\u001b[0;32m---> 22\u001b[0m \u001b[39melif\u001b[39;00m \u001b[39mlen\u001b[39m(temp\u001b[39m==\u001b[39;49m\u001b[39m2\u001b[39;49m):\n\u001b[1;32m 23\u001b[0m possibles\u001b[39m.\u001b[39mappend(temp[\u001b[39m0\u001b[39m])\n\u001b[1;32m 24\u001b[0m possibles\u001b[39m.\u001b[39mappend(temp[\u001b[39m1\u001b[39m])\n", - "File \u001b[0;32m/work/cetin/software/miniconda3/envs/env1/lib/python3.11/site-packages/awkward/_operators.py:50\u001b[0m, in \u001b[0;36m_binary_method..func\u001b[0;34m(self, other)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[39mif\u001b[39;00m _disables_array_ufunc(other):\n\u001b[1;32m 49\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mNotImplemented\u001b[39m\n\u001b[0;32m---> 50\u001b[0m \u001b[39mreturn\u001b[39;00m ufunc(\u001b[39mself\u001b[39;49m, other)\n", - "File \u001b[0;32m/work/cetin/software/miniconda3/envs/env1/lib/python3.11/site-packages/awkward/highlevel.py:1402\u001b[0m, in \u001b[0;36mArray.__array_ufunc__\u001b[0;34m(self, ufunc, method, *inputs, **kwargs)\u001b[0m\n\u001b[1;32m 1400\u001b[0m name \u001b[39m=\u001b[39m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00m\u001b[39mtype\u001b[39m(ufunc)\u001b[39m.\u001b[39m\u001b[39m__module__\u001b[39m\u001b[39m}\u001b[39;00m\u001b[39m.\u001b[39m\u001b[39m{\u001b[39;00mufunc\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m\u001b[39m}\u001b[39;00m\u001b[39m.\u001b[39m\u001b[39m{\u001b[39;00mmethod\u001b[39m!s}\u001b[39;00m\u001b[39m\"\u001b[39m\n\u001b[1;32m 1401\u001b[0m \u001b[39mwith\u001b[39;00m ak\u001b[39m.\u001b[39m_errors\u001b[39m.\u001b[39mOperationErrorContext(name, inputs, kwargs):\n\u001b[0;32m-> 1402\u001b[0m \u001b[39mreturn\u001b[39;00m ak\u001b[39m.\u001b[39;49m_connect\u001b[39m.\u001b[39;49mnumpy\u001b[39m.\u001b[39;49marray_ufunc(ufunc, method, inputs, kwargs)\n", - "File \u001b[0;32m/work/cetin/software/miniconda3/envs/env1/lib/python3.11/site-packages/awkward/_connect/numpy.py:442\u001b[0m, in \u001b[0;36marray_ufunc\u001b[0;34m(ufunc, method, inputs, kwargs)\u001b[0m\n\u001b[1;32m 439\u001b[0m \u001b[39massert\u001b[39;00m \u001b[39misinstance\u001b[39m(result, \u001b[39mtuple\u001b[39m) \u001b[39mand\u001b[39;00m \u001b[39mlen\u001b[39m(result) \u001b[39m==\u001b[39m \u001b[39m1\u001b[39m\n\u001b[1;32m 440\u001b[0m \u001b[39mreturn\u001b[39;00m result[\u001b[39m0\u001b[39m]\n\u001b[0;32m--> 442\u001b[0m out \u001b[39m=\u001b[39m ak\u001b[39m.\u001b[39;49m_do\u001b[39m.\u001b[39;49mrecursively_apply(\n\u001b[1;32m 443\u001b[0m inputs[where],\n\u001b[1;32m 444\u001b[0m unary_action,\n\u001b[1;32m 445\u001b[0m behavior,\n\u001b[1;32m 446\u001b[0m function_name\u001b[39m=\u001b[39;49mufunc\u001b[39m.\u001b[39;49m\u001b[39m__name__\u001b[39;49m,\n\u001b[1;32m 447\u001b[0m allow_records\u001b[39m=\u001b[39;49m\u001b[39mFalse\u001b[39;49;00m,\n\u001b[1;32m 448\u001b[0m )\n\u001b[1;32m 450\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 451\u001b[0m out \u001b[39m=\u001b[39m ak\u001b[39m.\u001b[39m_broadcasting\u001b[39m.\u001b[39mbroadcast_and_apply(\n\u001b[1;32m 452\u001b[0m inputs, action, behavior, allow_records\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m, function_name\u001b[39m=\u001b[39mufunc\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m\n\u001b[1;32m 453\u001b[0m )\n", - "File \u001b[0;32m/work/cetin/software/miniconda3/envs/env1/lib/python3.11/site-packages/awkward/_do.py:35\u001b[0m, in \u001b[0;36mrecursively_apply\u001b[0;34m(layout, action, behavior, depth_context, lateral_context, allow_records, keep_parameters, numpy_to_regular, return_simplified, return_array, function_name, regular_to_jagged)\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mrecursively_apply\u001b[39m(\n\u001b[1;32m 21\u001b[0m layout: Content \u001b[39m|\u001b[39m Record,\n\u001b[1;32m 22\u001b[0m action: ActionType,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 32\u001b[0m regular_to_jagged\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m,\n\u001b[1;32m 33\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m Content \u001b[39m|\u001b[39m Record \u001b[39m|\u001b[39m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m 34\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(layout, Content):\n\u001b[0;32m---> 35\u001b[0m \u001b[39mreturn\u001b[39;00m layout\u001b[39m.\u001b[39;49m_recursively_apply(\n\u001b[1;32m 36\u001b[0m action,\n\u001b[1;32m 37\u001b[0m behavior,\n\u001b[1;32m 38\u001b[0m \u001b[39m1\u001b[39;49m,\n\u001b[1;32m 39\u001b[0m copy\u001b[39m.\u001b[39;49mcopy(depth_context),\n\u001b[1;32m 40\u001b[0m lateral_context,\n\u001b[1;32m 41\u001b[0m {\n\u001b[1;32m 42\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mallow_records\u001b[39;49m\u001b[39m\"\u001b[39;49m: allow_records,\n\u001b[1;32m 43\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mkeep_parameters\u001b[39;49m\u001b[39m\"\u001b[39;49m: keep_parameters,\n\u001b[1;32m 44\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mnumpy_to_regular\u001b[39;49m\u001b[39m\"\u001b[39;49m: numpy_to_regular,\n\u001b[1;32m 45\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mregular_to_jagged\u001b[39;49m\u001b[39m\"\u001b[39;49m: regular_to_jagged,\n\u001b[1;32m 46\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mreturn_simplified\u001b[39;49m\u001b[39m\"\u001b[39;49m: return_simplified,\n\u001b[1;32m 47\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mreturn_array\u001b[39;49m\u001b[39m\"\u001b[39;49m: return_array,\n\u001b[1;32m 48\u001b[0m \u001b[39m\"\u001b[39;49m\u001b[39mfunction_name\u001b[39;49m\u001b[39m\"\u001b[39;49m: function_name,\n\u001b[1;32m 49\u001b[0m },\n\u001b[1;32m 50\u001b[0m )\n\u001b[1;32m 52\u001b[0m \u001b[39melif\u001b[39;00m \u001b[39misinstance\u001b[39m(layout, Record):\n\u001b[1;32m 53\u001b[0m out \u001b[39m=\u001b[39m recursively_apply(\n\u001b[1;32m 54\u001b[0m layout\u001b[39m.\u001b[39m_array,\n\u001b[1;32m 55\u001b[0m action,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 64\u001b[0m function_name,\n\u001b[1;32m 65\u001b[0m )\n", - "File \u001b[0;32m/work/cetin/software/miniconda3/envs/env1/lib/python3.11/site-packages/awkward/contents/indexedarray.py:1109\u001b[0m, in \u001b[0;36mIndexedArray._recursively_apply\u001b[0;34m(self, action, behavior, depth, depth_context, lateral_context, options)\u001b[0m\n\u001b[1;32m 1107\u001b[0m \u001b[39mreturn\u001b[39;00m result\n\u001b[1;32m 1108\u001b[0m \u001b[39melif\u001b[39;00m result \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m-> 1109\u001b[0m \u001b[39mreturn\u001b[39;00m continuation()\n\u001b[1;32m 1110\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 1111\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mAssertionError\u001b[39;00m(result)\n", - "File \u001b[0;32m/work/cetin/software/miniconda3/envs/env1/lib/python3.11/site-packages/awkward/contents/indexedarray.py:1072\u001b[0m, in \u001b[0;36mIndexedArray._recursively_apply..continuation\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1069\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mcontinuation\u001b[39m():\n\u001b[1;32m 1070\u001b[0m \u001b[39mreturn\u001b[39;00m make(\n\u001b[1;32m 1071\u001b[0m index,\n\u001b[0;32m-> 1072\u001b[0m content\u001b[39m.\u001b[39;49m_recursively_apply(\n\u001b[1;32m 1073\u001b[0m action,\n\u001b[1;32m 1074\u001b[0m behavior,\n\u001b[1;32m 1075\u001b[0m depth,\n\u001b[1;32m 1076\u001b[0m copy\u001b[39m.\u001b[39;49mcopy(depth_context),\n\u001b[1;32m 1077\u001b[0m lateral_context,\n\u001b[1;32m 1078\u001b[0m options,\n\u001b[1;32m 1079\u001b[0m ),\n\u001b[1;32m 1080\u001b[0m parameters\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_parameters \u001b[39mif\u001b[39;00m options[\u001b[39m\"\u001b[39m\u001b[39mkeep_parameters\u001b[39m\u001b[39m\"\u001b[39m] \u001b[39melse\u001b[39;00m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 1081\u001b[0m )\n", - "File \u001b[0;32m/work/cetin/software/miniconda3/envs/env1/lib/python3.11/site-packages/awkward/contents/recordarray.py:1226\u001b[0m, in \u001b[0;36mRecordArray._recursively_apply\u001b[0;34m(self, action, behavior, depth, depth_context, lateral_context, options)\u001b[0m\n\u001b[1;32m 1224\u001b[0m \u001b[39mreturn\u001b[39;00m result\n\u001b[1;32m 1225\u001b[0m \u001b[39melif\u001b[39;00m result \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m-> 1226\u001b[0m \u001b[39mreturn\u001b[39;00m continuation()\n\u001b[1;32m 1227\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 1228\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mAssertionError\u001b[39;00m(result)\n", - "File \u001b[0;32m/work/cetin/software/miniconda3/envs/env1/lib/python3.11/site-packages/awkward/contents/recordarray.py:1178\u001b[0m, in \u001b[0;36mRecordArray._recursively_apply..continuation\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1176\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mcontinuation\u001b[39m():\n\u001b[1;32m 1177\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m options[\u001b[39m\"\u001b[39m\u001b[39mallow_records\u001b[39m\u001b[39m\"\u001b[39m]:\n\u001b[0;32m-> 1178\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\n\u001b[1;32m 1179\u001b[0m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mcannot broadcast records in \u001b[39m\u001b[39m{\u001b[39;00moptions[\u001b[39m'\u001b[39m\u001b[39mfunction_name\u001b[39m\u001b[39m'\u001b[39m]\u001b[39m}\u001b[39;00m\u001b[39m\"\u001b[39m\n\u001b[1;32m 1180\u001b[0m )\n\u001b[1;32m 1181\u001b[0m \u001b[39mreturn\u001b[39;00m RecordArray(\n\u001b[1;32m 1182\u001b[0m [\n\u001b[1;32m 1183\u001b[0m content\u001b[39m.\u001b[39m_recursively_apply(\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1196\u001b[0m backend\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_backend,\n\u001b[1;32m 1197\u001b[0m )\n", - "\u001b[0;31mValueError\u001b[0m: cannot broadcast records in equal", - "\u001b[0m\nThis error occurred while calling\n\n numpy.equal.__call__(\n \n 2\n )" - ] + "data": { + "text/plain": [ + "'\\ndef shared_track(mc_arr, mc_itr):\\n for itr in mc_itr: #iterate over events\\n potential = mc_arr[mc_arr[\"event_count\"]==itr] #holds all pt of a single event\\n velo_idx = potential[\"velo_track_idx\"].to_numpy()\\n velo_idx_unis, mults = np.unique(velo_idx, return_counts=True)\\n print(velo_idx_unis, mults)\\n if any(x>1 for x in mults):\\n'" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -564,38 +558,89 @@ " velo_idx_unis, mults = np.unique(velo_idx, return_counts=True)\n", " print(velo_idx_unis, mults)\n", " if any(x>1 for x in mults):\n", - "\"\"\" \n", - "\n", - "possibles = np.array([])\n", - "\n", - "for itr in f_itr:\n", - " temp = found[found[\"event_count\"]==itr]\n", - " if len(temp)<2:\n", - " continue\n", - " else:\n", - " #iterate over cols in temp and append all with duplicate velo_track_idx, such that possibles is array with possible shared tracks particles\n", - " \n", - " \n" + "\"\"\" " ] }, { "cell_type": "code", - "execution_count": 42, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "2591" + "2" ] }, - "execution_count": 42, + "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "ak.num(found[\"event_count\"], axis=0)" + "#psb = ak.Array([])\n", + "global psb\n", + "count = 0\n", + "\n", + "for itr in f_itr:\n", + " temp = both[both[\"event_count\"]==itr]\n", + " if ak.num(temp,axis=0)>1:\n", + " #iterate over cols in temp and append all with duplicate velo_track_idx, such that possibles is array with possible shared tracks particles\n", + " #print(temp.tolist())\n", + " _jitr = temp[\"velo_track_idx\"].to_numpy()\n", + " jitr = np.unique(_jitr)\n", + " for jentry in jitr:\n", + " jtem = temp[temp[\"velo_track_idx\"]==jentry]\n", + " if ak.num(jtem,axis=0)>1:\n", + " if count==0:\n", + " psb = jtem\n", + " count=1\n", + " else:\n", + " psb = ak.concatenate([psb,jtem],axis=1)\n", + " else:\n", + " continue\n", + " else:\n", + " continue\n", + " \n", + "ak.num(psb, axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "_jitr = temp[\"velo_track_idx\"].to_numpy()\n", + " jitr = np.unique(_jitr)\n", + " for jentry in jitr:\n", + " jtem = temp[temp[\"velo_track_idx\"]==jentry]\n", + " if ak.num(jtem,axis=0)>1:\n", + " if count==0:\n", + " psb = jtem\n", + " count=1\n", + " else:\n", + " psb = ak.concatenate([psb,jtem],axis=1)\n", + " else:\n", + " continue" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "for epair in range(10):\n", + " print(\"possibles[\", str(epair), \"]= \", psb[epair].tolist())" ] }, { @@ -607,7 +652,14 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": {}, "outputs": [ {