{ "cells": [ { "cell_type": "markdown", "id": "fd53882c-29ef-4b7e-a159-738474d6f568", "metadata": {}, "source": [ "# Data structure in appletree" ] }, { "cell_type": "code", "execution_count": 1, "id": "5be47339-4fc8-41bb-8da2-aa2f88533939", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Using accurate Binomial, not Normal approximation\n", "Using aptext package from https://github.com/XENONnT/applefiles\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/xudc/appletree/appletree/__init__.py:44: UserWarning: You are running appletree on CPU, which usually results in low performance.\n", " warn(warning)\n" ] } ], "source": [ "import os\n", "\n", "import graphviz\n", "import pandas as pd\n", "import jax.numpy as jnp\n", "\n", "import appletree as apt\n", "from appletree.utils import get_file_path\n", "\n", "from IPython.display import SVG, display" ] }, { "cell_type": "code", "execution_count": 2, "id": "26dd8ac7-0abc-4521-9378-28b33eec3606", "metadata": {}, "outputs": [], "source": [ "apt.set_gpu_memory_usage(0.2)" ] }, { "cell_type": "code", "execution_count": 3, "id": "5c48559b-4c1b-47aa-8dde-f9a1ced31372", "metadata": {}, "outputs": [], "source": [ "data = pd.read_csv(get_file_path(\"data_Rn220.csv\"))\n", "bins_cs1, bins_cs2 = apt.utils.get_equiprob_bins_2d(\n", " data[[\"cs1\", \"cs2\"]].to_numpy(),\n", " [15, 15],\n", " order=[0, 1],\n", " x_clip=[0, 100],\n", " y_clip=[1e2, 1e4],\n", " which_np=jnp,\n", ")" ] }, { "cell_type": "code", "execution_count": 4, "id": "c91259f4-7573-40fa-9493-c0d68b04e710", "metadata": {}, "outputs": [], "source": [ "er = apt.ERBand(bins=[bins_cs1, bins_cs2], bins_type=\"irreg\")" ] }, { "cell_type": "code", "execution_count": 5, "id": "3e66343d-1a5d-493f-826c-6e3a930214d6", "metadata": {}, "outputs": [], "source": [ "er.deduce(data_names=[\"cs1\", \"cs2\"], func_name=\"er_simulate\")" ] }, { "cell_type": "code", "execution_count": 6, "id": "341c5d65-9319-4b46-84a9-9326dbe2d247", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "cs1\n", "\n", "\n", "cs1\n", "\n", "\n", "\n", "\n", "\n", "s1_area\n", "\n", "\n", "s1_area\n", "\n", "\n", "\n", "\n", "\n", "cs1->s1_area\n", "\n", "\n", "\n", "\n", "\n", "s1_correction\n", "\n", "\n", "s1_correction\n", "\n", "\n", "\n", "\n", "\n", "cs1->s1_correction\n", "\n", "\n", "\n", "\n", "\n", "num_s1_phd\n", "\n", "\n", "num_s1_phd\n", "\n", "\n", "\n", "\n", "\n", "s1_area->num_s1_phd\n", "\n", "\n", "\n", "\n", "\n", "num_s1_pe\n", "\n", "\n", "num_s1_pe\n", "\n", "\n", "\n", "\n", "\n", "s1_area->num_s1_pe\n", "\n", "\n", "\n", "\n", "\n", "num_photon\n", "\n", "\n", "num_photon\n", "\n", "\n", "\n", "\n", "\n", "num_s1_phd->num_photon\n", "\n", "\n", "\n", "\n", "\n", "s1_lce\n", "\n", "\n", "s1_lce\n", "\n", "\n", "\n", "\n", "\n", "num_s1_phd->s1_lce\n", "\n", "\n", "\n", "\n", "\n", "num_quanta\n", "\n", "\n", "num_quanta\n", "\n", "\n", "\n", "\n", "\n", "num_photon->num_quanta\n", "\n", "\n", "\n", "\n", "\n", "num_ion\n", "\n", "\n", "num_ion\n", "\n", "\n", "\n", "\n", "\n", "num_photon->num_ion\n", "\n", "\n", "\n", "\n", "\n", "recomb\n", "\n", "\n", "recomb\n", "\n", "\n", "\n", "\n", "\n", "num_photon->recomb\n", "\n", "\n", "\n", "\n", "\n", "energy\n", "\n", "\n", "energy\n", "\n", "\n", "\n", "\n", "\n", "num_quanta->energy\n", "\n", "\n", "\n", "\n", "\n", "batch_size\n", "\n", "\n", "batch_size\n", "\n", "\n", "\n", "\n", "\n", "energy->batch_size\n", "\n", "\n", "\n", "\n", "\n", "num_ion->num_quanta\n", "\n", "\n", "\n", "\n", "\n", "recomb_mean\n", "\n", "\n", "recomb_mean\n", "\n", "\n", "\n", "\n", "\n", "recomb->recomb_mean\n", "\n", "\n", "\n", "\n", "\n", "recomb_std\n", "\n", "\n", "recomb_std\n", "\n", "\n", "\n", "\n", "\n", "recomb->recomb_std\n", "\n", "\n", "\n", "\n", "\n", "recomb_mean->energy\n", "\n", "\n", "\n", "\n", "\n", "recomb_std->energy\n", "\n", "\n", "\n", "\n", "\n", "x\n", "\n", "\n", "x\n", "\n", "\n", "\n", "\n", "\n", "s1_lce->x\n", "\n", "\n", "\n", "\n", "\n", "y\n", "\n", "\n", "y\n", "\n", "\n", "\n", "\n", "\n", "s1_lce->y\n", "\n", "\n", "\n", "\n", "\n", "z\n", "\n", "\n", "z\n", "\n", "\n", "\n", "\n", "\n", "s1_lce->z\n", "\n", "\n", "\n", "\n", "\n", "x->batch_size\n", "\n", "\n", "\n", "\n", "\n", "y->batch_size\n", "\n", "\n", "\n", "\n", "\n", "z->batch_size\n", "\n", "\n", "\n", "\n", "\n", "num_s1_pe->num_s1_phd\n", "\n", "\n", "\n", "\n", "\n", "rec_x\n", "\n", "\n", "rec_x\n", "\n", "\n", "\n", "\n", "\n", "s1_correction->rec_x\n", "\n", "\n", "\n", "\n", "\n", "rec_y\n", "\n", "\n", "rec_y\n", "\n", "\n", "\n", "\n", "\n", "s1_correction->rec_y\n", "\n", "\n", "\n", "\n", "\n", "rec_z\n", "\n", "\n", "rec_z\n", "\n", "\n", "\n", "\n", "\n", "s1_correction->rec_z\n", "\n", "\n", "\n", "\n", "\n", "rec_x->x\n", "\n", "\n", "\n", "\n", "\n", "rec_x->y\n", "\n", "\n", "\n", "\n", "\n", "rec_x->z\n", "\n", "\n", "\n", "\n", "\n", "num_electron_drifted\n", "\n", "\n", "num_electron_drifted\n", "\n", "\n", "\n", "\n", "\n", "rec_x->num_electron_drifted\n", "\n", "\n", "\n", "\n", "\n", "num_electron\n", "\n", "\n", "num_electron\n", "\n", "\n", "\n", "\n", "\n", "num_electron_drifted->num_electron\n", "\n", "\n", "\n", "\n", "\n", "drift_survive_prob\n", "\n", "\n", "drift_survive_prob\n", "\n", "\n", "\n", "\n", "\n", "num_electron_drifted->drift_survive_prob\n", "\n", "\n", "\n", "\n", "\n", "num_electron->num_quanta\n", "\n", "\n", "\n", "\n", "\n", "num_electron->num_ion\n", "\n", "\n", "\n", "\n", "\n", "num_electron->recomb\n", "\n", "\n", "\n", "\n", "\n", "drift_survive_prob->z\n", "\n", "\n", "\n", "\n", "\n", "rec_y->x\n", "\n", "\n", "\n", "\n", "\n", "rec_y->y\n", "\n", "\n", "\n", "\n", "\n", "rec_y->z\n", "\n", "\n", "\n", "\n", "\n", "rec_y->num_electron_drifted\n", "\n", "\n", "\n", "\n", "\n", "rec_z->x\n", "\n", "\n", "\n", "\n", "\n", "rec_z->y\n", "\n", "\n", "\n", "\n", "\n", "rec_z->z\n", "\n", "\n", "\n", "\n", "\n", "rec_z->num_electron_drifted\n", "\n", "\n", "\n", "\n", "\n", "cs2\n", "\n", "\n", "cs2\n", "\n", "\n", "\n", "\n", "\n", "cs2->drift_survive_prob\n", "\n", "\n", "\n", "\n", "\n", "s2_area\n", "\n", "\n", "s2_area\n", "\n", "\n", "\n", "\n", "\n", "cs2->s2_area\n", "\n", "\n", "\n", "\n", "\n", "s2_correction\n", "\n", "\n", "s2_correction\n", "\n", "\n", "\n", "\n", "\n", "cs2->s2_correction\n", "\n", "\n", "\n", "\n", "\n", "num_s2_pe\n", "\n", "\n", "num_s2_pe\n", "\n", "\n", "\n", "\n", "\n", "s2_area->num_s2_pe\n", "\n", "\n", "\n", "\n", "\n", "num_s2_pe->x\n", "\n", "\n", "\n", "\n", "\n", "num_s2_pe->y\n", "\n", "\n", "\n", "\n", "\n", "num_s2_pe->num_electron_drifted\n", "\n", "\n", "\n", "\n", "\n", "s2_lce\n", "\n", "\n", "s2_lce\n", "\n", "\n", "\n", "\n", "\n", "num_s2_pe->s2_lce\n", "\n", "\n", "\n", "\n", "\n", "s2_lce->x\n", "\n", "\n", "\n", "\n", "\n", "s2_lce->y\n", "\n", "\n", "\n", "\n", "\n", "s2_correction->rec_x\n", "\n", "\n", "\n", "\n", "\n", "s2_correction->rec_y\n", "\n", "\n", "\n", "\n", "\n", "eff\n", "\n", "\n", "eff\n", "\n", "\n", "\n", "\n", "\n", "acc_s2_threshold\n", "\n", "\n", "acc_s2_threshold\n", "\n", "\n", "\n", "\n", "\n", "eff->acc_s2_threshold\n", "\n", "\n", "\n", "\n", "\n", "acc_s1_recon_eff\n", "\n", "\n", "acc_s1_recon_eff\n", "\n", "\n", "\n", "\n", "\n", "eff->acc_s1_recon_eff\n", "\n", "\n", "\n", "\n", "\n", "cut_acc_s1\n", "\n", "\n", "cut_acc_s1\n", "\n", "\n", "\n", "\n", "\n", "eff->cut_acc_s1\n", "\n", "\n", "\n", "\n", "\n", "cut_acc_s2\n", "\n", "\n", "cut_acc_s2\n", "\n", "\n", "\n", "\n", "\n", "eff->cut_acc_s2\n", "\n", "\n", "\n", "\n", "\n", "acc_s2_threshold->s2_area\n", "\n", "\n", "\n", "\n", "\n", "acc_s1_recon_eff->num_s1_phd\n", "\n", "\n", "\n", "\n", "\n", "cut_acc_s1->s1_area\n", "\n", "\n", "\n", "\n", "\n", "cut_acc_s2->s2_area\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "graph_tree = graphviz.Digraph(format=\"svg\", strict=True)\n", "_ = apt.add_deps_to_graph_tree(er, graph_tree)\n", "_ = apt.tree_to_svg(graph_tree, \"er_dtypes\")\n", "display(SVG(\"er_dtypes.svg\"))" ] }, { "cell_type": "code", "execution_count": 7, "id": "8cbf37d2-781e-400c-89a6-a6b9d77c8576", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "cS1\n", "\n", "\n", "cS1\n", "\n", "\n", "\n", "\n", "\n", "S1\n", "\n", "\n", "S1\n", "\n", "\n", "\n", "\n", "\n", "cS1->S1\n", "\n", "\n", "\n", "\n", "\n", "S1Correction\n", "\n", "\n", "S1Correction\n", "\n", "\n", "\n", "\n", "\n", "cS1->S1Correction\n", "\n", "\n", "\n", "\n", "\n", "PhotonDetection\n", "\n", "\n", "PhotonDetection\n", "\n", "\n", "\n", "\n", "\n", "S1->PhotonDetection\n", "\n", "\n", "\n", "\n", "\n", "S1PE\n", "\n", "\n", "S1PE\n", "\n", "\n", "\n", "\n", "\n", "S1->S1PE\n", "\n", "\n", "\n", "\n", "\n", "RecombinationER\n", "\n", "\n", "RecombinationER\n", "\n", "\n", "\n", "\n", "\n", "PhotonDetection->RecombinationER\n", "\n", "\n", "\n", "\n", "\n", "S1LCE\n", "\n", "\n", "S1LCE\n", "\n", "\n", "\n", "\n", "\n", "PhotonDetection->S1LCE\n", "\n", "\n", "\n", "\n", "\n", "Quanta\n", "\n", "\n", "Quanta\n", "\n", "\n", "\n", "\n", "\n", "RecombinationER->Quanta\n", "\n", "\n", "\n", "\n", "\n", "IonizationER\n", "\n", "\n", "IonizationER\n", "\n", "\n", "\n", "\n", "\n", "RecombinationER->IonizationER\n", "\n", "\n", "\n", "\n", "\n", "TrueRecombER\n", "\n", "\n", "TrueRecombER\n", "\n", "\n", "\n", "\n", "\n", "RecombinationER->TrueRecombER\n", "\n", "\n", "\n", "\n", "\n", "UniformEnergySpectra\n", "\n", "\n", "UniformEnergySpectra\n", "\n", "\n", "\n", "\n", "\n", "Quanta->UniformEnergySpectra\n", "\n", "\n", "\n", "\n", "\n", "IonizationER->Quanta\n", "\n", "\n", "\n", "\n", "\n", "mTI\n", "\n", "\n", "mTI\n", "\n", "\n", "\n", "\n", "\n", "TrueRecombER->mTI\n", "\n", "\n", "\n", "\n", "\n", "RecombFluct\n", "\n", "\n", "RecombFluct\n", "\n", "\n", "\n", "\n", "\n", "TrueRecombER->RecombFluct\n", "\n", "\n", "\n", "\n", "\n", "mTI->UniformEnergySpectra\n", "\n", "\n", "\n", "\n", "\n", "RecombFluct->UniformEnergySpectra\n", "\n", "\n", "\n", "\n", "\n", "PositionSpectra\n", "\n", "\n", "PositionSpectra\n", "\n", "\n", "\n", "\n", "\n", "S1LCE->PositionSpectra\n", "\n", "\n", "\n", "\n", "\n", "S1PE->PhotonDetection\n", "\n", "\n", "\n", "\n", "\n", "PositionRecon\n", "\n", "\n", "PositionRecon\n", "\n", "\n", "\n", "\n", "\n", "S1Correction->PositionRecon\n", "\n", "\n", "\n", "\n", "\n", "PositionRecon->PositionSpectra\n", "\n", "\n", "\n", "\n", "\n", "ElectronDrifted\n", "\n", "\n", "ElectronDrifted\n", "\n", "\n", "\n", "\n", "\n", "PositionRecon->ElectronDrifted\n", "\n", "\n", "\n", "\n", "\n", "ElectronDrifted->RecombinationER\n", "\n", "\n", "\n", "\n", "\n", "DriftLoss\n", "\n", "\n", "DriftLoss\n", "\n", "\n", "\n", "\n", "\n", "ElectronDrifted->DriftLoss\n", "\n", "\n", "\n", "\n", "\n", "DriftLoss->PositionSpectra\n", "\n", "\n", "\n", "\n", "\n", "cS2\n", "\n", "\n", "cS2\n", "\n", "\n", "\n", "\n", "\n", "cS2->DriftLoss\n", "\n", "\n", "\n", "\n", "\n", "S2\n", "\n", "\n", "S2\n", "\n", "\n", "\n", "\n", "\n", "cS2->S2\n", "\n", "\n", "\n", "\n", "\n", "S2Correction\n", "\n", "\n", "S2Correction\n", "\n", "\n", "\n", "\n", "\n", "cS2->S2Correction\n", "\n", "\n", "\n", "\n", "\n", "S2PE\n", "\n", "\n", "S2PE\n", "\n", "\n", "\n", "\n", "\n", "S2->S2PE\n", "\n", "\n", "\n", "\n", "\n", "S2PE->PositionSpectra\n", "\n", "\n", "\n", "\n", "\n", "S2PE->ElectronDrifted\n", "\n", "\n", "\n", "\n", "\n", "S2LCE\n", "\n", "\n", "S2LCE\n", "\n", "\n", "\n", "\n", "\n", "S2PE->S2LCE\n", "\n", "\n", "\n", "\n", "\n", "S2LCE->PositionSpectra\n", "\n", "\n", "\n", "\n", "\n", "S2Correction->PositionRecon\n", "\n", "\n", "\n", "\n", "\n", "Eff\n", "\n", "\n", "Eff\n", "\n", "\n", "\n", "\n", "\n", "S2Threshold\n", "\n", "\n", "S2Threshold\n", "\n", "\n", "\n", "\n", "\n", "Eff->S2Threshold\n", "\n", "\n", "\n", "\n", "\n", "S1ReconEff\n", "\n", "\n", "S1ReconEff\n", "\n", "\n", "\n", "\n", "\n", "Eff->S1ReconEff\n", "\n", "\n", "\n", "\n", "\n", "S1CutAccept\n", "\n", "\n", "S1CutAccept\n", "\n", "\n", "\n", "\n", "\n", "Eff->S1CutAccept\n", "\n", "\n", "\n", "\n", "\n", "S2CutAccept\n", "\n", "\n", "S2CutAccept\n", "\n", "\n", "\n", "\n", "\n", "Eff->S2CutAccept\n", "\n", "\n", "\n", "\n", "\n", "S2Threshold->S2\n", "\n", "\n", "\n", "\n", "\n", "S1ReconEff->PhotonDetection\n", "\n", "\n", "\n", "\n", "\n", "S1CutAccept->S1\n", "\n", "\n", "\n", "\n", "\n", "S2CutAccept->S2\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "graph_tree = graphviz.Digraph(format=\"svg\", strict=True)\n", "_ = apt.add_plugins_to_graph_tree(er, graph_tree)\n", "_ = apt.tree_to_svg(graph_tree, \"er_plugins\")\n", "display(SVG(\"er_plugins.svg\"))" ] }, { "cell_type": "code", "execution_count": 8, "id": "72eb24a3-9c20-4974-ad4e-70f7c2ebae26", "metadata": {}, "outputs": [], "source": [ "data = pd.read_csv(get_file_path(\"data_Neutron.csv\"))\n", "bins_num_s1_phd, bins_cs2 = apt.utils.get_equiprob_bins_2d(\n", " data[[\"num_s1_phd\", \"cs2\"]].to_numpy(),\n", " [8, 10],\n", " order=[0, 1],\n", " x_clip=[1.5, 9.5],\n", " y_clip=[1e2, 1e3],\n", " which_np=jnp,\n", ")" ] }, { "cell_type": "code", "execution_count": 9, "id": "a7e69af1-4c51-4228-a8ee-318ee0652f29", "metadata": {}, "outputs": [], "source": [ "nr = apt.NR(bins=[bins_num_s1_phd, bins_cs2], bins_type=\"irreg\")" ] }, { "cell_type": "code", "execution_count": 10, "id": "2089ab9b-acfa-4978-bc4c-c5e8cd1756c8", "metadata": {}, "outputs": [], "source": [ "nr.deduce(data_names=[\"num_s1_phd\", \"cs2\"], func_name=\"nr_simulate\")" ] }, { "cell_type": "code", "execution_count": 11, "id": "6ace13c7-dc2c-4bcc-9c4e-32531b50615c", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "cs1\n", "\n", "\n", "cs1\n", "\n", "\n", "\n", "\n", "\n", "s1_area\n", "\n", "\n", "s1_area\n", "\n", "\n", "\n", "\n", "\n", "cs1->s1_area\n", "\n", "\n", "\n", "\n", "\n", "s1_correction\n", "\n", "\n", "s1_correction\n", "\n", "\n", "\n", "\n", "\n", "cs1->s1_correction\n", "\n", "\n", "\n", "\n", "\n", "num_s1_phd\n", "\n", "\n", "num_s1_phd\n", "\n", "\n", "\n", "\n", "\n", "s1_area->num_s1_phd\n", "\n", "\n", "\n", "\n", "\n", "num_s1_pe\n", "\n", "\n", "num_s1_pe\n", "\n", "\n", "\n", "\n", "\n", "s1_area->num_s1_pe\n", "\n", "\n", "\n", "\n", "\n", "num_photon\n", "\n", "\n", "num_photon\n", "\n", "\n", "\n", "\n", "\n", "num_s1_phd->num_photon\n", "\n", "\n", "\n", "\n", "\n", "s1_lce\n", "\n", "\n", "s1_lce\n", "\n", "\n", "\n", "\n", "\n", "num_s1_phd->s1_lce\n", "\n", "\n", "\n", "\n", "\n", "energy\n", "\n", "\n", "energy\n", "\n", "\n", "\n", "\n", "\n", "num_photon->energy\n", "\n", "\n", "\n", "\n", "\n", "light_yield\n", "\n", "\n", "light_yield\n", "\n", "\n", "\n", "\n", "\n", "num_photon->light_yield\n", "\n", "\n", "\n", "\n", "\n", "batch_size\n", "\n", "\n", "batch_size\n", "\n", "\n", "\n", "\n", "\n", "energy->batch_size\n", "\n", "\n", "\n", "\n", "\n", "light_yield->energy\n", "\n", "\n", "\n", "\n", "\n", "x\n", "\n", "\n", "x\n", "\n", "\n", "\n", "\n", "\n", "s1_lce->x\n", "\n", "\n", "\n", "\n", "\n", "y\n", "\n", "\n", "y\n", "\n", "\n", "\n", "\n", "\n", "s1_lce->y\n", "\n", "\n", "\n", "\n", "\n", "z\n", "\n", "\n", "z\n", "\n", "\n", "\n", "\n", "\n", "s1_lce->z\n", "\n", "\n", "\n", "\n", "\n", "x->batch_size\n", "\n", "\n", "\n", "\n", "\n", "y->batch_size\n", "\n", "\n", "\n", "\n", "\n", "z->batch_size\n", "\n", "\n", "\n", "\n", "\n", "num_s1_pe->num_s1_phd\n", "\n", "\n", "\n", "\n", "\n", "rec_x\n", "\n", "\n", "rec_x\n", "\n", "\n", "\n", "\n", "\n", "s1_correction->rec_x\n", "\n", "\n", "\n", "\n", "\n", "rec_y\n", "\n", "\n", "rec_y\n", "\n", "\n", "\n", "\n", "\n", "s1_correction->rec_y\n", "\n", "\n", "\n", "\n", "\n", "rec_z\n", "\n", "\n", "rec_z\n", "\n", "\n", "\n", "\n", "\n", "s1_correction->rec_z\n", "\n", "\n", "\n", "\n", "\n", "rec_x->x\n", "\n", "\n", "\n", "\n", "\n", "rec_x->y\n", "\n", "\n", "\n", "\n", "\n", "rec_x->z\n", "\n", "\n", "\n", "\n", "\n", "num_electron_drifted\n", "\n", "\n", "num_electron_drifted\n", "\n", "\n", "\n", "\n", "\n", "rec_x->num_electron_drifted\n", "\n", "\n", "\n", "\n", "\n", "num_electron\n", "\n", "\n", "num_electron\n", "\n", "\n", "\n", "\n", "\n", "num_electron_drifted->num_electron\n", "\n", "\n", "\n", "\n", "\n", "drift_survive_prob\n", "\n", "\n", "drift_survive_prob\n", "\n", "\n", "\n", "\n", "\n", "num_electron_drifted->drift_survive_prob\n", "\n", "\n", "\n", "\n", "\n", "num_electron->energy\n", "\n", "\n", "\n", "\n", "\n", "charge_yield\n", "\n", "\n", "charge_yield\n", "\n", "\n", "\n", "\n", "\n", "num_electron->charge_yield\n", "\n", "\n", "\n", "\n", "\n", "charge_yield->energy\n", "\n", "\n", "\n", "\n", "\n", "drift_survive_prob->z\n", "\n", "\n", "\n", "\n", "\n", "rec_y->x\n", "\n", "\n", "\n", "\n", "\n", "rec_y->y\n", "\n", "\n", "\n", "\n", "\n", "rec_y->z\n", "\n", "\n", "\n", "\n", "\n", "rec_y->num_electron_drifted\n", "\n", "\n", "\n", "\n", "\n", "rec_z->x\n", "\n", "\n", "\n", "\n", "\n", "rec_z->y\n", "\n", "\n", "\n", "\n", "\n", "rec_z->z\n", "\n", "\n", "\n", "\n", "\n", "rec_z->num_electron_drifted\n", "\n", "\n", "\n", "\n", "\n", "cs2\n", "\n", "\n", "cs2\n", "\n", "\n", "\n", "\n", "\n", "cs2->drift_survive_prob\n", "\n", "\n", "\n", "\n", "\n", "s2_area\n", "\n", "\n", "s2_area\n", "\n", "\n", "\n", "\n", "\n", "cs2->s2_area\n", "\n", "\n", "\n", "\n", "\n", "s2_correction\n", "\n", "\n", "s2_correction\n", "\n", "\n", "\n", "\n", "\n", "cs2->s2_correction\n", "\n", "\n", "\n", "\n", "\n", "num_s2_pe\n", "\n", "\n", "num_s2_pe\n", "\n", "\n", "\n", "\n", "\n", "s2_area->num_s2_pe\n", "\n", "\n", "\n", "\n", "\n", "num_s2_pe->x\n", "\n", "\n", "\n", "\n", "\n", "num_s2_pe->y\n", "\n", "\n", "\n", "\n", "\n", "num_s2_pe->num_electron_drifted\n", "\n", "\n", "\n", "\n", "\n", "s2_lce\n", "\n", "\n", "s2_lce\n", "\n", "\n", "\n", "\n", "\n", "num_s2_pe->s2_lce\n", "\n", "\n", "\n", "\n", "\n", "s2_lce->x\n", "\n", "\n", "\n", "\n", "\n", "s2_lce->y\n", "\n", "\n", "\n", "\n", "\n", "s2_correction->rec_x\n", "\n", "\n", "\n", "\n", "\n", "s2_correction->rec_y\n", "\n", "\n", "\n", "\n", "\n", "eff\n", "\n", "\n", "eff\n", "\n", "\n", "\n", "\n", "\n", "acc_s2_threshold\n", "\n", "\n", "acc_s2_threshold\n", "\n", "\n", "\n", "\n", "\n", "eff->acc_s2_threshold\n", "\n", "\n", "\n", "\n", "\n", "acc_s1_recon_eff\n", "\n", "\n", "acc_s1_recon_eff\n", "\n", "\n", "\n", "\n", "\n", "eff->acc_s1_recon_eff\n", "\n", "\n", "\n", "\n", "\n", "cut_acc_s1\n", "\n", "\n", "cut_acc_s1\n", "\n", "\n", "\n", "\n", "\n", "eff->cut_acc_s1\n", "\n", "\n", "\n", "\n", "\n", "cut_acc_s2\n", "\n", "\n", "cut_acc_s2\n", "\n", "\n", "\n", "\n", "\n", "eff->cut_acc_s2\n", "\n", "\n", "\n", "\n", "\n", "acc_s2_threshold->s2_area\n", "\n", "\n", "\n", "\n", "\n", "acc_s1_recon_eff->num_s1_phd\n", "\n", "\n", "\n", "\n", "\n", "cut_acc_s1->s1_area\n", "\n", "\n", "\n", "\n", "\n", "cut_acc_s2->s2_area\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "graph_tree = graphviz.Digraph(format=\"svg\", strict=True)\n", "_ = apt.add_deps_to_graph_tree(nr, graph_tree)\n", "_ = apt.tree_to_svg(graph_tree, \"nr_dtypes\")\n", "display(SVG(\"nr_dtypes.svg\"))" ] }, { "cell_type": "code", "execution_count": 12, "id": "9aaf099d-5a02-4cb2-95fb-be67789fd0ac", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "cS1\n", "\n", "\n", "cS1\n", "\n", "\n", "\n", "\n", "\n", "S1\n", "\n", "\n", "S1\n", "\n", "\n", "\n", "\n", "\n", "cS1->S1\n", "\n", "\n", "\n", "\n", "\n", "S1Correction\n", "\n", "\n", "S1Correction\n", "\n", "\n", "\n", "\n", "\n", "cS1->S1Correction\n", "\n", "\n", "\n", "\n", "\n", "PhotonDetection\n", "\n", "\n", "PhotonDetection\n", "\n", "\n", "\n", "\n", "\n", "S1->PhotonDetection\n", "\n", "\n", "\n", "\n", "\n", "S1PE\n", "\n", "\n", "S1PE\n", "\n", "\n", "\n", "\n", "\n", "S1->S1PE\n", "\n", "\n", "\n", "\n", "\n", "NumberPhoton\n", "\n", "\n", "NumberPhoton\n", "\n", "\n", "\n", "\n", "\n", "PhotonDetection->NumberPhoton\n", "\n", "\n", "\n", "\n", "\n", "S1LCE\n", "\n", "\n", "S1LCE\n", "\n", "\n", "\n", "\n", "\n", "PhotonDetection->S1LCE\n", "\n", "\n", "\n", "\n", "\n", "FixedEnergySpectra\n", "\n", "\n", "FixedEnergySpectra\n", "\n", "\n", "\n", "\n", "\n", "NumberPhoton->FixedEnergySpectra\n", "\n", "\n", "\n", "\n", "\n", "LightYield\n", "\n", "\n", "LightYield\n", "\n", "\n", "\n", "\n", "\n", "NumberPhoton->LightYield\n", "\n", "\n", "\n", "\n", "\n", "LightYield->FixedEnergySpectra\n", "\n", "\n", "\n", "\n", "\n", "PositionSpectra\n", "\n", "\n", "PositionSpectra\n", "\n", "\n", "\n", "\n", "\n", "S1LCE->PositionSpectra\n", "\n", "\n", "\n", "\n", "\n", "S1PE->PhotonDetection\n", "\n", "\n", "\n", "\n", "\n", "PositionRecon\n", "\n", "\n", "PositionRecon\n", "\n", "\n", "\n", "\n", "\n", "S1Correction->PositionRecon\n", "\n", "\n", "\n", "\n", "\n", "PositionRecon->PositionSpectra\n", "\n", "\n", "\n", "\n", "\n", "ElectronDrifted\n", "\n", "\n", "ElectronDrifted\n", "\n", "\n", "\n", "\n", "\n", "PositionRecon->ElectronDrifted\n", "\n", "\n", "\n", "\n", "\n", "NumberElectron\n", "\n", "\n", "NumberElectron\n", "\n", "\n", "\n", "\n", "\n", "ElectronDrifted->NumberElectron\n", "\n", "\n", "\n", "\n", "\n", "DriftLoss\n", "\n", "\n", "DriftLoss\n", "\n", "\n", "\n", "\n", "\n", "ElectronDrifted->DriftLoss\n", "\n", "\n", "\n", "\n", "\n", "NumberElectron->FixedEnergySpectra\n", "\n", "\n", "\n", "\n", "\n", "ChargeYield\n", "\n", "\n", "ChargeYield\n", "\n", "\n", "\n", "\n", "\n", "NumberElectron->ChargeYield\n", "\n", "\n", "\n", "\n", "\n", "ChargeYield->FixedEnergySpectra\n", "\n", "\n", "\n", "\n", "\n", "DriftLoss->PositionSpectra\n", "\n", "\n", "\n", "\n", "\n", "cS2\n", "\n", "\n", "cS2\n", "\n", "\n", "\n", "\n", "\n", "cS2->DriftLoss\n", "\n", "\n", "\n", "\n", "\n", "S2\n", "\n", "\n", "S2\n", "\n", "\n", "\n", "\n", "\n", "cS2->S2\n", "\n", "\n", "\n", "\n", "\n", "S2Correction\n", "\n", "\n", "S2Correction\n", "\n", "\n", "\n", "\n", "\n", "cS2->S2Correction\n", "\n", "\n", "\n", "\n", "\n", "S2PE\n", "\n", "\n", "S2PE\n", "\n", "\n", "\n", "\n", "\n", "S2->S2PE\n", "\n", "\n", "\n", "\n", "\n", "S2PE->PositionSpectra\n", "\n", "\n", "\n", "\n", "\n", "S2PE->ElectronDrifted\n", "\n", "\n", "\n", "\n", "\n", "S2LCE\n", "\n", "\n", "S2LCE\n", "\n", "\n", "\n", "\n", "\n", "S2PE->S2LCE\n", "\n", "\n", "\n", "\n", "\n", "S2LCE->PositionSpectra\n", "\n", "\n", "\n", "\n", "\n", "S2Correction->PositionRecon\n", "\n", "\n", "\n", "\n", "\n", "Eff\n", "\n", "\n", "Eff\n", "\n", "\n", "\n", "\n", "\n", "S2Threshold\n", "\n", "\n", "S2Threshold\n", "\n", "\n", "\n", "\n", "\n", "Eff->S2Threshold\n", "\n", "\n", "\n", "\n", "\n", "S1ReconEff\n", "\n", "\n", "S1ReconEff\n", "\n", "\n", "\n", "\n", "\n", "Eff->S1ReconEff\n", "\n", "\n", "\n", "\n", "\n", "S1CutAccept\n", "\n", "\n", "S1CutAccept\n", "\n", "\n", "\n", "\n", "\n", "Eff->S1CutAccept\n", "\n", "\n", "\n", "\n", "\n", "S2CutAccept\n", "\n", "\n", "S2CutAccept\n", "\n", "\n", "\n", "\n", "\n", "Eff->S2CutAccept\n", "\n", "\n", "\n", "\n", "\n", "S2Threshold->S2\n", "\n", "\n", "\n", "\n", "\n", "S1ReconEff->PhotonDetection\n", "\n", "\n", "\n", "\n", "\n", "S1CutAccept->S1\n", "\n", "\n", "\n", "\n", "\n", "S2CutAccept->S2\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "graph_tree = graphviz.Digraph(format=\"svg\", strict=True)\n", "_ = apt.add_plugins_to_graph_tree(nr, graph_tree)\n", "_ = apt.tree_to_svg(graph_tree, \"nr_plugins\")\n", "display(SVG(\"nr_plugins.svg\"))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.7" } }, "nbformat": 4, "nbformat_minor": 5 }