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

Merge branch 'rx7' into 'develop'

Prepare Beam for refactoring of distribution handling

See merge request !222
parents c4181889 53b76acd
No related branches found
No related tags found
1 merge request!222Prepare Beam for refactoring of distribution handling
Pipeline #41925 passed
Showing
with 86 additions and 28 deletions
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
// ************************************************************************************************ // ************************************************************************************************
#include "Core/Element/SpecularElement.h" #include "Core/Element/SpecularElement.h"
#include "Device/Beam/Beam.h"
#include "Device/Detector/IDetector.h" #include "Device/Detector/IDetector.h"
#include "Device/Instrument/Instrument.h" #include "Device/Instrument/Instrument.h"
#include "Resample/Slice/KzComputation.h" #include "Resample/Slice/KzComputation.h"
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "Core/Scan/AngularSpecScan.h" #include "Core/Scan/AngularSpecScan.h"
#include "Core/Scan/QSpecScan.h" #include "Core/Scan/QSpecScan.h"
#include "Core/Simulation/includeSimulations.h" #include "Core/Simulation/includeSimulations.h"
#include "Device/Beam/Beam.h"
#include "Device/Beam/FootprintGauss.h" #include "Device/Beam/FootprintGauss.h"
#include "Device/Beam/FootprintSquare.h" #include "Device/Beam/FootprintSquare.h"
#include "Device/Detector/IsGISAXSDetector.h" #include "Device/Detector/IsGISAXSDetector.h"
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "Core/Scan/AngularSpecScan.h" #include "Core/Scan/AngularSpecScan.h"
#include "Core/Scan/QSpecScan.h" #include "Core/Scan/QSpecScan.h"
#include "Core/Simulation/includeSimulations.h" #include "Core/Simulation/includeSimulations.h"
#include "Device/Beam/Beam.h"
#include "Device/Beam/FootprintGauss.h" #include "Device/Beam/FootprintGauss.h"
#include "Device/Beam/FootprintSquare.h" #include "Device/Beam/FootprintSquare.h"
#include "Device/Detector/RectangularDetector.h" #include "Device/Detector/RectangularDetector.h"
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "Core/Simulation/DepthProbeSimulation.h" #include "Core/Simulation/DepthProbeSimulation.h"
#include "Core/Background/IBackground.h" #include "Core/Background/IBackground.h"
#include "Core/Computation/DepthProbeComputation.h" #include "Core/Computation/DepthProbeComputation.h"
#include "Device/Beam/Beam.h"
#include "Device/Beam/IFootprintFactor.h" #include "Device/Beam/IFootprintFactor.h"
#include "Device/Detector/SpecularDetector1D.h" #include "Device/Detector/SpecularDetector1D.h"
#include "Device/Histo/SimulationResult.h" #include "Device/Histo/SimulationResult.h"
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "Core/Background/IBackground.h" #include "Core/Background/IBackground.h"
#include "Core/Computation/IComputation.h" #include "Core/Computation/IComputation.h"
#include "Core/Simulation/MPISimulation.h" #include "Core/Simulation/MPISimulation.h"
#include "Device/Beam/Beam.h"
#include "Resample/Processed/ProcessedSample.h" #include "Resample/Processed/ProcessedSample.h"
#include "Sample/Multilayer/MultilayerUtils.h" #include "Sample/Multilayer/MultilayerUtils.h"
#include "Sample/SampleBuilderEngine/ISampleBuilder.h" #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "Base/Utils/Assert.h" #include "Base/Utils/Assert.h"
#include "Core/Background/IBackground.h" #include "Core/Background/IBackground.h"
#include "Core/Computation/DWBAComputation.h" #include "Core/Computation/DWBAComputation.h"
#include "Device/Beam/Beam.h"
#include "Device/Detector/DetectorContext.h" #include "Device/Detector/DetectorContext.h"
#include "Resample/Element/DiffuseElement.h" #include "Resample/Element/DiffuseElement.h"
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "Core/Simulation/OffSpecularSimulation.h" #include "Core/Simulation/OffSpecularSimulation.h"
#include "Base/Pixel/RectangularPixel.h" #include "Base/Pixel/RectangularPixel.h"
#include "Device/Beam/Beam.h"
#include "Device/Detector/RectangularDetector.h" #include "Device/Detector/RectangularDetector.h"
#include "Device/Detector/SphericalDetector.h" #include "Device/Detector/SphericalDetector.h"
#include "Device/Histo/SimulationResult.h" #include "Device/Histo/SimulationResult.h"
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "Core/Computation/SpecularComputation.h" #include "Core/Computation/SpecularComputation.h"
#include "Core/Element/SpecularElement.h" #include "Core/Element/SpecularElement.h"
#include "Core/Scan/AngularSpecScan.h" #include "Core/Scan/AngularSpecScan.h"
#include "Device/Beam/Beam.h"
#include "Device/Beam/IFootprintFactor.h" #include "Device/Beam/IFootprintFactor.h"
#include "Device/Coord/CoordSystem1D.h" #include "Device/Coord/CoordSystem1D.h"
#include "Device/Detector/SpecularDetector1D.h" #include "Device/Detector/SpecularDetector1D.h"
......
...@@ -78,6 +78,12 @@ Beam& Beam::operator=(const Beam& other) ...@@ -78,6 +78,12 @@ Beam& Beam::operator=(const Beam& other)
Beam::~Beam() = default; Beam::~Beam() = default;
Beam* Beam::clone() const
{
return new Beam(*this);
}
kvector_t Beam::getCentralK() const kvector_t Beam::getCentralK() const
{ {
return M_TWOPI / m_wavelength * Direction(-direction().alpha(), direction().phi()).vector(); return M_TWOPI / m_wavelength * Direction(-direction().alpha(), direction().phi()).vector();
......
...@@ -34,6 +34,8 @@ public: ...@@ -34,6 +34,8 @@ public:
virtual ~Beam(); virtual ~Beam();
Beam* clone() const;
static Beam horizontalBeam(); static Beam horizontalBeam();
void accept(INodeVisitor* visitor) const override { visitor->visit(this); } void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "Device/Instrument/Instrument.h" #include "Device/Instrument/Instrument.h"
#include "Base/Pixel/RectangularPixel.h" #include "Base/Pixel/RectangularPixel.h"
#include "Device/Beam/Beam.h"
#include "Device/Detector/RectangularDetector.h" #include "Device/Detector/RectangularDetector.h"
#include "Device/Detector/SphericalDetector.h" #include "Device/Detector/SphericalDetector.h"
#include "Device/Histo/Histogram2D.h" #include "Device/Histo/Histogram2D.h"
...@@ -21,22 +22,19 @@ ...@@ -21,22 +22,19 @@
#include "Device/Resolution/IResolutionFunction2D.h" #include "Device/Resolution/IResolutionFunction2D.h"
Instrument::Instrument(const Beam& beam, const IDetector& detector) Instrument::Instrument(const Beam& beam, const IDetector& detector)
: m_beam(beam), m_detector(detector.clone()) : m_beam(beam.clone()), m_detector(detector.clone())
{ {
setName("Instrument"); setName("Instrument");
registerChild(m_detector.get()); registerChild(m_detector.get());
registerChild(&m_beam); registerChild(m_beam.get());
initDetector(); initDetector();
} }
Instrument::Instrument() : Instrument(Beam::horizontalBeam(), SphericalDetector()) {} Instrument::Instrument() : Instrument(Beam::horizontalBeam(), SphericalDetector()) {}
Instrument::Instrument(const Instrument& other) : INode(), m_beam(other.m_beam) Instrument::Instrument(const Instrument& other) :
Instrument(other.beam(), other.detector())
{ {
if (other.m_detector)
setDetector(*other.m_detector);
registerChild(&m_beam);
setName(other.getName());
} }
Instrument::~Instrument() = default; Instrument::~Instrument() = default;
...@@ -44,10 +42,14 @@ Instrument::~Instrument() = default; ...@@ -44,10 +42,14 @@ Instrument::~Instrument() = default;
Instrument& Instrument::operator=(const Instrument& other) Instrument& Instrument::operator=(const Instrument& other)
{ {
if (this != &other) { if (this != &other) {
m_beam = other.m_beam; if (other.m_beam)
registerChild(&m_beam); setBeam(*other.m_beam);
else
m_beam.release();
if (other.m_detector) if (other.m_detector)
setDetector(*other.m_detector); setDetector(*other.m_detector);
else
m_detector.release();
} }
return *this; return *this;
} }
...@@ -59,6 +61,14 @@ void Instrument::setDetector(const IDetector& detector) ...@@ -59,6 +61,14 @@ void Instrument::setDetector(const IDetector& detector)
initDetector(); initDetector();
} }
void Instrument::setBeam(const Beam& beam)
{
m_beam.reset(beam.clone());
registerChild(m_beam.get());
if (m_detector)
initDetector();
}
void Instrument::initDetector() void Instrument::initDetector()
{ {
if (!m_detector) if (!m_detector)
...@@ -70,7 +80,7 @@ void Instrument::initDetector() ...@@ -70,7 +80,7 @@ void Instrument::initDetector()
std::vector<const INode*> Instrument::getChildren() const std::vector<const INode*> Instrument::getChildren() const
{ {
std::vector<const INode*> result; std::vector<const INode*> result;
result.push_back(&m_beam); result.push_back(m_beam.get());
if (m_detector) if (m_detector)
result.push_back(m_detector.get()); result.push_back(m_detector.get());
return result; return result;
...@@ -78,15 +88,8 @@ std::vector<const INode*> Instrument::getChildren() const ...@@ -78,15 +88,8 @@ std::vector<const INode*> Instrument::getChildren() const
void Instrument::setBeamParameters(double wavelength, double alpha_i, double phi_i) void Instrument::setBeamParameters(double wavelength, double alpha_i, double phi_i)
{ {
m_beam.setWavelength(wavelength); m_beam->setWavelength(wavelength);
m_beam.setDirection({alpha_i, phi_i}); m_beam->setDirection({alpha_i, phi_i});
if (m_detector)
initDetector();
}
void Instrument::setBeam(const Beam& beam)
{
m_beam = beam;
if (m_detector) if (m_detector)
initDetector(); initDetector();
} }
......
...@@ -20,9 +20,10 @@ ...@@ -20,9 +20,10 @@
#ifndef BORNAGAIN_DEVICE_INSTRUMENT_INSTRUMENT_H #ifndef BORNAGAIN_DEVICE_INSTRUMENT_INSTRUMENT_H
#define BORNAGAIN_DEVICE_INSTRUMENT_INSTRUMENT_H #define BORNAGAIN_DEVICE_INSTRUMENT_INSTRUMENT_H
#include "Device/Beam/Beam.h" #include "Param/Node/INode.h"
#include <memory> #include <memory>
class Beam;
class CoordSystem2D; class CoordSystem2D;
class IDetector; class IDetector;
class IDetector2D; class IDetector2D;
...@@ -40,8 +41,8 @@ public: ...@@ -40,8 +41,8 @@ public:
void accept(INodeVisitor* visitor) const override { visitor->visit(this); } void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
Beam& beam() { return m_beam; } Beam& beam() { return *m_beam; }
const Beam& beam() const { return m_beam; } const Beam& beam() const { return *m_beam; }
void setBeam(const Beam& beam); void setBeam(const Beam& beam);
//! Sets the beam wavelength and incoming angles //! Sets the beam wavelength and incoming angles
...@@ -63,7 +64,7 @@ public: ...@@ -63,7 +64,7 @@ public:
CoordSystem2D* createScatteringCoords() const; CoordSystem2D* createScatteringCoords() const;
protected: protected:
Beam m_beam; std::unique_ptr<Beam> m_beam;
std::unique_ptr<IDetector> m_detector; std::unique_ptr<IDetector> m_detector;
}; };
......
...@@ -2,7 +2,7 @@ include(GoogleTest) # provides gtest_discover_tests ...@@ -2,7 +2,7 @@ include(GoogleTest) # provides gtest_discover_tests
set(test TestMinimizers) set(test TestMinimizers)
file(GLOB source_files "*.cpp") file(GLOB source_files *.cpp)
add_executable(${test} ${source_files} ${CMAKE_SOURCE_DIR}/Tests/GTestWrapper/TestAll.cpp) add_executable(${test} ${source_files} ${CMAKE_SOURCE_DIR}/Tests/GTestWrapper/TestAll.cpp)
target_include_directories(${test} target_include_directories(${test}
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "Core/Background/IBackground.h" #include "Core/Background/IBackground.h"
#include "Core/Scan/AngularSpecScan.h" #include "Core/Scan/AngularSpecScan.h"
#include "Core/Simulation/includeSimulations.h" #include "Core/Simulation/includeSimulations.h"
#include "Device/Beam/Beam.h"
#include "Device/Beam/IFootprintFactor.h" #include "Device/Beam/IFootprintFactor.h"
#include "GUI/Models/AxesItems.h" #include "GUI/Models/AxesItems.h"
#include "GUI/Models/BackgroundItems.h" #include "GUI/Models/BackgroundItems.h"
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "Base/Const/Units.h" #include "Base/Const/Units.h"
#include "Base/Pixel/RectangularPixel.h" #include "Base/Pixel/RectangularPixel.h"
#include "Core/Simulation/DepthProbeSimulation.h" #include "Core/Simulation/DepthProbeSimulation.h"
#include "Device/Beam/Beam.h"
#include "Device/Coord/CoordSystem1D.h" #include "Device/Coord/CoordSystem1D.h"
#include "Device/Detector/RectangularDetector.h" #include "Device/Detector/RectangularDetector.h"
#include "Device/Detector/SphericalDetector.h" #include "Device/Detector/SphericalDetector.h"
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "Core/Export/NodeProgeny.h" #include "Core/Export/NodeProgeny.h"
#include "Core/Scan/AngularSpecScan.h" #include "Core/Scan/AngularSpecScan.h"
#include "Core/Simulation/includeSimulations.h" #include "Core/Simulation/includeSimulations.h"
#include "Device/Beam/Beam.h"
#include "Device/Beam/FootprintGauss.h" #include "Device/Beam/FootprintGauss.h"
#include "Device/Beam/FootprintSquare.h" #include "Device/Beam/FootprintSquare.h"
#include "Device/Detector/RectangularDetector.h" #include "Device/Detector/RectangularDetector.h"
......
...@@ -3,7 +3,7 @@ set(lib ba3d) ...@@ -3,7 +3,7 @@ set(lib ba3d)
file (GLOB_RECURSE source_files *.cpp) file (GLOB_RECURSE source_files *.cpp)
set(CMAKE_AUTORCC ON) set(CMAKE_AUTORCC ON)
qt5_add_resources(RC_SHADERS "shaders.qrc") qt5_add_resources(RC_SHADERS shaders.qrc)
add_library (${lib} STATIC ${source_files} ${RC_SHADERS}) add_library (${lib} STATIC ${source_files} ${RC_SHADERS})
target_include_directories(${lib} PUBLIC ${CMAKE_SOURCE_DIR}) target_include_directories(${lib} PUBLIC ${CMAKE_SOURCE_DIR})
......
...@@ -2,7 +2,7 @@ include(GoogleTest) # provides gtest_discover_tests ...@@ -2,7 +2,7 @@ include(GoogleTest) # provides gtest_discover_tests
set(test TestCoreConsistence) set(test TestCoreConsistence)
file(GLOB source_files "*.cpp") file(GLOB source_files *.cpp)
add_executable(${test} ${source_files} ${CMAKE_SOURCE_DIR}/Tests/GTestWrapper/TestAll.cpp) add_executable(${test} ${source_files} ${CMAKE_SOURCE_DIR}/Tests/GTestWrapper/TestAll.cpp)
......
...@@ -2,7 +2,7 @@ include(GoogleTest) # provides gtest_discover_tests ...@@ -2,7 +2,7 @@ include(GoogleTest) # provides gtest_discover_tests
set(test TestCoreFitting) set(test TestCoreFitting)
file(GLOB source_files "*.cpp") file(GLOB source_files *.cpp)
add_executable(${test} ${source_files} ${CMAKE_SOURCE_DIR}/Tests/GTestWrapper/TestAll.cpp) add_executable(${test} ${source_files} ${CMAKE_SOURCE_DIR}/Tests/GTestWrapper/TestAll.cpp)
target_include_directories(${test} target_include_directories(${test}
......
add_subdirectory(Std) # ************************************************************************************************
#
# BornAgain: simulate and fit scattering at grazing incidence
#
#! @file Tests/Functional/GUI/Std/CMakeLists.txt
#! @brief Builds GUI standard tests.
#
# .../Std/TestAll.cpp provides main, which essentially runs RUN_ALL_TESTS().
# RUN_ALL_TESTS is a gtest macro that runs tests defined by TEST_F macros.
# .../Std/Run.cpp uses such TEST_F macros to define our standard test cases.
# Check.cpp provides a callback function that executes one GUI tests:
# Run a given simulation directly, and through GUI model, and compare results.
#
#! @homepage http://www.bornagainproject.org
#! @license GNU General Public License v3 or higher (see COPYING)
#! @copyright Forschungszentrum Jülich GmbH 2018
#! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
#
# ************************************************************************************************
include(GoogleTest) # provides gtest_discover_tests
set(test TestGuiStd)
set(source_files Check.cpp ../Std/Run.cpp ${CMAKE_SOURCE_DIR}/Tests/GTestWrapper/TestAll.cpp)
add_executable(${test} ${source_files})
target_compile_options(${test} PUBLIC -DGUI_STD_TEST)
target_compile_definitions(${test} PUBLIC DISABLE_DISTRIBUTION_TESTS)
target_include_directories(${test} PUBLIC
${BornAgainGUI_INCLUDE_DIRS}
${CMAKE_SOURCE_DIR}/3rdparty/common/gtest/gtest-1.8.0/include)
target_link_libraries(${test} BornAgainGUI gtest)
gtest_discover_tests(${test} DISCOVERY_TIMEOUT 300 TEST_PREFIX Gui.)
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