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

const ICoordSystem* down to SimulationResult

parent a8f4646a
No related branches found
No related tags found
1 merge request!60dependency inversion to move CoordSystem1D down in include hierarchy
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "Core/Fitting/SimDataPair.h" #include "Core/Fitting/SimDataPair.h"
#include "Base/Math/Numeric.h" #include "Base/Math/Numeric.h"
#include "Core/Scan/CoordSystem1D.h" #include "Core/Scan/CoordSystem1D.h"
#include "Core/Scan/ISpecularScan.h"
#include "Core/Simulation/includeSimulations.h" #include "Core/Simulation/includeSimulations.h"
#include "Device/Data/DataUtils.h" #include "Device/Data/DataUtils.h"
#include "Device/Instrument/CoordSystem2D.h" #include "Device/Instrument/CoordSystem2D.h"
...@@ -48,20 +49,19 @@ bool detHasSameDimensions(const IDetector& detector, const OutputData<double>& d ...@@ -48,20 +49,19 @@ bool detHasSameDimensions(const IDetector& detector, const OutputData<double>& d
return true; return true;
} }
std::unique_ptr<ICoordSystem> createConverter(const ISimulation& simulation) ICoordSystem* createConverter(const ISimulation& simulation)
{ {
if (auto gisas = dynamic_cast<const GISASSimulation*>(&simulation)) if (auto gisas = dynamic_cast<const GISASSimulation*>(&simulation))
return std::unique_ptr<ICoordSystem>(gisas->instrument().createScatteringCoords()); return gisas->instrument().createScatteringCoords();
if (auto spec = dynamic_cast<const SpecularSimulation*>(&simulation)) if (auto spec = dynamic_cast<const SpecularSimulation*>(&simulation))
return std::unique_ptr<ICoordSystem>( return spec->dataHandler()->createCoordSystem();
CoordSystem1D::createCoordSystem(*spec->dataHandler()));
if (auto probe = dynamic_cast<const DepthProbeSimulation*>(&simulation)) if (auto probe = dynamic_cast<const DepthProbeSimulation*>(&simulation))
return std::unique_ptr<ICoordSystem>(probe->createCoordSystem()); return probe->createCoordSystem();
if (auto off_spec = dynamic_cast<const OffSpecularSimulation*>(&simulation)) if (auto off_spec = dynamic_cast<const OffSpecularSimulation*>(&simulation))
return std::unique_ptr<ICoordSystem>(off_spec->createCoordSystem()); return off_spec->createCoordSystem();
ASSERT(0); ASSERT(0);
} }
...@@ -73,7 +73,7 @@ std::unique_ptr<ICoordSystem> createConverter(const ISimulation& simulation) ...@@ -73,7 +73,7 @@ std::unique_ptr<ICoordSystem> createConverter(const ISimulation& simulation)
SimulationResult convertData(const ISimulation& simulation, const OutputData<double>& data, SimulationResult convertData(const ISimulation& simulation, const OutputData<double>& data,
bool put_masked_areas_to_zero) bool put_masked_areas_to_zero)
{ {
auto converter = createConverter(simulation); const ICoordSystem* converter = createConverter(simulation);
auto roi_data = converter->createOutputData(converter->defaultUnits()); auto roi_data = converter->createOutputData(converter->defaultUnits());
if (roi_data->hasSameDimensions(data)) { if (roi_data->hasSameDimensions(data)) {
...@@ -96,12 +96,11 @@ SimulationResult convertData(const ISimulation& simulation, const OutputData<dou ...@@ -96,12 +96,11 @@ SimulationResult convertData(const ISimulation& simulation, const OutputData<dou
}, },
/*visit_masked*/ !put_masked_areas_to_zero); /*visit_masked*/ !put_masked_areas_to_zero);
} else { } else
throw std::runtime_error("FitObject::init_dataset() -> Error. Detector and exp data have " throw std::runtime_error(
"different shape."); "FitObject::init_dataset: Detector and experimental data have different shape");
}
return SimulationResult(*roi_data, *converter); return SimulationResult(*roi_data, std::move(converter));
} }
} // namespace } // namespace
......
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