def METHOD_NAME(self):
    """
    _binHistogram_
    Histograms of continuous data must be binned,
    this takes care of that using given or optimal parameters.
    Note that this modifies the data object,
    and points can't be added to the histogram after this.
    """
    if not self.nPoints:
        return
    self.binned = True
    # Number of bins can be specified or calculated based on number of points
    nBins = self.fixedNBins
    if nBins is None:
        nBins = int(math.floor((5.0 / 3.0) * math.pow(self.nPoints, 1.0 / 3.0)))
    # Define min and max
    if not self.dropOutliers:
        upperLimit = max(self.data.keys())
        lowerLimit = min(self.data.keys())
    else:
        stdDev = calculateStdDevFromQ(self.QValue, self.nPoints)
        upperLimit = self.average + (stdDev * self.sigmaLimit)
        lowerLimit = self.average - (stdDev * self.sigmaLimit)
    # Incremental delta
    delta = abs(float(upperLimit - lowerLimit)) / nBins
    # Build the bins, it's a list of tuples for now
    bins = []
    a = lowerLimit
    b = lowerLimit + delta
    while len(bins) < nBins:
        bins.append((a, b))
        a += delta
        b += delta
    # Go through data and populate the binned histogram
    binnedHisto = {}
    currentBin = 0
    currentPoint = 0
    sortedData = sorted(self.data.keys())
    while currentPoint < len(sortedData):
        point = sortedData[currentPoint]
        encodedTuple = "%s,%s" % (bins[currentBin][0], bins[currentBin][1])
        if encodedTuple not in binnedHisto:
            binnedHisto[encodedTuple] = 0
        if point > upperLimit or point < lowerLimit:
            currentPoint += 1
        elif currentBin == len(bins) - 1:
            binnedHisto[encodedTuple] += self.data[point]
            currentPoint += 1
        elif point >= bins[currentBin][0] and point < bins[currentBin][1]:
            binnedHisto[encodedTuple] += self.data[point]
            currentPoint += 1
        else:
            currentBin += 1
    self.data = binnedHisto
    return