{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import tensorflow as tf\n", "import matplotlib.pyplot as plt\n", "import os\n", "import pickle\n", "import math\n", "\n", "from sklearn.metrics import accuracy_score, roc_auc_score\n", "trunc_normal= tf.truncated_normal_initializer(stddev=1)\n", "normal = tf.random_normal_initializer(stddev=1)\n", "\n", "from xgboost import XGBClassifier\n", "from architectures.data_processing import *\n", "from architectures.utils.toolbox import *\n", "from architectures.DNN import *" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# IMPORTING THE DATASET" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "l_index=0\n", "mother_ID=[\"Ds\",\"Dplus\"]" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Bkg data amounts to 14066 while signal MC amounts to 1466 Ds and 1974 Dplus samples\n" ] } ], "source": [ "MC_Dplus_sig_dict, MC_Ds_sig_dict, data_bkg_dict = load_datasets(l_index)\n", "\n", "m_plus=MC_Dplus_sig_dict[\"Dplus_ConsD_M\"].shape[0]\n", "m_s=MC_Ds_sig_dict[\"Ds_ConsD_M\"].shape[0]\n", "n=data_bkg_dict[\"Ds_ConsD_M\"].shape[0]\n", "\n", "print('Bkg data amounts to {0} while signal MC amounts to {1} Ds and {2} Dplus samples'.format(n,m_s,m_plus))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "#Normalising the Chi2 vertex fits to the NDoF\n", "\n", "MC_Ds_sig_dict[\"Ds_ENDVERTEX_CHI2\"]=MC_Ds_sig_dict[\"Ds_ENDVERTEX_CHI2\"]/MC_Ds_sig_dict[\"Ds_ENDVERTEX_NDOF\"]\n", "MC_Ds_sig_dict[\"Ds_OWNPV_CHI2\"]=MC_Ds_sig_dict[\"Ds_OWNPV_CHI2\"]/MC_Ds_sig_dict[\"Ds_OWNPV_NDOF\"]\n", "MC_Ds_sig_dict[\"Ds_IPCHI2_OWNPV\"]=MC_Ds_sig_dict[\"Ds_IPCHI2_OWNPV\"]/MC_Ds_sig_dict[\"Ds_ENDVERTEX_NDOF\"]\n", "\n", "del MC_Ds_sig_dict[\"Ds_OWNPV_NDOF\"]\n", "del MC_Ds_sig_dict[\"Ds_ENDVERTEX_NDOF\"]\n", "#del MC_sig_dict[\"Ds_M\"]\n", "\n", "MC_Dplus_sig_dict[\"Dplus_ENDVERTEX_CHI2\"]=MC_Dplus_sig_dict[\"Dplus_ENDVERTEX_CHI2\"]/MC_Dplus_sig_dict[\"Dplus_ENDVERTEX_NDOF\"]\n", "MC_Dplus_sig_dict[\"Dplus_OWNPV_CHI2\"]=MC_Dplus_sig_dict[\"Dplus_OWNPV_CHI2\"]/MC_Dplus_sig_dict[\"Dplus_OWNPV_NDOF\"]\n", "MC_Dplus_sig_dict[\"Dplus_IPCHI2_OWNPV\"]=MC_Dplus_sig_dict[\"Dplus_IPCHI2_OWNPV\"]/MC_Dplus_sig_dict[\"Dplus_ENDVERTEX_NDOF\"]\n", "\n", "del MC_Dplus_sig_dict[\"Dplus_OWNPV_NDOF\"]\n", "del MC_Dplus_sig_dict[\"Dplus_ENDVERTEX_NDOF\"]\n", "\n", "data_bkg_dict[\"Ds_ENDVERTEX_CHI2\"]=data_bkg_dict[\"Ds_ENDVERTEX_CHI2\"]/data_bkg_dict[\"Ds_ENDVERTEX_NDOF\"]\n", "data_bkg_dict[\"Ds_OWNPV_CHI2\"]=data_bkg_dict[\"Ds_OWNPV_CHI2\"]/data_bkg_dict[\"Ds_OWNPV_NDOF\"]\n", "data_bkg_dict[\"Ds_IPCHI2_OWNPV\"]=data_bkg_dict[\"Ds_IPCHI2_OWNPV\"]/data_bkg_dict[\"Ds_ENDVERTEX_NDOF\"]\n", "\n", "del data_bkg_dict[\"Ds_OWNPV_NDOF\"]\n", "del data_bkg_dict[\"Ds_ENDVERTEX_NDOF\"]\n", "\n", "data_bkg_dict[\"phi_ENDVERTEX_CHI2\"]=data_bkg_dict[\"phi_ENDVERTEX_CHI2\"]/data_bkg_dict[\"phi_ENDVERTEX_NDOF\"]\n", "#data_bkg_dict[\"phi_OWNPV_CHI2\"]=data_bkg_dict[\"phi_OWNPV_CHI2\"]/data_bkg_dict[\"phi_OWNPV_NDOF\"]\n", "data_bkg_dict[\"phi_IPCHI2_OWNPV\"]=data_bkg_dict[\"phi_IPCHI2_OWNPV\"]/data_bkg_dict[\"phi_ENDVERTEX_NDOF\"]\n", "\n", "#del data_bkg_dict[\"phi_OWNPV_NDOF\"]\n", "del data_bkg_dict[\"phi_ENDVERTEX_NDOF\"]\n", "del MC_Ds_sig_dict[\"phi_M\"]\n", "del MC_Dplus_sig_dict[\"phi_M\"]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def return_branches(mother_index=None):\n", "\n", " branches_needed = [\n", " #________________________________________\n", " #D\n", " #________________________________________\n", " #D Geometric variables, pT and FD\n", " \n", " mother_ID[mother_index]+\"_ENDVERTEX_CHI2\",\n", " mother_ID[mother_index]+\"_IPCHI2_OWNPV\",\n", "\n", " mother_ID[mother_index]+\"_OWNPV_CHI2\",\n", " mother_ID[mother_index]+\"_IP_OWNPV\",\n", " mother_ID[mother_index]+\"_DIRA_OWNPV\",\n", " \n", " mother_ID[mother_index]+\"_PT\",\n", " mother_ID[mother_index]+\"_FDCHI2_OWNPV\",\n", " \n", " #________________________________________\n", " #PHI\n", " #________________________________________\n", " #phi geometric variables, pT and FD\n", " \n", " \"phi_ENDVERTEX_CHI2\",\n", " \"phi_IPCHI2_OWNPV\",\n", " \n", " \"phi_PT\",\n", " \n", " #phi Reconstructed mass\n", " \n", " #\"phi_M\",\n", " \n", " #________________________________________\n", " #PION\n", " #________________________________________\n", " #pi Geometric variables and pT\n", " 'pi_PT',\n", " \n", " #________________________________________\n", " #LEPTONS\n", " #________________________________________\n", " #leptons Geometric variables and pT\n", " \n", " l_flv[l_index]+\"_plus_PT\",\n", " l_flv[l_index]+\"_minus_PT\",\n", " \n", " \n", " #D Reconstructed mass\n", " mother_ID[mother_index]+\"_ConsD_M\",\n", " ] \n", " return branches_needed" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "#Number of input features\n", "\n", "dim=len(return_branches(mother_index=0))" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtYAAAHoCAYAAABtiKiGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xuc1VW9//HXB7nI/ZJcFDEUvGWmKd7CYyCixsk75lSaph28hWUqapqQlqQ/EktNhVS0Y4x4qdDQxAI7dTQF9YSF4jUU5aaiJGBc1u+PvZlmcAb2DN/Zew/zej4e+8F813ft/f3MYmb7Zrn2+kZKCUmSJEmbp0WpC5AkSZK2BAZrSZIkKQMGa0mSJCkDBmtJkiQpAwZrSZIkKQMGa0mSJCkDBmtJkiQpAwZrSZIkKQMGa0mSJCkDLUtdQENts802qW/fvqUuQ5IkSVu42bNnL00pdd9UvyYbrPv27cusWbNKXYYkSZK2cBHxj0L6uRREkiRJykBJgnVEbBURz0bEQ/njHSPiLxHxUkTcExGtS1GXJEmS1FClmrH+FjC32vE1wPiU0s7Ae8AZJalKkiRJaqCiB+uI2B74T+Dn+eMADgXuy3e5Ezi22HVJkiRJm6MUM9bXA6OAdfnjTwDLUkpr8sdvAr1re2JEjIiIWRExa8mSJY1fqSRJklSgou4KEhFfBBanlGZHxKD1zbV0TbU9P6U0AZgAMGDAgFr7SJKkpu2DDz5g8eLFrF69utSlaAvXqlUrevToQadOnTJ5vWJvtzcQODoihgFbA53IzWB3iYiW+Vnr7YG3ilyXJEkqAx988AGLFi2id+/etG3bltyKUSl7KSVWrlzJggULADIJ10VdCpJSujSltH1KqS9QAfwhpfRVYAYwPN/tVOA3xaxLkiSVh8WLF9O7d2/atWtnqFajigjatWtH7969Wbx4cSavWS77WF8MfCciXia35vq2EtcjSZJKYPXq1bRt27bUZagZadu2bWbLjkp258WU0kxgZv7rV4H9S1WLJEkqH85Uq5iy/HkrlxlrSZIkqUkzWEuSJEkZMFhLkiRlaMyYMUQEEUGLFi3o2rUr++23H5dddhkLFy7M5BoPPvggAwcOpEuXLnTq1Ik99tiDs846i3/+859VfSKCG2+8MZPrNcTMmTOJCJ5//vk6+7z++utVY/XnP//5Y+evuuoqIoK+fft+7Nwrr7zCGWecQZ8+fWjdujXdu3dn+PDhPPnkk1l+G/VSsjXWkiRJhRo/fV5Jrnv+0F0a9LzOnTvzyCOPAPD+++/zzDPPcPPNNzNhwgQeeeQR9t133wbXNHnyZL7yla9w5plncvnllxMR/PWvf+XOO+9k2bJldOjQAYAnnniCHXfcscHXKaYOHTowefJkBg4cWKP9nnvuqfp+qvvzn//MsGHD2Hnnnbnyyivp168fS5Ys4YEHHmDgwIG8++67dO7cuVjlVzFYS5IkZaxly5YceOCBVcdHHHEEZ599NocccggnnXQSL774IltttVWDXvvGG29k2LBh3HLLLVVtRx55JKNGjSKlf98/r/r1y91RRx3Ffffdx09+8pOqcZkzZw5z587lS1/6Ek888URV35UrV3LSSSex3377MW3aNFq3bl117oQTTuAb3/gGrVq1Kvr3AC4FkSRJKoouXbpw7bXX8sorrzB9+vSq9rFjx9K/f3+23nprevbsyZFHHrnRJSPLli2jV69etZ6rvsPFhktBUkp873vfq7rT4Omnn05lZSURweuvvw78e2nGlClTOPPMM+ncuTPbb789o0ePZt26dVWv9cILL1BRUUGfPn1o164de+yxB9dff32NPvVxzDHHsHz5cmbMmFHVVllZycEHH0zv3r1r9L333ntZsGAB48ePrxGq1xs8eDDt2rVrUB2by2AtSZJUJIMHD6Zly5ZV64Dvuusurr76ar7zne/wu9/9jptvvpn+/fvz4Ycf1vka++yzD5MnT+bGG2/krbcKv1n19ddfz9VXX81ZZ53FfffdR9u2bRk1alStfUeNGkWHDh247777OPnkk7nyyiu57777qs4vWLCAXXfdlZ/97GdMmzaN//qv/2L06NFcc801BddTXfv27fniF7/I5MmTq9oqKyv58pe//LG+jz/+ONtttx177rlng67VmFwKIkmSVCRt2rRhm222YdGiRQA89dRTHH744ZxzzjlVfY4//viNvsbVV1/NnDlzGDlyJCNHjmTHHXfk2GOPZdSoUXXOZK9du5Zrr72Ws846iyuvvBKAww8/nNdee4033njjY/0POeQQfvzjHwMwdOhQHnnkER544AG+9KUvATBkyBCGDBkC5GbCDz74YFasWMHEiRO59NJL6zkqORUVFZxxxhncfPPNPPfcc8yfP5/hw4fzox/9qEa/BQsWsMMOOzToGo3NGWtJkqQiqr4Oeu+992batGmMHj2ap556irVr127y+X369GH27Nk89thjXHDBBXTr1o3x48fzmc98hjfffLPW57zxxhssXLiQo48+ukb7hsfrHX744TWOP/WpT9V47VWrVjF69Gj69+9PmzZtaNWqFZdddhmvvfYaa9as2eT3UJthw4axdu1afve731FZWcmQIUPYZpttau1brjcRMlhLUmOYMbbUFUgqQ6tWreKdd96hZ8+eAJx++ulcffXVTJkyhQMOOICePXvyve99b5MBe6uttmLIkCGMGzeOWbNm8bvf/Y533323apZ5Q+vXbHfv3r1G+4bH63Xp0qXGcevWrVm1alXV8cUXX8y4ceMYMWIE06ZN4+mnn+byyy+v+h4bok2bNhx77LH88pe/ZMqUKVRUVNTar3fv3syfP79B12hsBmtJkqQimTFjBmvWrOGggw4CoEWLFpx//vnMnTuX+fPnc+GFF3L11VczceLEer3u4Ycfzl577cULL7xQ6/n1S0SWLFlSo33D40Lde++9jBw5klGjRnHYYYcxYMAAWrbc/BXGFRUVTJkyhaVLl3LcccfV2mfQoEEsWLCAv/3tb5t9vawZrCVJkopg2bJlXHzxxfTv35/DDjvsY+f79OnDJZdcQv/+/fn73/9e5+ssXrz4Y22rVq3izTffrJoJr+21e/XqxW9+85sa7VOnTq3nd5GzcuVK2rRpU3W8du1aKisrG/Ra1Q0dOpQTTjiBUaNG1bkP9fDhw+nduzfnn38+q1ev/tj5mTNnsmLFis2upSH88KIkSVLG1qxZU7Xzx/Lly5k9ezY333wzK1as4JFHHqnaq/nMM8+kW7duHHjggXTu3JkZM2bw0ksvbXR3jSOOOILddtuNo446ij59+rBw4UJuvPFG3nvvPc4888xan7PVVltx0UUXcdFFF9G9e3cGDhzI1KlTmTNnDpCbOa+PoUOHctNNN9G/f3+6devGTTfdxEcffVSv16hNy5YtmTJlykb7tG3blnvuuYcvfOELDBw4kHPPPZeddtqJpUuX8utf/5q7776bd955Z7NraQiDtSRJKnsNvQNiqbz//vscdNBBRASdOnWif//+nHzyyYwcObLGzh0HHXQQEydO5NZbb2XVqlX079+fiRMncuyxx9b52qNGjaKyspKLL76YxYsX0717d/bZZx/+9Kc/sf/++9f5vPPPP5/33nuPn/3sZ1x33XUcffTRfPe73+Wcc86hU6dO9fr+brjhBs466yzOPfdc2rZty6mnnspxxx3HiBEj6vU6DTVw4ECeeeYZrr76ai677DIWLVpEly5dOPjgg5k+fXpJ7roIENU/mdqUDBgwIM2aNavUZUhS7dZ/eHFww7adkpqruXPnsvvuu5e6jGbjG9/4BtOnT+cf//hHqUspqU393EXE7JTSgE29jjPWkiRJzcDzzz/PPffcw+c+9zlatGjBww8/zB133NHgm7ro4wzWkiRJzUD79u3505/+xI033siHH37IJz/5Sa655houuOCCUpe2xTBYS1IzM376vCa3XlXS5ttxxx2ZMWNGqcvYorndniRJkpQBg7UkSZKUAYO1JEmSlAGDtSRJkpQBg7UkSZKUAYO1JEmSlAGDtSRJkpQB97GWJEnlb8bY0lx38KX1fsqYMWP4/ve/D0BE0LlzZ/r378/hhx/OyJEj6dWrV9ZVsnr1am644QZuv/12Xn31Vdq1a0e/fv047rjjuOSSSwCYOXMmgwcPZs6cOXz605/OvIZCjBkzhhtvvJGlS5fW2WfSpEl8/etfp2PHjixatIi2bdvWOD9kyBD+8Ic/cOqppzJp0qQa52bOnMm4ceN48skn+eCDD9huu+04+uijufDCC9lhhx0a41uqwRlrSZKkjHXu3JknnniC//3f/6WyspLjjz+eX/ziF+y5557Mnj078+t985vf5IorruCrX/0qDz30EBMmTODzn/88Dz74YFWfffbZhyeeeIJ+/fplfv3GkFLit7/9bY22RYsW8fjjj9OhQ4eP9f/pT3/KoYceStu2bbn11lt57LHHGD16NM8++yzHHHNMUWp2xlqSJCljLVu25MADD6w6PuKIIzj77LM55JBDOOmkk3jxxRfZaqutan3uoEGDGDRoEGPGjCnoWitWrOCOO+7ghz/8IRdddFFV+/HHH09Kqeq4U6dONWoqd0cddRSVlZUMHz68qm3KlCn069ePjh071uj77LPP8p3vfIfLL7+cK6+8sqr9kEMO4etf/zoPPfRQUWp2xlqSJKkIunTpwrXXXssrr7zC9OnTM3vdDz/8kNWrV9e6xCQiqr6eOXMmEcHzzz9f1fbee+9RUVFB+/bt2W677bjmmmu48MIL6du3b1WfSZMmERHMmTOHoUOH0r59e3bbbTceeOCBGtf67W9/y9ChQ+nRo0dViH/00Ucb/H1VVFTw29/+luXLl1e1VVZWUlFR8bG+N9xwA9tssw3f+973an2tL37xiw2uoz4M1pIkSUUyePBgWrZsyZNPPpnZa3bv3p0+ffowZswYHnjggRpBdFNOO+00pk+fzk9+8hMmTJjAo48+yj333FNr36985SscffTR/OpXv2LnnXemoqKCN998s+r8a6+9xlFHHcUvfvEL7r//fj73uc/xhS98gT//+c8N+r4GDRpE165d+fWvfw3A/PnzeeKJJ2oN1o8//jhDhgyhVatWDbpWVlwKIkmSVCRt2rRhm222YdGiRVVta9eurbFkI6XEunXrWLNmTVVbixYtaNGi7vnQSZMmUVFRwQknnECLFi347Gc/S0VFBeeddx6tW7eu9TnPP/88U6dOZcqUKZx44olA7oOBffr0qXUN8/nnn8/pp58OwL777kvPnj156KGHOOuss4DcOu/11q1bx+DBg/nb3/7GbbfdxsCBAwsZnhpatGjBiSeeSGVlJaeccgqVlZV85jOfYffdd/9Y3wULFhTlw4mb4oy1JElSEVUP0QD9+vWjVatWVY8//vGPXHXVVTXaqq8brs2hhx7KK6+8wuTJkzn99NN55513uOiiizj00ENZt25drc+ZNWsWkFvLvF7btm057LDDau1/+OGHV339iU98gh49etSYsX7zzTc59dRT6d27Ny1btqRVq1Y8+uijzJs3b+MDshEVFRVMnz6dd999t85lIOtVX/ZSKs5YS5IkFcmqVat455136NmzZ1Xbgw8+yEcffVR1fOaZZ7LvvvsyYsSIqrbttttuk6/dsWNHKioqqKioIKXE6NGjueqqq3jwwQdr3RVj4cKFdOzYka233rpGe/fu3Wt9/S5dutQ4bt26NatWrQJyM9RHH300y5cv58orr6R///60b9+eK664gsWLF2+y9rocdNBBbLfddlx99dU8++yz3H///bX26927N/Pnz2/wdbJisJYkSSqSGTNmsGbNGg466KCqtj333LNGn44dO7LddtsxYMCABl8nIrjooou46qqreOGFF2oN1r169WL58uWsWrWqRrhesmRJva/38ssv8+yzz/Lwww9z5JFHVrWvXLmyYd9ANSeddBLjxo3jgAMOYMcdd6y1z6BBg5g2bRpr1qyhZcvSxVuXgkiSJBXBsmXLuPjii+nfv3+dyy0aYvXq1Sxbtuxj7S+99BJAjdnx6tYH96lTp1a1rVy5skE7lqwP0G3atKlq+8c//tHgDy5Wd+qpp3LUUUfxne98p84+I0eOZMmSJfzwhz+s9fy0adM2u45COGMtSZKUsTVr1lTt/LF8+XJmz57NzTffzIoVK3jkkUfq3MO6Id5//3122WUXTj31VAYPHkznzp158cUXGTt2LL179+a4446r9Xmf/vSnOeqoozj77LNZvnw5vXr14rrrrqNdu3Yb/aBkbXbbbTe23357LrjgAq666iqWL1/O6NGj6d2792Z/f5/61Keqdgapy9577811113Ht7/9bf7+979TUVHBNttsw2uvvcbtt9/O+++/z7Bhwza7lk0xWEuSpPLXgFuLl9L777/PQQcdRETQqVMn+vfvz8knn9wotzTv1KkTo0aNYtq0afzyl7/kgw8+oHfv3hxxxBFcfvnldO7cuc7nTpo0ibPPPpvzzjuPDh06cO6557LTTjvx9NNP16uGNm3a8MADD3DuuecyfPhwtt9+ey677DJmzpxZY9/sxnTeeeex5557Mm7cOL7xjW/UGIfqN85pTLHhJ1ObigEDBqT1n2aVpLIzY2zuzzIMA+Onz+P8obuUugypVnPnzq11OzUVx5o1a/j0pz/NAQccwJ133lnqcopmUz93ETE7pbTJRe/OWEuSJDVT9957L2+99RZ77rknH3zwARMnTuSll17irrvuKnVpTZLBWpIkqZlq3749d9xxBy+//DJr165lzz335MEHH2T//fcvdWlNksFakiSpmRo2bFhRPtTXXLjdniRJkpQBg7UkSZKUAYO1JEmSlAGDtSRJkpSBogbriNg6Ip6KiP+LiL9FxPfz7ZMi4rWIeC7/2LuYdUmSJEmbq9i7gnwEHJpS+mdEtAL+FBEP589dlFK6r8j1SJIkSZko6ox1yvln/rBV/tE0b/0oSZJUizFjxhARVY927dqx5557MmHChBr9Zs6cSUQU7ZbfAMOHD2fQoEH1es68efMYM2YMy5Yta5yitiBF38c6IrYCZgP9gZtSSn+JiLOBH0bEFcDvgUtSSh/V8twRwAiAHXbYoYhVS5KkUvrZcz8ryXXP2fucBj2vc+fOPPLIIwB8+OGHPPjgg5x55pl06NCBr3zlK1mW2OjmzZvH97//fU477TS6dOlS6nLKWtE/vJhSWptS2hvYHtg/Ij4NXArsBuwHdAMuruO5E1JKA1JKA7p37160miVJkuqjZcuWHHjggRx44IEMGTKE66+/nv32249f//rXpS5Njahku4KklJYBM4EjU0pv55eJfATcAXgfTUmStEXp2LEjq1ev3mifyspKWrduzS233FLVdu+997LzzjvTtm1bBg8ezLPPPktEMGnSpI2+1htvvMGwYcNo27Ytffv25ec///nH+rzwwgtUVFTQp08f2rVrxx577MH111/PunXrgNxylaOOOgqAHXfckYigb9++ALz99tucfvrp7LTTTrRt25ZddtmFyy+/nH/961/1GJUtS1GXgkREd2B1SmlZRLQFDgOuiYhtU0pvR0QAxwLFW2wkSZLUCNasWQPAihUrmDp1Ko8//ji33357nf0nTZrEiBEjmDBhAqeddhoAs2bNoqKiguHDh3PDDTcwd+5cTjrppE1eO6XEMcccw9KlS7ntttvYeuutGT16NO+++y4777xzVb8FCxaw66678tWvfpWOHTvy3HPPMXr0aFauXMmll17KPvvsw7hx47jwwgt54IEH2HbbbWnTpg0AS5cupVu3blx33XV07dq1ai32kiVLuPXWWzdj5JquYq+x3ha4M7/OugUwJaX0UET8IR+6A3gOOKvIdUmSJGXmnXfeoVWrVjXazjvvPL72ta/V2v+WW27hW9/6FnfddRcVFRVV7ddccw277747lZWVRARHHnkkq1ev5uKLa101W+Xhhx/m2Wef5cknn+SAAw4AYN9996Vfv341gvWQIUMYMmQIkAvjBx98MCtWrGDixIlceumldOrUiV133RWAz372s1Wz1QB77rkn48aNqzoeOHAg7du35/TTT+eGG26gdevWBYzUlqWowTql9Ffgs7W0H1rMOiRJkhpT586deeyxxwD46KOPmD17NldccQXdunVj9OjRNfr+9Kc/5a677qKyspLjjjuuxrmnn36aL3/5y+T+p37O0Ucfvclg/dRTT9GzZ8+qUA3wyU9+kn333bdGv1WrVjF27Fjuvvtu5s+fX2Opypo1a2jZsu6omFLiJz/5CRMmTOC1115j1apVVefmz59P//79N1rjlqjou4JIkiRt6Vq2bMmAAQOqjgcOHMjq1av57ne/y8iRI+nWrVvVufvvv5/+/ftz2GGHfex1Fi5cyIYbNhSygcPChQvp0aPHx9p79OjB8uXLq44vvvhifv7znzN69Gj22WcfunTpwm9+8xt+8IMfsGrVKjp06FDnNa6//nouvPBCLrnkEj7/+c/TtWtXnn76ac4999waIbs58ZbmkiRJRfCpT32Kf/3rX7zyyis12u+++24+/PBDjjrqKFauXFnjXK9evViyZEmNtg2Pa9OrVy8WL178sfYN2+69915GjhzJqFGjOOywwxgwYMBGZ6k3fO6JJ57ID3/4Qw4//HD2228/2rdvX9Bzt1QGa0mSpCJYfyOYPn361Gjffvvt+f3vf89LL73E8OHDayzH2G+//XjwwQdJ6d/305s6deomr7XffvuxaNEi/vKXv1S1zZ8/n2eeeaZGv5UrV1Z9GBFg7dq1VFZW1uizfq30hrPQGz4Xcv9IaM5cCiJJkpSxNWvW8OSTTwLwr3/9i9mzZ/ODH/yAY445hl69en2s/0477cRjjz3GIYccwsknn8zkyZNp0aIFF198MQcccAAVFRV8/etfZ+7cuUycOBGAFi3qnh8dNmwYe+21FyeeeCLXXHMNW2+9NVdcccXHlocMHTqUm266if79+9OtWzduuukmPvqo5j361n948dZbb6WioqLqTpJDhw7lpz/9KQcccAD9+vXj7rvv5uWXX96scWvyUkpN8rHvvvsmSSpbf7g69yhD1z36YqlLkOr097//vdQlbLbRo0cnoOrRqlWr1L9//zRq1Kj0wQcfVPWbMWNGAtKcOXOq2p555pnUuXPndPrpp6d169allFK65557Ur9+/VKbNm3SwIED0/Tp0xOQfvWrX220jn/84x/piCOOSFtvvXXaYYcd0i233JJOOOGE9PnPf76qz8KFC9Oxxx6bOnbsmHr06JEuuuiiNGHChASk5cuXV/UbN25c2mGHHdJWW22VPvnJT6aUUlq+fHk67bTTUteuXVPXrl3TGWeckR588MGPfU9NwaZ+7oBZqYB8Gqna/1poSgYMGJBmzZpV6jIkqXYzxub+HHxpaeuoxfjp8zh/6C6lLkOq1dy5c9l9991LXUZZ++///m9OOeUUXn31VXbcccdSl7NF2NTPXUTMTikNqLNDnktBJEmSytjZZ5/N0KFD6dq1K8888ww/+MEP+M///E9DdRkyWEuSJJWxd955h3POOYd33nmH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\n", "text/plain": [ "<Figure size 864x576 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Convert data dictionaries to arrays for NN\n", "\n", "MC_Ds_sig = extract_array(MC_Ds_sig_dict, return_branches(mother_index=0), dim, m_s)\n", "MC_Dplus_sig = extract_array(MC_Dplus_sig_dict, return_branches(mother_index=1), dim, m_plus)\n", "data_bkg = extract_array(data_bkg_dict, return_branches(mother_index=0), dim, n)\n", "\n", "plt.hist(MC_Ds_sig[:,dim-1]/1000,alpha=0.5, label='Ds Signal MC',density=True, bins=30);\n", "plt.hist(MC_Dplus_sig[:,dim-1]/1000,alpha=0.5, label='D+ Signal MC', density=True, bins=30);\n", "plt.hist(data_bkg[:,dim-1]/1000,alpha=0.5, label='Bkg data',density=True, bins=200);\n", "plt.ylabel('# events', fontsize=15)\n", "plt.xlabel('D reconstructed mass (GeV)', fontsize=15)\n", "plt.legend(fontsize=15)\n", "fig=plt.gcf()\n", "fig.set_size_inches(12,8)\n", "plt.savefig('/home/hep/davide/Rphipi/mu/bdt_train.png', format='png', dpi=100)\n", "#Cut on Ds Mass\n", "\n", "#data_bkg_cut=data_bkg[np.where(data_bkg[:,dim-1]>1915)]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "#Add 0/1 label for bkg/sig\n", "\n", "MC_Dplus_sig_labelled=add_labels(MC_Dplus_sig,signal=True)\n", "MC_Ds_sig_labelled=add_labels(MC_Ds_sig,signal=True)\n", "data_bkg_labelled=add_labels(data_bkg,signal=False)\n", "\n", "#Merge MC sig and data bkg, shuffle it\n", "\n", "data=np.concatenate((data_bkg_labelled,MC_Ds_sig_labelled), axis =0)\n", "data=np.concatenate((data,MC_Dplus_sig_labelled), axis =0)\n", "np.random.seed(1)\n", "np.random.shuffle(data)\n", "\n", "#get train size\n", "train_size=data.shape[0]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "#Strip away the label column and convert it to a one-hot encoding\n", "\n", "X=data[:,0:dim]\n", "Y_labels=data[:,dim].astype(int)\n", "Y_labels=Y_labels.reshape(train_size,1)\n", "Y_labels_hot = to_one_hot(Y_labels)\n", "Y_labels=Y_labels_hot\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "#Divide the dataset k \"equi populated\" sets\n", "test=0\n", "k=5 #number of subsets\n", "i=4 #number of subset that is train set\n", "PATH=l_flv[l_index]+'/test_'+str(test)\n", "\n", "if not os.path.exists(PATH):\n", " os.mkdir(PATH)\n", "X_train, Y_train, X_test, Y_test, X_dict, Y_dict = k_subsets(i, k, X, Y_labels)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "X_mean=X_train.mean(axis=0)\n", "X_train_1=X_train-X_mean\n", "X_std=X_train_1.std(axis=0)\n", "X_train_2=X_train_1/X_std\n", "\n", "\n", "\n", "X_mean=X_test.mean(axis=0)\n", "X_test_1=X_test-X_mean\n", "X_std=X_test_1.std(axis=0)\n", "X_test_2=X_test_1/X_std\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(14004, 13)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train_2.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# SETTING UP THE NETWORK" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "task='TRAIN'\n", "\n", "PATH=l_flv[l_index]+'/test_'+str(test)+'/NN_'+str(i)\n", "\n", "if not os.path.exists(PATH):\n", " os.mkdir(PATH)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "\n", "LEARNING_RATE = 0.001\n", "BETA1 = 0.5\n", "BATCH_SIZE = 64\n", "EPOCHS = 50\n", "VAL_PERIOD = 10\n", "SEED=1\n", "LAMBD=0.1\n", "\n", "sizes = {\n", "'dense_layers': [\n", " #(16, 'bn', 0.8, lrelu, tf.glorot_uniform_initializer()),\n", " #(8, 'bn', 0.5, lrelu, tf.glorot_uniform_initializer()),\n", " #(16, 'bn', 1, tf.nn.relu, tf.random_normal_initializer()),\n", " (200, 'bn', 0.95, tf.nn.relu, tf.random_normal_initializer()),\n", " (200, 'bn', 0.95, tf.nn.relu, tf.random_normal_initializer()),\n", " #(200, 'bn', 0.90, tf.nn.relu, tf.glorot_uniform_initializer()),\n", " (100, 'bn', 0.95, tf.nn.relu, tf.random_normal_initializer()),\n", " ],\n", "'n_classes':2,\n", "}" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input for propagation (?, 13)\n", "Logits shape (?, 2)\n", "Input for propagation (?, 13)\n", "Logits shape (?, 2)\n", "\n", " Training...\n", "\n", " ****** \n", "\n", "Training DNN for 50 epochs with a total of 14004 samples\n", "distributed in 218 batches of size 64\n", "\n", "The learning rate set is 0.001\n", "\n", " ****** \n", "\n", "Evaluating performance on validation/train sets\n", "At iteration 0, train cost: 2671, train accuracy 0.6318, test accuracy 0.7216\n", "Average of signal as predicted by NN 0.3682\n", "Evaluating performance on validation/train sets\n", "At iteration 10, train cost: 826, train accuracy 0.8614, test accuracy 0.8577\n", "Average of signal as predicted by NN 0.1526\n", "Evaluating performance on validation/train sets\n", "At iteration 20, train cost: 440.7, train accuracy 0.869, test accuracy 0.8491\n", "Average of signal as predicted by NN 0.192\n", "Evaluating performance on validation/train sets\n", "At iteration 30, train cost: 298.7, train accuracy 0.8679, test accuracy 0.8429\n", "Average of signal as predicted by NN 0.08267\n", "Evaluating performance on validation/train sets\n", "At iteration 40, train cost: 225.9, train accuracy 0.8622, test accuracy 0.8341\n", "Average of signal as predicted by NN 0.04972\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Parameters trained\n", "Model and hyperparameters saved in path: e/test_0/NN_4/NN_model.ckpt\n" ] } ], "source": [ "tf.reset_default_graph()\n", "model_NN = DNN(dim-1, sizes,\n", " lr=LEARNING_RATE, beta1=BETA1, lambd=LAMBD,\n", " batch_size=BATCH_SIZE, epochs=EPOCHS,\n", " save_sample=VAL_PERIOD, path=PATH, seed=SEED)\n", "\n", "init_op = tf.global_variables_initializer()\n", "saver = tf.train.Saver()\n", "gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.13)\n", "\n", "with tf.Session(config=tf.ConfigProto(gpu_options=gpu_options)) as sess:\n", " sess.run(init_op)\n", " \n", " print('\\n Training...')\n", " model_NN.set_session(sess)\n", " model_NN.fit(X_train_2, Y_train, X_test_2, Y_test)\n", " \n", " save_path = saver.save(sess, PATH+'/NN_model.ckpt')\n", " hyper_dict={\n", " 'k':k,\n", " 'LEARNING_RATE':LEARNING_RATE,\n", " 'BETA1':BETA1,\n", " 'BATCH_SIZE':BATCH_SIZE,\n", " 'EPOCHS':EPOCHS,\n", " 'VAL_PERIOD':VAL_PERIOD,\n", " 'SEED':SEED,\n", " 'sizes':sizes,\n", " 'LAMBD':LAMBD,\n", " 'PATH':PATH,\n", " }\n", " with open(PATH+'/hyper_parameters.pkl', 'wb') as f: \n", " pickle.dump(hyper_dict, f)\n", " with open(PATH+'/variables_used.pkl', 'wb') as f: \n", " pickle.dump(return_branches(mother_index=0), f)\n", " print(\"Model and hyperparameters saved in path: %s\" % save_path)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "task='TEST'\n", "\n", "with open(PATH+'/hyper_parameters.pkl', 'rb') as f: \n", " hyper_dict = pickle.load(f)\n", " #for key, item in hyper_dict.items():\n", " # print(key+':'+str(item))\n", "\n", "k=hyper_dict[\"k\"]\n", "LEARNING_RATE=hyper_dict[\"LEARNING_RATE\"]\n", "BETA1=hyper_dict[\"BETA1\"]\n", "BATCH_SIZE=hyper_dict[\"BATCH_SIZE\"]\n", "EPOCHS=hyper_dict[\"EPOCHS\"]\n", "VAL_PERIOD=hyper_dict[\"VAL_PERIOD\"]\n", "SEED=hyper_dict[\"SEED\"]\n", "sizes=hyper_dict[\"sizes\"]\n", "LAMBD=hyper_dict[\"LAMBD\"]\n", "PATH=hyper_dict[\"PATH\"]\n", " \n", "if not os.path.exists(PATH+'/hyper_parameters.pkl'):\n", " print(\"No saved sizes dict\")" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Evaluate model on test set...\n", "INFO:tensorflow:Restoring parameters from e/test_0/NN_4/NN_model.ckpt\n", "Model restored.\n", "Test accuracy: 0.8453\n" ] } ], "source": [ "with tf.Session(config=tf.ConfigProto(gpu_options=gpu_options)) as sess:\n", " \n", " print('\\n Evaluate model on test set...')\n", " saver.restore(sess,PATH+'/NN_model.ckpt')\n", " print('Model restored.')\n", " model_NN.set_session(sess)\n", " model_NN.test(X_test_2,Y_test)\n", " output_NN=model_NN.predict(X_test_2)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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SS1dulS33XZbmja7d++u66+/XgsWLFDVqlXVrVs37dixQ5I0efJk1ahRQ23atNGaNWu0Zs0atW3bVj///LNuvPFGNW3aVG+99ZZmzZqldu3a6dChQ2d0vMCZuvzyy/XMM89oxowZOnjwYKa3O9054qefflLjxo117NgxzZw5U9OnT9fGjRvVvn37FN/11O6++2498sgj6tu3r5YsWaKOHTuqd+/eevvttwN1Zs6cqU6dOumiiy7SvHnz9PLLL6tatWrav3+/br/9dnXv3l0xMTGB79iDDz4oKXPf4127dum6665TRESE5s+fr379+qlHjx46evRohp/HmjVrVLduXV177bVas2ZN4Bwi+ZLWwYMHa9iwYVq6dKkqV66s/fv3q0mTJjp69Khee+01PfPMM1q9erVatGihv//+O8W+hwwZorJly+qNN97Q1VdfrZ49e+r+++/X2rVr9dJLL+nee+/V448/nuY8llx65x5JGj9+vAYMGKAbbrhBb7/9tgYMGKAHH3xQzz77bGD766+/XgULFtSrr76qxYsX6+677w78kSCjfaf2yiuvaOzYsRo0aJCWL1+uKVOmqEqVKvrrr78kScePH1fz5s317rvvavz48Vq4cKEiIyPVvHnzQEL8/vvvS5JGjBgRaK9s2bIZ/v8AeQ3DmAHkSyVLllTr1q01Z84cXX311ZozZ45at26tkiVLpqh38OBBHT9+XBUrVjyrdtauXauBAweqa9eugbL/9//+X7r1X375ZR08eFDr169XbGysJOmiiy5SgwYN0tQ9dOiQPvnkk8BkW6dOnVLHjh21efNm1ahRQ5KvVzpJYmKiWrRooaioKC1atEi33nprpo7BOad//vOfuvXWWzV58uRAeZEiRTRw4EANGzZMpUuXVpcuXTR37lyNHj06UGfu3Llq2bKlIiIiJElDhw7VlVdeqblz5wbqxMbGqlmzZtqwYYMuueSSQPl9990X6E2vV6+eoqOj9fbbb6t///66+OKLFRYWpsjISDVs2DCwzerVq1W8eHGNHz8+UJbRUEggq0yaNEk33HCDevXqJTNTzZo11blzZz3wwAMKDw9Pd7vTnSNGjx6tmJgYvfPOO4Ehu7Vr11aNGjW0dOnSoMnQTz/9pClTpujll19Wz549JUnNmzfX7t27NXr0aLVr106nTp3S0KFD1bFjR82ePTuw7fXX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v2OZ/R5fccUVeumll3T06NHAUObkM6pnlQYNGmjKlCn6448/An9YW7dunbZu3aqrrroqy9uTgn8ujRo1UtGiRbVr1650J5VKLiQkRE2bNtWgQYPUvXt3/f7774qIiDirnuUKFSpo6NChevnll/Xdd99J8g3ZXrFihSpWrJjm5zL5cUg6q55sIK8g2QWQrzVp0kRNmjTJsE779u01aNAg9enTR5988ok6dOigCy64QN9//72ee+45xcXFpZvsXnXVVerYsaMuueQSmZmmTZumsLAw1a9fP2j92267TY888ojatWunkSNHKiEhQSNHjlRkZOQZ/dVf+t8vvLfddpv69OmjjRs36oknnkgzbO90ChQooAkTJuiWW27RkSNHdN1116lw4cKBiVbmz58f+GW2Xr16qlKlivr27auiRYuqXbt2Kfb1+OOPq1mzZipQoIBuvPFGFS9eXL/++quWLFmiMWPGqFq1apmOq0aNGlq+fLmWL1+u0qVLq3Llypo/f77WrFmj1q1bq1y5cvrxxx/1+uuvZ3oyLuBsXXrpperQoYNatmypqKgobdu2TU888YSKFSuW5o9kyZ3uHDFq1CjVr19fbdu2Ve/evVWmTBnt3LlT7777rnr16hX0/FW9enX1799f3bp10+DBgxUfH69jx45p48aN+uGHH/TCCy+oQIECgV7kHj166Oabb5aZ6f3339fNN9+s+Ph41ahRQ3v37tX06dN1ySWXqEyZMoqLi8vU9/jee+/VpEmT1K5dOw0aNEi7du3SuHHjVLRo0Sz93AcNGqQpU6aoVatWGjJkiP78808NHTpUl156qTp37pylbSUJdu4pXbq0Ro0apf/7v//Ttm3b9I9//EOnTp3SDz/8oFWrVmnBggX65ptv9MADD6hr16668MIL9dtvv+mxxx7TZZddFugZTm/fqfXr1y8wiVeJEiW0atUq/fjjj3rsscckSbfeequee+45NWnSRA888IAuvPBCHTx4UGvXrlVMTIzuu+8+FS5cWJUrV9a8efN0ySWXKDQ0VLVr12btYngKyS4AZMKECRN05ZVX6tlnn1X37t2VkJCguLg4XX/99XrggQfS3a5Ro0aaPn26tm7dqoIFC6pu3bp65513VL58+aD1ixUrpmXLlmnAgAHq2rVr4BfLwYMHZzijazCXXnqpXn75ZY0ePVoLFizQZZddptdf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vihpk3PuP8nKyyar1lHSBv/zxZK6mVkRM6ssqaqktTkVb1524MABzZgxI0UCFxISok8//TSwVM+AAQM0cuRIzZo1S1dccYViYmI0evToM056Q0JC9O6776pkyZLq2bOnYmJi1KRJE3377beBWCRfb2/yWGrWrClJKZYOyozExESdOHFCRYoUCfp+tWrVNHjwYL399tvasmWLatWqpWHDhgXe79y5cyBpXbdunZ5++mkVLlw4Rdmnn36aZr9ly5ZVfHy84uPj1apVK82cOVORkZFBJ6IqUqTIaSe8AuAtDGMGACB/ayzpFknfmtlX/rJ/SbrZzOrIN0R5q6R+kuSc22hm8yR9J99MzgPz80zMZyIiIkINGzYMet9r0rDm5MOIt23bpldeeUUjR45UpUqV1KtXrzNq75JLLtHChQv1999/a/Xq1Ro8eLDat2+vrVu3KiIiQpI0Y8aMoMsiXXTRRWfUVsGCBRUeHq7ff//9tHWjo6N16623avDgwTp8+LBKlCihyMhIJR8BcODAAZmZ4uPjzyiOAgUKqHr16ml6dp1zOnz4cOC4AeQPJLsAAORjzrmPFfw+3KUZbDNGEmu4nKFmzZrpnXfeUe3atVW4cOHT1q9UqZIefPBBvfDCC/ruu+8kKbDdmfRQFi5cWC1atNA999yj3r1766+//tKll16qyMhIbdu2TbfeemuG22a2rerVq2vLli0pyvbt26eoqKg0dX/88UeFhYUFHZp8Lk6dOqVNmzalSeB37NihxMREVatWLUvbA3B+I9kFAADIAYMHD9acOXPUrFkzDRw4UGXLltWePXv0wQcfqHnz5urcubNuu+02xcbGqn79+goPD9eKFSu0fft2XXvttZIUWGpo8uTJ6ty5c2BJodTWrl2rkSNH6qabblLlypV14MABTZgwQQ0aNAgkmOPHj9cdd9yhQ4cOqWXLlipUqJB+/vlnLViwQEuXLlXBggVVo0YNbd++XbNmzVL16tUVFRWV7oRjjRs31ocffpiibOrUqVq4cKFuueUW1a5dW3///beWLVumF154Qffff78KFTq3X0V37typzz77TJJ06NAhzZgxQz/++GNg0q0k69evV8GCBfPd2sdAfkeyCwAAkANiYmL0+eefa/jw4brnnnt05MgRlS1bVv/4xz90ySWXSPItkfPSSy9p0qRJ+vvvv1W1alVNnz5d1113nSTfva9jx47VlClTNGHCBFWtWlXff/99mrZiY2NVqlQpPfzww9q9e7dKlSql5s2b69FHHw3U6dmzpyIiIjRu3Dg9//zzKlSokKpUqaL27durQAHftC49evTQRx99pHvvvVcHDhxQv3799NxzzwU9vk6dOumpp57Snj17AjNFd+jQQTt37tRzzz2n7du3KyQkRFWqVNHzzz+vPn36nPNnOn369MBEVyVLllTNmjW1aNGiwOeVZNmyZWrRokVgHV4A+YNl9XpnuS0+Pt4lzWgI74sbuiTTdbc+2jYbIwHgVWb2hXPuzG4cRAqnuzZv2rQpMDES8rYaNWpo4MCBuvvuu3M7lIATJ04oNjZWkydP1o033pjb4eRJOfId3fVl5uuWq5t9cSBPyOy1mdmYAQAAkCWGDx+uZ5555qyXTMoOs2bNUmRkpDp16pTboQDIYQxjBgAAQJbo0aOHduzYod27dys2Nja3w5Hkmyl62rRpgaHZAPIPkl0AAABkiQIFCqRYP/d8cMstt+R2CAByCX/iAgAAAAB4DskuAAAAAMBzSHYBAECu89rqEIBX8N1EXkayCwAAclVISIgSEhJyOwwAQSQkJCgkJCS3wwDOCskuAADIVVFRUdq5c6eOHj1KLxJwnnDO6ejRo9q5c6eioqJyOxzgrDAbMwAAyFXh4eGSpF27dunEiRO5HA2AJCEhIYqOjg58R4G8hmQXAADkuvDwcH6hBpA5u75MW1aubs7HgfMew5gBAAAAAJ5DsgsAAAAA8BySXQAAAACA55DsAgAAAAA8h2QXAAAAAOA5JLsAAAAAAM8h2QUAAAAAeA7JLgAAAADAc0h2AQAAAACeQ7ILAAAAAPCcQrkdAJBT4oYuSVO29dG2uRAJAAAAgOxGzy4AAAAAwHNIdgEAAAAAnkOyCwAAAADwHJJdAAAAAIDnkOwCAAAAADyHZBcAAAAA4DkkuwAAAAAAz8nRZNfMXjKzfWa2IVnZXDP7yv/YamZf+cvjzCwh2XvP5WSsAAAAAIC8q1AOtzdd0rOSXkkqcM51TXpuZhMkHU5W/2fnXJ0ciw4AAAAA4Ak5muw65z40s7hg75mZSbpJUtOcjAkAAAAA4D3n0z27V0va65z7MVlZZTP70sxWm9nVuRUYAAAAACBvyelhzBm5WdLsZK93S6ronDtoZvUkLTSzWs65I6k3NLO+kvpKUsWKFXMkWAAAAADA+eu86Nk1s0KSOkmam1TmnDvunDvof/6FpJ8lVQu2vXNuqnMu3jkXHxkZmRMhAwAAAADOY+dFsiupuaTvnXM7kgrMLNLMCvqfXyipqqRfcik+AAAAAEAektNLD82WtEZSdTPbYWZ9/G91U8ohzJL0D0nfmNnXkuZL6u+cO5Rz0QIAAAAA8qqcno355nTKewUpe0PSG9kdEwAAAADAe86XYcwAAAAAAGQZkl0AAAAAgOeQ7AIAAAAAPIdkFwAAAADgOSS7AAAAAADPIdkFAAAAAHgOyS4AAAAAwHNIdgEAAAAAnkOyCwAAAADwHJJdAAAAAIDnkOwCAAAAADyHZBcAAAAA4DkkuwAAAAAAzyHZBQAAAAB4DskuAAAAAMBzSHYBAAAAAJ5DsgsAAAAA8BySXQAAAACA55DsAgAAAAA8h2QXAAAAAOA5JLsAAAAAAM8h2QUAAAAAeA7JLgAAAADAc0h2AQAAAACeQ7ILAAAAAPAckl0AAAAAgOeQ7AIAAAAAPIdkFwAAAADgOSS7AAAAAADPIdkFAAAAAHgOyS4AAPmYmVUws1VmtsnMNprZ//nLI8zsXTP70f9vKX+5mdnTZvaTmX1jZpfn7hEAABAcyS4AAPnbSUn3O+dqSmooaaCZXSxpqKT3nHNVJb3nfy1J10mq6n/0lTQl50MGAOD0SHYBAMjHnHO7nXP/9T//Q9ImSbGSOkia4a82Q9IN/ucdJL3ifD6TVNLMyuZw2AAAnBbJLgAAkCSZWZykupI+lxTtnNst+RJiSVH+arGStifbbIe/DACA8wrJLgAAkJldIOkNSfc6545kVDVImQuyv75mtt7M1u/fvz+rwgQAINMK5XYAQGbFDV2S2yEAgCeZWYh8ie4s59yb/uK9ZlbWObfbP0x5n798h6QKyTYvL2lX6n0656ZKmipJ8fHxaZJhAACyGz27AADkY2Zmkl6UtMk5959kby2W1NP/vKekRcnKb/XPytxQ0uGk4c4AAJxP6NkFACB/ayzpFknfmtlX/rJ/SXpU0jwz6yPpV0ld/O8tldRG0k+Sjkq6LWfDBQAgc0h2AQDIx5xzHyv4fbiS1CxIfSdpYLYGBQBAFmAYMwAAAADAc+jZBQAAAJC37foyeHm5ujkbB84r9OwCAAAAADwnR5NdM3vJzPaZ2YZkZaPMbKeZfeV/tEn23jAz+8nMNptZq5yMFQAAAACQd+V0z+50Sa2DlE90ztXxP5ZKkpldLKmbpFr+bSabWcEcixQAAAAAkGflaLLrnPtQ0qFMVu8gaY5z7rhzbot8SxzUz7bgAAAAAACecb7cs3uXmX3jH+Zcyl8WK2l7sjo7/GUAAAAAAGTofEh2p0i6SFIdSbslTfCXB1vzzwXbgZn1NbP1ZrZ+//792RMlAAAAACDPyPVk1zm31zmX6Jw7JWma/jdUeYekCsmqlpe0K519THXOxTvn4iMjI7M3YAAAAADAeS/Xk10zK5vsZUdJSTM1L5bUzcyKmFllSVUlrc3p+AAAAAAAeU+hnGzMzGZLaiKpjJntkDRSUhMzqyPfEOWtkvpJknNuo5nNk/SdpJOSBjrnEnMyXgAAAABA3pSjya5z7uYgxS9mUH+MpDHZFxEAAAAAwItyfRgzAAAAAABZjWQXAAAAAOA5JLsAAAAAAM8h2QUAAAAAeA7JLgAAAADAc0h2AQAAAACeQ7ILAAAAAPCcHF1nFzjfxA1dkqZs66NtcyESIOsF+/mW+BkHAAD5Az27AAAAAADPIdkFAAAAAHgOyS4AAAAAwHNIdgEAAAAAnkOyCwAAAADwHGZjBgAAAHLari/TlpWrm/NxeB2fc75Gzy4AAAAAwHNIdgEAAAAAnkOyCwAAAADwHJJdAAAAAIDnkOwCAAAAADyHZBcAAAAA4DkkuwAAAAAAzyHZBQAAAAB4TqHcDgAAAAAAcsyuL9OWlaub83Eg29GzCwAAAADwHJJdAAAAAIDnkOwCAAAAADyHZBcAAAAA4DlMUAUAAAB4ARMvASnQswsAAAAA8BySXQAAAACA55DsAgAAAAA8h2QXAAAAAOA5JLsAAAAAAM8h2QUAAAAAeA7JLgAAAADAc0h2AQAAAACeQ7ILAAAAAPCcQrkdAADg3MUNXZLbIQAAAJxX6NkFAAAAAHgOyS4AAAAAwHNIdgEAAAAAnpOjya6ZvWRm+8xsQ7Ky8Wb2vZl9Y2YLzKykvzzOzBLM7Cv/47mcjBUAAAAAkHfldM/udEmtU5W9K+kS51xtST9IGpbsvZ+dc3X8j/45FCMAAAAAII/L0WTXOfehpEOpylY45076X34mqXxOxgQAAAAA8J7zbemh3pLmJntd2cy+lHRE0gjn3Ee5ExYAAABwGru+DF5erm7OxgFA0nmU7JrZcEknJc3yF+2WVNE5d9DM6klaaGa1nHNHgmzbV1JfSapYsWJOhQwAAAAAOE+dF7Mxm1lPSe0k9XDOOUlyzh13zh30P/9C0s+SqgXb3jk31TkX75yLj4yMzKmwAQAAAADnqbPu2TWzUpIqSdrknDt+DvtpLWmIpGucc0eTlUdKOuScSzSzCyVVlfTL2baDvCVu6JLcDgEA8pysujYDAOAFmerZNbPRZvZostdNJf0q6QtJP5tZrUzuZ7akNZKqm9kOM+sj6VlJxSW9m2qJoX9I+sbMvpY0X1J/59yhoDsGACCfyaprMwAAXpXZYcw9JH2f7PUESR9Laixps6RxmdmJc+5m51xZ51yIc668c+5F51wV51yF1EsMOefecM7Vcs5d5py73Dn31hkcFwAAXpcl12YAALwqs8luOfmHEJtZBUmXSRrpnPtM0n8kNcye8AAAQDq4NgMAkIHMJrt/SCrhf95U0m/OubX+18ckFcvqwAAAQIa4NgMAkIHMTlC1WtJQMzsl6QFJi5K9V03S9qwODAAAZIhrMwAAGchssnufpJmS5kj6StLwZO/dKunDLI4LAJAOZiuHH9dmAAAykKlk1zm3U74hUsG0kpSQZREBAIDT4toMAEDGMrv00PtmViOdt2MkLc+6kAAAwOlwbQYAIGOZnaCqiaTwdN4Ll29NXAAAkHOaiGszAADpymyyK0kudYGZFZZvCNWeLIsIAABk1jlfm83sJTPbZ2YbkpWNMrOdZvaV/9Em2XvDzOwnM9tsZq2y4iAAAMgO6Sa7ZjbSzBLNLFG+i+lnSa+TlSfIt2j9qzkULwAA+VY2XZunS2odpHyic66O/7HU3/7FkrpJquXfZrKZFTzHwwIAIFtkNEHVUkkHJJmkpyVNkLQ1VZ2/JX3vnPsoW6IDAADJZfm12Tn3oZnFZbL9DpLmOOeOS9piZj9Jqi9pTSa3BwAgx6Sb7Drn1klaJ0lm9oekJc65AzkVGAAASCmHr813mdmtktZLut8595ukWEmfJauzw18GAMB5J7NLD83I7kAAADkj2Dq9Wx9tmwuR4Fxk87V5iqR/yzdU+t/y9SD3lq9HOU0owXZgZn0l9ZWkihUrZk+UQF6x68vcjgDIlzKV7JpZiKT/k9RJUnlJoanrOOeisjY0AACQnuy8Njvn9iZrZ5qkt/0vd0iqkKxqeUm70tnHVElTJSk+Pj5oQgwAQHbKVLIraaKkfvJd7FbJdz8QAADIPdl2bTazss653f6XHSUlzdS8WNJrZvYfSeUkVZW0NqvaBQAgK2U22e0iaahzbkJ2BgMAADItS67NZjZbvjV7y5jZDkkjJTUxszryDVHeKl9SLefcRjObJ+k7SSclDXTOJZ5L+wAAZJfMJrsm6ZvsDAQAAJyRLLk2O+duDlL8Ygb1x0gac67tAgCQ3dJdZzeVaZKCXQwBAEDu4NoMAEAGMtuzu1dSDzNbJeldSb+net8556ZkaWQAACAjXJsBAMhAZpPdJ/3/VpR0TZD3nXzLFAAAgJzBtRkAgAxkdp3dzA53BgAAOYBrMwAAGeNCCQAAAADwnEwnu2YWZWaPmdl7ZvaD2f9v787DJavKQ42/nyAogwIyyGiL4BwFbHGOCgmCeAUUEBwgTqhXSMxVY4dr1AxGNDibi6IyGZmMEJDGoQWUJIqCMogi0kCLnW4GmQWV6bt/rFV0dVFVp073OTXs8/6ep546tfauqm8PZ6/69l5r7XhaLf+riHje7IUoSZK6sW6WJKm3gZLdiNgZuAp4NeV+e08A1q6TNwfePRvBSZKk7qybJUnqb9ABqj4JnAe8ipIgv7Ft2o+B185wXNLIzFuwsGv5kiP2HHIkktSXdbMkSX0MmuzuBOyVmQ9ERHRMuxnYdGbDkiRJU7BuliSpj0H77N4ObNJj2raUe/1JkqThsW6WJKmPQZPdM4C/j4ht28oyIjYG3gOcNuORSZKkfqybJUnqY9BkdwFwB/AL4Pxa9nngSuD3wAdmPjRJktSHdbMkSX0M1Gc3M2+NiOcCbwB2Be4CbgG+BJyQmX+cvRAlSVIn62ZJkvobdIAqMvMe4Mv1Ic2IXiMfS5KmZt0sSVJvg95n9/sR8Y6I6DUQhiRJGiLrZkmS+hu0z+5NwJHAsohYFBFviogNZzEuSZLUn3WzJEl9DJTsZua+lPv1HQT8DvhX4PqIOCsi3hAR689ijJIkqYN1syRJ/Q16ZZfMvCszT8rMfSiV61vrpC8C189GcJIkqTfrZkmSehs42W2XmXcCVwPXUm578MiZDEqSJE2PdbMkSSubVrIbETtHxMcj4jrKPf1eDHwa2H42gpMkSf1ZN0uS1N1Atx6KiCOA/YHHAVcBxwInZ+YVsxibJEnqwbpZkqT+Br3P7v7AqZRK9JJZjEeSJA3GulmSpD4GSnYzc9vZDkSSJA3OulmSpP4G7rMbEWvXm9d/OSK+ExHb1/LXRMRTZi9ESZLUjXWzJEm9Ddpn94nAIuDRwE+AlwCt+/e9CNiTcp8/SZI0BNbNkiT1N+iV3c8A1wHzgJcB0Tbt+8ALZzYsSZI0BetmSZL6GDTZfRHwkcy8DciOaTcAmw/6hRFxTETcGBGXt5VtFBGLIuKq+rxhLY+I+ExELI6IyyJip0G/R5KkhpuxulmSpCYaNNn9A71vTr8lcNs0vvM4YPeOsgXAOZm5PXBOfQ2wB+U+gdsDhwBHTeN7JElqspmsmyVJapxBk91FwOER8ei2soyItYHDgLMH/cLMPB+4paN4L+D4+vfxwN5t5SdkcQGwQUR4plqSpBmsmyVJaqJB77P7XuC/gcWUyjWBDwBPA9YCXrWacWyWmcsBMnN5RGxay7cEftM239JatusLA9UAACAASURBVHw1v0+SpEk323WzJEkTbaAru5n5G+CZwOcpA2FcTekL9DXgWZl5/SzFF13KOvslERGHRMRFEXHRTTfdNEuhSJI0PkZYN0uSNBEGvbJLZt4K/F19zLQbImLzelV3c+DGWr4U2Lptvq2AZV1iOxo4GmD+/PkPSYYlSWqiWa6bJUmaaAMnu7PsTOBg4Ij6fEZb+aERcTLwHOD2VnNnSZIkSVNYdnH38i12HG4c467benIdTbyhJ7sRcRLlxvcbR8RS4IOUJPfUiHgz5Z6B+9XZzwZeTumPdDfwxmHHK0mSJEmaPENPdjPzwB6Tdu0ybwLvnN2IJEmSJElNM+ithyRJkiRJmhgmu5IkSZKkxhk42Y2IgyJig9kMRpIkDc66WZKk3qbTZ/dYYEfgtogIym0OjvY+fhrUvAULRx2CJDWNdbMkST30THYjYiFwaX1cBgTQuoftwyijKJ8FWKFKkjQE1s2SJA2u35XdRZSzxa8AnkypTD8XEecBF7JyBStJkmafdbMkSQPqmexm5qdaf0fE2sDvgZ8CTwLeQKlMvxIR3wK+m5nfmuVYJUma06ybJU2cZRc/tGyLHYcfh+akfs2YDwMuBi7NzDtLVyCOzczLImJN4B7gJGBr4HPAdkOIV5IaqVef9iVH7DnkSDTOrJslSRpcv2bMrwTeD2wcEUsoZ4sPiIhHAj+r83wzM386uyFKkqTKulmSpAH1a8b85wARsTmwA7AQ+DPg7cA6lAr2HRFxMvBfmfnH2Q9XkjQbul1Z9qry+LFuliRpcFPeZzczl2fmN+vLt2TmRsB8yiAYWwPHAbfOWoSSJGkl1s2SJE1tymS3hyvq8+GZuTXwrBmKR5IkrRrrZkmS2vTrs7uSzGxPjBP4NfDHOu2Krm+SJEmzxrpZkqTeBk5222XmA8DjZzgWSZK0iqybJUla2Solu5IkSdKc1u3+sZLGyqr22ZUkSZIkaWyZ7EqSJEmSGsdkV5IkSZLUOCa7kiRJkqTGcYAqSRpj8xYsHHUIkiRJE8kru5IkSZKkxjHZlSRJkiQ1jsmuJEmSJKlxTHYlSZIkSY1jsitJkiRJahyTXUmSJElS45jsSpIkSZIax2RXkiRJktQ4a446AEmSJEkaO8su7l6+xY7DjUOrzCu7kiRJkqTGMdmVJEmSJDWOya4kSZIkqXFMdiVJkiRJjWOyK0mSJElqHJNdSZIkSVLjmOxKkjTHRcQxEXFjRFzeVrZRRCyKiKvq84a1PCLiMxGxOCIui4idRhe5JEm9mexKkqTjgN07yhYA52Tm9sA59TXAHsD29XEIcNSQYpQkaVpMdiVJmuMy83zglo7ivYDj69/HA3u3lZ+QxQXABhGx+XAilSRpcCa7kiSpm80yczlAfd60lm8J/KZtvqW1TJKksWKyK0mSpiO6lOVDZoo4JCIuioiLbrrppiGEJUnSykx2JUlSNze0mifX5xtr+VJg67b5tgKWdb45M4/OzPmZOX+TTTaZ9WAlSeq05qgDAIiIJwGntBVtC3wA2AB4K9A6JXx4Zp495PAkAOYtWPiQsiVH7DmCSCRpKM4EDgaOqM9ntJUfGhEnA88Bbm81d5YkaZyMRbKbmVcCOwBExBrA/wCnA28EPpmZR44wPEmSGi0iTgJeAmwcEUuBD1KS3FMj4s3AdcB+dfazgZcDi4G7KXW1JEljZyyS3Q67Aldn5q8junULkiRJMykzD+wxadcu8ybwztmNSJKk1TeOfXYPAE5qe31ovWn9Ma0b2kuSJEmS1M9YJbsRsRbwSuBrtego4AmUJs7LgY/3eJ8jPkqSJEnVZ89d/OBDmqvGKtkF9gB+mpk3AGTmDZl5f2Y+AHwR2LnbmxzxUZIkSZLUbtyS3QNpa8LcuuVBtQ9w+dAjkiRJkiRNnLEZoCoi1gH+HHhbW/HHImIHys3ql3RMkyRJkiSpq7FJdjPzbuAxHWVvGFE4kiRJkqQJNm7NmCVJkiRJWm0mu5IkSZKkxjHZlSRJkiQ1jsmuJEmSJKlxTHYlSZIkSY0zNqMxS5LGy7wFC7uWLzlizyFHIklzxLKLH1q2xY7Dj0NqCJNdSZIkSauvW7IujZDNmCVJkiRJjWOyK0mSJElqHJNdSZIkSVLjmOxKkiRJkhrHZFeSJEmS1Dgmu5IkSZKkxjHZlSRJkiQ1jsmuJEmSJKlxTHYlSZIkSY2z5qgDkCRJksbasotHHYGkVWCyK0mSJEmD6nbyY4sdhx+HpmQzZkmSJElS45jsSpIkSZIax2RXkiRJktQ49tmVJEmSpNVhP96x5JVdSZIkSVLjeGVXWg3zFix8SNmSI/YcQSSSJEmS2nllV5IkSZLUOCa7kiRJkqTGMdmVJEmSJDWOfXY1sG79U8E+qpIkSZLGj1d2JUmSJEmNY7IrSZIkSWock11JkiRJUuOY7EqSJEmSGsdkV5IkSZLUOI7GLElD1mtkc0mSJM0cr+xKkiRJkhrHK7uaFV65kiRJkjRKXtmVJEmSJDWOya4kSZIkqXFMdiVJkiRJjWOyK0mSJElqHJNdSZIkSVLjmOxKkiRJkhpnrG49FBFLgDuB+4H7MnN+RGwEnALMA5YA+2fmraOKUZKmw9twSZIkjcY4Xtl9aWbukJnz6+sFwDmZuT1wTn0tSZIkSVJP45jsdtoLOL7+fTyw9whjkSRJkiRNgHFLdhP4TkT8JCIOqWWbZeZygPq86ciikyRJkiRNhLHqswu8IDOXRcSmwKKI+OUgb6qJ8SEA22yzzWzGJ0lzXrd+yEuO2HMEkUiSJPU2Vld2M3NZfb4ROB3YGbghIjYHqM83dnnf0Zk5PzPnb7LJJsMMWZIkSZI0hsYm2Y2IdSNi/dbfwG7A5cCZwMF1toOBM0YToSRJkiRpUoxTM+bNgNMjAkpcJ2bmtyLiQuDUiHgzcB2w3whjlCRJUpMtu3jUEUiaIWOT7GbmNcAzu5TfDOw6/IgkSZIkSZNqbJJdSZIkSc3x2XMXP/j3YbtsN8JIRqRbK4Etdhx+HHPY2PTZlSRJkiRpppjsSpIkSZIax2RXkiRJktQ4JruSJEmSpMZxgCpJmiHzFiwcdQiSJEmqvLIrSZIkSWocr+xqtXk1S5IkSdK48cquJEmSJKlxTHYlSZIkSY1jsitJkiRJahz77EqSJEkN8dlzF486BGlsmOxKkiRJDdaeAB+2y3YjjEQaLpNdSZLUVUQsAe4E7gfuy8z5EbERcAowD1gC7J+Zt44qRkmSerHPriRJ6uelmblDZs6vrxcA52Tm9sA59bUkSWPHZFeSJE3HXsDx9e/jgb1HGIskST2Z7EqSpF4S+E5E/CQiDqllm2XmcoD6vOnIopMkqQ/77EqSpF5ekJnLImJTYFFE/HLQN9bk+BCAbbbZZrbikySpJ6/sSpKkrjJzWX2+ETgd2Bm4ISI2B6jPN/Z479GZOT8z52+yySbDClmSpAeZ7EqSpIeIiHUjYv3W38BuwOXAmcDBdbaDgTNGE6EkSf3ZjFmSJHWzGXB6RED5vXBiZn4rIi4ETo2INwPXAfuNMEZJknoy2ZWGYN6ChV3Llxyx55AjkaTBZOY1wDO7lN8M7Dr8iCRJmh6bMUuSJEmSGsdkV5IkSZLUOCa7kiRJkqTGMdmVJEmSJDWOya4kSZIkqXEcjVld9Ro9WJIG1e044gjkkiRpWLyyK0mSJElqHK/sSpJWm61BJGnIll086gikseeVXUmSJElS43hldw7pdeXFPnQzyytckiRJ0uh5ZVeSJEmS1Dhe2ZVGyNFqJUmS5pBefa232HG4ccwRJruSJEnSXNMt6TLhUsOY7EpSH159lyRJmkwmu5IkSZJmxGfPXTzqEKQHOUCVJEmSJKlxTHYlSZIkSY1jsitJkiRJahyTXUmSJElS44zFAFURsTVwAvBY4AHg6Mz8dER8CHgrcFOd9fDMPHs0UTZXt9FmpSZzn5ckSWq+sUh2gfuAd2fmTyNifeAnEbGoTvtkZh45wtgkSZIkSRNmLJLdzFwOLK9/3xkRVwBbjjYqSZIkSdKkGrs+uxExD9gR+FEtOjQiLouIYyJiw5EFJkmSJEmaGGNxZbclItYDvg68KzPviIijgH8Esj5/HHhTl/cdAhwCsM022wwvYGkWdOtPuuSIPUcQiSRJkjS5xubKbkQ8nJLofjUzTwPIzBsy8/7MfAD4IrBzt/dm5tGZOT8z52+yySbDC1qSJEmSNJbG4spuRATwZeCKzPxEW/nmtT8vwD7A5aOIT9Jk8Kp4s7g9Jak5Pnvu4gf/PmyXEQaiOWUskl3gBcAbgJ9FxCW17HDgwIjYgdKMeQnwttGEJ0mSJEmaJGOR7GbmfwHRZZL31B2AVz8kSZIkaWVj02dXkiRJkqSZYrIrSZIkSWqcsWjGLEmSJElz1rKLH1q2xY7Dj6NhTHalCdCtX3Yv9teefdPZHlpZr3Xnfitp6LolFxo7K4/ivN0II9EkshmzJEmSJKlxTHYlSZIkSY1jM2ZJkiRJGjf2411tJruSGs3+tZIkSXOTya4kSZI0wdoHcWqCpi2PRsdkV9JIdLvi6oi8kiRNAEey1oRwgCpJkiRJUuN4ZVeSJEmSJkGvq+oOXNWVV3YlSZIkSY3jld2GcgRaNZ37+NxkX29JEqw8iNVhu2w3wkg0zryyK0mSJElqHJNdSZIkSVLj2IxZkiRJ0tjz/ruaLpPdCWM/RUlN5LFNkuY2E1nNBpsxS5IkSZIaxyu7ksaGI+1KktR8jqSsYTHZlSRJkuYIE03NJSa7kqSJ1qu/r60CJEma20x2JUmSpDnIq7wNt+zih5ZtsePw4xghB6iSJEmSJDWOV3YlSZIkddft6uCE8Mq1THYlzRj7TkqSJI3ABJ+UmE02Y5YkSZIkNY5XdofM+4hKkiQ1n01oR6N9vUsmu5IkSdKEGaekbpximQ2NOnExx0ZoNtkdU736PkozZTr9a0e5P/q/IEmSpFVhsitJkiSNWKOuHo4h1+/cZLI7AxyBVpIkaW4aJIky0Wq2id++vUZybkDzZkdjliRJkiQ1jld2x4B9EjWT3J8kSeoww/cgXZ0Bmab9Xu+fKq0yr+xKkiRJkhrHK7uSJEnSDJj4W/BMcRV54vumdtHEZdIKJruSJEnSFCY+kR1TM7Fep/sZo/jORhvje/fajFmSJEmS1Dhe2e2j20A/3k5ITTcbA1w5aJYkaVKN4gqeTWtHw/XePCa7kiRJ0pgadQLWK9mfq814V3W5R70dV8kYN08elMnuNHmFSpIkSZLGn8muJEmSmsP70mrMDXJ1uNfV31W9QjyRV5ZnwEQkuxGxO/BpYA3gS5l5xIhDkiRpTrNu1liYwcR2rjbLbZmryVAv4zRi81jtm4P+z/Wab8jNoMd+NOaIWAP4V2AP4KnAgRHx1NFGJUnS3GXdLEmaBJNwZXdnYHFmXgMQEScDewG/GGlUA7B/rySpoUZXNzdgwJRGmZDt0ZSrlsO6wjdWVxI1kOlss9VpRj1pxv7KLrAl8Ju210trmSRJGg3rZknS2JuEK7vRpSxXmiHiEOCQ+vJ3EXHlrEc1ezYGfjvqIFbDpMcPLsO4mPRlmPT4YcKXIT4KzMwyPG61g2memaqbJ3ofmyGug2Jo6+Evh/Elq8Z9oQHrYIb2r43/coD1MJv78hj8n0y1LwxUN09CsrsU2Lrt9VbAsvYZMvNo4OhhBjVbIuKizJw/6jhW1aTHDy7DuJj0ZZj0+MFlUF8zUje7fVwHLa4H1wG4DlpcDzO3DiahGfOFwPYR8fiIWAs4ADhzxDFJkjSXWTdLksbe2F/Zzcz7IuJQ4NuU2xsck5k/H3FYkiTNWdbNkqRJMPbJLkBmng2cPeo4hmTSm2NPevzgMoyLSV+GSY8fXAb1MUN1s9vHddDienAdgOugxfUwQ+sgMnPquSRJkiRJmiCT0GdXkiRJkqRpMdmdJRFxTETcGBGX95j+6Ij4RkRcGhE/j4g31vIdIuKHteyyiHhN23uOi4hrI+KS+thhHJehTru/Lc4z28ofHxE/ioirIuKUOrDJ2C1DRLy0Lf5LIuIPEbF3nTZu22HDiDi97i8/joint03bPSKujIjFEbGgrXxo22FV44+IrSPivIi4om6bv2p7z4ci4n/atsHLZyv+1VmGOm1JRPysxnlRW/lGEbGoboNFEbHhOC5DRDyp43/hjoh4V502tO3Qb39omyci4jN1f78sInZqm3ZwXddXRcTBbeXPqttncX1vt1vqaDUMsO+9rm6vyyLiBxHxzGHHONumWgdt8z07Sv2577BiG6ZB1kNEvKQeT34eEd8fZnzDMMD/Q8/fVk2xusfzphhwPTT6+DjIOmibd9WOj5npYxYewJ8COwGX95h+OPDR+vcmwC3AWsATge1r+RbAcmCD+vo4YN9xX4b6+nc93nMqcED9+/PAO8Z1Gdrm2aiWrzOm2+FfgA/Wv58MnFP/XgO4Gti27luXAk8d9nZYjfg3B3aqf68P/Kot/g8B7xn3bVBfLwE27vKejwEL6t8LWvvhOC5D2zxrANcDjxv2dui3P7TN83Lgm5R7wD4X+FEt3wi4pj5vWP/esE77MfC8+p5vAnsMa7+aK48B9r3nt22PPVrbrUmPqdZBnWcN4FxKP+ih1THjtB6ADYBfANvU15uOOuYRrIMpf5dM+mN1judNegy4Hhp9fBxkHdRpq3x89MruLMnM8ykHqJ6zAOvXqwjr1Xnvy8xfZeZV9TOWATdSDnZDt6rL0GvmOt8uwL/XouOBvWcm2h4Bzswy7At8MzPvnp0o+xtgGZ4KnFPn/SUwLyI2A3YGFmfmNZl5D3AysNewt8Oqxp+ZyzPzp7X8TuAKYMvZirOf1dgG/exFWfcwHv8LgyzDrsDVmfnr2YmytwH3h72AE7K4ANggIjYHXgYsysxbMvNWYBGwe532qMz8YZba9ARmeTvMRVPte5n5g7pdAC6g3LO3UQb4/wM4DPg6pd5vpAHWw2uB0zLzujp/49bFTP+2mkSreTxvjEHWQ9OPj9P4rbfKx0eT3dH5HPAUYBnwM+CvMvOB9hkiYmfKFbmr24o/XJsyfDIi1h5atN31W4ZHRMRFEXFB1Oa/wGOA2zKzddBeyoiSlzZTbgfK/SNP6igbp+1wKfAqeHCfeRzlYLgl8Ju2+Vrre9y2Q6/4HxQR84AdgR+1FR9at8ExMctNgAfQbxkS+E5E/CQiDml7z2aZuRzKwR7YdIjxdjPldqD7/8LQt0OP/QF67/P9ypd2KdfovJlyNWdOiYgtgX0oLW3msicCG0bE9+ox86BRBzQCg/wuaYxVOJ43Up/10K7Rx8de62B1j48mu6PzMuASSlPlHYDPRcSjWhPr2auvAG9sO8j9LaV54bMpzfHeN9SIH6rfMmyTmfMpZ2k/FRFPoDRF6TTq4cAH2Q5/QrmXZMu4bYcjKD8OLqGc+bqYcha41/oet+3QK34AImI9ytm8d2XmHbX4KOAJlG22HPj4UCN+qH7L8ILM3InS/OidEfGnI4pxKlNth7WAVwJfa3vP0LdDj/3hwcld3tJvnx+3/4U5LSJeSvkxN+pj6ih8CnhfZt4/6kBGbE3gWcCelPr57yLiiaMNaej6/i5pklU8njfOFOuhNU+jj49TrIPVOj5OxH12G+qNwBG16dziiLiWkkD9uB7UFgLvr003gAev/gD8MSKOBd4z7KA79FyG2gSbzLwmIr5HOVPzdUozlDXrVcWtKGcuR6nnMtTp+wOnZ+a9rTeM23aoB4XWwFoBXFsf6wBbt83aWt+/ZYy2Q5/4iYiHU/abr2bmaW3vuaH1d0R8EThrmDF36rcMbf8LN0bE6ZTm5ecDN0TE5pm5vJ5UGWlzvX7LUO0B/LR93Q97O/TaH9ospfs+vxR4SUf592r5Vl3m15BFxDOAL1H6TN886nhGYD5wcvnXY2Pg5RFxX2b+x2jDGrqlwG8z8y7grog4H3gmpR/fXDHV75JGWI3jeaMMsB4af3wcYB2s1vHRK7ujcx2l/xu1X9yTgGvq1ZPTKf0U2q+gtK4ytn6I7g30HdVxCHotw4atpr0RsTHwAuAX9cB9HqUPLMDBwBlDj3plXZehbfqBdDTbHLftEBEbxIrRlN8CnF8TlwuB7aOMvLwWpQnqmeO2HXrFX9fvl4ErMvMTHe9p77ezD2O6DSJi3YhYv86zLrAbK2I9k7LuYQz+F/rsRy09/xeqWd0O/faHNmcCB0XxXOD2enLq28Bu9di0IWU7fLtOuzMinls//yBGf0yacyJiG+A04A2ZOZeSmgdl5uMzc15mzqOMp/C/52CiC+X/70URsWZErAM8h9KHby6Z6nfJxFvN43ljDLIemn58HGQdrO7xMcrvXs20iDiJciVhY+AG4IPAwwEy8/MRsQVlVN/NKU01jsjMf4uI1wPHAj9v+7i/yMxLIuJcymBVQWni8vbM/N0YLsPzgS8AD1BOqHwqM79cP3NbykBJG1GaSb4+M/84bstQ3zsP+G9g6/b+MmO4HZ5HGVjnfsoolm9uDWYQ5VYwn6KMYndMZn64lg9tO6xq/BHxQuA/KX2WWuv/8Mw8OyK+QmnelZTRjt82m5XgaizDtpSTV1Ba0pzYtg0eQxkVexvKj5v9MnOqAWyGvgz1vetQ+k5tm5m3t33m0LZDr/2Bsv5ayxCU/m67A3dTuoFcVN//pjo/wIcz89haPp9yDHgkpS/UYWnFOKMG2Pe+BLwaaA18dl/tBtMYU62DjnmPA87KzH+nYQZZDxHxXsrVzQeAL2Xmp0YS7CxZnd8lTbG6x/OmGHA9NPr4OMg66Jj/OKZ5fDTZlSRJkiQ1js2YJUmSJEmNY7IrSZIkSWock11JkiRJUuOY7EqSJEmSGsdkV5IkSZLUOCa7mraI+FBEZNvj+og4q970emJFxFp12XYY8vduWr933gx+5pERsWSKedq34wMRcWtEXBgRH46Ix85ULH2+f0n97v/bZdqL2mKbN9uxDCIi3h0R53Upf3FEnBERN0bEvfX5GxGxR711wqCff1ZE/KzP9M/VbbR2ROwXEVdGxBqrujySmsW6eca/17r5odOsmx863bp5zJnsalXdDjyvPt4FPBFYFBEbjTSq1bMW5X53Q61QgU3r984b8vfCiu34fOAA6o3LgZ9FxLOG8P2/Aw7sUn5AnTYWImI94H3AER3l7wLOo9yb9jBgV+BQSuxnAbtM42tOAp4eEU/r8v1rAPsCp9X7IX+dcv/FN0x7YSQ1mXXzzLFufijr5pW/x7p5ApjsalXdl5kX1MfJwEGUimH3Ecc1FBHxyFHHMEPat+O3M/MjwDOA5cApQzg7eRbw1Ih4equgrfI4c5a/ezoOBP4IfKdVEBE7AUcC/5CZr8rMUzLz/Mw8NTMPBF4I/HYa33EGcDflx0SnlwKbUSpdMvMB4ARKJS5JLdbNzWDdPBjrZk3JZFcz5dL6vHV7YURsFBFfiIgbIuIPEfGDiHhOxzxrRMTfRsSvIuKPEbE0Io7rmOfQiLiqTl8cEX/dMf1DEfHbiNgxIi6IiLsj4uKIeFHHfK+MiJ9ExF212cmPIuLFdfKd9fnY9mY69ZER8bqIOCEibgO+UT8vI+LQbrF0lD0uIk6qMd4dEZdFxGtrM6BW85jzWt87zfW3QUScWJdpebemR9ORmbcBfwM8AfjzQd4TEU+LiG9FxC01jisi4p0DvPV/gP9i5UpkF2A9ulSotbnShRFxe10n34iI7TrmeWFE/GdE3FEfl0TEfm3T++0DvRxMOXObbWWHATcC/9TtDZn5w8y8tL0sIt4SET+v+/GvI+Jv2uZvnXF+TZePOwC4gXKmuuXrwE7tP0YkqYN1c0csHWXWzd1ZN6+Y37p5wpnsaqZsU5+vbRVExNrAdykH5fcCewM3Ad+NlfudfAH4e+BU4BXAu4F12z7nrcBnKQfY/wV8Dfh4RCzoiGEd4Pj6ea+mnO07PSLWqZ/zBODfgXPr57yOcgBrNe9qNWv5J1Y0A1ve9vlHUird/YB/HmitlO/dFPgh8GzgPfW7v0z58bG8xgHwzrbvnc76OxbYg9Jk7RBgN7qfgZyO84D7gOcOOP+ZlOZCrwdeSdle6w/43pNYOd4DKT9Y7uoy71bA54C9gLcCawD/HRGPBoiIR1G26TWUfWBf4CvABnX6VPvAQ0TEusBzgB90TPpT4NzMvG+QhYyI9wJHAf9B2c+PAv6x4wfZScD20dZMLSIeDuwDnJqZ97fKM/MK4FZK8yxJ6sa6uQfr5ilZN69g3TzJMtOHj2k9gA9RmoCsWR9PABYBFwNrt833ZuAeYPu2sjWBq4F/qa+fDCTwlz2+62GUM4zHdpT/P0qflke0xZTALm3z7FDLdq+v9wVu7rNc69X5/6KjfF4tP73LexI4tNv6aXv9EUrlsHmP7316/ZyXdJQPsv6eVt/7mo7luAVYMsh27DN9OXDUAPvDxjWGP5nmfrSE8iNlE+Beyg+OtSiVxN6USieBeT3evwbwSMqPnINq2fz6nvV7vKfvPtDjPc+vn/m0jvLfAx/pKIu2/4s1gYfV8kdR+gp9sGP+fwCuB9aor9euy/8vbfO01sPzusT2PeCr01keHz58NPOBdXP7NOtm6+b2MuvmOfzwyq5W1WMoB8F7gcXAjsCrsnTQb/kz4CfAtRGxZkSsWcu/TznwQenvAHBcj+/ZCtiCcsa43SmUg9SftJXdSznAtPyi7TOgNEl6dEQcHxG71bOC07FwmvO37AJ8KzOXTznnygZZf8+uzw82K8rS5GbRKsbabtDRCm8BfgN8PiJeU8+WDywzb6KczT2A0q8sgG92DSjiuRGxKCJuppzdvpvyA+KJdZarKRXXiRGxV0Rs0PERq7IPtM7Ud+vjkx2vX82K/4t7gY/V8udRroh8rbUt6/Y8l9LfZyuA+v9zOrB/xIOjRb4G+DVwQZfv/21bfJJk3Tw46+Y+rJutm5vCOy936QAABiZJREFUZFer6nbKwfy5wNsoZ/1OjIj2fWrjOv3ejscbWdF/6DHAXZl5R4/v2bw+39BR3nrd3sTljiyDAwCQmffUPx9RX19JaWKzLXA28Nvan2aTKZe2ewyDegwrN7ka1CDr77HAnZn5+4733rhqoRYR8QhK3FMuc13nu1HOgh4DXF/75ew4ja88GdgfeC3wHx0/zFoxbUMZhCIo+9wLKPvgjazYxrfWWB5OaXp3U0QsjIht6/RV2QceUZ87Y1rGih9rLefUmJ7Nytt84/r8c1belq1+Pu396U6iND18Xt0OewEnZT1d3OGPbfFJknXz4Kybp2bdvIJ184Rac+pZpK7uy8yL6t8/iojfU0ag249yZhfKWcWLgHd0eX/r4HQzsG5EPKpHpdo6KHWekdys7TsGlpkLgYW1H8mewKcofVgG6UfT64C2VkdZZx+Tm1nxw2A6Bll/1wPrR8QjOyrVaZ3B7eKllOPDDweZOTN/Cby69mF5EfBRynreqv1HTh+nAZ+n7D979phnd0rfr70y8y6AegZ2pfWdmT8Edo8yKuefAZ8ATqT2cVqFfaC1j20A3NZWfj6wW0SskbW/Tq3QL6qx3dPlM15B9x8pV7b9fW6d5wDKfrM+daTHLjZgmv8DkhrNurmwbsa62bpZ4JVdzZx/o5wZe19b2TnAdsB1mXlRx6M1yuG59fmgHp+7lHKWbr+O8v2BO1gxWuK0ZObtmXkipVnKU2vxSmebB7QUeErrRT173nn/tnOAl0XEZnTX63sHWX8X1udXtsWwHgOO1NhNbV70UUoTuO9O572ZeW9mnkupxDanDj4xwPtur9/59T7f+UjgAUoTqZb96XHSLjN/n5nfoJzRfmqX6d32gW5ald3jO8o/S/lhd3if97b8kNKPaIsu2/KizGyNNkqtnL9G2edfC1yRmZf1+Nx5wK8G+H5Jc5N1M9bN1s09WTfPAV7Z1YzIzIyIfwa+GhG7ZuY5lLPJbwe+FxFHUkbhewywM3B9Zn4yM6+MiKMpIzhuSjkjtwGwb2YekJkPRMSHgC/UviCLgBdTzqgenpl/GDTGiHgbpX/GtyiV9PaUg9YJdRnuiYhrKX0yLgf+APQ6kLWcDrwzIi6uy/cWSn+ldp+k/GD4z4j4MKUPzVOAdTPzY8B1lIPtwRFxO3BvPTM/yPr7eUScCRxVRztcThkd8u4BV8uaEdEa1XF94FmUdbsOZfCQ+3u+s4qIZ1AGszilxrgh5YfVpZk58JnNzPzAFLOcSxn44tiI+DJlAJD30HZGNyL2BN5EGVXxOmBLSrOqc+v0vvtAj7iujYjllHVzXlv5TyPiPcAnImKHuvzLgUdTzqA/ltJHicy8re7Hn46Ix1H284dR+jO9NDP36fjak4BDKSM9dl0vtU/Tk4G/6xW7pLnNutm6Getm6+a5LsdglCwfk/Wgx0iBlIPdr4Bvt5U9Gvg0pRK5h3K29TTgBR3vO5xyMG7Nc2zHZx9KOZt5T53vrweM6cERGSkH0oWUA+kfKLdi+Cgrj1K5G6US/UN97zxWjPj4ii6fvx7llgq3UJotvb9bLMDjKAfcWymV3aXAAW3TX1fX3T3l33Ja629DSr+auyhNbD5AqeCWDLAdsz4eoFRMFwEfBh47jf1hU8otBK6p6+16at+WKd63BDiyz/SHjPhI+WFyNeUHyAWU2w48+DnAkyi3L/gNpTnZUkoTrI0G3Qd6xPI54Jwe015CGYTkJkpfnxspfY4OAKJj3tdTBjb5fd0XfgT8ny6fGTW2BLbr8b37UEa7XHfUxwQfPnyM/tGt7qnl1s3WzdbN1s1z9hF1w0iSeqgDelwIbJWZ1486HoCIOIkygMxbRh2LJEnDZt2sQZjsStIAImIhcHFmvn8MYtma0l/pGZm5eNTxSJI0CtbNmooDVEnqKyIe1n7/uc7HqOMbondTmkONg62At1uZStLcZN38IOtm9eWVXUl9RcRxwMF9Znl8Zi4ZTjSSJMm6WRqMya6kviJiHituvN7NZZl5T5/pkiRpBlk3S4Mx2ZUkSZIkNY59diVJkiRJjWOyK0mSJElqHJNdSZIkSVLjmOxKkiRJkhrHZFeSJEmS1Dj/HyoPQKhI61+XAAAAAElFTkSuQmCC\n", "text/plain": [ "<Figure size 1152x576 with 2 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ " \n", "plt.suptitle('S/B selection from NN', fontsize='15')\n", "Ds_mass_MC =[MC_Ds_sig_dict[\"Ds_ConsD_M\"][i][0]/1000 for i in range(m_s)]\n", "Dplus_mass_MC =[MC_Dplus_sig_dict[\"Dplus_ConsD_M\"][i][0]/1000 for i in range(m_plus)]\n", "NN_selected = X_dict[i][np.argmax(output_NN,1).astype(np.bool)]\n", "Ds_mass_sel_NN = NN_selected[:,dim-1]/1000\n", "Ds_mass_train_NN =X_dict[i][:,dim-1:dim]/1000\n", "\n", "plt.subplot(1,2,1)\n", "plt.hist(Ds_mass_MC+Dplus_mass_MC,bins=70, label='MC signal events');\n", "plt.legend(fontsize='15')\n", "plt.ylabel('# events', fontsize=15)\n", "plt.xlabel('Reconstructed D_s Mass (GeV)', fontsize=15)\n", "plt.subplot(1,2,2)\n", "\n", "plt.hist(Ds_mass_sel_NN,alpha=0.6,bins=70, label='S selected from test set');\n", "plt.hist(Ds_mass_train_NN,alpha=0.2,bins=70, label='Test set (S+B)');\n", "plt.legend(fontsize='15')\n", "plt.ylabel('# events', fontsize=15)\n", "plt.xlabel('Reconstructed D_s Mass (GeV)', fontsize=15)\n", "fig=plt.gcf();\n", "fig.set_size_inches(16,8)\n", "plt.savefig('/home/hep/davide/Rphipi/'+PATH+'/D_s_NN.png', format='png', dpi=100)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7UAAAHoCAYAAACW1sg1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XuYXlV9N/zvjxAEBStCUB5Boz5oUQyphoCCB0BBW1QOykHkoLQgfSmeNdq31gOtiAdafVAeClIPVIJUhLdglVLwUEEMGhFMEcQIUdSIQqFyClnvH3MnDSHJ3JPcuWf25PO5rrnmvvdee6/fzGzCfGetvXa11gIAAABdtNF4FwAAAABrS6gFAACgs4RaAAAAOkuoBQAAoLOEWgAAADpLqAUAAKCzhFoAAAA6S6gFAACgs4RaAAAAOmvj8S5gbW299dZt+vTp410GAAAA68E111zzm9batNHadTbUTp8+PfPmzRvvMgAAAFgPqupn/bQz/RgAAIDOEmoBAADoLKEWAACAzursPbUAAAAre+CBB7Jo0aLce++9410Kfdp0002z3XbbZerUqWt1vFALAABMGosWLcoWW2yR6dOnp6rGuxxG0VrL7bffnkWLFuXJT37yWp3D9GMAAGDSuPfee7PVVlsJtB1RVdlqq63WaWRdqAUAACYVgbZb1vXnJdQCAADQWe6pBQAAJq1TL/3xQM/35pc8bY37b7/99uy9995Jkl/+8peZMmVKpk2bliS5+uqrs8kmmwy0nnX1ute9LnPmzMkOO+yQU045JXPmzEmSPPjgg3nRi16Ub37zm+Nc4eiEWgAAgAHZaqutMn/+/CTJe9/73my++eZ529ve9pA2rbW01rLRRuM/cfbss89OkixZsiQnn3zy8lA7ZcqUTgTaxPRjAACA9e6mm27KTjvtlDe84Q159rOfnVtvvTWPecxjlu8/99xz86d/+qdJkl/96lc58MADM2vWrMyePTtXXXXVw8535pln5oADDsi+++6bpz/96TnppJOW7zvllFOy0047ZaeddsonPvGJJMldd92Vl73sZdl5552z00475fzzz0+S7LHHHpk/f37mzJmTu+66KzNnzsyRRx6ZJUuWLK/voIMOyte+9rXl53/ta1+bCy+8MEuWLMlb3vKWzJ49OzNmzMiZZ56ZJPn5z3+ePfbYIzNnzsxOO+2Ub3/72wP+bj6UkVoAAIAh+NGPfpSzzz47p59+epYsWbLadieeeGLe8Y53ZLfddsvChQuz33775brrrntYu6uvvjrXXXddNtlkk+yyyy7Zb7/9cv/99+ecc87J1VdfnQcffDCzZ8/OC1/4wixYsCDTp0/PV77ylSTJnXfe+ZBznXzyyTnzzDOXjzKvWN+hhx6auXPnZp999sm9996br3/96znrrLNyxhlnZJtttsnVV1+d++67L7vttlv22WeffOELX8jLX/7yvPOd78yDDz6Ye+65ZxDfvtUSagEAAIbgqU99anbZZZdR2/3bv/1bbrjhhuXvf/e73+Wee+7JZptt9pB2++67b7bccsskyf77759vfetbue+++3LQQQflkY985EO277nnnpkzZ07mzJmTl7/85dl99937rvtP/uRP8ta3vjUPPPBALr744uy11155xCMeka997WtZsGBBzj333CQjQfnGG2/MLrvskuOOOy733ntv9t9//+y8885997U2hFoAAIAheNSjHrX89UYbbZTW2vL3Kz6ntbXW16JSKz8Kp6oecs4V7bjjjpk3b14uueSSvP3tb89+++2Xd7/73X3V/chHPjK77757Lr300sydOzeve93rltf5yU9+cvnCWCu64oorcvHFF+fwww/Pu971rhx++OF99bU23FMLAAAwZBtttFG23HLL3HjjjVm6dGkuuOCC5fte/OIX57TTTlv+ftmU4JV97Wtfyx133JHf//73ufDCC7P77rvnBS94QS644ILcc889ufvuu3PhhRfm+c9/fn7+859n8803zxFHHJG3vOUt+d73vveQc2288ch45+qmRR966KE566yzcuWVV+bFL35xkpGR4k9+8pPLj7nhhhtyzz335Gc/+1ke//jH59hjj83RRx+d73//+2v/jeqDkVoAAGDSGu0RPOPpQx/6UF760pfmiU98Yp7xjGfkvvvuS5KcdtppOf7443P22WdnyZIl2XPPPR8ScpfZY4898prXvCY/+clPcsQRR2TmzJlJksMOO2z5NOfjjz8+z3rWs3LJJZdkzpw52WijjbLJJpvk9NNPf9j5jjnmmMyYMSOzZs3Kpz/96Yfse+lLX5qjjjoqr371qzN16tQkyXHHHZdbbrlleb/bbLNNLrzwwlx22WX52Mc+lqlTp2bzzTfP5z//+cF901ahVjc8PdHNmjWrzZs3b7zLAAAAJpAFCxZkxx13HO8y1rszzzwz1113Xf7u7/5uvEsZiFX93KrqmtbarNGONf0YAACAzjL9GAAAoGOWPdMWoXb9uvyDo7fZ813rvw4AAIBJaqjTj6tq06q6uqp+UFXXV9X7etv/sap+WlXzex8zh1kXAAAA3TTskdr7kuzVWru7qqYm+VZVfaW37+2ttfOHXA8AAAAdNtRQ20aWWr6793Zq76Obyy8DAAAw7oZ+T21VTUlyTZL/neS01tp3qur4JH9TVe9JclmSOa21+1Zx7LFJjk2SJz7xiUOsGgAA6KR+1rkZiz7WxJkyZUqe9axnLX//5S9/OdOnT19l24ULF2a//fbLddddN6gK19q8efPy2c9+Nh//+MdzxRVXZJNNNsnznve8JMnpp5+eRz7ykTnyyCPHucqHG3qoba09mGRmVT0myQVVtVOSdyX5ZZJNkpyR5J1J3r+KY8/o7c+sWbOM8AIAABPOZpttlvnz5493GWM2a9aszJo18ljYK664IptvvvnyUPuGN7xhPEtbo3F7Tm1r7Y4kVyR5aWvttjbiviRnJ5k9XnUBAAAM2sKFC/P85z8/z372s/PsZz873/72tx/W5vrrr8/s2bMzc+bMzJgxIzfeeGOS5POf//zy7ccdd1wefPDBhx07ffr0vPOd78zs2bMze/bs3HTTTUmSn/3sZ9l7770zY8aM7L333rnllluSJF/84hez0047Zeedd84LXvCCJCNBdr/99svChQtz+umn59RTT83MmTPzzW9+M+9973vzkY98JAsWLMjs2f8T1xYuXJgZM2YkSa655pq88IUvzHOe85zsu+++ue2225IkH//4x/OMZzwjM2bMyKGHHjrA7+qIYa9+PK03Qpuq2izJi5P8Z1Vt29tWSfZPMv5j7wAAAGvhnnvuycyZMzNz5swccMABSZJtttkml156ab73ve9l7ty5OfHEEx923Omnn543vvGNmT9/fubNm5ftttsuCxYsyNy5c/Mf//EfmT9/fqZMmZJzzjlnlf0++tGPztVXX50TTjghb3rTm5IkJ5xwQo488shce+21Ofzww5f3+/73vz9f/epX84Mf/CAXXXTRQ84zffr0vOENb8ib3/zmzJ8/P89//vOX79txxx1z//335+abb06SzJ07NwcffHAeeOCB/MVf/EXOP//8XHPNNXn961+fv/zLv0ySnHzyyfn+97+fa6+9Nqeffvo6fncfbtjTj7dN8pnefbUbJTmvtfYvVfXvVTUtSSWZn2Tijm0DAACswaqmHz/wwAM54YQTlgfTH//4xw877rnPfW7+5m/+JosWLcqBBx6YHXbYIZdddlmuueaa7LLLLklGAvM222yzyn4PO+yw5Z/f/OY3J0muvPLKfOlLX0qSHHHEEXnHO96RJNl9991z9NFH5+CDD86BBx44pq/v4IMPznnnnZc5c+Zk7ty5mTt3bm644YZcd911eclLXpIkefDBB7PtttsmSWbMmJHDDz88+++/f/bff/8x9dWPYa9+fG2SP1rF9r2GWQcAAMAwnXrqqXnc4x6XH/zgB1m6dGk23XTTh7V5zWtek1133TUXX3xx9t1335x55plpreWoo47KBz84+oJXIxNfH/56VW1OP/30fOc738nFF1+cmTNnjuke4EMOOSSvfvWrc+CBB6aqssMOO+SHP/xhnvnMZ+bKK698WPuLL7443/jGN3LRRRflAx/4QK6//vpsvPHgoui43VMLAACwobjzzjuz7bbbZqONNsrnPve5Vd4Xe/PNN+cpT3lKTjzxxLziFa/Itddem7333jvnn39+fv3rXydJfvvb3+ZnP/vZKvuYO3fu8s/Pfe5zkyTPe97zcu655yZJzjnnnOyxxx5Jkp/85CfZdddd8/73vz9bb711br311oeca4sttshdd921yn6e+tSnZsqUKfnABz6QQw45JEny9Kc/PYsXL14eah944IFcf/31Wbp0aW699dbsueeeOeWUU3LHHXfk7rvvXuV519bQVz8GAAAYmj4ewTMMf/7nf56DDjooX/ziF7PnnnvmUY961MPazJ07N5///OczderUPP7xj8973vOePPaxj81JJ52UffbZJ0uXLs3UqVNz2mmn5UlPetLDjr/vvvuy6667ZunSpfnCF76QZGSRpte//vX58Ic/nGnTpuXss89Okrz97W/PjTfemNZa9t577+y88875+te/vvxcL3/5y/OqV70qF154YT7xiU88rK9DDjkkb3/72/PTn/40SbLJJpvk/PPPz4knnpg777wzS5YsyZve9KY87WlPy2tf+9rceeedaa3lzW9+cx7zmMcM5Hu6TLXWzSfjzJo1q82bN2+8y1izfp6JNUH+IwMAgMlg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\n", "text/plain": [ "<Figure size 1152x576 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ " \n", "true_positives_NN=output_NN[:,1][np.where(Y_test==1)[0]]\n", "false_positives_NN=output_NN[:,1][np.where(Y_test==0)[0]]\n", "\n", "true_positives_NN=output_NN[:,1][np.where(Y_test[:,1]==1)]\n", "false_positives_NN=output_NN[:,1][np.where(Y_test[:,0]==1)]\n", "plt.hist(true_positives_NN,alpha=0.5,bins=80,density=True,label=\"True positives\");\n", "plt.hist(false_positives_NN,alpha=0.5,bins=80,density=True, label=\"False positives\");\n", "plt.xlabel(\"NN BDT output\", fontsize='15')\n", "plt.ylabel(\"Events (a.u.)\", fontsize='15')\n", "plt.legend()\n", "fig=plt.gcf()\n", "fig.set_size_inches(16,8)\n", "plt.savefig('/home/hep/davide/Rphipi/'+PATH+'/fp_vs_tp_NN.png', format='png', dpi=100)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# SETTING UP XGBOOST" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n", " colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0,\n", " max_depth=3, min_child_weight=1, missing=None, n_estimators=100,\n", " n_jobs=1, nthread=None, objective='binary:logistic', random_state=0,\n", " reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,\n", " silent=True, subsample=1)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "PATH=l_flv[l_index]+'/test_'+str(test)+'/XG_'+str(i)\n", "if not os.path.exists(PATH):\n", " os.mkdir(PATH)\n", "# fit model to training data\n", "model = XGBClassifier()\n", "\n", "model.fit(X_train_2, Y_train[:,1])" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "output_XG=model.predict_proba(X_test_2)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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HQYAwCfMbHNux3Cu47sZAJCdsvrdTDdmAAAAAIDvkOwCAAAAAHyHZBcAAAAA4DskuwAAAAAA3yHZBQAAAAD4ju9GYwZwZh06dEh79uzRsWPHcjsU4C+LiIhQTEyMihUrltuh5HlcW4CzD9dInOtIdgFk2aFDh7R7927Fx8ercOHCMrPcDgk4bc45JSUlafv27ZLEH3O5iGsLcPbhGgk/oBszgCzbs2eP4uPjVaRIEf4YxTnPzFSkSBHFx8drz549uR1Onsa1BTj7cI2EH5DsAsiyY8eOqXDhwrkdBpCtChcuTNfZXMa1BTh7cY3EuYxkF8ApodUFfsN7+uzA/wNwduKziXMZyS4AAAAAwHdIdgHkKcOHD5eZqUqVKmHXV65cWWam4cOHp1v31ltvqWnTpipRooQKFSqkqlWraujQodq3b99fiqdMmTKnvX12aNKkiW688cZcjeF0jB8/XnPmzMntMICgSZMmqV69eipatKhKliypunXrauDAgWf8uB988IHMTGvWrMnW/S5evFjPPvtstu6zTJkyYa+voXbu3KnWrVurePHiMjN98MEH2RrDX3Umrz05eV37448/NHz4cK1evTpHjgfkBpJdAHlOZGSkNm7cqFWrVqUqX7lypTZv3qzIyMh029x///3q3LmzLrjgAk2ZMkWLFy/Wfffdp7ffflt33nnnacdyxx13aNGiRae9fV5GsouzyeOPP6477rhD1157rd566y299tprat++vebNm5fboZ22M5HsZsXIkSP11Vdfadq0aVq+fLkuvfTSHI8hM35KdkeMGEGyC19j6iEAf1nCkPm5ctxNT7Q5re2ioqJ06aWXavr06UpMTAyWT58+XU2bNtUXX3yRqv7bb7+tf/7zn3rllVfUs2fPYPnVV1+t3r17a/Hixad3ApLOP/98nX/++ae9PeBnD771Ta4c9/GOF5/yNs8//7z69OmjUaNGBcvatWunYcOGZWdoecL69evVoEEDtW7dOsM6ycnJSk5OVsGCBXMwMgDnGlp2AeRJXbt21cyZM+Wck+TNJzhz5kx17do1Xd1nnnlGl156aapEN0X+/Pl13XXXZXicX375RXfccYfKlSunyMhIVahQIVVLcLhuzF9//bUuv/xyRUZGqmbNmlqwYIESExPVo0ePYJ0ePXooMTFR7733nmrXrq2oqChdccUVWrt2bap9jRkzRpdddpmKFy+u2NhYtWvXTj/88EOWXqO05s6dq8TEREVGRiouLk6DBg0KjtC5dOlSmVm64//8888qWLCgXnnllWDZxx9/rKuvvlpFihRR6dKldeedd+rXX38Nrp80aZLMTN98841atGihqKgoVa9eXW+99VawTpMmTfTFF19o8uTJMjOZmSZNmiRJmjdvnurVq6eoqCiVLFlSDRo00LJly07rnIGs+uWXXxQXF5eu/GSD+5zsGiFJa9asUZs2bVS0aFEVLVpUnTt31q5duzLd74kTJ/TEE0+ocuXKwdsuJk+enK7e7NmzVb9+fRUuXFilS5dW69attXnzZg0fPlxjxozR5s2bg5+x0GvQyT7HkvThhx/qkksuUWRkpOrVq6dPP/0005gl7/V6//33NXv2bJmZEhISJP15zZszZ45q1qypyMhIff7555Kk1atXq1mzZipSpIhKliypW265Rbt37w7uc9OmTTIzTZ8+XbfffruKFSum888/X6+//rok6amnnlK5cuUUHR2twYMH68SJExnGl9m1R5Jefvll1axZU4UKFVLFihX11FNPpdp+7dq1atWqlUqVKqWoqCjVqFFDY8eOzdK+03r88cdVuXJlRUZGKjY2Vq1atUr1vjhw4ID69Omj2NhYRUZG6vLLLw++ZpJUtGhRSdLtt98ePN6mTZsy/s8BzkEkuwDypI4dO2r37t36+OOPJUkfffSR9u7dqw4dOqSqd+zYMX366adq1arVaR1n4MCB+vjjj/XMM89o0aJFGjVqVKZ//B4+fFjXXnutkpKSNG3aNA0dOlT33XeftmzZkq7uli1b9Le//U0PPfSQpk2bpj179uimm24KJvCStG3bNt19992aO3euJkyYoOTkZDVu3FgHDx48pfOYOXOmOnbsqPr162vevHkaNmyYxo8frwcffFCS18pdtmxZzZw5M9V2s2fPlqTg6/rJJ5+oWbNmiouL06xZs/Tss89qwYIFuv3229Mds1u3brr++us1e/ZsValSRV27dtW2bdskSePGjVP16tXVunVrLV++XMuXL1ebNm30448/6sYbb1TTpk319ttva+rUqWrbtq0OHDhwSucLnKpLL71U//73vzV58mTt378/y9ud7Brxww8/qHHjxjpy5IimTJmiSZMmae3atWrXrl2qz3pa99xzjx577DH17t1b8+fPV4cOHdSzZ0+98847wTpTpkxRx44ddeGFF2rmzJmaOHGiqlatqr179+qOO+5Qt27dFBcXF/yMPfzww5Ky9jnesWOHrrvuOpUqVUqzZs1Snz59dMstt+jw4cOZvh7Lly9X3bp1dc0112j58uXBa4jkJa2DBg3Sgw8+qAULFqhSpUrau3evmjRposOHD+s///mP/v3vf2vZsmVq0aKF/vjjj1T7Hjx4sMqWLas333xTV155pbp37677779fK1as0KuvvqoBAwboqaeeSncdC5XRtUeSRo8erX79+umGG27QO++8o379+unhhx/W888/H9z++uuvV/78+fX6669r3rx5uueee4I/EmS277Ree+01jRo1SgMHDtSiRYv0wgsvqHLlyvr9998lSUePHlXz5s313nvvafTo0ZozZ46io6PVvHnzYEL83//+V5I0dOjQ4PHKli2b6f8PcK6hGzOAPKlEiRJq1aqVpk+friuvvFLTp09Xq1atVKJEiVT19u/fr6NHj6pChQqndZwVK1aof//+6tKlS7Ds//2//5dh/YkTJ2r//v1atWqV4uPjJUkXXnihGjRokK7ugQMH9MknnwQH2zpx4oQ6dOigDRs2qHr16pK8VukUycnJatGihWJiYjR37lzddtttWToH55z+9re/6bbbbtO4ceOC5YUKFVL//v314IMPqnTp0urcubNmzJihESNGBOvMmDFDLVu2VKlSpSRJQ4YM0eWXX64ZM2YE68THx6tZs2Zas2aNatWqFSy/7777gq3p9erVU2xsrN555x317dtXF110kaKiohQdHa2GDRsGt1m2bJmKFi2q0aNHB8sy6woJZJexY8fqhhtuUI8ePWRmqlGjhjp16qQHHnhAxYoVy3C7k10jRowYobi4OL377rvBLru1a9dW9erVtWDBgrDJ0A8//KAXXnhBEydOVPfu3SVJzZs3186dOzVixAi1bdtWJ06c0JAhQ9ShQwdNmzYtuO31118ffFy2bFkVKlQo1WdMytrn+Nlnn1VkZKTmz5+vIkWKSPJuIcns+idJDRs2VLFixVSqVKl0x92/f7+WLFmiOnXqpIpFkhYtWhR8natWraoGDRrozTff1M033xys27Rp02A38wYNGmjWrFmaN2+e1q9fr/z586tVq1aaO3euZs+eHbaXj6QMrz2HDh3SiBEjNHTo0GDX9RYtWujw4cN67LHH1K9fP/3888/66aefNGfOHF18sddVvlmzZifddzgrVqxQy5YtdddddwXLOnbsGHz8+uuva82aNVq7dm3wO6J58+aqVq2axowZo9GjR+uyyy6T5H3HnOx4wLmKll0AeVbXrl01a9YsHT16VLNmzcrwjxvp9OcZrFOnjkaPHq1x48bpu+++O2n9lStXql69esFEV5Lq16+v2NjYdHUTEhJSjSp90UUXSVKw9VOSPvvsM7Vo0UKlS5dWgQIFVKRIEf32229ZiiXFd999py1btuimm27S8ePHg0vTpk115MiR4AiwXbp00YYNG/TVV19Jkvbt26f//ve/wT/iDx8+rOXLl6fbzxVXXKGIiIh090q3bNky+Lh06dKKiYlJdW7hXHzxxTp48KC6d++uxYsXB1s5gDOtdu3aWrdunebNm6e77rpLzjn94x//UGJion777bcMtzvZNWLJkiXq0KGD8uXLF/zMVKpUSQkJCekG2Uvx/vvvK1++fOrQoUOqz1qzZs20evVqJScna8OGDdqxY0fYXhWZyerneMWKFWrRokUw0ZVSJ2OnIz4+PlWim3Kcli1bpvpBoX79+kpISAj23EkRmlgWK1ZM0dHRuvrqq5U/f/5geeXKlbV9+/ZTjm358uX6/fff1blz53TXyd27d2vbtm0qVaqUypcvr759+2rGjBnas2fPKR8nRZ06dbRgwQINGzZMK1asUHJycqr1S5YsUb169VSpUqVgLJLXCyej9w3gRyS78J2EIfPDLkBa119/vX777Tc99NBD+v3339WuXbt0dUqXLq1ChQqF7UacFc8//7xuuOEGPfroo6pWrZqqVKmi6dOnZ1h/165dio6OTlcerixtK3RKq8+RI0cked2cW7ZsKeecXnrpJX3yySdauXKlYmJignWyImVqpdatWysiIiK4VKpUSZK0detWSVKjRo1UoUKFYGvPm2++qQIFCuiGG26Q5N2/m5ycrLvuuivVfgoVKqRjx44F95PZ+Z0s7mrVqmnu3Ln66aef1Lp1a5UpU0bdunXT3r17s3y+wOkqVKiQ2rVrp+eff17ffvutXn75ZX3//fep7llP62TXiH379unJJ59M9ZmJiIjQTz/9lO4zE7pNcnKyihcvnmqbHj166Pjx49q5c2ewq/WpdlvN6ud4165diomJSbVt4cKFdd55553S8UKF+9Fv586dYctjY2PT3b4Q7ppyOteZcFKukzVr1kz1ulxzzTWSvOtkvnz5tHjxYsXFxalnz56Ki4vTlVdeqS+//PKUj9ezZ0+NGjVKM2fOVIMGDRQbG6uHH344mPTu27dPn332Wbr3zcSJEzN835y1dnyZfgGyiG7MAPKsqKgotW3bVs8884w6d+6sqKiodHUiIiLUuHFjLVq0SI899tgpH6NEiRJ67rnn9Nxzz+nrr7/WU089pVtuuUW1a9cOtsSGiouL04YNG9KVn06ytnDhQh0+fFhz584Nntvx48dP+f7VlC7I48ePV926ddOtT0l6zUw33XSTZsyYoVGjRmnGjBm67rrrgoOglChRIjiHcbiuxeXKlTuluDLSpk0btWnTRgcPHtT8+fM1YMAA3XPPPZn+yACcCb169dKgQYO0fv36DOuc7BpRqlQpdejQQXfccUe6bTOao7tUqVIqUKCAPvnkE+XLl75dIyYmJnif6M6dO0/pnLL6OY6Li0vXcpmUlJRpK/fJhOthU7Zs2bAtpLt371a9evVO+1inKuU6+c4774RNvqtVqyZJql69ut58800dO3ZMH330kQYPHqw2bdpo27ZtYf+vMpIvXz7dd999uu+++7R161ZNnTpVDz30kOLj49W3b1+VKlVKiYmJeuGFF9JtW6hQodM8S+DcQ7ILIE/r16+fjh49qr59+2ZYZ8CAAbr++us1efLk4P1vKU6cOKHFixdnaQCr2rVra/To0Zo6darWr18fNtm97LLLNHXqVG3fvj3YlXnFihWpRhbNqqSkJOXLl08FCvx5qZ85c2awO1tWVatWTfHx8dq0adNJ5xTu2rWrnn76ab3zzjtatmxZqnsBo6Ki1LBhQ23YsEGPPPLIqZ1MGCdrgSlevLi6deumZcuWafny5X/5eEBm9uzZk64lc+/evTp48GDY5CeccNeIlPtg69Wrl+XbKZo2bark5GQdPHhQLVq0CFsn5XM9efLksL1apPCfsax+ji+77DK9+uqrOnz4cLArc+iI6tmlQYMGeuGFF/Trr78Gf1hbuXKlNm3apCuuuCLbjyeFf10aNWqkwoULa8eOHRkOKhUqIiJCTZs21cCBA9WtWzf98ssvKlWq1Gm1LJcvX15DhgzRxIkT9e2330ryumwvXrxYFSpUSPe+DD0PSafVkg2cK0h2AeRpTZo0UZMmTTKt065dOw0cOFC9evXSJ598ovbt2+u8887T+vXr9eKLLyohISHDZPeKK65Qhw4dVKtWLZmZJkyYoKioKNWvXz9s/dtvv12PPfaY2rZtq2HDhikpKUnDhg1TdHT0Kf3qL/35B+/tt9+uXr16ae3atXr66afTdds7mXz58mnMmDG69dZbdejQIV133XUqWLBgcKCVWbNmBf+YrVevnipXrqzevXurcOHCatu2bap9PfXUU2rWrJny5cunG2+8UUWLFtWWLVs0f/58jRw5UlWrVs1yXNWrV9eiRYu0aNEilS5dWpUqVdKsWbO0fPlytWrVSuXKldP3338kCU+2AAAgAElEQVSvN954I8uDcQGn6+KLL1b79u3VsmVLxcTEaPPmzXr66adVpEiRdD+ShTrZNWL48OGqX7++2rRpo549e6pMmTLavn273nvvPfXo0SPs9atatWrq27evunbtqkGDBikxMVFHjhzR2rVr9d133+nll19Wvnz5gq3It9xyi26++WaZmf773//q5ptvVmJioqpXr67du3dr0qRJqlWrlsqUKaOEhIQsfY4HDBigsWPHqm3btho4cKB27Nihxx9/XIULF87W133gwIF64YUXdO2112rw4MH67bffNGTIEF188cXq1KlTth4rRbhrT+nSpTV8+HD93//9nzZv3qyrrrpKJ06c0HfffaelS5dq9uzZ+vrrr/XAAw+oS5cuuuCCC/Tzzz/rySef1CWXXBJsGc5o32n16dMnOIhX8eLFtXTpUn3//fd68sknJUm33XabXnzxRTVp0kQPPPCALrjgAu3fv18rVqxQXFyc7rvvPhUsWFCVKlXSzJkzVatWLUVGRqp27drMXQxfIdkFgCwYM2aMLr/8cj3//PPq1q2bkpKSlJCQoOuvv14PPPBAhts1atRIkyZN0qZNm5Q/f37VrVtX7777rs4///yw9YsUKaKFCxeqX79+6tKlS/APy0GDBmU6oms4F198sSZOnKgRI0Zo9uzZuuSSS/TGG2+kGvU1q7p06aJixYpp1KhRevXVV5U/f35dcMEFatu2bbo/jLp06aKRI0eqa9euqQankbw/7D/88EMNGzZMt956q5KTk1WxYkW1atUqy61fKYYOHRocOOvQoUOaOHGiateurXnz5mngwIE6cOCAypYtqzvvvFOPPvroKZ8zcCoeeeQRzZ07V/fee68OHDiguLi4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mjX14IMPBtd36tQpmLSuXLlSzz33nAoWLJiq7NNPP02337JlyyoxMVGJiYm69tprNWXKFEVHR4cdiKpQoUInHfAKgL/QjRkAgLytsaRbJX1jZqsDZX+XdLOZ1ZHXRXmTpD6S5Jxba2YzJX0rbyTn/nl5JOZTUapUKTVs2DDsfa8p3ZpDuxFv3rxZr732moYNG6aKFSuqR48ep3S8WrVqac6cOfrjjz+0bNkyDRo0SO3atdOmTZtUqlQpSdLkyZPDTot04YUXntKx8ufPr2LFiumXX345ad3Y2FjddtttGjRokA4ePKjixYsrOjpaoT0A9u3bJzNTYmLiKcWRL18+VatWLV3LrnNOBw8eDJ43gLyBZBcAgDzMOfexwt+HuyCTbUZKYg6XU9SsWTO9++67ql27tgoWLHjS+hUrVtTDDz+sl19+Wd9++60kBbc7lRbKggULqkWLFrr33nvVs2dP/f7777r44osVHR2tzZs367bbbst026weq1q1atq4cWOqsj179igmJiZd3e+//15RUVFhuyb/FSdOnNC6devSJfDbtm1TcnKyqlatmq3HA3B2I9kFAADIAYMGDdL06dPVrFkz9e/fX2XLltWuXbv0wQcfqHnz5urUqZNuv/12xcfHq379+ipWrJgWL16srVu36pprrpGk4FRD48aNU6dOnYJTCqW1YsUKDRs2TDfddJMqVaqkffv2acyYMWrQoEEwwRw9erTuvPNOHThwQC1btlSBAgX0448/avbs2VqwYIHy58+v6tWra+vWrZo6daqqVaummJiYDAcca9y4sT788MNUZePHj9ecOXN06623qnbt2vrjjz+0cOFCvfzyy7r//vtVoMBf+1N0+/bt+uyzzyRJBw4c0OTJk/X9998HB91KsWrVKuXPnz/PzX0M5HUkuwAAADkgLi5On3/+uR566CHde++9OnTokMqWLaurrrpKtWrVkuRNkfPqq69q7Nix+uOPP1SlShVNmjRJ1113nSTv3tdRo0bphRde0JgxY1SlShWtX78+3bHi4+NVsmRJPfroo9q5c6dKliyp5s2b64knngjW6d69u0qVKqXHH39cL730kgoUKKDKlSurXbt2ypfPG9bllltu0UcffaQBAwZo37596tOnj1588cWw59exY0f961//0q5du4IjRbdv317bt2/Xiy++qK1btyoiIkKVK1fW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\n", "text/plain": [ "<Figure size 1152x576 with 2 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.suptitle('S/B selection from XGBoost', fontsize='15')\n", "Ds_mass_MC =[MC_Ds_sig_dict[\"Ds_ConsD_M\"][i][0]/1000 for i in range(m_s)]\n", "Dplus_mass_MC =[MC_Dplus_sig_dict[\"Dplus_ConsD_M\"][i][0]/1000 for i in range(m_plus)]\n", "XG_selected = X_dict[i][np.argmax(output_XG,1).astype(np.bool)]\n", "Ds_mass_sel_XG = XG_selected[:,dim-1]/1000\n", "Ds_mass_train_XG =X_dict[i][:,dim-1:dim]/1000\n", "\n", "plt.subplot(1,2,1)\n", "plt.hist(Ds_mass_MC+Dplus_mass_MC,bins=70, label='MC signal events');\n", "plt.legend(fontsize='15')\n", "plt.ylabel('# events', fontsize=15)\n", "plt.xlabel('Reconstructed D_s Mass (GeV)', fontsize=15)\n", "plt.subplot(1,2,2)\n", "\n", "plt.hist(Ds_mass_sel_XG,alpha=0.6,bins=70, label='S selected from test set');\n", "plt.hist(Ds_mass_train_XG,alpha=0.2,bins=70, label='Test set (S+B)');\n", "plt.legend(fontsize='15')\n", "plt.ylabel('# events', fontsize=15)\n", "plt.xlabel('Reconstructed D_s Mass (GeV)', fontsize=15)\n", "fig=plt.gcf();\n", "fig.set_size_inches(16,8)\n", "plt.savefig('/home/hep/davide/Rphipi/'+PATH+'/D_s_XG.png', format='png', dpi=100)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA8IAAAHoCAYAAACCQ1bUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XuYZFV5L/7vy01UMCIMSkQd9SAHxGGCw4CiIqKABhVRuYjiLQfUGBSvQ3KO9/wkGsXjLXMMiFEJjHJE+AWMEANeIoqDInIJgjjCgMoISkC5DazzR9WMTdMz081Ud1f3/nyep5+q2nvVrreqd/fMt9faa1VrLQAAANAVG0x3AQAAADCVBGEAAAA6RRAGAACgUwRhAAAAOkUQBgAAoFMEYQAAADpFEAYAAKBTBGEAAAA6RRAGAACgUzaa7gIm21ZbbdXmzp073WUAAAAwYBdeeOFvWmtzJvq8WR+E586dm6VLl053GQAAAAxYVf3i/jzP0GgAAAA6RRAGAACgUwRhAAAAOmXWXyMMAAAw2l133ZXly5fn9ttvn+5SGIdNN9002267bTbeeOOBHE8QBgAAOmf58uXZfPPNM3fu3FTVdJfDWrTWcuONN2b58uV57GMfO5BjGhoNAAB0zu23354tt9xSCJ4BqipbbrnlQHvvBWEAAKCThOCZY9DfK0EYAACATnGNMAAA0HnHnfPTgR7v6Oc8Ya37b7zxxuy9995Jkl/96lfZcMMNM2fOnCTJBRdckE022WSg9ayvV7/61Vm0aFG22267fOhDH8qiRYuSJHfffXee+cxn5tvf/vY0VzgxgjAAAMAU23LLLXPRRRclSd7znvdks802y9ve9rZ7tWmtpbWWDTaY/oG8J554YpJk5cqVOfbYY1cH4Q033HDGheDE0GgAAIChcdVVV2WnnXbK6173uuyyyy659tpr89CHPnT1/lNOOSV/8Rd/kST59a9/nQMPPDALFizIwoUL873vfe8+xzv++OPzohe9KPvuu2+23377fOADH1i970Mf+lB22mmn7LTTTvnEJz6RJLnlllvy3Oc+NzvvvHN22mmnnHrqqUmSpz3tabnooouyaNGi3HLLLZk/f34OP/zwrFy5cnV9L37xi3P22WevPv7LX/7ynH766Vm5cmXe8pa3ZOHChZk3b16OP/74JMl1112Xpz3taZk/f3522mmnfPe73x3wp7lmeoQBAACGyGWXXZYTTzwxixcvzsqVK9fY7qijjso73vGO7L777lm2bFn233//XHLJJfdpd8EFF+SSSy7JJptskl133TX7779/7rzzzpx00km54IILcvfdd2fhwoXZc889c/nll2fu3Ln52te+liS5+eab73WsY489Nscff/zq3uyR9R1yyCFZsmRJ9tlnn9x+++355je/mRNOOCGf+cxnsvXWW+eCCy7IHXfckd133z377LNPTj755Dz/+c/PO9/5ztx999257bbbBvHxjYsgDAAAMEQe//jHZ9ddd11nu3/7t3/LFVdcsfrxb3/729x222154AMfeK92++67b7bYYoskyQEHHJDvfOc7ueOOO/LiF784D3rQg+61fa+99sqiRYuyaNGiPP/5z88ee+wx7rr//M//PG9961tz11135cwzz8yznvWsPOABD8jZZ5+dyy+/PKecckqSXri+8sors+uuu+bII4/M7bffngMOOCA777zzuF9rfQnCAAAAQ+TBD37w6vsbbLBBWmurH49cS7e1Nq6JtUYvPVRV9zrmSDvssEOWLl2as846K29/+9uz//7756//+q/HVfeDHvSg7LHHHjnnnHOyZMmSvPrVr15d56c//enVk4ONdN555+XMM8/MYYcdlmOOOSaHHXbYuF5rfblGGAAAYEhtsMEG2WKLLXLllVfmnnvuyWmnnbZ637Of/ex86lOfWv141XDl0c4+++z87ne/yx/+8Iecfvrp2WOPPfKMZzwjp512Wm677bbceuutOf300/P0pz891113XTbbbLO84hWvyFve8pb88Ic/vNexNtqo15e6piHbhxxySE444YScf/75efazn52k1yP96U9/evVzrrjiitx22235xS9+kUc84hE54ogj8qpXvSo/+tGP7v8HNUF6hAEAgM5b13JH0+nv/u7vst9+++XRj350dtxxx9xxxx1Jkk996lN5/etfnxNPPDErV67MXnvtda9gvMrTnva0vOxlL8vPfvazvOIVr8j8+fOTJIceeujqIdivf/3r86QnPSlnnXVWFi1alA022CCbbLJJFi9efJ/jvfa1r828efOyYMGCfPazn73Xvv322y+vfOUr89KXvjQbb7xxkuTII4/MNddcs/p1t95665x++un5xje+kY9+9KPZeOONs9lmm+WLX/zi4D60dag1dYnPFgsWLGhLly6d7jIAAIAhcvnll2eHHXaY7jIm3fHHH59LLrkkH/vYx6a7lPU21vesqi5srS2Y6LEMjQYAAKBTDI0GAACYpVatOcy9CcLT7dwPjq/dXsdMbh0AAAAdYWg0AAAAnSIIAwAA0CmCMAAAAJ3iGmEAAIDxzt0zXuOY42fDDTfMk570pNWPv/rVr2bu3Lljtl22bFn233//XHLJJYOq8H5bunRpPv/5z+fjH/94zjvvvGyyySZ56lOfmiRZvHhxHvSgB+Xwww+f5irXThAGAACYBg984ANz0UUXTXcZE7ZgwYIsWNBbuve8887LZptttjoIv+51r5vO0sbN0GgAAIAhsWzZsjz96U/PLrvskl122SXf/e5379Pm0ksvzcKFCzN//vzMmzcvV155ZZLki1/84urtRx55ZO6+++77PHfu3Ll55zvfmYULF2bhwoW56qqrkiS/+MUvsvfee2fevHnZe++9c8011yRJvvzlL2ennXbKzjvvnGc84xlJeuF3//33z7Jly7J48eIcd9xxmT9/fr797W/nPe95T/7+7/8+l19+eRYuXHiv9zVv3rwkyYUXXpg999wzT37yk7Pvvvvml7/8ZZLk4x//eHbcccfMmzcvhxxyyAA/1fsShAEAAKbBbbfdlvnz52f+/Pl50YtelCTZeuutc8455+SHP/xhlixZkqOOOuo+z1u8eHHe9KY35aKLLsrSpUuz7bbb5vLLL8+SJUvyH//xH7nooouy4YYb5qSTThrzdR/ykIfkggsuyBvf+Ma8+c1vTpK88Y1vzOGHH56LL744hx122OrXfd/73pevf/3r+fGPf5wzzjjjXseZO3duXve61+Xoo4/ORRddlKc//emr9+2www658847c/XVVydJlixZkoMOOih33XVX/uqv/iqnnnpqLrzwwrzmNa/J3/zN3yRJjj322PzoRz/KxRdfnMWLF6/np7t2hkYDAABMg7GGRt9111154xvfuDrM/vSnP73P857ylKfkb//2b7N8+fIceOCB2W677fKNb3wjF154YXbdddckvZC99dZbj/m6hx566Orbo48+Okly/vnn5ytf+UqS5BWveEXe8Y53JEn22GOPvOpVr8pBBx2UAw88cELv76CDDsqXvvSlLFq0KEuWLMmSJUtyxRVX5JJLLslznvOcJMndd9+dbbbZJkkyb968HHbYYTnggANywAEHTOi1JkoQBgAAGBLHHXdcHv7wh+fHP/5x7rnnnmy66ab3afOyl70su+22W84888zsu+++Of7449Nayytf+cp88IPrnvSrqsa8P1abxYsX5/vf/37OPPPMzJ8/f0LXNB988MF56UtfmgMPPDBVle222y4/+clP8sQnPjHnn3/+fdqfeeaZ+da3vpUzzjgj73//+3PppZdmo40mJ7IaGg0AADAkbr755myzzTbZYIMN8oUvfGHM63yvvvrqPO5xj8tRRx2VF7zgBbn44ouz995759RTT80NN9yQJLnpppvyi1/8YszXWLJkyerbpzzlKUmSpz71qTnllFOSJCeddFKe9rSnJUl+9rOfZbfddsv73ve+bLXVVrn22mvvdazNN988t9xyy5iv8/jHPz4bbrhh3v/+9+fggw9Okmy//fZZsWLF6iB811135dJLL80999yTa6+9NnvttVc+9KEP5Xe/+11uvfXWCX12E6FHGAAAYBzLHU2FN7zhDXnxi1+cL3/5y9lrr73y4Ac/+D5tlixZki9+8YvZeOON84hHPCLvete78rCHPSwf+MAHss8+++See+7JxhtvnE996lN5zGMec5/n33HHHdltt91yzz335OSTT07Sm6jqNa95TT784Q9nzpw5OfHEE5Mkb3/723PllVemtZa99947O++8c775zW+uPtbzn//8vOQlL8npp5+eT3ziE/d5rYMPPjhvf/vb8/Of/zxJsskmm+TUU0/NUUcdlZtvvjkrV67Mm9/85jzhCU/Iy1/+8tx8881preXoo4/OQx/60IF8pmOp1tqkHXwYLFiwoC1dunS6y1iz8a5XNiQ/mAAAMBtcfvnl2WGHHaa7jCk3d+7cLF26NFtttdV0lzJhY33PqurC1tqCiR7L0GgAAAA6xdBoAACAjli2bNl0lzAU9AgDAACdNNsvE51NBv29EoQBAIDO2XTTTXPjjTcKwzNAay033njjmEtJ3V+GRgMAAJ2z7bbbZvny5VmxYsV0l8I4bLrpptl2220HdjxBGAAA6JyNN944j33sY6e7DKaJodEAAAB0iiAMAABApwjCAAAAdIogDAAAQKcIwgAAAHTKlM4aXVWfTbJ/khtaazv1ty1Jsn2/yUOT/K61Nn+M5y5LckuSu5OsbK0tmJKiAQAAmFWm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\n", "text/plain": [ "<Figure size 1152x576 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "true_positives_XG=output_XG[:,1][np.where(Y_test[:,1]==1)]\n", "false_positives_XG=output_XG[:,1][np.where(Y_test[:,0]==1)]\n", "plt.hist(true_positives_XG,alpha=0.5,bins=80,density=True,label=\"True positives\");\n", "plt.hist(false_positives_XG,alpha=0.5,bins=80,density=True, label=\"False positives\");\n", "plt.legend()\n", "plt.xlabel(\"XGBoost BDT output\", fontsize='15')\n", "plt.ylabel(\"Events (a.u.)\", fontsize='15')\n", "fig=plt.gcf()\n", "fig.set_size_inches(16,8)\n", "plt.savefig('/home/hep/davide/Rphipi/'+PATH+'/tp_vs_fp_XG.png', format='png', dpi=100)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pAUC from NN 0.8886196769456681\n", "pAUC from XG Boost 0.890928026160944\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 576x576 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "threshold_range=np.linspace(0.0,1.,num=30)\n", "sig_eps_vals_XG=[sig_eff(true_positives_XG,threshold_range[i]) for i in range(len(threshold_range))]\n", "bkg_eps_vals_XG=[bkg_eff(false_positives_XG,threshold_range[i]) for i in range(len(threshold_range))]\n", "if task=='TEST': \n", "\n", " \n", " sig_eps_vals_NN=[sig_eff(true_positives_NN,threshold_range[i]) for i in range(len(threshold_range))]\n", " bkg_eps_vals_NN=[bkg_eff(false_positives_NN,threshold_range[i]) for i in range(len(threshold_range))]\n", " \n", " plt.plot(threshold_range,threshold_range, 'black', linestyle='dashed')\n", " plt.plot(bkg_eps_vals_NN,sig_eps_vals_NN, 'r', label=\"NN ROC Curve\")\n", " pAUC_NN=roc_auc_score(Y_test,output_NN)\n", " print(\"pAUC from NN {0}\".format(pAUC_NN))\n", "\n", "plt.plot(threshold_range,threshold_range, 'black', linestyle='dashed')\n", "plt.plot(bkg_eps_vals_XG,sig_eps_vals_XG,'b',label=\"XG Boost ROC Curve\")\n", "plt.xlabel(\"Background selection efficiency\", fontsize='15')\n", "plt.ylabel(\"Signal selection efficiency\", fontsize='15')\n", "pAUC_XG=roc_auc_score(Y_test,output_XG)\n", "plt.text(0.69,0.1,\"NN AUC {0:.4g}\\n \\n XGBoost AUC {1:.4g}\\n\".format(pAUC_NN,pAUC_XG), bbox=dict(boxstyle=\"round\", facecolor='blue', alpha=0.10), horizontalalignment='center', verticalalignment='center',fontsize='15')\n", "plt.legend()\n", "fig=plt.gcf()\n", "fig.set_size_inches(8,8)\n", "\n", "print(\"pAUC from XG Boost {0}\".format(pAUC_XG))\n", "plt.savefig('/home/hep/davide/Rphipi/mu/test_'+str(test)+'/roc_comparison_'+str(i)+'.png', format='png', dpi=100)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "# save XGBOOST model to file\n", "pickle.dump(model, open(PATH+\"/XG_\"+str(i)+\"_.pickle.dat\", \"wb\"))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }