<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def prepare_selection(self, pos_x, pos_y, width, height):
 """Prepares the selection rendering In order to find out the object being clicked on, the scene has to be rendered again around the clicked position :param pos_x: x coordinate :param pos_y: y coordinate """

        glSelectBuffer(self.name_counter * 6)
        viewport = glGetInteger(GL_VIEWPORT)

        glMatrixMode(GL_PROJECTION)
        glPushMatrix()

        glRenderMode(GL_SELECT)

        glLoadIdentity()

        if width < 1:
            width = 1
        if height < 1:
            height = 1
        pos_x += width / 2.
        pos_y += height / 2.
        # The system y axis is inverse to the OpenGL y axis
        gluPickMatrix(pos_x, viewport[3] - pos_y + viewport[1], width, height, viewport)

        self._apply_orthogonal_view()