Skip to content
Snippets Groups Projects
Commit 8feaaee3 authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

simplify

parent 2745dab6
No related branches found
No related tags found
1 merge request!1552Depth probe computation without computation file and without element class
...@@ -84,12 +84,22 @@ void DepthprobeSimulation::initDistributionHandler() ...@@ -84,12 +84,22 @@ void DepthprobeSimulation::initDistributionHandler()
class DepthprobeElement : public IElement { class DepthprobeElement : public IElement {
public: public:
DepthprobeElement(double wavelength, double alpha_i, const IAxis* z_positions, DepthprobeElement(double wavelength, double alpha_i, const IAxis* z_positions)
bool calculation_flag); : IElement()
, 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 wavelength() const { return m_wavelength; }
double alphaI() const { return m_alpha_i; } double alphaI() const { return m_alpha_i; }
R3 getKi() const; R3 getKi() const
{
return vecOfLambdaAlphaPhi(m_wavelength, m_alpha_i);
}
template <typename T> template <typename T>
void setIntensities(T&& intensities) void setIntensities(T&& intensities)
...@@ -107,43 +117,21 @@ public: ...@@ -107,43 +117,21 @@ public:
size_t size() const { return m_intensities.size(); } size_t size() const { return m_intensities.size(); }
//! if it's false, zero intensity is assigned to the element
bool isCalculated() const { return m_calculation_flag; }
private: private:
const double m_wavelength; const double m_wavelength;
const double m_alpha_i; //!< incident angle of the beam const double m_alpha_i; //!< incident angle of the beam
std::valarray<double> m_intensities; //!< simulated intensity for the set of z positions 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 IAxis* m_z_positions; //!< positions (lower z corresponds to a greater depth)
const bool m_calculation_flag;
}; };
DepthprobeElement::DepthprobeElement(double wavelength, double alpha_i, const IAxis* z_positions,
bool calculation_flag)
: IElement()
, m_wavelength(wavelength)
, m_alpha_i(alpha_i)
, m_z_positions(z_positions)
, m_calculation_flag(calculation_flag)
{
ASSERT(z_positions);
m_intensities.resize(z_positions->size(), 0.0);
}
R3 DepthprobeElement::getKi() const
{
return vecOfLambdaAlphaPhi(m_wavelength, m_alpha_i);
}
//<<<<<<< //<<<<<<<
void DepthprobeSimulation::runComputation(const ReSample& re_sample, size_t i, double weight) 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 double result_angle = m_scan->coordinateAxis()->bin(i).center() + m_scan->alphaOffset();
DepthprobeElement ele(m_scan->wavelength(), -result_angle, m_z_axis.get(), DepthprobeElement ele(m_scan->wavelength(), -result_angle, m_z_axis.get());
0 < result_angle && result_angle < M_PI_2);
if (ele.isCalculated()) { if (0 < result_angle && result_angle < M_PI_2) {
const IAxis& z_positions = *ele.getZPositions(); const IAxis& z_positions = *ele.getZPositions();
const size_t n_z = z_positions.size(); const size_t n_z = z_positions.size();
const size_t n_layers = re_sample.numberOfSlices(); const size_t n_layers = re_sample.numberOfSlices();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment