docs: def get_effective_wavelength(self, bandname):
          """Get the effective wavelength with Rayleigh scattering in mind"""
          try:
              rsr = RelativeSpectralResponse(self.platform_name, self.sensor)
          except(IOError, OSError):
              LOG.exception(
                  "No spectral responses for this platform and sensor: %s %s", self.platform_name, self.sensor)
              if isinstance(bandname, (float, integer_types)):
                  LOG.warning(
                      "Effective wavelength is set to the requested band wavelength = %f", bandname)
                  return bandname
  
              msg = ("Can't get effective wavelength for band %s on platform %s and sensor %s" %
                     (str(bandname), self.platform_name, self.sensor))
              raise KeyError(msg)
  
          if isinstance(bandname, str):
              bandname = BANDNAMES.get(self.sensor, BANDNAMES['generic']).get(bandname, bandname)
          elif isinstance(bandname, (float, integer_types)):
              if not(0.4 < bandname < 0.8):
                  raise BandFrequencyOutOfRange(
                      'Requested band frequency should be between 0.4 and 0.8 microns!')
              bandname = get_bandname_from_wavelength(self.sensor, bandname, rsr.rsr)
  
          wvl, resp = rsr.rsr[bandname][
              'det-1']['wavelength'], rsr.rsr[bandname]['det-1']['response']
  
          cwvl = get_central_wave(wvl, resp, weight=1. / wvl**4)
          LOG.debug("Band name: %s  Effective wavelength: %f", bandname, cwvl)
  
          return cwvl