diff --git a/Tests/Functional/Fit/FitObjective/CMakeLists.txt b/Tests/Functional/Fit/FitObjective/CMakeLists.txt index 5577560d5260f6b2fa7c109e0994150afde81f77..923e4e6045f61f964e843ba91092fe1384a860aa 100644 --- a/Tests/Functional/Fit/FitObjective/CMakeLists.txt +++ b/Tests/Functional/Fit/FitObjective/CMakeLists.txt @@ -4,6 +4,7 @@ set(test_cases MigradCylindersInBA MigradResidualCylindersInBA SpecularFitTest + SpecularFitTestQ MultipleSpecFittingTest FumuliCylindersInBA LevenbergMarquardtCylindersInBA diff --git a/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.cpp b/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.cpp index a320099f0d9910866da9aa1a10df4f8aa64b99d0..0df9257f515dca0f5327d04a4ee9317960182b8e 100644 --- a/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.cpp +++ b/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.cpp @@ -56,6 +56,9 @@ AdjustMinimizerFit::AdjustMinimizerFit() SpecularFitTest::SpecularFitTest() : FitObjectiveTest("Minuit2", "Migrad", "SpecularPlan") {} +SpecularFitTestQ::SpecularFitTestQ() + : FitObjectiveTest("Minuit2", "Migrad", "SpecularPlanQ") {} + MultipleSpecFittingTest::MultipleSpecFittingTest() : FitObjectiveTest("Minuit2", "Migrad", "MultipleSpecPlan") {} diff --git a/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.h b/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.h index 1b5ae26f035d994c5f0e60752bd2965492bcf0dc..1624aa0e55b09696b103c015be18399d9d0e008b 100644 --- a/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.h +++ b/Tests/Functional/Fit/FitObjective/FitObjectiveTestCases.h @@ -87,6 +87,12 @@ public: SpecularFitTest(); }; +class SpecularFitTestQ : public FitObjectiveTest +{ +public: + SpecularFitTestQ(); +}; + class MultipleSpecFittingTest : public FitObjectiveTest { public: diff --git a/Tests/Functional/Fit/FitObjective/FitObjectiveTestFactory.cpp b/Tests/Functional/Fit/FitObjective/FitObjectiveTestFactory.cpp index d6a9f27968d48305f366582e243c4657a549e190..a29d73451a7c81e03109180a0f394fa9d5e63577 100644 --- a/Tests/Functional/Fit/FitObjective/FitObjectiveTestFactory.cpp +++ b/Tests/Functional/Fit/FitObjective/FitObjectiveTestFactory.cpp @@ -39,6 +39,8 @@ FitObjectiveTestFactory::FitObjectiveTestFactory() "Minuit + Genetic, CylindersInBA"); registerItem("SpecularFitTest", create_new<SpecularFitTest>, "Minuit, Basic specular fitting"); + registerItem("SpecularFitTestQ", create_new<SpecularFitTestQ>, + "Minuit, Basic specular fitting (q-defined instrument)"); registerItem("MultipleSpecFittingTest", create_new<MultipleSpecFittingTest>, "Minuit, fitting of several reflectometry curves"); registerItem("OffSpecFitTest", create_new<OffSpecFitTest>, diff --git a/Tests/Functional/Fit/FitObjective/FitPlanCases.cpp b/Tests/Functional/Fit/FitObjective/FitPlanCases.cpp index 2c8369348c3b91ba02c95ce8af98789674622825..9b9ce4c404f1f428c8aa5d55a2ad323d45de98e3 100644 --- a/Tests/Functional/Fit/FitObjective/FitPlanCases.cpp +++ b/Tests/Functional/Fit/FitObjective/FitPlanCases.cpp @@ -107,6 +107,19 @@ SpecularPlan::~SpecularPlan() = default; // ---------------------------------------------------------------------------- +SpecularPlanQ::SpecularPlanQ() + : FitPlan("SpecularPlanQ", /*residual_based = */ true) +{ + setSimulationName("BasicSpecularQ"); + setBuilderName("PlainMultiLayerBySLDBuilder"); + addParameter(Parameter("ti_thickness", 5.0 * nm, AttLimits::limited(1.0 * nm, 7.0 * nm), 0.1), + 3.0 * nm); +} + +SpecularPlanQ::~SpecularPlanQ() = default; + +// ---------------------------------------------------------------------------- + MultipleSpecPlan::MultipleSpecPlan() : FitPlan("MultipleSpecPlan", /*residual_based = */ true) { diff --git a/Tests/Functional/Fit/FitObjective/FitPlanCases.h b/Tests/Functional/Fit/FitObjective/FitPlanCases.h index 658fce99e2c3990ce624c28f4a24de58325ff10e..99d4ff5d40b2e9d9fa39955a1a91762d24bbaf09 100644 --- a/Tests/Functional/Fit/FitObjective/FitPlanCases.h +++ b/Tests/Functional/Fit/FitObjective/FitPlanCases.h @@ -65,6 +65,15 @@ public: ~SpecularPlan() override; }; +//! Plan for fitting reflectometry curve on Ti/Ni multilayer (q-defined beam) + +class SpecularPlanQ : public FitPlan +{ +public: + SpecularPlanQ(); + ~SpecularPlanQ() override; +}; + //! The same as SpecularPlan, but with two (identical) datasets class MultipleSpecPlan : public FitPlan diff --git a/Tests/Functional/Fit/FitObjective/FitPlanFactory.cpp b/Tests/Functional/Fit/FitObjective/FitPlanFactory.cpp index e596435910c57c630a70b729bb2c095ae57f2b0e..c7bff9a1bb22390f9f302638eca3cb3a94e7be69 100644 --- a/Tests/Functional/Fit/FitObjective/FitPlanFactory.cpp +++ b/Tests/Functional/Fit/FitObjective/FitPlanFactory.cpp @@ -24,6 +24,7 @@ FitPlanFactory::FitPlanFactory() registerItem("RectDetPlan", create_new<RectDetPlan>); registerItem("AdjustMinimizerPlan", create_new<AdjustMinimizerPlan>); registerItem("SpecularPlan", create_new<SpecularPlan>); + registerItem("SpecularPlanQ", create_new<SpecularPlanQ>); registerItem("MultipleSpecPlan", create_new<MultipleSpecPlan>); registerItem("OffSpecFitPlan", create_new<OffSpecFitPlan>); }