forms – Download the file programmatically

I have a custom module where I have to create a file and download it when submitting the form. Until now, I managed to create the file and save it to a public folder, but I can not find a way to download it to the client. That's the code I've written up to now.

public function submitForm (array & $ form, FormStateInterface $ form_state) {
$ filename = $ date. - event.ics & # 39 ;;
$ cal_file = file_unmanaged_save_data ("file contents", "public: // cal / $ filename", FILE_EXISTS_RENAME);
return new RedirectResponse (file_create_url ("public: //cal/211443-event.ics"));
}