Because of the way you are doing the query there is no reason to have a pre_get_posts filter. You should eliminate your filter completely and alter the query directly
$url = $_SERVER['REQUEST_URI'];
$url = explode("/", $url);
$field = $url[count($url)-3];
$value = $url[count($url)-2];
$query = new WP_Query( array(
'post_type' => array( 'post', 'event' ),
'numberposts' => -1,
'category_name' => $value
));