def METHOD_NAME(
    absolute_tolerance=UNDEFINED,
    relative_tolerance=UNDEFINED,
    n_effective_samples=50,
) -> ReweightingSchema:
    """Returns the default calculation schema to use when estimating
    this property by reweighting existing data.
    Parameters
    ----------
    absolute_tolerance: openff.evaluator.unit.Quantity, optional
        The absolute tolerance to estimate the property to within.
    relative_tolerance: float
        The tolerance (as a fraction of the properties reported
        uncertainty) to estimate the property to within.
    n_effective_samples: int
        The minimum number of effective samples to require when
        reweighting the cached simulation data.
    Returns
    -------
    ReweightingSchema
        The schema to follow when estimating this property.
    """
    assert absolute_tolerance == UNDEFINED or relative_tolerance == UNDEFINED
    calculation_schema = ReweightingSchema()
    calculation_schema.absolute_tolerance = absolute_tolerance
    calculation_schema.relative_tolerance = relative_tolerance
    protocols, data_replicator = generate_reweighting_protocols(
        ObservableType.Density
    )
    protocols.reweight_observable.required_effective_samples = n_effective_samples
    schema = WorkflowSchema()
    schema.protocol_schemas = [x.schema for x in protocols]
    schema.protocol_replicators = [data_replicator]
    schema.final_value_source = ProtocolPath(
        "value", protocols.reweight_observable.id
    )
    calculation_schema.workflow_schema = schema
    return calculation_schema