Newer
Older
Rphipi_new / 2_data_preselection.ipynb
@Davide Lancierini Davide Lancierini on 28 May 2019 26 KB first commit
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/hep/davide/miniconda3/envs/root_env/lib/ROOT.py:301: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility\n",
      "  return _orig_ihook( name, *args, **kwds )\n"
     ]
    }
   ],
   "source": [
    "import ROOT as r\n",
    "import numpy as np\n",
    "from array import array\n",
    "import root_numpy as rn\n",
    "import matplotlib.pyplot as plt\n",
    "import pickle\n",
    "import math\n",
    "import os\n",
    "\n",
    "from tools.data_processing import *\n",
    "from tools.kinematics_fix import *\n",
    "from tools.preselector import *\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "l_index = 1\n",
    "mother_index = 1\n",
    "data_index = 1\n",
    "apply_phi_mass_cut = True\n",
    "n_cats=6\n",
    "data_type = ['MC','data']\n",
    "mother_ID=['Dplus','Ds']\n",
    "l_flv = ['e','mu']\n",
    "PATH='/disk/lhcb_data/davide/Rphipi_new/'\n",
    "\n",
    "save_path_presel_data=PATH+data_type[data_index]+'/'+l_flv[l_index]+'_tuples/presel/'\n",
    "save_path_trigged_data=PATH+data_type[data_index]+'/'+l_flv[l_index]+'_tuples/trigged/'\n",
    "save_path_trigCats_data=save_path_trigged_data+'trigCats/'\n",
    "save_path_BDT_for_data=PATH+data_type[data_index]+'/'+l_flv[l_index]+'_tuples/for_BDT_training/'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "#retrieve files\n",
    "\n",
    "def find_file_path(l_index=l_index, mother_index=mother_index): \n",
    "    return \"/disk/lhcb_data/davide/Rphipi/data/\"+mother_ID[mother_index]+\"_phipi_\"+l_flv[l_index]+l_flv[l_index]+\"/\"+mother_ID[mother_index]+\"_phipi_\"+l_flv[l_index]+l_flv[l_index]+\".root\"\n",
    "\n",
    "data = r.TFile(find_file_path(l_index=l_index, mother_index=mother_index))\n",
    "tree_name_Ds = mother_ID[mother_index]+'_OfflineTree/DecayTree'\n",
    "t_data = data.Get(tree_name_Ds)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Converting tuples to dictionary"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Switch on only the branches that you need\n",
    "data_tuple_dict = {}\n",
    "\n",
    "t_data.SetBranchStatus(\"*\",0)\n",
    "\n",
    "for branch in return_branches(data_index=data_index, mother_index=mother_index, l_index=l_index):\n",
    "    if branch!='cos_thetal':\n",
    "        t_data.SetBranchStatus(branch, 1)\n",
    "\n",
    "branches_needed=return_branches(data_index=data_index, mother_index=mother_index, l_index=l_index)\n",
    "for branch in branches_needed:\n",
    "    if branch!='cos_thetal':\n",
    "        data_tuple_dict[branch] = rn.root2array(\n",
    "            \n",
    "            filenames=find_file_path(l_index, mother_index=mother_index),\n",
    "            treename = tree_name_Ds,\n",
    "            branches = branch,\n",
    "            start=0,\n",
    "            stop=t_data.GetEntries(),\n",
    "        )\n",
    "    \n",
    "data_tuple_dict = fix_mass_vector(data_tuple_dict, 'Ds_ConsD_M')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Phi Mass Cut "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "#for plot purposes\n",
    "#data_tuple_dict_phi_cut=data_tuple_dict\n",
    "\n",
    "if apply_phi_mass_cut:\n",
    "    \n",
    "    if l_flv[l_index]=='mu':\n",
    "        lower_phi_mass = 990\n",
    "        upper_phi_mass = 1050\n",
    "        \n",
    "    if l_flv[l_index]=='e':\n",
    "        lower_phi_mass = 870\n",
    "        upper_phi_mass = 1110\n",
    "        \n",
    "    data_tuple_dict =filter_tuple_mass_cut(locals(), data_tuple_dict, l_index, \n",
    "                                           'phi_M', lower_bound=lower_phi_mass, upper_bound=upper_phi_mass, \n",
    "                                           cut_kind='inside', include_costhetal = False)\n",
    "    \n",
    "##nice plot\n",
    "#for i in range(20):\n",
    "#    \n",
    "#    upper_cut=np.arange(800+5*i,1100-5*i).max()\n",
    "#    lower_cut=np.arange(800+5*i,1100-5*i).min()\n",
    "#    plt.clf()\n",
    "#    data_tuple_dict_phi_cut=filter_tuple_mass_cut(globals(), data_tuple_dict_phi_cut, l_index, 'phi_M', lower_bound=lower_cut, upper_bound=upper_cut)\n",
    "#    plt.hist(data_tuple_dict_phi_cut['Ds_ConsD_M'],bins=40);\n",
    "#    plt.savefig('plot_{0}.png'.format(i))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PID Cut "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "if l_flv[l_index]=='mu':\n",
    "    lPID_cut = 0.4\n",
    "    piPID_cut = 0.6\n",
    "    \n",
    "    \n",
    "if l_flv[l_index]=='e':\n",
    "    lPID_cut = 0.2\n",
    "    piPID_cut = 0.6\n",
    "        \n",
    "data_tuple_dict_eplusPID =filter_tuple_cond(locals(), data_tuple_dict, l_index, l_flv[l_index]+\"_plus_MC15TuneV1_ProbNN\"+l_flv[l_index], cmp_gte, lPID_cut, include_costhetal=False)\n",
    "data_tuple_dict_eminusPID =filter_tuple_cond(locals(), data_tuple_dict_eplusPID, l_index, l_flv[l_index]+\"_minus_MC15TuneV1_ProbNN\"+l_flv[l_index], cmp_gte, lPID_cut, include_costhetal=False)\n",
    "data_tuple_dict_presel =filter_tuple_cond(locals(), data_tuple_dict_eminusPID, l_index, 'pi_MC15TuneV1_ProbNNpi', cmp_gte, piPID_cut, include_costhetal=False)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Add cos_thetal branch & save preselection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "costheta_Ds=get_costheta_list(data_tuple_dict_presel, l_index=l_index, mother_index=mother_index)\n",
    "data_tuple_dict_presel[\"cos_thetal\"]=costheta_Ds\n",
    "\n",
    "save_tuples(locals(), data_tuple_dict_presel, l_index, save_path_presel_data, file_format='pickle')\n",
    "save_tuples(locals(), data_tuple_dict_presel, l_index, save_path_presel_data, file_format='root')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Get Hlt cuts "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hlt1\n",
      "Overwriting pickle file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/Ds_phipi_mumu_Hlt1.pickle\n",
      "Hlt1\n",
      "Saving root file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/Ds_phipi_mumu_Hlt1.root\n",
      "Hlt2\n",
      "Overwriting pickle file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/Ds_phipi_mumu_Hlt2.pickle\n",
      "Hlt2\n",
      "Saving root file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/Ds_phipi_mumu_Hlt2.root\n",
      "FullHlt\n",
      "Overwriting pickle file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/Ds_phipi_mumu_FullHlt.pickle\n",
      "FullHlt\n",
      "Saving root file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/Ds_phipi_mumu_FullHlt.root\n"
     ]
    }
   ],
   "source": [
    "data_tuple_dict_presel_Hlt1 = filter_tuple_cond(locals(), data_tuple_dict_presel, l_index, 'Ds_Hlt1TrackMVADecision_TOS', cmp_eq, True)\n",
    "\n",
    "data_tuple_dict_presel_Hlt2 = filter_tuple_cond(locals(), data_tuple_dict_presel, l_index, \"Ds_Hlt2RareCharmD2Pi\"+l_flv[l_index].capitalize()+l_flv[l_index].capitalize()+\"OSDecision_TOS\",cmp_eq, True)\n",
    "\n",
    "data_tuple_dict_presel_FullHlt = filter_tuple_cond(locals(), data_tuple_dict_presel_Hlt1, l_index, \"Ds_Hlt2RareCharmD2Pi\"+l_flv[l_index].capitalize()+l_flv[l_index].capitalize()+\"OSDecision_TOS\",cmp_eq, True)\n",
    "\n",
    "save_tuples(locals(), data_tuple_dict_presel_Hlt1, l_index, save_path_trigged_data, file_format='pickle')\n",
    "save_tuples(locals(), data_tuple_dict_presel_Hlt1, l_index, save_path_trigged_data, file_format='root')\n",
    "\n",
    "save_tuples(locals(), data_tuple_dict_presel_Hlt2, l_index, save_path_trigged_data, file_format='pickle')\n",
    "save_tuples(locals(), data_tuple_dict_presel_Hlt2, l_index, save_path_trigged_data, file_format='root')\n",
    "\n",
    "save_tuples(locals(), data_tuple_dict_presel_FullHlt, l_index, save_path_trigged_data, file_format='pickle')\n",
    "save_tuples(locals(), data_tuple_dict_presel_FullHlt, l_index, save_path_trigged_data, file_format='root')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Split in trigger categories\n",
    "\n",
    "    if trig_cat == 0:\n",
    "        #Exclusive L0_Lepton_TOS \n",
    "        \n",
    "    if trig_cat == 1:\n",
    "        #Exclusive L0_Global_TIS\n",
    "        \n",
    "    if trig_cat == 2:\n",
    "        #L0_Lepton_TOS and L0_Global_TIS\n",
    "        \n",
    "    if trig_cat == 3:\n",
    "        #Either L0_Lepton_TOS or L0_Global_TIS\n",
    "        \n",
    "    if trig_cat == 4:\n",
    "        #TOS and TOSandTIS\n",
    "\n",
    "    if trig_cat == 5:\n",
    "        #TIS and TOSandTIS\n",
    "\n",
    "        \n",
    "      "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The counts are coming back\n",
      "Overwriting pickle file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/trigCats/0/Ds_phipi_mumu_trigCat0.pickle\n",
      "Overwriting pickle file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/trigCats/1/Ds_phipi_mumu_trigCat1.pickle\n",
      "Overwriting pickle file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/trigCats/2/Ds_phipi_mumu_trigCat2.pickle\n",
      "Overwriting pickle file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/trigCats/3/Ds_phipi_mumu_trigCat3.pickle\n",
      "Overwriting pickle file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/trigCats/4/Ds_phipi_mumu_trigCat4.pickle\n",
      "Overwriting pickle file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/trigCats/5/Ds_phipi_mumu_trigCat5.pickle\n",
      "Saving root file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/trigCats/0/Ds_phipi_mumu_trigCat0.root\n",
      "Saving root file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/trigCats/1/Ds_phipi_mumu_trigCat1.root\n",
      "Saving root file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/trigCats/2/Ds_phipi_mumu_trigCat2.root\n",
      "Saving root file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/trigCats/3/Ds_phipi_mumu_trigCat3.root\n",
      "Saving root file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/trigCats/4/Ds_phipi_mumu_trigCat4.root\n",
      "Saving root file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/trigged/trigCats/5/Ds_phipi_mumu_trigCat5.root\n"
     ]
    }
   ],
   "source": [
    "data_tuple_dict_presel_trigCats = {}\n",
    "\n",
    "for i in range(n_cats):\n",
    "    \n",
    "    data_tuple_dict_presel_trigCats[i] = filter_tuple_L0TrigCat(locals(), data_tuple_dict_presel_FullHlt, l_index, trig_cat=i)\n",
    "    \n",
    "n_0=data_tuple_dict_presel_trigCats[0]['Ds_ConsD_M'].shape[0]\n",
    "n_1=data_tuple_dict_presel_trigCats[1]['Ds_ConsD_M'].shape[0]\n",
    "n_2=data_tuple_dict_presel_trigCats[2]['Ds_ConsD_M'].shape[0]\n",
    "n_3=data_tuple_dict_presel_trigCats[3]['Ds_ConsD_M'].shape[0]\n",
    "n_4=data_tuple_dict_presel_trigCats[4]['Ds_ConsD_M'].shape[0]\n",
    "n_5=data_tuple_dict_presel_trigCats[5]['Ds_ConsD_M'].shape[0]\n",
    "\n",
    "sanity=np.array_equal([n_0+n_2+n_1==n_3,n_0+n_5==n_3,n_4+n_1==n_3],[True,True,True])\n",
    "\n",
    "if sanity:\n",
    "    print('The counts are coming back')\n",
    "    \n",
    "    save_tuples(locals(), data_tuple_dict_presel_trigCats, l_index, save_path_trigCats_data, file_format='pickle')\n",
    "    save_tuples(locals(), data_tuple_dict_presel_trigCats, l_index, save_path_trigCats_data, file_format='root')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Prepare Bkg Sets for BDT"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "for_BDT\n",
      "Saving pickle file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/for_BDT/Ds_phipi_mumu_for_BDT.pickle\n",
      "for_BDT\n",
      "Saving root file at/disk/lhcb_data/davide/Rphipi_new/data/mu_tuples/for_BDT/Ds_phipi_mumu_for_BDT.root\n"
     ]
    }
   ],
   "source": [
    "if l_flv[l_index]=='mu':\n",
    "    \n",
    "    lower_Dplus_mass_data=1830\n",
    "    upper_Dplus_mass_data=1910\n",
    "    \n",
    "    lower_Ds_mass_data=1930\n",
    "    upper_Ds_mass_data=2010\n",
    "    \n",
    "    \n",
    "if l_flv[l_index]=='e':\n",
    "    \n",
    "    lower_Dplus_mass_data=1810\n",
    "    upper_Dplus_mass_data=1920\n",
    "\n",
    "    lower_Ds_mass_data=1920\n",
    "    upper_Ds_mass_data=2020\n",
    "    \n",
    "data_Ds_tuple_dict_bkg_1 = filter_tuple_mass_cut(locals(), data_tuple_dict_presel_FullHlt, l_index, 'Ds_ConsD_M', lower_bound=lower_Dplus_mass_data, upper_bound=upper_Dplus_mass_data, cut_kind='outside')\n",
    "data_Ds_tuple_dict_bkg_for_BDT = filter_tuple_mass_cut(locals(), data_Ds_tuple_dict_bkg_1, l_index, 'Ds_ConsD_M', lower_bound=lower_Ds_mass_data, upper_bound=upper_Ds_mass_data, cut_kind='outside')\n",
    "    \n",
    "save_tuples(locals(), data_Ds_tuple_dict_bkg_for_BDT, l_index, save_path_BDT_for_data, file_format='pickle')\n",
    "save_tuples(locals(), data_Ds_tuple_dict_bkg_for_BDT, l_index, save_path_BDT_for_data, file_format='root')    \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(data_Ds_tuple_dict_bkg_for_BDT['Ds_ConsD_M'], bins=70);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(data_Ds_tuple_dict_bkg_for_BDT['cos_thetal'], bins=70);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.15"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}