From 4bb48d58687e9822aaaa9cc79d5c5b079dc5332c Mon Sep 17 00:00:00 2001
From: Gennady Pospelov <g.pospelov@fz-juelich.de>
Date: Wed, 17 Jan 2018 12:00:35 +0100
Subject: [PATCH] Alpha axis introduced for OffSpecInstrumentItem

---
 GUI/coregui/Models/DomainSimulationBuilder.cpp |  7 +++++++
 GUI/coregui/Models/InstrumentItems.cpp         | 12 ++++++++++++
 GUI/coregui/Models/InstrumentItems.h           |  2 ++
 3 files changed, 21 insertions(+)

diff --git a/GUI/coregui/Models/DomainSimulationBuilder.cpp b/GUI/coregui/Models/DomainSimulationBuilder.cpp
index f5c17d3b16a..d347cdfa630 100644
--- a/GUI/coregui/Models/DomainSimulationBuilder.cpp
+++ b/GUI/coregui/Models/DomainSimulationBuilder.cpp
@@ -26,6 +26,8 @@
 #include "SimulationOptionsItem.h"
 #include "OffSpecSimulation.h"
 #include "TransformToDomain.h"
+#include "AxesItems.h"
+#include "Units.h"
 
 //! Creates domain simulation from sample and instrument items.
 std::unique_ptr<Simulation> DomainSimulationBuilder::createSimulation(const MultiLayerItem* sampleItem,
@@ -64,6 +66,11 @@ std::unique_ptr<Simulation> DomainSimulationBuilder::createSimulation(const Mult
         offspec->setSample(*P_multilayer);
         offspec->setInstrument(*P_instrument);
 
+        auto beamItem = offspecInstrument->beamItem();
+        auto axisItem = dynamic_cast<BasicAxisItem*>(offspecInstrument->getItem(OffSpecInstrumentItem::P_ALPHA_AXIS));
+        offspec->setBeamParameters(beamItem->getWavelength(), *axisItem->createAxis(Units::degree), beamItem->getAzimuthalAngle());
+
+        // TODO Take care about distributions
 //        TransformToDomain::addDistributionParametersToSimulation(*gisasInstrument->beamItem(), gisas.get());
 
         // Simulation options
diff --git a/GUI/coregui/Models/InstrumentItems.cpp b/GUI/coregui/Models/InstrumentItems.cpp
index 0266c6674b1..d30c582b298 100644
--- a/GUI/coregui/Models/InstrumentItems.cpp
+++ b/GUI/coregui/Models/InstrumentItems.cpp
@@ -24,6 +24,7 @@
 #include "ParameterTranslators.h"
 #include "Instrument.h"
 #include "IDetector2D.h"
+#include "AxesItems.h"
 
 namespace {
 const QString background_group_label = "Type";
@@ -134,8 +135,19 @@ GISASInstrumentItem::GISASInstrumentItem()
 {
 }
 
+const QString OffSpecInstrumentItem::P_ALPHA_AXIS = "Alpha axis";
+
 OffSpecInstrumentItem::OffSpecInstrumentItem()
     : Instrument2DItem(Constants::OffSpecInstrumentType)
 {
+    auto item = addGroupProperty(P_ALPHA_AXIS, Constants::BasicAxisType);
+    item->setToolTip("Incoming alpha range [deg]");
+    item->getItem(BasicAxisItem::P_TITLE)->setVisible(false);
+    item->getItem(BasicAxisItem::P_NBINS)->setToolTip("Number of points in scan");
+    item->getItem(BasicAxisItem::P_MIN)->setToolTip("Starting value [deg]");
+    item->getItem(BasicAxisItem::P_MAX)->setToolTip("Ending value [deg]");
+
+    item->setItemValue(BasicAxisItem::P_MIN, 0.0);
+    item->setItemValue(BasicAxisItem::P_MAX, 10.0);
 }
 
diff --git a/GUI/coregui/Models/InstrumentItems.h b/GUI/coregui/Models/InstrumentItems.h
index 2544976ccb8..db29bac05cb 100644
--- a/GUI/coregui/Models/InstrumentItems.h
+++ b/GUI/coregui/Models/InstrumentItems.h
@@ -72,6 +72,8 @@ public:
 class BA_CORE_API_ OffSpecInstrumentItem : public Instrument2DItem
 {
 public:
+    static const QString P_ALPHA_AXIS;
+
     OffSpecInstrumentItem();
 };
 
-- 
GitLab