code: def _surfdens(self,R,z,phi=0.,t=0.):
          
          r= numpy.sqrt(R**2.+z**2.)
          x= r/self.a
          Rpa= numpy.sqrt(R**2.+self.a**2.)
          Rma= numpy.sqrt(R**2.-self.a**2.+0j)
          if Rma == 0:
              za= z/self.a
              return self.a**2./2.*((2.-2.*numpy.sqrt(za**2.+1)
                                     +numpy.sqrt(2.)*za\
                                         *numpy.arctan(za/numpy.sqrt(2.)))/z
                                    +numpy.sqrt(2*za**2.+2.)\
                                     *numpy.arctanh(za/numpy.sqrt(2.*(za**2.+1)))
                                    /numpy.sqrt(self.a**2.+z**2.))
          else:
              return self.a**2.*(numpy.arctan(z/x/Rma)/Rma
                                 +numpy.arctanh(z/x/Rpa)/Rpa
                                 -numpy.arctan(z/Rma)/Rma
                                 +numpy.arctan(z/Rpa)/Rpa).real
docs: NAME:
             _surfdens
          PURPOSE:
             evaluate the surface density for this potential
          INPUT:
             R - Galactocentric cylindrical radius
             z - vertical height
             phi - azimuth
             t - time
          OUTPUT:
             the surface density
          HISTORY:
             2018-08-19 - Written - Bovy (UofT)