class_docstr: This class is responsible for scanning over historical data and analyzing returns before
  and after the events.
  
  :param predicate: A :class:`Predicate` subclass responsible for identifying events.
  :type predicate: :class:`Predicate`.
  :param lookBack: The number of bars before the event to analyze. Must be > 0.
  :type lookBack: int.
  :param lookForward: The number of bars after the event to analyze. Must be > 0.
  :type lookForward: int.
code: def __onBars(self, dateTime, bars):
      for instrument in bars.getInstruments():
          self.__addCurrentReturns(instrument)
          eventOccurred = self.__predicate.eventOccurred(
              instrument, self.__feed[instrument]
          )
          if eventOccurred:
              event = Event(self.__lookBack, self.__lookForward)
              self.__events[instrument].append(event)
              self.__addPastReturns(instrument, event)
              # Add next return for this instrument at t=1.
              self.__futureRets[instrument].append((event, 1))
  
imports: import numpy
  import matplotlib.pyplot
  from six.moves import xrange
  from pyalgotrade.technical import roc
  from pyalgotrade import dispatcher
label_desc: Use image node_id 4 for calling the Profiler obj's underlying member method code with example usage: obj.__onBars(dateTime, bars) without return types