code: def sigmasq(htilde, psd = None, low_frequency_cutoff=None,
              high_frequency_cutoff=None):
      
      htilde = make_frequency_series(htilde)
      N = (len(htilde)-1) * 2
      norm = 4.0 * htilde.delta_f
      kmin, kmax = get_cutoff_indices(low_frequency_cutoff,
                                     high_frequency_cutoff, htilde.delta_f, N)
      ht = htilde[kmin:kmax]
  
      if psd:
          try:
              numpy.testing.assert_almost_equal(ht.delta_f, psd.delta_f)
          except:
              raise ValueError('Waveform does not have same delta_f as psd')
  
      if psd is None:
          sq = ht.inner(ht)
      else:
          sq = ht.weighted_inner(ht, psd[kmin:kmax])
  
      return sq.real * norm
docs: Return the loudness of the waveform. This is defined (see Duncan
      Brown's thesis) as the unnormalized matched-filter of the input waveform,
      htilde, with itself. This quantity is usually referred to as (sigma)^2
      and is then used to normalize matched-filters with the data.
  
      Parameters
      ----------
      htilde : TimeSeries or FrequencySeries
          The input vector containing a waveform.
      psd : {None, FrequencySeries}, optional
          The psd used to weight the accumulated power.
      low_frequency_cutoff : {None, float}, optional
          The frequency to begin considering waveform power.
      high_frequency_cutoff : {None, float}, optional
          The frequency to stop considering waveform power.
  
      Returns
      -------
      sigmasq: float