From 75975471cbc104b24029026c6072b6ceb46b47bc Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 29 Oct 2020 19:11:45 +0100
Subject: [PATCH] ctd

---
 Device/Unit/UnitConverter1D.cpp | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/Device/Unit/UnitConverter1D.cpp b/Device/Unit/UnitConverter1D.cpp
index a534987d936..1f0f5ca83ea 100644
--- a/Device/Unit/UnitConverter1D.cpp
+++ b/Device/Unit/UnitConverter1D.cpp
@@ -32,16 +32,15 @@ std::unique_ptr<PointwiseAxis>
 createTranslatedAxis(const IAxis& axis, std::function<double(double)> translator, std::string name);
 } // namespace
 
-std::unique_ptr<UnitConverter1D> UnitConverter1D::createUnitConverter(const ISpecularScan& handler)
+std::unique_ptr<UnitConverter1D> UnitConverter1D::createUnitConverter(const ISpecularScan& scan)
 {
-    if (handler.dataType() == ISpecularScan::angle)
-        return std::make_unique<UnitConverterConvSpec>(
-            static_cast<const AngularSpecScan&>(handler));
+    if (const auto* aScan = dynamic_cast<const AngularSpecScan*>(&scan))
+        return std::make_unique<UnitConverterConvSpec>(*aScan);
 
-    if (handler.dataType() == ISpecularScan::q)
-        return std::make_unique<UnitConverterQSpec>(static_cast<const QSpecScan&>(handler));
+    if (const auto* qScan = dynamic_cast<const QSpecScan*>(&scan))
+        return std::make_unique<UnitConverterQSpec>(*qScan);
 
-    throw std::runtime_error("No known unit conversions for passed type of specular data handler.");
+    throw std::runtime_error("Bug in UnitConverter1D::createUnitConverter: invalid case");
 }
 
 size_t UnitConverter1D::dimension() const
-- 
GitLab