def METHOD_NAME(self, time_series_sensor_data, detection_geometry: DetectionGeometryBase):
    """
    Applies the Delay and Sum beamforming algorithm [1] to the time series sensor data (2D numpy array where the
    first dimension corresponds to the sensor elements and the second to the recorded time steps) with the given
    beamforming settings (dictionary).
    A reconstructed image (2D numpy array) is returned.
    This implementation uses PyTorch Tensors to perform computations and is able to run on GPUs.
    [1] T. Kirchner et al. 2018, "Signed Real-Time Delay Multiply and Sum Beamforming for Multispectral
    Photoacoustic Imaging", https://doi.org/10.3390/jimaging4100121
    """
    time_series_sensor_data, sensor_positions, speed_of_sound_in_m_per_s, spacing_in_mm, time_spacing_in_ms, torch_device = preparing_reconstruction_and_obtaining_reconstruction_settings(
        time_series_sensor_data, self.component_settings, self.global_settings, detection_geometry, self.logger)
    ### ALGORITHM ITSELF ###
    xdim, zdim, ydim, xdim_start, xdim_end, ydim_start, ydim_end, zdim_start, zdim_end = compute_image_dimensions(
        detection_geometry, spacing_in_mm, self.logger)
    if zdim == 1:
        sensor_positions[:, 1] = 0  # Assume imaging plane
    # construct output image
    output = torch.zeros((xdim, ydim, zdim), dtype=torch.float32, device=torch_device)
    values, _ = compute_delay_and_sum_values(time_series_sensor_data, sensor_positions, xdim,
                                             ydim, zdim, xdim_start, xdim_end, ydim_start, ydim_end, zdim_start, zdim_end, spacing_in_mm, speed_of_sound_in_m_per_s,
                                             time_spacing_in_ms, self.logger, torch_device,
                                             self.component_settings)
    _sum = torch.sum(values, dim=3)
    counter = torch.count_nonzero(values, dim=3)
    torch.divide(_sum, counter, out=output)
    reconstructed = output.cpu().numpy()
    return reconstructed.squeeze()