code: def ring(x, y, height, thickness, gaussian_width):
      
      radius = height/2.0
      half_thickness = thickness/2.0
  
      distance_from_origin = np.sqrt(x**2+y**2)
      distance_outside_outer_disk = distance_from_origin - radius - half_thickness
      distance_inside_inner_disk = radius - half_thickness - distance_from_origin
  
      ring = 1.0-np.bitwise_xor(np.greater_equal(distance_inside_inner_disk,0.0),
                                np.greater_equal(distance_outside_outer_disk,0.0))
  
      sigmasq = gaussian_width*gaussian_width
  
      if sigmasq==0.0:
          inner_falloff = x*0.0
          outer_falloff = x*0.0
      else:
          with float_error_ignore():
              inner_falloff = np.exp(np.divide(-distance_inside_inner_disk*distance_inside_inner_disk, 2.0*sigmasq))
              outer_falloff = np.exp(np.divide(-distance_outside_outer_disk*distance_outside_outer_disk, 2.0*sigmasq))
  
      return np.maximum(inner_falloff,np.maximum(outer_falloff,ring))
docs: Circular ring (annulus) with Gaussian fall-off after the solid ring-shaped region.