#!/usr/bin/env python

# Copyright (C) Duncan Macleod (2014)
#
# This file is part of GWpy.
#
# GWpy is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GWpy is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GWpy.  If not, see <http://www.gnu.org/licenses/>.

"""Plotting an event histogram

I would like to study the snr distribution of event triggers generated by
the ExcessPower gravitational-wave burst detection algorithm,
over a small stretch of data.

The data from which these events were generated are a simulation of Gaussian
noise with the Advanced LIGO design spectrum, and so don't actually contain
any real gravitational waves, but will help tune the algorithm to improve
detection of future, real signals.
"""

__author__ = "Duncan Macleod <duncan.macleod@ligo.org>"
__currentmodule__ = 'gwpy.table.lsctables'

# First, we import the `SnglBurstTable`, an XML-based data holder for single-detector ('Sngl') gravitational-wave burst-like events:
from gwpy.table.lsctables import SnglBurstTable

# We can read a set of events using the :meth:`~SnglBurstTable.read` method:
events = SnglBurstTable.read('../../gwpy/tests/data/H1-LDAS_STRAIN-968654552-10.xml.gz')

# and can generate a new `~gwpy.plotter.HistogramPlot` using the :meth:`~SnglBurstTable.hist` instance method
plot = events.hist('snr', weights=1/10., log=True, logbins=True, histtype='stepfilled', cumulative=-1)
plot.set_xlabel('Signal-to-noise ratio (SNR)')
plot.set_ylabel('Rate [Hz]')
plot.set_title('LHO event triggers for GW100916')
plot.show()
