In [1]:
import sys
sys.path.append('/home/jbourbeau/cr-composition')
sys.path


Out[1]:
['',
 '/cvmfs/icecube.opensciencegrid.org/py2-v1/RHEL_6_x86_64/lib/python2.7/site-packages/setuptools-15.2-py2.7.egg',
 '/cvmfs/icecube.opensciencegrid.org/py2-v1/RHEL_6_x86_64/lib/python2.7/site-packages/setuptools-15.2-py2.7.egg',
 '/home/jbourbeau/.local/lib/python2.7/site-packages',
 '/cvmfs/icecube.opensciencegrid.org/py2-v1/RHEL_6_x86_64/i3ports/root-v5.34.18/lib',
 '/cvmfs/icecube.opensciencegrid.org/py2-v1/RHEL_6_x86_64/lib/python2.7/site-packages',
 '/cvmfs/icecube.opensciencegrid.org/py2-v1/RHEL_6_x86_64/i3ports/lib/python2.7/site-packages',
 '/data/user/jbourbeau/metaprojects/icerec/V05-00-00/build/lib',
 '/home/jbourbeau/cr-composition/analysis/ShowerLLH',
 '/home/jbourbeau',
 '/home/jbourbeau/useful',
 '/home/jbourbeau/anisotropy',
 '/home/jbourbeau/ShowerLLH_scripts',
 '/cvmfs/icecube.opensciencegrid.org/py2-v1/RHEL_6_x86_64/lib/python27.zip',
 '/cvmfs/icecube.opensciencegrid.org/py2-v1/RHEL_6_x86_64/lib/python2.7',
 '/cvmfs/icecube.opensciencegrid.org/py2-v1/RHEL_6_x86_64/lib/python2.7/plat-linux2',
 '/cvmfs/icecube.opensciencegrid.org/py2-v1/RHEL_6_x86_64/lib/python2.7/lib-tk',
 '/cvmfs/icecube.opensciencegrid.org/py2-v1/RHEL_6_x86_64/lib/python2.7/lib-old',
 '/cvmfs/icecube.opensciencegrid.org/py2-v1/RHEL_6_x86_64/lib/python2.7/lib-dynload',
 '/home/jbourbeau/.local/lib/python2.7/site-packages/IPython/extensions',
 '/home/jbourbeau/.ipython',
 '/home/jbourbeau/cr-composition']

In [2]:
import os
import sys
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm
import argparse
import seaborn.apionly as sns

from icecube import ShowerLLH

import composition as comp

# from composition.analysis.load_sim import load_sim
# import composition.analysis.data_functions as datafunc
# import composition.analysis.plotting_functions as plotting


/home/jbourbeau/.local/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
  warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')

In [3]:
sns.set_palette('muted')
sns.set_color_codes()

In [5]:
df, cut_dict = comp.load_sim(return_cut_dict=True)
df_old, cut_dict_old = comp.load_sim(old=True, return_cut_dict=True)
selection_mask = np.array([True] * len(df))
selection_mask_old = np.array([True] * len(df_old))
standard_cut_keys = ['reco_exists', 'reco_zenith', 'num_hits_1_60', 'IT_signal',
                     'StationDensity', 'max_qfrac_1_60', 'reco_containment',
                     'energy_range']
for key in standard_cut_keys:
    selection_mask *= cut_dict[key]
    selection_mask_old *= cut_dict_old[key]

df = df[selection_mask]
df_old = df_old[selection_mask_old]


/home/jbourbeau/cr-composition/composition/load_sim.py:83: RuntimeWarning: divide by zero encountered in log10
  df['reco_log_energy'] = np.nan_to_num(np.log10(df['reco_energy']))

KeyErrorTraceback (most recent call last)
<ipython-input-5-ad8d9152f7c1> in <module>()
      1 df, cut_dict = comp.load_sim(return_cut_dict=True)
