void PoldiSpectrumDomainFunction::poldiFunction1D(
    const std::vector<int> &indices, const FunctionDomain1D &domain,
    FunctionValues &values) const {

  FunctionValues localValues(domain);

  m_profileFunction->functionLocal(localValues.getPointerToCalculated(0),
                                   domain.getPointerAt(0), domain.size());

  double chopperSlitCount = static_cast<double>(m_chopperSlitOffsets.size());

  for (auto index : indices) {
    std::vector<double> factors(domain.size());

    for (size_t i = 0; i < factors.size(); ++i) {
      values.addToCalculated(i, chopperSlitCount * localValues[i] *
                                    m_timeTransformer->detectorElementIntensity(
                                        domain[i], static_cast<size_t>(index)));
    }
  }
}