def METHOD_NAME(camera_rig, target_obj, rad, alt, duration):
    bpy.ops.curve.primitive_bezier_circle_add(
        location=target_obj.location + Vector((0, 0, alt)),
    )
    circle = bpy.context.object
    circle.scale = (rad,) * 3
    follow_path(camera_rig, circle, duration=duration)
    circle.data.driver_add('eval_time').driver.expression = 'frame'
    butil.constrain_object(camera_rig, 'TRACK_TO', target=target_obj)