def get_charge_style(
    charge_styles, cutoffs, ewald_accuracy=None, dsf_damping=None
):
    """Get the Charge_Style section of the input file

    Parameters
    ----------
    charge_styles : list
        list of charge styles, one for each box
    cutoffs :
        list of coulombic cutoffs, one for each box. For a box with
        charge style 'none', the cutoff should be None
    ewald_accuracy : float, optional
        accuracy of ewald sum. Required if charge_style == ewald
    dsf_damping : float, optional
        value for dsf damping.
    """
    assert len(charge_styles) == len(cutoffs)
    valid_charge_styles = ["none", "cut", "ewald", "dsf"]
    for charge_style in charge_styles:
        if charge_style not in valid_charge_styles:
            raise ValueError(
                "Unsupported charge_style: {}. Supported options "
                "include {}".format(charge_style, charge_styles)
            )
        if charge_style == "ewald":
            if ewald_accuracy is None:
                raise ValueError(
                    "Ewald selected as the charge style but "
                    "no ewald accuracy provided"
                )

    inp_data = """
# Charge_Style"""

    for charge_style, cutoff in zip(charge_styles, cutoffs):
        if charge_style == "none":
            inp_data += """
{charge_style}""".format(
                charge_style=charge_style
            )

        elif charge_style == "cut":
            inp_data += """
coul {charge_style} {cutoff}""".format(
                charge_style=charge_style, cutoff=cutoff
            )

        elif charge_style == "ewald":
            inp_data += """
coul {charge_style} {cutoff} {accuracy}""".format(
                charge_style=charge_style,
                cutoff=cutoff,
                accuracy=ewald_accuracy,
            )
        elif charge_style == "dsf":
            if dsf_damping is not None:
                inp_data += """
coul {charge_style} {cutoff} {damping}""".format(
                    charge_style=charge_style,
                    cutoff=cutoff,
                    damping=dsf_damping,
                )
            else:
                inp_data += """
coul {charge_style} {cutoff}""".format(
                    charge_style=charge_style, cutoff=cutoff
                )

    inp_data += """
!------------------------------------------------------------------------------
"""

    return inp_data