From c6c1b5e667bb29d08dd1a8a09c7f51c96719f57c Mon Sep 17 00:00:00 2001
From: Gennady Pospelov <g.pospelov@fz-juelich.de>
Date: Wed, 25 Feb 2015 15:24:13 +0100
Subject: [PATCH] New TestBeamItem with distributions replaced old BeamItem
 with fixed wavelength and angles.

---
 GUI/coregui/Models/BeamItem.cpp               | 130 ++++--
 GUI/coregui/Models/BeamItem.h                 |  36 +-
 GUI/coregui/Models/GUIObjectBuilder.cpp       |  19 +-
 GUI/coregui/Models/InstrumentItem.cpp         |   4 +-
 GUI/coregui/Models/InstrumentItem.h           |   4 +-
 GUI/coregui/Models/ItemFactory.cpp            |   2 +-
 GUI/coregui/Models/ItemLink.cpp               |  10 +-
 GUI/coregui/Models/ItemLink.h                 |   8 +-
 GUI/coregui/Models/ParameterModelBuilder.cpp  |  50 ++-
 GUI/coregui/Models/ParameterModelBuilder.h    |   4 +-
 GUI/coregui/Models/TransformToDomain.cpp      |  16 +-
 .../InstrumentWidgets/BeamEditorWidget.cpp    | 413 +++++++++---------
 .../InstrumentWidgets/BeamEditorWidget.h      |  76 ++--
 .../InstrumentEditorWidget.cpp                |   8 +-
 .../Views/JobWidgets/ModelTuningDelegate.cpp  |   2 +-
 15 files changed, 441 insertions(+), 341 deletions(-)

diff --git a/GUI/coregui/Models/BeamItem.cpp b/GUI/coregui/Models/BeamItem.cpp
index 8f3fd9a1331..bbb1c3ae1f5 100644
--- a/GUI/coregui/Models/BeamItem.cpp
+++ b/GUI/coregui/Models/BeamItem.cpp
@@ -22,34 +22,34 @@
 #include "Units.h"
 #include <QDebug>
 
-const QString BeamItem::P_INTENSITY = "Intensity [1/s]";
-const QString BeamItem::P_WAVELENGTH = "Wavelength [nm]";
-const QString BeamItem::P_INCLINATION_ANGLE = "Inclination Angle";
-const QString BeamItem::P_AZIMUTHAL_ANGLE = "Azimuthal Angle";
-
-BeamItem::BeamItem(ParameterizedItem *parent)
-    : ParameterizedItem(Constants::BeamType, parent)
-{
-    setItemName(Constants::BeamType);
-    registerProperty(P_INTENSITY, 1e+08);
-    registerProperty(P_WAVELENGTH, 0.1, PropertyAttribute(AttLimits::lowerLimited(1e-4), 4));
-    registerProperty(P_AZIMUTHAL_ANGLE, AngleProperty::Degrees(0.0), PropertyAttribute(AttLimits::limited(-90.0, 90.0), 3));
-    registerProperty(P_INCLINATION_ANGLE, AngleProperty::Degrees(0.2));
-}
-
-
-void BeamItem::onPropertyChange(const QString &name)
-{
-    if(name == P_INCLINATION_ANGLE) {
-        qDebug() << "BeamItem::onPropertyChange()" << name;
-        AngleProperty inclination_angle = getRegisteredProperty(BeamItem::P_INCLINATION_ANGLE).value<AngleProperty>();
-
-        AngleProperty azimuthal_angle = getRegisteredProperty(BeamItem::P_AZIMUTHAL_ANGLE).value<AngleProperty>();
-        azimuthal_angle.setUnits(inclination_angle.getUnits());
-        setRegisteredProperty(P_AZIMUTHAL_ANGLE, azimuthal_angle.getVariant());
-    }
-    ParameterizedItem::onPropertyChange(name);
-}
+//const QString BeamItem::P_INTENSITY = "Intensity [1/s]";
+//const QString BeamItem::P_WAVELENGTH = "Wavelength [nm]";
+//const QString BeamItem::P_INCLINATION_ANGLE = "Inclination Angle";
+//const QString BeamItem::P_AZIMUTHAL_ANGLE = "Azimuthal Angle";
+
+//BeamItem::BeamItem(ParameterizedItem *parent)
+//    : ParameterizedItem(Constants::BeamType, parent)
+//{
+//    setItemName(Constants::BeamType);
+//    registerProperty(P_INTENSITY, 1e+08);
+//    registerProperty(P_WAVELENGTH, 0.1, PropertyAttribute(AttLimits::lowerLimited(1e-4), 4));
+//    registerProperty(P_AZIMUTHAL_ANGLE, AngleProperty::Degrees(0.0), PropertyAttribute(AttLimits::limited(-90.0, 90.0), 3));
+//    registerProperty(P_INCLINATION_ANGLE, AngleProperty::Degrees(0.2));
+//}
+
+
+//void BeamItem::onPropertyChange(const QString &name)
+//{
+//    if(name == P_INCLINATION_ANGLE) {
+//        qDebug() << "BeamItem::onPropertyChange()" << name;
+//        AngleProperty inclination_angle = getRegisteredProperty(BeamItem::P_INCLINATION_ANGLE).value<AngleProperty>();
+
+//        AngleProperty azimuthal_angle = getRegisteredProperty(BeamItem::P_AZIMUTHAL_ANGLE).value<AngleProperty>();
+//        azimuthal_angle.setUnits(inclination_angle.getUnits());
+//        setRegisteredProperty(P_AZIMUTHAL_ANGLE, azimuthal_angle.getVariant());
+//    }
+//    ParameterizedItem::onPropertyChange(name);
+//}
 
 // ---------------
 
@@ -101,7 +101,7 @@ BeamAngleItem::BeamAngleItem(ParameterizedItem *parent)
     : ParameterizedItem(Constants::BeamAngleType, parent)
 {
     setItemName(Constants::BeamAngleType);
-    registerProperty(P_CACHED_VALUE, 0.1, PropertyAttribute(PropertyAttribute::HIDDEN, AttLimits::lowerLimited(1e-4), 4));
+    registerProperty(P_CACHED_VALUE, 0.1, PropertyAttribute(PropertyAttribute::HIDDEN, AttLimits::limitless(), 4));
     registerGroupProperty(P_DISTRIBUTION, Constants::DistributionExtendedGroup);
     setGroupProperty(P_DISTRIBUTION, Constants::DistributionNoneType);
 }
@@ -141,13 +141,77 @@ const QString TestBeamItem::P_AZIMUTHAL_ANGLE = "Azimuthal Angle";
 TestBeamItem::TestBeamItem(ParameterizedItem *parent)
     : ParameterizedItem(Constants::BeamType, parent)
 {
-    //registerProperty(P_INTENSITY, 1e+08);
-
     ScientificDoubleProperty intensity(1e+08);
-    registerProperty(P_INTENSITY, intensity.getVariant());
-
+    registerProperty(P_INTENSITY, intensity.getVariant(), PropertyAttribute(AttLimits::lowerLimited(0.0)));
 
     registerGroupProperty(P_WAVELENGTH, Constants::BeamWavelengthType);
     registerGroupProperty(P_INCLINATION_ANGLE, Constants::BeamAngleType);
     registerGroupProperty(P_AZIMUTHAL_ANGLE, Constants::BeamAngleType);
+
+
+}
+
+double TestBeamItem::getIntensity() const
+{
+    ScientificDoubleProperty intensity = getRegisteredProperty(P_INTENSITY).value<ScientificDoubleProperty>();
+    return intensity.getValue();
+}
+
+void TestBeamItem::setIntensity(double value)
+{
+    ScientificDoubleProperty intensity = getRegisteredProperty(P_INTENSITY).value<ScientificDoubleProperty>();
+    intensity.setValue(value);
+    setRegisteredProperty(P_INTENSITY, intensity.getVariant());
+}
+
+double TestBeamItem::getWavelength() const
+{
+    ParameterizedItem *beamWavelength = getSubItems()[P_WAVELENGTH];
+    Q_ASSERT(beamWavelength);
+    return beamWavelength->getRegisteredProperty(BeamWavelengthItem::P_CACHED_VALUE).toDouble();
+}
+
+void TestBeamItem::setWavelength(double value, const QString &distribution_name)
+{
+    Q_UNUSED(distribution_name);
+    ParameterizedItem *beamWavelength = getSubItems()[P_WAVELENGTH];
+    Q_ASSERT(beamWavelength);
+    ParameterizedItem *distributionItem = beamWavelength->setGroupProperty(BeamWavelengthItem::P_DISTRIBUTION, Constants::DistributionNoneType);
+    Q_ASSERT(distributionItem);
+    distributionItem->setRegisteredProperty(DistributionNoneItem::P_VALUE, value);
+}
+
+double TestBeamItem::getInclinationAngle() const
+{
+    ParameterizedItem *angleItem = getSubItems()[P_INCLINATION_ANGLE];
+    Q_ASSERT(angleItem);
+    return angleItem->getRegisteredProperty(BeamWavelengthItem::P_CACHED_VALUE).toDouble();
 }
+
+void TestBeamItem::setInclinationAngle(double value, const QString &distribution_name)
+{
+    Q_UNUSED(distribution_name);
+    ParameterizedItem *angleItem = getSubItems()[P_INCLINATION_ANGLE];
+    Q_ASSERT(angleItem);
+    ParameterizedItem *distributionItem = angleItem->setGroupProperty(BeamAngleItem::P_DISTRIBUTION, Constants::DistributionNoneType);
+    Q_ASSERT(distributionItem);
+    distributionItem->setRegisteredProperty(DistributionNoneItem::P_VALUE, value);
+}
+
+double TestBeamItem::getAzimuthalAngle() const
+{
+    ParameterizedItem *angleItem = getSubItems()[P_AZIMUTHAL_ANGLE];
+    Q_ASSERT(angleItem);
+    return angleItem->getRegisteredProperty(BeamWavelengthItem::P_CACHED_VALUE).toDouble();
+}
+
+void TestBeamItem::setAzimuthalAngle(double value, const QString &distribution_name)
+{
+    Q_UNUSED(distribution_name);
+    ParameterizedItem *angleItem = getSubItems()[P_AZIMUTHAL_ANGLE];
+    Q_ASSERT(angleItem);
+    ParameterizedItem *distributionItem = angleItem->setGroupProperty(BeamAngleItem::P_DISTRIBUTION, Constants::DistributionNoneType);
+    Q_ASSERT(distributionItem);
+    distributionItem->setRegisteredProperty(DistributionNoneItem::P_VALUE, value);
+}
+
diff --git a/GUI/coregui/Models/BeamItem.h b/GUI/coregui/Models/BeamItem.h
index 05dbfe94ad1..01e44c36516 100644
--- a/GUI/coregui/Models/BeamItem.h
+++ b/GUI/coregui/Models/BeamItem.h
@@ -19,20 +19,20 @@
 
 #include "ParameterizedItem.h"
 
-class BA_CORE_API_ BeamItem : public ParameterizedItem
-{
-    Q_OBJECT
-public:
-    static const QString P_INTENSITY;
-    static const QString P_WAVELENGTH;
-    static const QString P_INCLINATION_ANGLE;
-    static const QString P_AZIMUTHAL_ANGLE;
-    explicit BeamItem(ParameterizedItem *parent=0);
-    ~BeamItem(){}
+//class BA_CORE_API_ BeamItem : public ParameterizedItem
+//{
+//    Q_OBJECT
+//public:
+//    static const QString P_INTENSITY;
+//    static const QString P_WAVELENGTH;
+//    static const QString P_INCLINATION_ANGLE;
+//    static const QString P_AZIMUTHAL_ANGLE;
+//    explicit BeamItem(ParameterizedItem *parent=0);
+//    ~BeamItem(){}
 
-    void onPropertyChange(const QString &name);
+//    void onPropertyChange(const QString &name);
 
-};
+//};
 
 
 class BA_CORE_API_ BeamWavelengthItem : public ParameterizedItem
@@ -76,6 +76,18 @@ public:
     static const QString P_AZIMUTHAL_ANGLE;
     explicit TestBeamItem(ParameterizedItem *parent=0);
     ~TestBeamItem(){}
+
+    double getIntensity() const;
+    void setIntensity(double value);
+
+    double getWavelength() const;
+    void setWavelength(double value, const QString &distribution_name = QString());
+
+    double getInclinationAngle() const;
+    void setInclinationAngle(double value, const QString &distribution_name = QString());
+
+    double getAzimuthalAngle() const;
+    void setAzimuthalAngle(double value, const QString &distribution_name = QString());
 };
 
 #endif
