From 224c8c0ea7d216587525f57bfc6c509df4ae342a Mon Sep 17 00:00:00 2001 From: Walter Van Herck <w.van.herck@fz-juelich.de> Date: Mon, 23 Sep 2013 10:33:14 +0200 Subject: [PATCH] Refactor: removed runMagnetic() --- .../inc/DecoratedLayerDWBASimulation.h | 2 - .../src/DecoratedLayerDWBASimulation.cpp | 102 +++++++++--------- 2 files changed, 48 insertions(+), 56 deletions(-) diff --git a/Core/Algorithms/inc/DecoratedLayerDWBASimulation.h b/Core/Algorithms/inc/DecoratedLayerDWBASimulation.h index 978d163e6b0..85f67b53d94 100644 --- a/Core/Algorithms/inc/DecoratedLayerDWBASimulation.h +++ b/Core/Algorithms/inc/DecoratedLayerDWBASimulation.h @@ -40,8 +40,6 @@ public: virtual void run(); protected: - void runMagnetic(const IInterferenceFunctionStrategy *p_strategy); - Layer *mp_layer; DiffuseDWBASimulation *mp_diffuseDWBA; diff --git a/Core/Algorithms/src/DecoratedLayerDWBASimulation.cpp b/Core/Algorithms/src/DecoratedLayerDWBASimulation.cpp index 1010c061335..50dfc886a5e 100644 --- a/Core/Algorithms/src/DecoratedLayerDWBASimulation.cpp +++ b/Core/Algorithms/src/DecoratedLayerDWBASimulation.cpp @@ -48,43 +48,10 @@ void DecoratedLayerDWBASimulation::run() boost::scoped_ptr<const IInterferenceFunctionStrategy> P_strategy( createAndInitStrategy()); - if (checkPolarizationPresent()) { - runMagnetic(P_strategy.get()); - return; - } calculateCoherentIntensity(P_strategy.get()); calculateInCoherentIntensity(); } -void DecoratedLayerDWBASimulation::runMagnetic( - const IInterferenceFunctionStrategy *p_strategy) -{ - msglog(MSG::DEBUG) << "LayerDecoratorDWBASimulation::calculateCoh...()"; - double wavelength = getWaveLength(); - double total_surface_density = - mp_layer->getTotalParticleSurfaceDensity(); - - OutputData<Eigen::Matrix2d>::iterator it = mp_polarization_output->begin( - m_thread_info); - while ( it != mp_polarization_output->end(m_thread_info) ) - { - Bin1D phi_bin = mp_polarization_output->getBinOfAxis( - "phi_f", it.getIndex()); - Bin1D alpha_bin = mp_polarization_output->getBinOfAxis( - "alpha_f", it.getIndex()); - double alpha_f = alpha_bin.getMidPoint(); - if (m_sim_params.me_framework==SimulationParameters::DWBA && - alpha_f<0) { - ++it; - continue; - } - Bin1DCVector k_f_bin = getKfBin1_matrix(wavelength, alpha_bin, phi_bin); - *it = p_strategy->evaluatePol(m_ki, k_f_bin, alpha_bin, phi_bin) - * total_surface_density; - ++it; - } -} - IInterferenceFunctionStrategy *DecoratedLayerDWBASimulation::createAndInitStrategy() const { @@ -104,31 +71,61 @@ void DecoratedLayerDWBASimulation::calculateCoherentIntensity( double total_surface_density = mp_layer->getTotalParticleSurfaceDensity(); - cvector_t k_ij = m_ki; - k_ij.setZ(-(complex_t)mp_specular_info->getInCoefficients()->getScalarKz()); - - DWBASimulation::iterator it_intensity = begin(); - while ( it_intensity != end() ) - { - Bin1D phi_bin = getDWBAIntensity().getBinOfAxis( - "phi_f", it_intensity.getIndex()); - Bin1D alpha_bin = getDWBAIntensity().getBinOfAxis( - "alpha_f", it_intensity.getIndex()); - double alpha_f = alpha_bin.getMidPoint(); - if (std::abs(mp_specular_info->getOutCoefficients(alpha_f, 0.0) - ->getScalarR())!=0.0 && alpha_f<0) { + if (checkPolarizationPresent()) { + // polarized dwba calculation: + OutputData<Eigen::Matrix2d>::iterator it = + mp_polarization_output->begin(m_thread_info); + while ( it != mp_polarization_output->end(m_thread_info) ) + { + Bin1D phi_bin = mp_polarization_output->getBinOfAxis( + "phi_f", it.getIndex()); + Bin1D alpha_bin = mp_polarization_output->getBinOfAxis( + "alpha_f", it.getIndex()); + double alpha_f = alpha_bin.getMidPoint(); + if (m_sim_params.me_framework==SimulationParameters::DWBA && + alpha_f<0) { + ++it; + continue; + } + Bin1DCVector k_f_bin = getKfBin1_matrix(wavelength, alpha_bin, + phi_bin); + *it = p_strategy->evaluatePol(m_ki, k_f_bin, alpha_bin, phi_bin) + * total_surface_density; + ++it; + } + } + else { + // scalar dwba calculation: + cvector_t k_ij = m_ki; + k_ij.setZ(-(complex_t)mp_specular_info->getInCoefficients() + ->getScalarKz()); + + DWBASimulation::iterator it_intensity = begin(); + while ( it_intensity != end() ) + { + Bin1D phi_bin = getDWBAIntensity().getBinOfAxis( + "phi_f", it_intensity.getIndex()); + Bin1D alpha_bin = getDWBAIntensity().getBinOfAxis( + "alpha_f", it_intensity.getIndex()); + double alpha_f = alpha_bin.getMidPoint(); + if (std::abs(mp_specular_info->getOutCoefficients(alpha_f, 0.0) + ->getScalarR())!=0.0 && alpha_f<0) { + ++it_intensity; + continue; + } + Bin1DCVector k_f_bin = getKfBin(wavelength, alpha_bin, phi_bin); + *it_intensity = p_strategy->evaluate(k_ij, k_f_bin, alpha_bin) + * total_surface_density; ++it_intensity; - continue; } - Bin1DCVector k_f_bin = getKfBin(wavelength, alpha_bin, phi_bin); - *it_intensity = p_strategy->evaluate(k_ij, k_f_bin, alpha_bin) - * total_surface_density; - ++it_intensity; } } void DecoratedLayerDWBASimulation::calculateInCoherentIntensity() { + if (checkPolarizationPresent()) { + return; + } msglog(MSG::DEBUG) << "Calculating incoherent scattering..."; if (mp_diffuseDWBA) { mp_diffuseDWBA->setSpecularInfo(*mp_specular_info); @@ -137,6 +134,3 @@ void DecoratedLayerDWBASimulation::calculateInCoherentIntensity() addDWBAIntensity( mp_diffuseDWBA->getDWBAIntensity() ); } } - - - -- GitLab