----> 2 df_old, cut_dict_old = comp.load_sim(old=True, return_cut_dict=True)
      3 selection_mask = np.array([True] * len(df))
      4 selection_mask_old = np.array([True] * len(df_old))
      5 standard_cut_keys = ['reco_exists', 'reco_zenith', 'num_hits_1_60', 'IT_signal',

/home/jbourbeau/cr-composition/composition/load_sim.py in load_sim(config, bintype, return_cut_dict, old)
     45 
     46     # InIce specific cuts
---> 47     cut_dict['NChannels_1_60'] = (df['NChannels_1_60'] >= 8)
     48     cut_dict['NChannels_1_45'] = (df['NChannels_1_45'] >= 8)
     49     cut_dict['NChannels_1_30'] = (df['NChannels_1_30'] >= 8)

/home/jbourbeau/.local/lib/python2.7/site-packages/pandas/core/frame.pyc in __getitem__(self, key)
   2055             return self._getitem_multilevel(key)
   2056         else:
-> 2057             return self._getitem_column(key)
   2058 
   2059     def _getitem_column(self, key):

/home/jbourbeau/.local/lib/python2.7/site-packages/pandas/core/frame.pyc in _getitem_column(self, key)
   2062         # get column
   2063         if self.columns.is_unique:
-> 2064             return self._get_item_cache(key)
   2065 
   2066         # duplicate columns & possible reduce dimensionality

/home/jbourbeau/.local/lib/python2.7/site-packages/pandas/core/generic.pyc in _get_item_cache(self, item)
   1384         res = cache.get(item)
   1385         if res is None:
-> 1386             values = self._data.get(item)
   1387             res = self._box_item_values(item, values)
   1388             cache[item] = res

/home/jbourbeau/.local/lib/python2.7/site-packages/pandas/core/internals.pyc in get(self, item, fastpath)
   3518 
   3519             if not isnull(item):
-> 3520                 loc = self.items.get_loc(item)
   3521             else:
   3522                 indexer = np.arange(len(self.items))[isnull(self.items)]

/home/jbourbeau/.local/lib/python2.7/site-packages/pandas/indexes/base.pyc in get_loc(self, key, method, tolerance)
   2104                 return self._engine.get_loc(key)
   2105             except KeyError:
-> 2106                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   2107 
   2108         indexer = self.get_indexer([key], method=method, tolerance=tolerance)

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4160)()

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4024)()

pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13161)()

pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13115)()

KeyError: 'NChannels_1_60'

In [4]:
MC_log_energy = df.MC_log_energy
reco_log_energy = df.reco_log_energy
MC_log_energy_old = df_old.MC_log_energy
reco_log_energy_old = df_old.reco_log_energy

In [12]:
energy_bins = np.arange(6.2, 8, 0.05)
fig, ax = plt.subplots()
plotting.histogram_2D(MC_log_energy, reco_log_energy, energy_bins, log_counts=True)
plt.plot([0,10], [0,10], marker='None', linestyle='-.')
plt.xlim([6.2, 8])
plt.ylim([6.2, 8])
plt.xlabel('$\log_{10}(E_{\mathrm{MC}}/\mathrm{GeV})$')
plt.ylabel('$\log_{10}(E_{\mathrm{reco}}/\mathrm{GeV})$')
plt.title('True vs. ShowerLLH Energy')
plt.show()



In [5]:
energy_res = reco_log_energy - MC_log_energy
energy_res_old = reco_log_energy_old - MC_log_energy_old
MC_proton_mask = (df['MC_comp'] == 'P')
MC_iron_mask = (df['MC_comp'] == 'Fe')
MC_proton_mask_old = (df_old['MC_comp'] == 'P')
MC_iron_mask_old = (df_old['MC_comp'] == 'Fe')
energy_bins = np.linspace(6.2, 8, 30)
bin_centers, bin_medians_proton, error_proton = datafunc.get_medians(MC_log_energy[MC_proton_mask],
                                                              energy_res[MC_proton_mask],
                                                              energy_bins)
bin_centers, bin_medians_iron, error_iron = datafunc.get_medians(MC_log_energy[MC_iron_mask],
                                                              energy_res[MC_iron_mask],
                                                              energy_bins)
bin_centers, bin_medians_proton_old, error_proton_old = datafunc.get_medians(MC_log_energy_old[MC_proton_mask_old],
                                                              energy_res_old[MC_proton_mask_old],
                                                              energy_bins)
bin_centers, bin_medians_iron_old, error_iron_old = datafunc.get_medians(MC_log_energy_old[MC_iron_mask_old],
                                                              energy_res_old[MC_iron_mask_old],
                                                              energy_bins)

In [6]:
fig, ax = plt.subplots()
ax.errorbar(bin_centers, bin_medians_proton, yerr=error_proton, marker='.', label='MC Proton', alpha=0.75)
ax.errorbar(bin_centers, bin_medians_iron, yerr=error_iron, marker='.', label='MC Iron', alpha=0.75)
ax.errorbar(bin_centers, bin_medians_proton_old, yerr=error_proton_old, marker='.', label='MC Proton (old)', alpha=0.75)
ax.errorbar(bin_centers, bin_medians_iron_old, yerr=error_iron_old, marker='.', label='MC Iron (old)', alpha=0.75)
ax.axhline(0, marker='None', linestyle='-.')
ax.set_xlabel('$\log_{10}(E_{\mathrm{MC}}/\mathrm{GeV})$')
ax.set_ylabel('$\log_{10}(E_{\mathrm{reco}}/E_{\mathrm{MC}})$')
plt.legend()
plt.show()



In [13]:
fig, ax = plt.subplots()
energy_mask = (df['MC_log_energy'] >= 6.4)
weights = df['MC_energy']**-2
print(weights[MC_proton_mask & energy_mask].values)
n, bins, patches = ax.hist(energy_res[MC_proton_mask & energy_mask].values, bins=np.arange(-0.4, 0.4, 0.01),
                           weights=weights[MC_proton_mask & energy_mask].values, histtype='step', label='Proton', normed=False)
