code: def get_fd_waveform(template=None, **kwargs):
      
  
      input_params = props(template, required_args=fd_required_args, **kwargs)
      wav_gen = fd_wav[type(_scheme.mgr.state)]
      if input_params['approximant'] not in wav_gen:
          raise ValueError("Approximant %s not available" %
                              (input_params['approximant']))
      try:
          ffunc = input_params.pop('f_final_func')
          if ffunc != '':
              # convert the frequency function to a value
              input_params['f_final'] = pnutils.named_frequency_cutoffs[ffunc](
                  input_params)
              # if the f_final is < f_lower, raise a NoWaveformError
              if 'f_final' in input_params and \
                      (input_params['f_lower']+input_params['delta_f'] >=
                       input_params['f_final']):
                  raise NoWaveformError("cannot generate waveform: f_lower >= f_final")
      except KeyError:
          pass
  
      return wav_gen[input_params['approximant']](**input_params)
docs: Return a frequency domain gravitational waveform.
  
      Parameters
      ----------
      template: object
          An object that has attached properties. This can be used to substitute
          for keyword arguments. A common example would be a row in an xml table.
      {params}
  
      Returns
      -------
      hplustilde: FrequencySeries
          The plus phase of the waveform in frequency domain.
      hcrosstilde: FrequencySeries
          The cross phase of the waveform in frequency domain.