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