diff --git a/Sim/Simulation/DepthprobeSimulation.cpp b/Sim/Simulation/DepthprobeSimulation.cpp
index 1f3fd8e4b509830e0921600a6dcd400b7a1710a4..ecce35559eb24e6d21203a3e94a55fc3658d42c0 100644
--- a/Sim/Simulation/DepthprobeSimulation.cpp
+++ b/Sim/Simulation/DepthprobeSimulation.cpp
@@ -89,37 +89,21 @@ public:
         , m_wavelength(wavelength)
         , m_alpha_i(alpha_i)
         , m_z_positions(z_positions)
-        {
-            ASSERT(z_positions);
-            m_intensities.resize(z_positions->size(), 0.0);
-        }
-
-    double wavelength() const { return m_wavelength; }
-    double alphaI() const { return m_alpha_i; }
-    R3 getKi() const
-        {
-            return vecOfLambdaAlphaPhi(m_wavelength, m_alpha_i);
-        }
-
-    template <typename T>
-    void setIntensities(T&& intensities)
     {
-        static_assert(
-            std::is_assignable<std::valarray<double>, typename std::decay<T>::type>::value,
-            "Error in DepthprobeElement::setIntensities: wrong type of input data.");
-        m_intensities = std::forward<T>(intensities);
+        ASSERT(z_positions);
     }
 
-    const std::valarray<double>& getIntensities() const { return m_intensities; }
+    double wavelength() const { return m_wavelength; }
+    double alphaI() const { return m_alpha_i; }
+    R3 getKi() const { return vecOfLambdaAlphaPhi(m_wavelength, m_alpha_i); }
 
     void setZPositions(const IAxis* z_positions) { m_z_positions = z_positions; }
     const IAxis* getZPositions() const { return m_z_positions; }
 
 private:
     const double m_wavelength;
-    const double m_alpha_i;              //!< incident angle of the beam
-    std::valarray<double> m_intensities; //!< simulated intensity for the set of z positions
-    const IAxis* m_z_positions;          //!< positions (lower z corresponds to a greater depth)
+    const double m_alpha_i;     //!< incident angle of the beam
+    const IAxis* m_z_positions; //!< positions (lower z corresponds to a greater depth)
 };
 
 //<<<<<<<
@@ -127,14 +111,15 @@ private:
 void DepthprobeSimulation::runComputation(const ReSample& re_sample, size_t i, double weight)
 {
     const double result_angle = m_scan->coordinateAxis()->bin(i).center() + m_scan->alphaOffset();
+    const size_t n_z = m_z_axis->size();
+    std::valarray<double> intensities; //!< simulated intensity for the set of z positions
+    intensities.resize(n_z, 0.0);
     DepthprobeElement ele(m_scan->wavelength(), -result_angle, m_z_axis.get());
 
     if (0 < result_angle && result_angle < M_PI_2) {
         const IAxis& z_positions = *ele.getZPositions();
-        const size_t n_z = z_positions.size();
         const size_t n_layers = re_sample.numberOfSlices();
         size_t start_z_ind = n_z;
-        std::valarray<double> intensities(0.0, n_z);
 
         const Fluxes fluxes = re_sample.fluxesIn(ele.getKi());
 
@@ -163,7 +148,6 @@ void DepthprobeSimulation::runComputation(const ReSample& re_sample, size_t i, d
             }
             start_z_ind = ip1_z;
         }
-        ele.setIntensities(std::move(intensities));
     }
     progress().incrementDone(1);
 
@@ -172,7 +156,8 @@ void DepthprobeSimulation::runComputation(const ReSample& re_sample, size_t i, d
     double intensity_factor = m_scan->intensity();
     if (footprint != nullptr)
         intensity_factor *= footprint->calculate(alpha_i);
-    ele.setIntensities(ele.getIntensities() * intensity_factor);
+    for (double& v : intensities)
+        v *= intensity_factor;
 
     if (background())
         throw std::runtime_error(
@@ -180,7 +165,7 @@ void DepthprobeSimulation::runComputation(const ReSample& re_sample, size_t i, d
 
     const size_t N1 = m_z_axis->size();
     for (size_t j = 0; j < N1; ++j)
-        m_cache[i * N1 + j] += ele.getIntensities()[j] * weight;
+        m_cache[i * N1 + j] += intensities[j] * weight;
 }
 
 //... Overridden getters: