diff --git a/GUI/coregui/Models/BeamItems.cpp b/GUI/coregui/Models/BeamItems.cpp index 70590c911609d19749b1833fecb6919f11ccb952..f5bc558dc8e6ce6ea41b1f45868108e6d870408b 100644 --- a/GUI/coregui/Models/BeamItems.cpp +++ b/GUI/coregui/Models/BeamItems.cpp @@ -103,6 +103,11 @@ void BeamItem::setAzimuthalAngle(double value) item<BeamDistributionItem>(P_AZIMUTHAL_ANGLE)->resetToValue(value); } +BeamAzimuthalAngleItem* BeamItem::azimuthalAngleItem() const +{ + return item<BeamAzimuthalAngleItem>(P_AZIMUTHAL_ANGLE); +} + std::unique_ptr<Beam> BeamItem::createBeam() const { double lambda = wavelength(); @@ -145,7 +150,7 @@ SpecularBeamItem::SpecularBeamItem() : BeamItem("SpecularBeam") initInclinationAngle<SpecularBeamInclinationItem>(); initWavelength<SpecularBeamWavelengthItem>(); - getItem(P_AZIMUTHAL_ANGLE)->setVisible(false); + azimuthalAngleItem()->setVisible(false); getItem(P_POLARIZATION)->setVisible(false); auto item = addGroupProperty(P_FOOPTPRINT, "Footprint group"); diff --git a/GUI/coregui/Models/BeamItems.h b/GUI/coregui/Models/BeamItems.h index c7df4a7c640d7cc690ca4aef88b41d0dfdeb2105..ef8889caa7823ada9d4e884409ac49839a83cfa4 100644 --- a/GUI/coregui/Models/BeamItems.h +++ b/GUI/coregui/Models/BeamItems.h @@ -19,6 +19,7 @@ class BasicAxisItem; class Beam; +class BeamAzimuthalAngleItem; class BeamDistributionItem; class BeamWavelengthItem; class FootprintItem; @@ -30,8 +31,8 @@ private: static const QString P_INTENSITY; static const QString P_WAVELENGTH; static const QString P_INCLINATION_ANGLE; -public: static const QString P_AZIMUTHAL_ANGLE; +public: static const QString P_POLARIZATION; ~BeamItem() override; @@ -50,6 +51,7 @@ public: double getAzimuthalAngle() const; void setAzimuthalAngle(double value); + BeamAzimuthalAngleItem* azimuthalAngleItem() const; std::unique_ptr<Beam> createBeam() const; diff --git a/GUI/coregui/Models/TransformFromDomain.cpp b/GUI/coregui/Models/TransformFromDomain.cpp index ed2c2edf30b8f0e0aeafbdc9c88ed5b48aa87202..b33fe5581609585e1974e862e9e800602cd53433 100644 --- a/GUI/coregui/Models/TransformFromDomain.cpp +++ b/GUI/coregui/Models/TransformFromDomain.cpp @@ -74,10 +74,6 @@ void setPositionVariance(SessionItem* item, const IInterferenceFunction& iff); void setDistribution(SessionItem* item, ParameterDistribution par_distr, QString group_name, double factor = 1.0); -void addDistributionToBeamItem(ParameterDistribution::WhichParameter which, - const QString& item_name, const ParameterDistribution& distribution, - const BeamItem* beam_item); - void addDistributionToBeamItem(ParameterDistribution::WhichParameter which, BeamDistributionItem* item, const ParameterDistribution& distribution); @@ -233,7 +229,8 @@ void TransformFromDomain::setGISASBeamItem(BeamItem* beam_item, const GISASSimul beam_item->inclinationAngleItem(), distributions[i]); addDistributionToBeamItem(ParameterDistribution::BeamAzimuthalAngle, - BeamItem::P_AZIMUTHAL_ANGLE, distributions[i], beam_item); + beam_item->azimuthalAngleItem(), + distributions[i]); } // polarization parameters @@ -807,17 +804,6 @@ void setDistribution(SessionItem* part_distr_item, ParameterDistribution par_dis distItem->init_limits_group(par_distr.getLimits(), factor); } -void addDistributionToBeamItem(ParameterDistribution::WhichParameter which, - const QString& item_name, const ParameterDistribution& distribution, - const BeamItem* beam_item) -{ - if (distribution.whichParameter() != which) - return; - - const auto beam_parameter = dynamic_cast<BeamDistributionItem*>(beam_item->getItem(item_name)); - TransformFromDomain::setItemFromSample(beam_parameter, distribution); -} - void addDistributionToBeamItem(ParameterDistribution::WhichParameter which, BeamDistributionItem* item, const ParameterDistribution& distribution) diff --git a/GUI/coregui/Models/TransformToDomain.cpp b/GUI/coregui/Models/TransformToDomain.cpp index 8eed27c9c761b38256a30e86c2d260f4ffeec0f6..4aee56429abdf6dab0e861d3bce32aa20c501d82 100644 --- a/GUI/coregui/Models/TransformToDomain.cpp +++ b/GUI/coregui/Models/TransformToDomain.cpp @@ -149,8 +149,8 @@ void TransformToDomain::addDistributionParametersToSimulation(const BeamItem& be ParameterDistribution::BeamInclinationAngle, beam_item.inclinationAngleItem(), simulation); setParameterDistributionToSimulation<BeamAzimuthalAngleItem>( - ParameterDistribution::BeamAzimuthalAngle, beam_item.getItem(BeamItem::P_AZIMUTHAL_ANGLE), - simulation); + ParameterDistribution::BeamAzimuthalAngle, + beam_item.azimuthalAngleItem(), simulation); } void TransformToDomain::addBeamDivergencesToScan(const BeamItem& beam_item, diff --git a/GUI/coregui/Views/InstrumentWidgets/GISASBeamEditor.cpp b/GUI/coregui/Views/InstrumentWidgets/GISASBeamEditor.cpp index 19dd1252fa175fad072ee97571326b46734c5f76..70fa36ad97a3204e54feb57a957ad0b6cc40d300 100644 --- a/GUI/coregui/Views/InstrumentWidgets/GISASBeamEditor.cpp +++ b/GUI/coregui/Views/InstrumentWidgets/GISASBeamEditor.cpp @@ -13,6 +13,7 @@ // ************************************************************************************************ #include "GUI/coregui/Views/InstrumentWidgets/GISASBeamEditor.h" +#include "GUI/coregui/Models/BeamAngleItems.h" #include "GUI/coregui/Models/BeamDistributionItem.h" #include "GUI/coregui/Models/BeamWavelengthItem.h" #include "GUI/coregui/Models/InstrumentItems.h" @@ -70,7 +71,7 @@ void GISASBeamEditor::subscribeToItem() auto inclinationItem = beamItem()->inclinationAngleItem(); m_inclinationEditor->setItem(inclinationItem->getItem(BeamDistributionItem::P_DISTRIBUTION)); - auto azimuthalItem = beamItem()->getItem(BeamItem::P_AZIMUTHAL_ANGLE); + auto azimuthalItem = beamItem()->azimuthalAngleItem(); m_azimuthalEditor->setItem(azimuthalItem->getItem(BeamDistributionItem::P_DISTRIBUTION)); } diff --git a/GUI/coregui/Views/InstrumentWidgets/OffSpecularBeamEditor.cpp b/GUI/coregui/Views/InstrumentWidgets/OffSpecularBeamEditor.cpp index 2fad56c60667b54588b85eaf05763d6b180c8a18..a93cd28a0ddb554a027e482787d304da0aa0f127 100644 --- a/GUI/coregui/Views/InstrumentWidgets/OffSpecularBeamEditor.cpp +++ b/GUI/coregui/Views/InstrumentWidgets/OffSpecularBeamEditor.cpp @@ -13,6 +13,7 @@ // ************************************************************************************************ #include "GUI/coregui/Views/InstrumentWidgets/OffSpecularBeamEditor.h" +#include "GUI/coregui/Models/BeamAngleItems.h" #include "GUI/coregui/Models/BeamDistributionItem.h" #include "GUI/coregui/Models/BeamWavelengthItem.h" #include "GUI/coregui/Models/InstrumentItems.h" @@ -70,7 +71,7 @@ void OffSpecularBeamEditor::subscribeToItem() auto inclinationItem = instrumentItem()->getItem(OffSpecularInstrumentItem::P_ALPHA_AXIS); m_inclinationEditor->setItem(inclinationItem); - auto azimuthalItem = beamItem()->getItem(BeamItem::P_AZIMUTHAL_ANGLE); + auto azimuthalItem = beamItem()->azimuthalAngleItem(); m_azimuthalEditor->setItem(azimuthalItem->getItem(BeamDistributionItem::P_DISTRIBUTION)); }