n, bins, patches = ax.hist(energy_res[MC_iron_mask & energy_mask].values, bins=np.arange(-0.4, 0.4, 0.01),
                           weights=weights[MC_iron_mask & energy_mask].values, histtype='step', label='Iron', normed=False)
n, bins, patches = ax.hist(e_h4a_res[energy_mask].values, bins=np.arange(-0.4, 0.4, 0.01),
                               weights=weights[energy_mask].values, histtype='step', label='H4a', normed=False)
ax.set_xlim([-0.4, 0.4])
ax.set_xlabel('$\log_{10}(E_{\mathrm{reco}}/E_{\mathrm{MC}})$')
ax.set_ylabel('Counts')
ax.set_title('$\log_{10}(E_{\mathrm{MC}}/\mathrm{GeV}) \geq 6.4$')
plt.legend()
plt.show()


[  5.86716580e-14   5.86716580e-14   5.86716580e-14 ...,   4.67557117e-16
   3.86270787e-16   1.38977705e-16]

In [8]:
MC_x = df.MC_x
MC_y = df.MC_y
reco_x = df.reco_x
reco_y = df.reco_y
MC_x_old = df_old.MC_x
MC_y_old = df_old.MC_y
reco_x_old = df_old.reco_x
reco_y_old = df_old.reco_y

In [9]:
core_res = np.sqrt((reco_x - MC_x)**2+(reco_y - MC_y)**2)
bin_centers, reco_bin_medians, reco_error = datafunc.get_medians(MC_log_energy, core_res, energy_bins)
core_res_old = np.sqrt((reco_x_old - MC_x_old)**2+(reco_y_old - MC_y_old)**2)
bin_centers, reco_bin_medians_old, reco_error_old = datafunc.get_medians(MC_log_energy_old, core_res_old, energy_bins)

In [10]:
fig, ax = plt.subplots()
ax.errorbar(bin_centers, reco_bin_medians, yerr=reco_error, marker='.', label='ShowerLLH')
ax.errorbar(bin_centers, reco_bin_medians_old, yerr=reco_error_old, marker='.', label='ShowerLLH old')
ax.set_xlabel('$\log_{10}(E_{\mathrm{MC}}/\mathrm{GeV})$')
ax.set_ylabel('$\\vec{x}_{\mathrm{reco}}-\\vec{x}_{\mathrm{MC}} \ [m]$')
plt.legend()
plt.show()



In [23]:
core_pos = np.sqrt(MC_x**2+MC_y**2).values
core_pos_old = np.sqrt(MC_x_old**2+MC_y_old**2).values
pos_bins = np.linspace(0, 800, 30)
bin_centers, bin_medians, error = datafunc.get_medians(core_pos, energy_res, pos_bins)
bin_centers, bin_medians_old, error_old = datafunc.get_medians(core_pos_old, energy_res_old, pos_bins)

In [24]:
fig, ax = plt.subplots()
ax.errorbar(bin_centers, bin_medians, yerr=error, marker='.', label='ShowerLLH', alpha=0.75)
ax.errorbar(bin_centers, bin_medians_old, yerr=error_old, marker='.', label='ShowerLLH old', alpha=0.75)
ax.axhline(0, marker='None', linestyle='-.')
ax.set_xlabel('Core position [m]')
ax.set_ylabel('$\log_{10}(E_{\mathrm{reco}}/E_{\mathrm{MC}})$')
plt.legend()
plt.show()



In [31]:
LLH_grid = ShowerLLH.LLHGrid('7006')
tank_xy = LLH_grid.tank_xy
tank_x, tank_y = np.transpose(tank_xy)


Loading /data/ana/CosmicRay/IceTop_level3/sim/IC79/GCD/Level3_7006_GCD.i3.gz...

In [32]:
dist_bins = np.arange(-1700, 1700, 25)
fig, ax = plt.subplots()
plotting.histogram_2D(reco_x, reco_y, dist_bins)
ax.plot(tank_x, tank_y, marker='o', markersize=5,
        color='white', alpha=0.5)
ax.set_xlabel('X [m]')
ax.set_ylabel('Y [m]')
ax.set_title('ShowerLLH reconstructed positions')
ax.set_xlim([-800,800])
ax.set_ylim([-800,800])
plt.show()



In [33]:
fig, ax = plt.subplots()
plotting.histogram_2D(lap_x, lap_y, dist_bins)
ax.plot(tank_x, tank_y, marker='o', markersize=5,
        color='white', alpha=0.5)
ax.set_xlabel('X [m]')
ax.set_ylabel('Y [m]')
ax.set_title('Laputop reconstructed positions')
ax.set_xlim([-800,800])
ax.set_ylim([-800,800])
plt.show()



In [ ]: