Skip to content

Instantly share code, notes, and snippets.

@mickypaganini
Created November 16, 2015 20:52
Show Gist options
  • Save mickypaganini/db8b9304a54031fab9bd to your computer and use it in GitHub Desktop.
Save mickypaganini/db8b9304a54031fab9bd to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import pandautils as pu\n",
"import math\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# -- open an ntuple produced using the 98% track2jet cut to test whether that was implemented correctly:\n",
"df = pu.root2panda('../temp_samples/user.mpaganin.6591530.BTAGSTREAM._000198.root', 'bTag_AntiKt3PV0TrackJets')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def deltaR(eta1, eta2, phi1, phi2):\n",
" '''\n",
" Definition:\n",
" -----------\n",
" Function that calculates DR between two objects given their etas and phis\n",
" Args:\n",
" -----\n",
" eta1 = float, eta of first object\n",
" eta2 = float, eta of second object\n",
" phi1 = float, phi of first object\n",
" phi2 = float, phi of second object\n",
" Output:\n",
" -------\n",
" deltaR = float, distance between the two objects \n",
" '''\n",
" DEta = abs(eta1-eta2)\n",
" DPhi = math.acos(math.cos( abs( phi1-phi2 ) ) ) # hack to avoid |phi1-phi2| larger than 180 degrees\n",
" return math.sqrt( pow(DEta,2) + pow(DPhi,2) ) "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Event 0 of 5000\n",
"Event 100 of 5000\n",
"Event 200 of 5000\n",
"Event 300 of 5000\n",
"Event 400 of 5000\n",
"Event 500 of 5000\n",
"Event 600 of 5000\n",
"Event 700 of 5000\n",
"Event 800 of 5000\n",
"Event 900 of 5000\n",
"Event 1000 of 5000\n",
"Event 1100 of 5000\n",
"Event 1200 of 5000\n",
"Event 1300 of 5000\n",
"Event 1400 of 5000\n",
"Event 1500 of 5000\n",
"Event 1600 of 5000\n",
"Event 1700 of 5000\n",
"Event 1800 of 5000\n",
"Event 1900 of 5000\n",
"Event 2000 of 5000\n",
"Event 2100 of 5000\n",
"Event 2200 of 5000\n",
"Event 2300 of 5000\n",
"Event 2400 of 5000\n",
"Event 2500 of 5000\n",
"Event 2600 of 5000\n",
"Event 2700 of 5000\n",
"Event 2800 of 5000\n",
"Event 2900 of 5000\n",
"Event 3000 of 5000\n",
"Event 3100 of 5000\n",
"Event 3200 of 5000\n",
"Event 3300 of 5000\n",
"Event 3400 of 5000\n",
"Event 3500 of 5000\n",
"Event 3600 of 5000\n",
"Event 3700 of 5000\n",
"Event 3800 of 5000\n",
"Event 3900 of 5000\n",
"Event 4000 of 5000\n",
"Event 4100 of 5000\n",
"Event 4200 of 5000\n",
"Event 4300 of 5000\n",
"Event 4400 of 5000\n",
"Event 4500 of 5000\n",
"Event 4600 of 5000\n",
"Event 4700 of 5000\n",
"Event 4800 of 5000\n",
"Event 4900 of 5000\n"
]
}
],
"source": [
"# -- C++ like loop to store DR of each track to its jet:\n",
"DR = []\n",
"for event in range(df.shape[0]): # loop thru events\n",
" if (event%100 == 0):\n",
" print 'Event {} of {}'.format(event, df.shape[0])\n",
" DR.append([])\n",
" for jet in range(df['jet_pt'][event].shape[0]): # loop thru jets\n",
" DR[event].append([])\n",
" for trk in range(df['jet_trk_pt'][event][jet].shape[0]): # loop thru tracks\n",
" DR[event][jet].append( deltaR(df['jet_eta'][event][jet], df['jet_trk_eta'][event][jet][trk],\n",
" df['jet_phi'][event][jet], df['jet_trk_phi'][event][jet][trk]) )"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# -- add DR column to the df:\n",
"df['DR'] = DR"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# -- save df to pickle for future use:\n",
"# df.to_pickle('../temp_samples/dr.pkl')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Event 0 of 5000\n",
"Event 100 of 5000\n",
"Event 200 of 5000\n",
"Event 300 of 5000\n",
"Event 400 of 5000\n",
"Event 500 of 5000\n",
"Event 600 of 5000\n",
"Event 700 of 5000\n",
"Event 800 of 5000\n",
"Event 900 of 5000\n",
"Event 1000 of 5000\n",
"Event 1100 of 5000\n",
"Event 1200 of 5000\n",
"Event 1300 of 5000\n",
"Event 1400 of 5000\n",
"Event 1500 of 5000\n",
"Event 1600 of 5000\n",
"Event 1700 of 5000\n",
"Event 1800 of 5000\n",
"Event 1900 of 5000\n",
"Event 2000 of 5000\n",
"Event 2100 of 5000\n",
"Event 2200 of 5000\n",
"Event 2300 of 5000\n",
"Event 2400 of 5000\n",
"Event 2500 of 5000\n",
"Event 2600 of 5000\n",
"Event 2700 of 5000\n",
"Event 2800 of 5000\n",
"Event 2900 of 5000\n",
"Event 3000 of 5000\n",
"Event 3100 of 5000\n",
"Event 3200 of 5000\n",
"Event 3300 of 5000\n",
"Event 3400 of 5000\n",
"Event 3500 of 5000\n",
"Event 3600 of 5000\n",
"Event 3700 of 5000\n",
"Event 3800 of 5000\n",
"Event 3900 of 5000\n",
"Event 4000 of 5000\n",
"Event 4100 of 5000\n",
"Event 4200 of 5000\n",
"Event 4300 of 5000\n",
"Event 4400 of 5000\n",
"Event 4500 of 5000\n",
"Event 4600 of 5000\n",
"Event 4700 of 5000\n",
"Event 4800 of 5000\n",
"Event 4900 of 5000\n"
]
}
],
"source": [
"# -- get pt and DR info for plotting:\n",
"# (kinda redundant - could be done in loop above)\n",
"pts = []\n",
"drs = []\n",
"for event in range(df.shape[0]): # loop thru events\n",
" if (event%100 == 0):\n",
" print 'Event {} of {}'.format(event, df.shape[0])\n",
" for jet in range(df['jet_pt'][event].shape[0]): # loop thru jets\n",
" jet_pt = df['jet_pt'][event][jet]\n",
" tracks = df['DR'][event][jet]\n",
" pts.extend([jet_pt] * len(tracks))\n",
" drs.extend(tracks)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x12288af90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# -- plotting:\n",
"plt.scatter(pts, drs, 0.2, marker = '.')\n",
"\n",
"a = 0.1978; b = -0.920; c = -2.817e-5;\n",
"X = np.linspace(min(pts), max(pts), 5000)\n",
"y = [(a + math.exp(b+c*x)) for x in X] \n",
"plt.plot(X, y , color = 'red', label = '$y = a+e^{b+cx}$ (New)', linewidth = 2.0)\n",
"\n",
"plt.legend()\n",
"plt.xlabel('jet pT (MeV)')\n",
"plt.ylabel('dR between charged particle and jet')\n",
"plt.title('dR vs. jet pT scatter plot with 98th percentile fits')\n",
"plt.xlim(0, 1000000);"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"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.10"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment