code: def antenna_pattern(self, right_ascension, declination, polarization, t_gps):
          
          gha = self.gmst_estimate(t_gps) - right_ascension
  
          cosgha = cos(gha)
          singha = sin(gha)
          cosdec = cos(declination)
          sindec = sin(declination)
          cospsi = cos(polarization)
          sinpsi = sin(polarization)
  
          x0 = -cospsi * singha - sinpsi * cosgha * sindec
          x1 = -cospsi * cosgha + sinpsi * singha * sindec
          x2 =  sinpsi * cosdec
          x = np.array([x0, x1, x2])
  
          dx = self.response.dot(x)
  
          y0 =  sinpsi * singha - cospsi * cosgha * sindec
          y1 =  sinpsi * cosgha + cospsi * singha * sindec
          y2 =  cospsi * cosdec
          y = np.array([y0, y1, y2])
          dy = self.response.dot(y)
  
          if hasattr(dx, 'shape'):
              fplus = (x * dx - y * dy).sum(axis=0)
              fcross = (x * dy + y * dx).sum(axis=0)
          else:
              fplus = (x * dx - y * dy).sum()
              fcross = (x * dy + y * dx).sum()
  
          return fplus, fcross
docs: Return the detector response.
  
          Parameters
          ----------
          right_ascension: float or numpy.ndarray
              The right ascension of the source
          declination: float or numpy.ndarray
              The declination of the source
          polarization: float or numpy.ndarray
              The polarization angle of the source
  
          Returns
          -------
          fplus: float or numpy.ndarray
              The plus polarization factor for this sky location / orientation
          fcross: float or numpy.ndarray
              The cross polarization factor for this sky location / orientation