diff --git a/Sim/Simulation/SpecularSimulation.cpp b/Sim/Simulation/SpecularSimulation.cpp
index 076952cfeea398278e2cbfa6ee6794203beb678d..1a55b54ac68205d6dcc6f4a135cfb254d123c777 100644
--- a/Sim/Simulation/SpecularSimulation.cpp
+++ b/Sim/Simulation/SpecularSimulation.cpp
@@ -56,6 +56,12 @@ SpecularSimulation::SpecularSimulation()
     m_detector.reset(new SpecularDetector1D);
 }
 
+SpecularSimulation::SpecularSimulation(const ISpecularScan& scan, const MultiLayer& sample)
+{
+    setScan(scan);
+    setSample(sample);
+}
+
 SpecularSimulation::~SpecularSimulation() = default;
 
 SpecularSimulation::SpecularSimulation(SpecularSimulation&&) = default;
diff --git a/Sim/Simulation/SpecularSimulation.h b/Sim/Simulation/SpecularSimulation.h
index 0c29de18b24319d4ececbe4a5a32be7cb43e781c..2efe9a321c6e48ee6cc0d0d30e06a11ad448ed85 100644
--- a/Sim/Simulation/SpecularSimulation.h
+++ b/Sim/Simulation/SpecularSimulation.h
@@ -34,6 +34,7 @@ class SpecularElement;
 class SpecularSimulation : public ISimulation {
 public:
     SpecularSimulation();
+    SpecularSimulation(const ISpecularScan& scan, const MultiLayer& sample);
     ~SpecularSimulation() override;
     SpecularSimulation(SpecularSimulation&&);