diff --git a/GUI/coregui/Models/GUIObjectBuilder.cpp b/GUI/coregui/Models/GUIObjectBuilder.cpp
index 3b910c6478b..8e4dcdfaf03 100644
--- a/GUI/coregui/Models/GUIObjectBuilder.cpp
+++ b/GUI/coregui/Models/GUIObjectBuilder.cpp
@@ -79,18 +79,15 @@ ParameterizedItem *GUIObjectBuilder::populateInstrumentModel(
     instrumentItem->setItemName(instrument->getName().c_str());
 
     Beam beam = instrument->getBeam();
-    ParameterizedItem *beamItem = instrumentModel->insertNewItem(
+    TestBeamItem *beamItem = dynamic_cast<TestBeamItem *>(instrumentModel->insertNewItem(
                 Constants::BeamType,
-                instrumentModel->indexOfItem(instrumentItem));
-    beamItem->setRegisteredProperty(BeamItem::P_INTENSITY,
-                                    beam.getIntensity());
-    beamItem->setRegisteredProperty(BeamItem::P_WAVELENGTH,
-                                    beam.getWavelength());
-
-    beamItem->setRegisteredProperty(BeamItem::P_INCLINATION_ANGLE,
-        AngleProperty::Degrees(Units::rad2deg(-1.0*beam.getAlpha())));
-    beamItem->setRegisteredProperty(BeamItem::P_AZIMUTHAL_ANGLE,
-        AngleProperty::Degrees(Units::rad2deg(-1.0*beam.getPhi())));
+                instrumentModel->indexOfItem(instrumentItem)));
+    Q_ASSERT(beamItem);
+
+    beamItem->setIntensity(beam.getIntensity());
+    beamItem->setWavelength(beam.getWavelength());
+    beamItem->setInclinationAngle(Units::rad2deg(-1.0*beam.getAlpha()));
+    beamItem->setAzimuthalAngle(Units::rad2deg(-1.0*beam.getPhi()));
 
     Detector detector = instrument->getDetector();
     ParameterizedItem *detectorItem = instrumentModel->insertNewItem(
diff --git a/GUI/coregui/Models/InstrumentItem.cpp b/GUI/coregui/Models/InstrumentItem.cpp
index 7ad0a3ec063..ebcdace42e6 100644
--- a/GUI/coregui/Models/InstrumentItem.cpp
+++ b/GUI/coregui/Models/InstrumentItem.cpp
@@ -26,11 +26,11 @@ InstrumentItem::InstrumentItem(ParameterizedItem *parent)
 }
 
 
-BeamItem *InstrumentItem::getBeamItem()
+TestBeamItem *InstrumentItem::getBeamItem()
 {
     foreach(ParameterizedItem *item, childItems()) {
         if(item->modelType() == Constants::BeamType) {
-            return dynamic_cast<BeamItem *>(item);
+            return dynamic_cast<TestBeamItem *>(item);
         }
     }
     return 0;
diff --git a/GUI/coregui/Models/InstrumentItem.h b/GUI/coregui/Models/InstrumentItem.h
index 5075897bf60..07922a567d3 100644
--- a/GUI/coregui/Models/InstrumentItem.h
+++ b/GUI/coregui/Models/InstrumentItem.h
@@ -18,7 +18,7 @@
 
 
 #include "ParameterizedItem.h"
-class BeamItem;
+class TestBeamItem;
 class DetectorItem;
 
 class BA_CORE_API_ InstrumentItem : public ParameterizedItem
@@ -29,7 +29,7 @@ public:
     explicit InstrumentItem(ParameterizedItem *parent=0);
     ~InstrumentItem(){}
 
-    BeamItem *getBeamItem();
+    TestBeamItem *getBeamItem();
 
     DetectorItem *getDetectorItem();
 
diff --git a/GUI/coregui/Models/ItemFactory.cpp b/GUI/coregui/Models/ItemFactory.cpp
index 78f2597af5f..0e4cdefd1ae 100644
--- a/GUI/coregui/Models/ItemFactory.cpp
+++ b/GUI/coregui/Models/ItemFactory.cpp
@@ -61,7 +61,7 @@ ItemFactory::ItemMap_t initializeItemMap() {
     result[Constants::InterferenceFunction2DLatticeType] = &createInstance<InterferenceFunction2DLatticeItem>;
     result[Constants::InstrumentType] = &createInstance<InstrumentItem>;
     result[Constants::DetectorType] = &createInstance<DetectorItem>;
-    result[Constants::BeamType] = &createInstance<BeamItem>;
+    result[Constants::BeamType] = &createInstance<TestBeamItem>;
     result[Constants::VectorType] = &createInstance<VectorItem>;
 
     result[Constants::AnisoPyramidType] = &createInstance<AnisoPyramidItem>;
diff --git a/GUI/coregui/Models/ItemLink.cpp b/GUI/coregui/Models/ItemLink.cpp
index 8de452eabfe..8122dd3ac4f 100644
--- a/GUI/coregui/Models/ItemLink.cpp
+++ b/GUI/coregui/Models/ItemLink.cpp
@@ -17,17 +17,17 @@
 #include "AngleProperty.h"
 
 
-ItemLink::ItemLink(const QString name, ParameterizedItem *item)
-    : m_name(name)
+ItemLink::ItemLink(const QString property_name, ParameterizedItem *item)
+    : m_property_name(property_name)
     , m_item(item)
     , m_value(0)
 {
 
 }
 
-void ItemLink::setItem(QString name, ParameterizedItem *item)
+void ItemLink::setItem(QString property_name, ParameterizedItem *item)
 {
-    m_name = name;
+    m_property_name = property_name;
     m_item = item;
 }
 
@@ -43,7 +43,7 @@ void ItemLink::setValue(double value)
 
 QVariant ItemLink::getVariant()
 {
-    QVariant variant = m_item->getRegisteredProperty(m_name);
+    QVariant variant = m_item->getRegisteredProperty(m_property_name);
     if(variant.typeName() == QString("double")) {
         variant.setValue(m_value);
         return variant;
diff --git a/GUI/coregui/Models/ItemLink.h b/GUI/coregui/Models/ItemLink.h
index 9a37c2e6814..fe1ad6799ca 100644
--- a/GUI/coregui/Models/ItemLink.h
+++ b/GUI/coregui/Models/ItemLink.h
@@ -24,13 +24,13 @@ class BA_CORE_API_ ItemLink
 {
 
 public:
-    explicit ItemLink(const QString name = QString(), ParameterizedItem *item = 0);
+    explicit ItemLink(const QString property_name = QString(), ParameterizedItem *item = 0);
     virtual ~ItemLink(){}
 
-    QString getPropertyName() const { return m_name; }
+    QString getPropertyName() const { return m_property_name; }
 
     ParameterizedItem *getItem() const { return m_item; }
-    void setItem(QString name, ParameterizedItem *item);
+    void setItem(QString property_name, ParameterizedItem *item);
 
     void setValue(double value);
 
@@ -39,7 +39,7 @@ public:
 private:
     double getValue() const;
     QVariant getVariant();
-    QString m_name;
+    QString m_property_name;
     ParameterizedItem *m_item;
     double m_value;
 };
diff --git a/GUI/coregui/Models/ParameterModelBuilder.cpp b/GUI/coregui/Models/ParameterModelBuilder.cpp
index 4e4e32631e3..c3d823d9bf8 100644
--- a/GUI/coregui/Models/ParameterModelBuilder.cpp
+++ b/GUI/coregui/Models/ParameterModelBuilder.cpp
@@ -21,6 +21,7 @@
 #include "ItemLink.h"
 #include "AngleProperty.h"
 #include "GUIHelpers.h"
+#include "DistributionItem.h"
 #include <QStandardItem>
 #include <QStandardItemModel>
 #include <QDebug>
@@ -88,7 +89,7 @@ QStandardItem *ParameterModelBuilder::iterateSessionModel(SampleModel *sampleMod
                 int type = GUIHelpers::getVariantType(propertyValue);
                 if (type == QVariant::Double) {
 //                    qDebug() << "       Items: "<<propertyName << propertyValue.toDouble();
-                    insertRowIntoItem(standardItem, propertyName, propertyValue, item);
+                    addPropertyToParameterModel(standardItem, propertyName, propertyName, propertyValue, item);
 
                 }
                 else if(item->getSubItems().contains(propertyName)) {
@@ -115,12 +116,12 @@ QStandardItem *ParameterModelBuilder::iterateSessionModel(SampleModel *sampleMod
                             if (proValueType == QVariant::Double) {
                                 //qDebug() << "Items: "<<prop_name << prop_value.toDouble();
                                 isChildPropertyFound = true;
-                                insertRowIntoItem(childStandardItem, childPropertyName, childPropertyValue, subItem);
+                                addPropertyToParameterModel(childStandardItem, childPropertyName, childPropertyName, childPropertyValue, subItem);
                             }
                         }
                         if(isChildPropertyFound)
                         {
-                            insertRowIntoItem(standardItem, childStandardItem);
+                            InsertRowIntoItem(standardItem, childStandardItem);
                         }
 
 
@@ -135,7 +136,7 @@ QStandardItem *ParameterModelBuilder::iterateSessionModel(SampleModel *sampleMod
             }
             else
             {
-                insertRowIntoItem(parentItem, standardItem);
+                InsertRowIntoItem(parentItem, standardItem);
             }
             //qDebug() << "iteration called" << i_row;
             iterateSessionModel(sampleModel, itemIndex, standardItem);
@@ -154,17 +155,36 @@ QStandardItem *ParameterModelBuilder::iterateInstrumentModel(InstrumentModel *in
 
     InstrumentItem *instrument = instrumentModel->getInstrumentItem();
     if(instrument) {
-        BeamItem *beamItem = instrument->getBeamItem();
+        TestBeamItem *beamItem = instrument->getBeamItem();
         if(beamItem) {
             standardItem = new QStandardItem(instrument->itemName());
-            insertRowIntoItem(standardItem, BeamItem::P_WAVELENGTH, beamItem->getRegisteredProperty(BeamItem::P_WAVELENGTH), beamItem);
+            addPropertyToParameterModel(standardItem, TestBeamItem::P_INTENSITY, TestBeamItem::P_INTENSITY, QVariant(beamItem->getIntensity()), beamItem);
 
-            double v = beamItem->getRegisteredProperty(BeamItem::P_INCLINATION_ANGLE).value<AngleProperty>().getValue();
-            QVariant variant_inclination(v);
-            insertRowIntoItem(standardItem, BeamItem::P_INCLINATION_ANGLE, variant_inclination, beamItem);
+            // wavelength, incident and azimuthal angle will be varied only if there is no distribution assigned to them
 
-            v = beamItem->getRegisteredProperty(BeamItem::P_AZIMUTHAL_ANGLE).value<AngleProperty>().getValue();
-            insertRowIntoItem(standardItem, BeamItem::P_AZIMUTHAL_ANGLE, QVariant(v), beamItem);
+            ParameterizedItem *beamWavelength = beamItem->getSubItems()[TestBeamItem::P_WAVELENGTH];
+            Q_ASSERT(beamWavelength);
+            ParameterizedItem *wavelengthDistribution = beamWavelength->getSubItems()[BeamWavelengthItem::P_DISTRIBUTION];
+            Q_ASSERT(wavelengthDistribution);
+            if(wavelengthDistribution->modelType() == Constants::DistributionNoneType) {
+                addPropertyToParameterModel(standardItem, TestBeamItem::P_WAVELENGTH, BeamWavelengthItem::P_CACHED_VALUE, beamWavelength->getRegisteredProperty(BeamWavelengthItem::P_CACHED_VALUE), beamWavelength);
+            }
+
+            ParameterizedItem *inclinationAngle = beamItem->getSubItems()[TestBeamItem::P_INCLINATION_ANGLE];
+            Q_ASSERT(inclinationAngle);
+            ParameterizedItem *inclinationDistribution = inclinationAngle->getSubItems()[BeamAngleItem::P_DISTRIBUTION];
+            Q_ASSERT(inclinationDistribution);
+            if(inclinationDistribution->modelType() == Constants::DistributionNoneType) {
+                addPropertyToParameterModel(standardItem, TestBeamItem::P_INCLINATION_ANGLE, BeamAngleItem::P_CACHED_VALUE, inclinationAngle->getRegisteredProperty(BeamAngleItem::P_CACHED_VALUE), inclinationAngle);
+            }
+
+            ParameterizedItem *azimuthalAngle = beamItem->getSubItems()[TestBeamItem::P_AZIMUTHAL_ANGLE];
+            Q_ASSERT(azimuthalAngle);
+            ParameterizedItem *azimuthalDistribution = azimuthalAngle->getSubItems()[BeamAngleItem::P_DISTRIBUTION];
+            Q_ASSERT(azimuthalDistribution);
+            if(azimuthalDistribution->modelType() == Constants::DistributionNoneType) {
+                addPropertyToParameterModel(standardItem, TestBeamItem::P_AZIMUTHAL_ANGLE, BeamAngleItem::P_CACHED_VALUE, azimuthalAngle->getRegisteredProperty(BeamAngleItem::P_CACHED_VALUE), azimuthalAngle);
+            }
 
         }
     }
@@ -173,7 +193,7 @@ QStandardItem *ParameterModelBuilder::iterateInstrumentModel(InstrumentModel *in
 }
 
 
-void ParameterModelBuilder::insertRowIntoItem(QStandardItem *parentItem, QStandardItem *childTitleItem, QStandardItem *childValueItem)
+void ParameterModelBuilder::InsertRowIntoItem(QStandardItem *parentItem, QStandardItem *childTitleItem, QStandardItem *childValueItem)
 {
     if(childValueItem == NULL)
     {
@@ -186,9 +206,9 @@ void ParameterModelBuilder::insertRowIntoItem(QStandardItem *parentItem, QStanda
 }
 
 
-void ParameterModelBuilder::insertRowIntoItem(QStandardItem *parentItem, QString title, QVariant value, ParameterizedItem *parameterizedItem)
+void ParameterModelBuilder::addPropertyToParameterModel(QStandardItem *parentItem, const QString &title, const QString &property_name, QVariant value, ParameterizedItem *parameterizedItem)
 {
-    ItemLink itemLink(title, parameterizedItem);
+    ItemLink itemLink(property_name, parameterizedItem);
 
     QVariant itemLinkData;
     itemLinkData.setValue(itemLink);
@@ -200,6 +220,6 @@ void ParameterModelBuilder::insertRowIntoItem(QStandardItem *parentItem, QString
     valueItem->setData(itemLinkData, Qt::UserRole);
     valueItem->setData(value, Qt::EditRole);
     valueItem->setEditable(true);
-    insertRowIntoItem(parentItem, titleItem, valueItem);
+    InsertRowIntoItem(parentItem, titleItem, valueItem);
 }
 
diff --git a/GUI/coregui/Models/ParameterModelBuilder.h b/GUI/coregui/Models/ParameterModelBuilder.h
index b136ac109cc..238ee0ef316 100644
--- a/GUI/coregui/Models/ParameterModelBuilder.h
+++ b/GUI/coregui/Models/ParameterModelBuilder.h
@@ -39,8 +39,8 @@ public:
 private:
     static QStandardItem *iterateSessionModel(SampleModel *sampleModel, const QModelIndex &parentIndex = QModelIndex(), QStandardItem *parentItem = 0);
     static QStandardItem *iterateInstrumentModel(InstrumentModel *instrumentModel);
-    static void insertRowIntoItem(QStandardItem *parentItem, QStandardItem *childTitleItem, QStandardItem *childValueItem = 0);
-    static void insertRowIntoItem(QStandardItem *parentItem, QString title, QVariant value, ParameterizedItem *parameterizedItem);
+    static void InsertRowIntoItem(QStandardItem *parentItem, QStandardItem *childTitleItem, QStandardItem *childValueItem = 0);
+    static void addPropertyToParameterModel(QStandardItem *parentItem, const QString &title, const QString &property_name, QVariant value, ParameterizedItem *parameterizedItem);
 };
 
 
diff --git a/GUI/coregui/Models/TransformToDomain.cpp b/GUI/coregui/Models/TransformToDomain.cpp
index cf246fccef3..35bb6815e26 100644
--- a/GUI/coregui/Models/TransformToDomain.cpp
+++ b/GUI/coregui/Models/TransformToDomain.cpp
@@ -288,12 +288,18 @@ Beam *TransformToDomain::createBeam(const ParameterizedItem &item)
 //    qDebug() << "TransformToDomain::createBeam";
     Beam *result = new Beam();
     result->setName(item.itemName().toUtf8().constData());
-    result->setIntensity(item.getRegisteredProperty(BeamItem::P_INTENSITY).toDouble());
-    double lambda = item.getRegisteredProperty(BeamItem::P_WAVELENGTH).toDouble();
 
-    AngleProperty inclination_angle = item.getRegisteredProperty(BeamItem::P_INCLINATION_ANGLE).value<AngleProperty>();
-    AngleProperty azimuthal_angle = item.getRegisteredProperty(BeamItem::P_AZIMUTHAL_ANGLE).value<AngleProperty>();
-    result->setCentralK( lambda, inclination_angle.getValueInRadians(), azimuthal_angle.getValueInRadians());
+    const TestBeamItem *beamItem = dynamic_cast<const TestBeamItem *>(&item);
+
+    result->setIntensity(beamItem->getIntensity());
+    double lambda = beamItem->getWavelength();
+    double inclination_angle = Units::deg2rad(beamItem->getInclinationAngle());
+    double azimuthal_angle = Units::deg2rad(beamItem->getAzimuthalAngle());
+    result->setCentralK( lambda, inclination_angle, azimuthal_angle);
+
+//    AngleProperty inclination_angle = item.getRegisteredProperty(BeamItem::P_INCLINATION_ANGLE).value<AngleProperty>();
+//    AngleProperty azimuthal_angle = item.getRegisteredProperty(BeamItem::P_AZIMUTHAL_ANGLE).value<AngleProperty>();
+//    result->setCentralK( lambda, inclination_angle.getValueInRadians(), azimuthal_angle.getValueInRadians());
     return result;
 }
 
diff --git a/GUI/coregui/Views/InstrumentWidgets/BeamEditorWidget.cpp b/GUI/coregui/Views/InstrumentWidgets/BeamEditorWidget.cpp
index 485802de99e..1d49b5f2a48 100644
--- a/GUI/coregui/Views/InstrumentWidgets/BeamEditorWidget.cpp
+++ b/GUI/coregui/Views/InstrumentWidgets/BeamEditorWidget.cpp
@@ -13,233 +13,234 @@
 //
 // ************************************************************************** //
 
-#include "BeamEditorWidget.h"
-#include "ComboProperty.h"
-#include "DetectorItems.h"
-#include "BeamItem.h"
-#include "Units.h"
-#include "AngleProperty.h"
-#include "GUIHelpers.h"
-#include "GroupBox.h"
-#include "ComboWidget.h"
-#include "UniversalPropertyEditor.h"
-#include <QLineEdit>
-#include <QBoxLayout>
-#include <QDoubleValidator>
-#include <QLabel>
-#include <QGroupBox>
-#include <QComboBox>
-#include <QSpinBox>
-#include <QDoubleSpinBox>
-#include <QGridLayout>
-#include <QDebug>
-
-
-BeamEditorWidget::BeamEditorWidget(QWidget *parent)
-    : QWidget(parent)
-    , m_intensityText( new QLineEdit)
-    , m_intensityValidator(0)
-    , m_wavelengthSpinBox(new QDoubleSpinBox)
-    , m_angleUnits(new QComboBox)
-    , m_inclinationAngleSpinBox(new QDoubleSpinBox)
-    , m_azimuthalAngleSpinBox(new QDoubleSpinBox)
-    , m_beamTypeCombo(new QComboBox)
-    , m_currentItem(0)
-    , m_block_signals(false)
-{
-
-    m_intensityValidator  = new QDoubleValidator(0.1, 1e+100, 2, this);
-    m_intensityValidator->setNotation(QDoubleValidator::ScientificNotation);
-    m_intensityText->setValidator(m_intensityValidator);
-
-    m_wavelengthSpinBox->setSingleStep(0.1);
-    m_wavelengthSpinBox->setDecimals(4);
-    m_wavelengthSpinBox->setMinimum(0.0001);
-    m_wavelengthSpinBox->setMaximum(100.);
-
-    m_beamTypeCombo->addItem("Monochromatic");
-
-    // group box layout
-    QGroupBox *beamGroup = new QGroupBox("Beam Parameters");
-    QVBoxLayout *beamGroupLayout = new QVBoxLayout;
-    beamGroup->setLayout(beamGroupLayout);
-
-    QGridLayout *beamParamsLayout = new QGridLayout;
-    beamParamsLayout->addWidget(new QLabel(BeamItem::P_INTENSITY), 0, 0);
-    beamParamsLayout->addWidget(m_intensityText, 0, 1);
-    beamParamsLayout->addWidget(new QLabel(BeamItem::P_WAVELENGTH), 1, 0);
-    beamParamsLayout->addWidget(m_wavelengthSpinBox, 1, 1);
-    beamParamsLayout->addWidget(new QLabel("   "), 2, 2);
-    beamParamsLayout->addWidget(new QLabel("Inclination angle"), 3, 0);
-    beamParamsLayout->addWidget(m_inclinationAngleSpinBox, 3, 1);
-    beamParamsLayout->addWidget(m_angleUnits, 3, 2);
-    beamParamsLayout->addWidget(new QLabel("Azimuthal angle"), 4, 0);
-    beamParamsLayout->addWidget(m_azimuthalAngleSpinBox, 4, 1);
-    beamParamsLayout->addWidget(new QLabel("Beam Type"), 5, 0);
-    beamParamsLayout->addWidget(m_beamTypeCombo, 5, 1);
-
-
-//    // Code of Mahadi, will be used in the future for beam divergence
-
-    //GroupBox Test
-    GroupBox *settingsGroupBox = new GroupBox("Beam Type Settings");
-    QVBoxLayout *beamTypeSettingsGroupLayout2 = new QVBoxLayout;
-    settingsGroupBox->setLayout(beamTypeSettingsGroupLayout2);
-
-    QGridLayout *beamTypeLayout2 = new QGridLayout;
-    beamTypeLayout2->addWidget(new QLabel("Param 1"), 0, 0);
-    beamTypeLayout2->addWidget(new QLineEdit, 0, 1);
-    beamTypeLayout2->addWidget(new QLabel("Param 2"), 1, 0);
-    beamTypeLayout2->addWidget(new QLineEdit, 1, 1);
-
-    beamTypeSettingsGroupLayout2->addLayout(beamTypeLayout2);
-
-    beamParamsLayout->addWidget(settingsGroupBox, 6,1,1,1);
-    //end of GroupBox Test
-
-
-
-//    //ComboWidget Test
-//    QGridLayout *comboLayout = new QGridLayout;
-//    comboLayout->addWidget(new QLabel("Param 1"), 0, 0);
-//    comboLayout->addWidget(new QLineEdit, 0, 1);
-//    comboLayout->addWidget(new QLabel("Param 2"), 1, 0);
-//    comboLayout->addWidget(new QLineEdit, 1, 1);
-
-//    ComboWidget *comboWidget = new ComboWidget("Monochromatic", comboLayout, this);
-//    beamParamsLayout->addWidget(new QLabel("Beam Type"), 7, 0);
-//    beamParamsLayout->addWidget(comboWidget, 7,1,1,2);
-
-//    comboWidget->addItem("Dichromatic");
-//    //end of ComboWidget Test
-
-
-
-
-    beamGroupLayout->addLayout(beamParamsLayout);
-
-    // main layout
-    QVBoxLayout *mainLayout = new QVBoxLayout;
-    mainLayout->addWidget(beamGroup);
-    setLayout(mainLayout);
+//#include "BeamEditorWidget.h"
+//#include "ComboProperty.h"
+//#include "DetectorItems.h"
+//#include "BeamItem.h"
+//#include "Units.h"
+//#include "AngleProperty.h"
+//#include "GUIHelpers.h"
+//#include "GroupBox.h"
+//#include "ComboWidget.h"
+//#include "UniversalPropertyEditor.h"
+//#include <QLineEdit>
+//#include <QBoxLayout>
+//#include <QDoubleValidator>
+//#include <QLabel>
+//#include <QGroupBox>
+//#include <QComboBox>
+//#include <QSpinBox>
+//#include <QDoubleSpinBox>
+//#include <QGridLayout>
+//#include <QDebug>
+
+
+//BeamEditorWidget::BeamEditorWidget(QWidget *parent)
+//    : QWidget(parent)
+//    , m_intensityText( new QLineEdit)
+//    , m_intensityValidator(0)
+//    , m_wavelengthSpinBox(new QDoubleSpinBox)
+//    , m_angleUnits(new QComboBox)
+//    , m_inclinationAngleSpinBox(new QDoubleSpinBox)
+//    , m_azimuthalAngleSpinBox(new QDoubleSpinBox)
+//    , m_beamTypeCombo(new QComboBox)
+//    , m_currentItem(0)
+//    , m_block_signals(false)
+//{
+
+//    m_intensityValidator  = new QDoubleValidator(0.1, 1e+100, 2, this);
+//    m_intensityValidator->setNotation(QDoubleValidator::ScientificNotation);
+//    m_intensityText->setValidator(m_intensityValidator);
+
+//    m_wavelengthSpinBox->setSingleStep(0.1);
+//    m_wavelengthSpinBox->setDecimals(4);
+//    m_wavelengthSpinBox->setMinimum(0.0001);
+//    m_wavelengthSpinBox->setMaximum(100.);
+
+//    m_beamTypeCombo->addItem("Monochromatic");
+
+//    // group box layout
+//    QGroupBox *beamGroup = new QGroupBox("Beam Parameters");
+//    QVBoxLayout *beamGroupLayout = new QVBoxLayout;
+//    beamGroup->setLayout(beamGroupLayout);
+
+//    QGridLayout *beamParamsLayout = new QGridLayout;
+//    beamParamsLayout->addWidget(new QLabel(BeamItem::P_INTENSITY), 0, 0);
+//    beamParamsLayout->addWidget(m_intensityText, 0, 1);
+//    beamParamsLayout->addWidget(new QLabel(BeamItem::P_WAVELENGTH), 1, 0);
+//    beamParamsLayout->addWidget(m_wavelengthSpinBox, 1, 1);
+//    beamParamsLayout->addWidget(new QLabel("   "), 2, 2);
+//    beamParamsLayout->addWidget(new QLabel("Inclination angle"), 3, 0);
+//    beamParamsLayout->addWidget(m_inclinationAngleSpinBox, 3, 1);
+//    beamParamsLayout->addWidget(m_angleUnits, 3, 2);
+//    beamParamsLayout->addWidget(new QLabel("Azimuthal angle"), 4, 0);
+//    beamParamsLayout->addWidget(m_azimuthalAngleSpinBox, 4, 1);
+//    beamParamsLayout->addWidget(new QLabel("Beam Type"), 5, 0);
+//    beamParamsLayout->addWidget(m_beamTypeCombo, 5, 1);
+
+
+////    // Code of Mahadi, will be used in the future for beam divergence
+
+//    //GroupBox Test
+//    GroupBox *settingsGroupBox = new GroupBox("Beam Type Settings");
+//    QVBoxLayout *beamTypeSettingsGroupLayout2 = new QVBoxLayout;
+//    settingsGroupBox->setLayout(beamTypeSettingsGroupLayout2);
+
+//    QGridLayout *beamTypeLayout2 = new QGridLayout;
+//    beamTypeLayout2->addWidget(new QLabel("Param 1"), 0, 0);
+//    beamTypeLayout2->addWidget(new QLineEdit, 0, 1);
+//    beamTypeLayout2->addWidget(new QLabel("Param 2"), 1, 0);
+//    beamTypeLayout2->addWidget(new QLineEdit, 1, 1);
+
+//    beamTypeSettingsGroupLayout2->addLayout(beamTypeLayout2);
+
+//    beamParamsLayout->addWidget(settingsGroupBox, 6,1,1,1);
+//    //end of GroupBox Test
+
+
+
+////    //ComboWidget Test
+////    QGridLayout *comboLayout = new QGridLayout;
+////    comboLayout->addWidget(new QLabel("Param 1"), 0, 0);
+////    comboLayout->addWidget(new QLineEdit, 0, 1);
+////    comboLayout->addWidget(new QLabel("Param 2"), 1, 0);
+////    comboLayout->addWidget(new QLineEdit, 1, 1);
+
+////    ComboWidget *comboWidget = new ComboWidget("Monochromatic", comboLayout, this);
+////    beamParamsLayout->addWidget(new QLabel("Beam Type"), 7, 0);
+////    beamParamsLayout->addWidget(comboWidget, 7,1,1,2);
+
+////    comboWidget->addItem("Dichromatic");
+////    //end of ComboWidget Test
+
+
+
+
+//    beamGroupLayout->addLayout(beamParamsLayout);
+
+//    // main layout
+//    QVBoxLayout *mainLayout = new QVBoxLayout;
+//    mainLayout->addWidget(beamGroup);
+//    setLayout(mainLayout);
 
-    // signals
-    connect(m_intensityText, SIGNAL(editingFinished()), this, SLOT(onIntensityEditingFinished()));
-    connect(m_wavelengthSpinBox, SIGNAL(valueChanged(const QString &)), this, SLOT(onChangedWavelength(const QString &)));
-    connect(m_angleUnits, SIGNAL(currentIndexChanged(int)), this, SLOT(onAngleUnitsChanged(int)));
-    connect(m_inclinationAngleSpinBox, SIGNAL(valueChanged(const QString &)), this, SLOT(onChangedAngle(const QString &)));
-    connect(m_azimuthalAngleSpinBox, SIGNAL(valueChanged(const QString &)), this, SLOT(onChangedAngle(const QString &)));
-}
+//    // signals
+//    connect(m_intensityText, SIGNAL(editingFinished()), this, SLOT(onIntensityEditingFinished()));
+//    connect(m_wavelengthSpinBox, SIGNAL(valueChanged(const QString &)), this, SLOT(onChangedWavelength(const QString &)));
+//    connect(m_angleUnits, SIGNAL(currentIndexChanged(int)), this, SLOT(onAngleUnitsChanged(int)));
+//    connect(m_inclinationAngleSpinBox, SIGNAL(valueChanged(const QString &)), this, SLOT(onChangedAngle(const QString &)));
+//    connect(m_azimuthalAngleSpinBox, SIGNAL(valueChanged(const QString &)), this, SLOT(onChangedAngle(const QString &)));
+//}
 
-void BeamEditorWidget::initFromItem(BeamItem *item)
-{
-    qDebug() << "DetectorEditorWidget::initFromItem()";
+//void BeamEditorWidget::initFromItem(BeamItem *item)
+//{
+//    qDebug() << "DetectorEditorWidget::initFromItem()";
 
-    if(item != m_currentItem) {
-        if(m_currentItem) {
-            disconnect(m_currentItem, SIGNAL(propertyChanged(const QString &)), this, SLOT(onPropertyChanged(const QString &)));
-            //disconnect(m_currentItem, SIGNAL(subItemChanged(const QString &)), this, SLOT(onPropertyChanged(const QString &)));
-        }
+//    if(item != m_currentItem) {
+//        if(m_currentItem) {
+//            disconnect(m_currentItem, SIGNAL(propertyChanged(const QString &)), this, SLOT(onPropertyChanged(const QString &)));
+//            //disconnect(m_currentItem, SIGNAL(subItemChanged(const QString &)), this, SLOT(onPropertyChanged(const QString &)));
+//        }
 
-        m_currentItem = item;
+//        m_currentItem = item;
 
-        connect(item, SIGNAL(propertyChanged(const QString &)), this, SLOT(onPropertyChanged(const QString &)));
-//        connect(item, SIGNAL(subItemChanged(const QString &)), this, SLOT(onPropertyChanged(const QString &)));
+//        connect(item, SIGNAL(propertyChanged(const QString &)), this, SLOT(onPropertyChanged(const QString &)));
+////        connect(item, SIGNAL(subItemChanged(const QString &)), this, SLOT(onPropertyChanged(const QString &)));
 
-        updateWidgets();
-    }
-}
+//        updateWidgets();
+//    }
+//}
 
 
-void BeamEditorWidget::onIntensityEditingFinished()
-{
-    if(m_block_signals) return;
-    m_currentItem->setRegisteredProperty(BeamItem::P_INTENSITY, m_intensityText->text().toDouble());
-}
+//void BeamEditorWidget::onIntensityEditingFinished()
+//{
+//    if(m_block_signals) return;
+//    m_currentItem->setRegisteredProperty(BeamItem::P_INTENSITY, m_intensityText->text().toDouble());
+//}
 
 
-void BeamEditorWidget::onChangedWavelength(const QString & /* text */)
-{
-    if(m_block_signals) return;
-    m_currentItem->setRegisteredProperty(BeamItem::P_WAVELENGTH, m_wavelengthSpinBox->value());
-}
+//void BeamEditorWidget::onChangedWavelength(const QString & /* text */)
+//{
+//    if(m_block_signals) return;
+//    m_currentItem->setRegisteredProperty(BeamItem::P_WAVELENGTH, m_wavelengthSpinBox->value());
+//}
 
-void BeamEditorWidget::onChangedAngle(const QString &)
-{
-    if(m_block_signals) return;
+//void BeamEditorWidget::onChangedAngle(const QString &)
+//{
+//    if(m_block_signals) return;
 
-    AngleProperty inclination_angle = m_currentItem->getRegisteredProperty(BeamItem::P_INCLINATION_ANGLE).value<AngleProperty>();
-    inclination_angle.setValue(m_inclinationAngleSpinBox->value());
-    m_currentItem->setRegisteredProperty(BeamItem::P_INCLINATION_ANGLE, inclination_angle.getVariant());
+//    AngleProperty inclination_angle = m_currentItem->getRegisteredProperty(BeamItem::P_INCLINATION_ANGLE).value<AngleProperty>();
+//    inclination_angle.setValue(m_inclinationAngleSpinBox->value());
+//    m_currentItem->setRegisteredProperty(BeamItem::P_INCLINATION_ANGLE, inclination_angle.getVariant());
 
-    AngleProperty azimuthal_angle = m_currentItem->getRegisteredProperty(BeamItem::P_AZIMUTHAL_ANGLE).value<AngleProperty>();
-    azimuthal_angle.setValue(m_azimuthalAngleSpinBox->value());
-    m_currentItem->setRegisteredProperty(BeamItem::P_AZIMUTHAL_ANGLE, azimuthal_angle.getVariant());
-}
+//    AngleProperty azimuthal_angle = m_currentItem->getRegisteredProperty(BeamItem::P_AZIMUTHAL_ANGLE).value<AngleProperty>();
+//    azimuthal_angle.setValue(m_azimuthalAngleSpinBox->value());
+//    m_currentItem->setRegisteredProperty(BeamItem::P_AZIMUTHAL_ANGLE, azimuthal_angle.getVariant());
+//}
 
 
-void BeamEditorWidget::onPropertyChanged(const QString &name)
-{
-    qDebug() << "BeamEditorWidget::onPropertyChanged() -> " << name;
-    updateWidgets();
-}
+//void BeamEditorWidget::onPropertyChanged(const QString &name)
+//{
+//    qDebug() << "BeamEditorWidget::onPropertyChanged() -> " << name;
+//    updateWidgets();
+//}
 
 
 
-void BeamEditorWidget::onAngleUnitsChanged(int)
-{
-    if(m_block_signals) return;
-    qDebug() << "BeamEditorWidget::onAngleUnitsChanged(int) " << m_angleUnits->currentText();
-    AngleProperty inclination_angle = m_currentItem->getRegisteredProperty(BeamItem::P_INCLINATION_ANGLE).value<AngleProperty>();
-    inclination_angle.setUnits(m_angleUnits->currentText());
-    m_currentItem->setRegisteredProperty(BeamItem::P_INCLINATION_ANGLE, inclination_angle.getVariant());
-}
+//void BeamEditorWidget::onAngleUnitsChanged(int)
+//{
+//    if(m_block_signals) return;
+//    qDebug() << "BeamEditorWidget::onAngleUnitsChanged(int) " << m_angleUnits->currentText();
+//    AngleProperty inclination_angle = m_currentItem->getRegisteredProperty(BeamItem::P_INCLINATION_ANGLE).value<AngleProperty>();
+//    inclination_angle.setUnits(m_angleUnits->currentText());
+//    m_currentItem->setRegisteredProperty(BeamItem::P_INCLINATION_ANGLE, inclination_angle.getVariant());
+//}
 
 
-void BeamEditorWidget::updateWidgets()
-{
-    Q_ASSERT(m_currentItem);
-    qDebug() << "DetectorEditorWidget::updateWidgets() ->";
+//void BeamEditorWidget::updateWidgets()
+//{
+//    Q_ASSERT(m_currentItem);
+//    qDebug() << "DetectorEditorWidget::updateWidgets() ->";
 
-    setBlockSignals(true);
-    m_intensityText->setText(QString::number(m_currentItem->getRegisteredProperty(BeamItem::P_INTENSITY).toDouble()));
-    m_wavelengthSpinBox->setValue(m_currentItem->getRegisteredProperty(BeamItem::P_WAVELENGTH).toDouble());
+//    setBlockSignals(true);
+//    m_intensityText->setText(QString::number(m_currentItem->getRegisteredProperty(BeamItem::P_INTENSITY).toDouble()));
+//    m_wavelengthSpinBox->setValue(m_currentItem->getRegisteredProperty(BeamItem::P_WAVELENGTH).toDouble());
 
-    AngleProperty inclination_angle = m_currentItem->getRegisteredProperty(BeamItem::P_INCLINATION_ANGLE).value<AngleProperty>();
-    AngleProperty azimuthal_angle = m_currentItem->getRegisteredProperty(BeamItem::P_AZIMUTHAL_ANGLE).value<AngleProperty>();
+//    AngleProperty inclination_angle = m_currentItem->getRegisteredProperty(BeamItem::P_INCLINATION_ANGLE).value<AngleProperty>();
+//    AngleProperty azimuthal_angle = m_currentItem->getRegisteredProperty(BeamItem::P_AZIMUTHAL_ANGLE).value<AngleProperty>();
 
-    // Units from inclination_agle will control azimuthal_angle too
-    m_angleUnits->clear();
-    m_angleUnits->addItems(inclination_angle.getLabels());
-    m_angleUnits->setCurrentText(inclination_angle.getUnits());
+//    // Units from inclination_agle will control azimuthal_angle too
+//    m_angleUnits->clear();
+//    m_angleUnits->addItems(inclination_angle.getLabels());
+//    m_angleUnits->setCurrentText(inclination_angle.getUnits());
+
+//    setAngleUnits(m_inclinationAngleSpinBox, inclination_angle);
+//    setAngleUnits(m_azimuthalAngleSpinBox, azimuthal_angle);
+
+//    setBlockSignals(false);
+//}
+
+
+//void BeamEditorWidget::setBlockSignals(bool flag)
+//{
+//    m_block_signals = flag;
+//}
+
+
+//void BeamEditorWidget::setAngleUnits(QDoubleSpinBox *editor, const AngleProperty &units, double min_deg, double max_deg)
+//{
+//    if(units.inDegrees()) {
+//        editor->setSingleStep(0.01);
+//        editor->setMinimum(min_deg);
+//        editor->setMaximum(max_deg);
+//        editor->setDecimals(3);
+//        editor->setValue(units.getValue());
+//    }
+//    else {
+//        editor->setSingleStep(0.0001);
+//        editor->setMinimum(Units::deg2rad(min_deg));
+//        editor->setMaximum(Units::deg2rad(max_deg));
+//        editor->setDecimals(6);
+//        editor->setValue(units.getValue());
+//    }
+//}
 
-    setAngleUnits(m_inclinationAngleSpinBox, inclination_angle);
-    setAngleUnits(m_azimuthalAngleSpinBox, azimuthal_angle);
-
-    setBlockSignals(false);
-}
-
-
-void BeamEditorWidget::setBlockSignals(bool flag)
-{
-    m_block_signals = flag;
-}
-
-
-void BeamEditorWidget::setAngleUnits(QDoubleSpinBox *editor, const AngleProperty &units, double min_deg, double max_deg)
-{
-    if(units.inDegrees()) {
-        editor->setSingleStep(0.01);
-        editor->setMinimum(min_deg);
-        editor->setMaximum(max_deg);
-        editor->setDecimals(3);
-        editor->setValue(units.getValue());
-    }
-    else {
-        editor->setSingleStep(0.0001);
-        editor->setMinimum(Units::deg2rad(min_deg));
-        editor->setMaximum(Units::deg2rad(max_deg));
-        editor->setDecimals(6);
-        editor->setValue(units.getValue());
-    }
-}
diff --git a/GUI/coregui/Views/InstrumentWidgets/BeamEditorWidget.h b/GUI/coregui/Views/InstrumentWidgets/BeamEditorWidget.h
index c78fe2d93af..e730340a858 100644
--- a/GUI/coregui/Views/InstrumentWidgets/BeamEditorWidget.h
+++ b/GUI/coregui/Views/InstrumentWidgets/BeamEditorWidget.h
@@ -13,53 +13,53 @@
 //
 // ************************************************************************** //
 
-#ifndef BEAM_EDITOR_WIDGET_H
-#define BEAM_EDITOR_WIDGET_H
+//#ifndef BEAM_EDITOR_WIDGET_H
+//#define BEAM_EDITOR_WIDGET_H
 
-#include "WinDllMacros.h"
-#include <QWidget>
+//#include "WinDllMacros.h"
+//#include <QWidget>
 
-class QComboBox;
-class QDoubleSpinBox;
-class QLineEdit;
-class QLabel;
-class BeamItem;
-class QDoubleValidator;
-class AngleProperty;
+//class QComboBox;
+//class QDoubleSpinBox;
+//class QLineEdit;
+//class QLabel;
+//class BeamItem;
+//class QDoubleValidator;
+//class AngleProperty;
 
-class BA_CORE_API_ BeamEditorWidget : public QWidget
-{
-    Q_OBJECT
+//class BA_CORE_API_ BeamEditorWidget : public QWidget
+//{
+//    Q_OBJECT
 
-public:
-    BeamEditorWidget(QWidget *parent = 0);
+//public:
+//    BeamEditorWidget(QWidget *parent = 0);
 
-    void initFromItem(BeamItem *item);
+//    void initFromItem(BeamItem *item);
 
-public slots:
-    void onIntensityEditingFinished();
-    void onChangedWavelength(const QString &);
-    void onChangedAngle(const QString &);
+//public slots:
+//    void onIntensityEditingFinished();
+//    void onChangedWavelength(const QString &);
+//    void onChangedAngle(const QString &);
 
-    void onPropertyChanged(const QString &);
+//    void onPropertyChanged(const QString &);
 
-    void onAngleUnitsChanged(int);
+//    void onAngleUnitsChanged(int);
 
-private:
-    void updateWidgets();
-    void setBlockSignals(bool flag);
-    void setAngleUnits(QDoubleSpinBox *, const AngleProperty &units, double min_deg = -90.0, double max_deg = 90.0);
+//private:
+//    void updateWidgets();
+//    void setBlockSignals(bool flag);
+//    void setAngleUnits(QDoubleSpinBox *, const AngleProperty &units, double min_deg = -90.0, double max_deg = 90.0);
 
-    QLineEdit *m_intensityText;
-    QDoubleValidator *m_intensityValidator;
-    QDoubleSpinBox *m_wavelengthSpinBox;
-    QComboBox *m_angleUnits;
-    QDoubleSpinBox *m_inclinationAngleSpinBox;
-    QDoubleSpinBox *m_azimuthalAngleSpinBox;
-    QComboBox *m_beamTypeCombo;
-    BeamItem *m_currentItem;
-    bool m_block_signals;
-};
+//    QLineEdit *m_intensityText;
+//    QDoubleValidator *m_intensityValidator;
+//    QDoubleSpinBox *m_wavelengthSpinBox;
+//    QComboBox *m_angleUnits;
+//    QDoubleSpinBox *m_inclinationAngleSpinBox;
+//    QDoubleSpinBox *m_azimuthalAngleSpinBox;
+//    QComboBox *m_beamTypeCombo;
+//    BeamItem *m_currentItem;
+//    bool m_block_signals;
+//};
 
 
-#endif
+//#endif
diff --git a/GUI/coregui/Views/InstrumentWidgets/InstrumentEditorWidget.cpp b/GUI/coregui/Views/InstrumentWidgets/InstrumentEditorWidget.cpp
index a42eabccae6..fce71d1f51a 100644
--- a/GUI/coregui/Views/InstrumentWidgets/InstrumentEditorWidget.cpp
+++ b/GUI/coregui/Views/InstrumentWidgets/InstrumentEditorWidget.cpp
@@ -104,7 +104,7 @@ void InstrumentEditorWidget::setInstrumentItem(ParameterizedItem *instrument)
         updateWidgets();
     }
 
-    BeamItem *beamItem(0);
+    TestBeamItem *beamItem(0);
     DetectorItem *detectorItem(0);
 
     instrument->print();
@@ -113,7 +113,7 @@ void InstrumentEditorWidget::setInstrumentItem(ParameterizedItem *instrument)
         qDebug() << "XXX " << item->modelType();
         item->print();
         if(item->modelType() == Constants::BeamType) {
-            beamItem = dynamic_cast<BeamItem *>(item);
+            beamItem = dynamic_cast<TestBeamItem *>(item);
         }
         else if(item->modelType() == Constants::DetectorType) {
             detectorItem = dynamic_cast<DetectorItem *>(item);
@@ -127,8 +127,8 @@ void InstrumentEditorWidget::setInstrumentItem(ParameterizedItem *instrument)
 //    m_testWidget->setBeamItem(beamItem);
 
 
-    TestBeamItem *testBeam = new TestBeamItem;
-    m_instrumentComponents->setBeamItem(testBeam);
+//    TestBeamItem *testBeam = new TestBeamItem;
+    m_instrumentComponents->setBeamItem(beamItem);
 
     TestDetectorItem *testDetector = new TestDetectorItem;
     m_instrumentComponents->setDetectorItem(testDetector);
diff --git a/GUI/coregui/Views/JobWidgets/ModelTuningDelegate.cpp b/GUI/coregui/Views/JobWidgets/ModelTuningDelegate.cpp
index 012f8042daa..3a9448aa50a 100644
--- a/GUI/coregui/Views/JobWidgets/ModelTuningDelegate.cpp
+++ b/GUI/coregui/Views/JobWidgets/ModelTuningDelegate.cpp
@@ -35,7 +35,7 @@
 
 namespace {
 const double maximum_doublespin_value(10000.0);
-const double minimum_doublespin_value(10000.0);
+const double minimum_doublespin_value(0.0);
 }
 
 ModelTuningDelegate::SliderData::SliderData()
-- 
GitLab