diff --git a/GUI/coregui/Models/DetectorItems.h b/GUI/coregui/Models/DetectorItems.h index 979d23b1a0d45094a188dd85aa4529e2cd71d301..aae8e2c210e0a1f43806894f9d12a93fd231cc48 100644 --- a/GUI/coregui/Models/DetectorItems.h +++ b/GUI/coregui/Models/DetectorItems.h @@ -17,10 +17,11 @@ #ifndef DETECTORITEMS_H #define DETECTORITEMS_H -#include "RectangularDetectorItem.h" -#include "SphericalDetectorItem.h" +#include "SessionItem.h" class MaskContainerItem; +class IDetector2D; +class IResolutionFunction2D; //! DetectorItem, holds masks and either rectangular or spherical detector as sub item class BA_CORE_API_ DetectorContainerItem : public SessionItem @@ -28,7 +29,7 @@ class BA_CORE_API_ DetectorContainerItem : public SessionItem public: static const QString P_DETECTOR; static const QString T_MASKS; - explicit DetectorContainerItem(); + DetectorContainerItem(); virtual ~DetectorContainerItem(){} MaskContainerItem *maskContainerItem() const; diff --git a/GUI/coregui/Models/ItemFactory.cpp b/GUI/coregui/Models/ItemFactory.cpp index c518adc850c81d2fdc694a06df0ee42aa181fea0..e01598ebf22acad893f3832b7c784b9f813cd1c0 100644 --- a/GUI/coregui/Models/ItemFactory.cpp +++ b/GUI/coregui/Models/ItemFactory.cpp @@ -20,6 +20,8 @@ #include "BeamItem.h" #include "BeamWavelengthItem.h" #include "DetectorItems.h" +#include "SphericalDetectorItem.h" +#include "RectangularDetectorItem.h" #include "FTDecayFunctionItems.h" #include "FTDistributionItems.h" #include "FitParameterItems.h" @@ -76,7 +78,6 @@ ItemFactory::ItemMap_t initializeItemMap() { result[Constants::InterferenceFunction2DLatticeType] = &createInstance<InterferenceFunction2DLatticeItem>; result[Constants::InterferenceFunction1DLatticeType] = &createInstance<InterferenceFunction1DLatticeItem>; result[Constants::InstrumentType] = &createInstance<InstrumentItem>; - result[Constants::DetectorContainerType] = &createInstance<DetectorContainerItem>; result[Constants::BeamType] = &createInstance<BeamItem>; result[Constants::VectorType] = &createInstance<VectorItem>; result[Constants::PropertyType] = &createInstance<PropertyItem>; diff --git a/GUI/coregui/Models/RectangularDetectorItem.cpp b/GUI/coregui/Models/RectangularDetectorItem.cpp index bcecff006dbaf26e7d358b65aec8879e2fe8b1ce..aa7f806791da0b765666ab7de7d9dffccc267b86 100644 --- a/GUI/coregui/Models/RectangularDetectorItem.cpp +++ b/GUI/coregui/Models/RectangularDetectorItem.cpp @@ -71,11 +71,10 @@ const QString RectangularDetectorItem::P_DBEAM_V0 = "v0 (dbeam)"; const QString RectangularDetectorItem::P_DISTANCE = "Distance"; RectangularDetectorItem::RectangularDetectorItem() - : SessionItem(Constants::RectangularDetectorType) - , m_is_constructed(false) + : DetectorItem(Constants::RectangularDetectorType), m_is_constructed(false) { // axes parameters - SessionItem *item = addGroupProperty(P_X_AXIS, Constants::BasicAxisType); + SessionItem* item = addGroupProperty(P_X_AXIS, Constants::BasicAxisType); item->getItem(BasicAxisItem::P_TITLE)->setVisible(false); item->getItem(BasicAxisItem::P_MIN)->setVisible(false); item->setItemValue(BasicAxisItem::P_MAX, default_detector_width); @@ -105,47 +104,42 @@ RectangularDetectorItem::RectangularDetectorItem() item->setItemValue(VectorItem::P_Y, -1.0); addProperty(P_U0, default_detector_width / 2.) - ->setToolTip(tooltip_u0).setLimits(RealLimits::limitless()); - addProperty(P_V0, 0.0) - ->setToolTip(tooltip_v0).setLimits(RealLimits::limitless()); + ->setToolTip(tooltip_u0) + .setLimits(RealLimits::limitless()); + addProperty(P_V0, 0.0)->setToolTip(tooltip_v0).setLimits(RealLimits::limitless()); addProperty(P_DBEAM_U0, default_detector_width / 2.) - ->setToolTip(tooltip_dbeam_u0).setLimits(RealLimits::limitless()); - addProperty(P_DBEAM_V0, 0.0) - ->setToolTip(tooltip_dbeam_v0).setLimits(RealLimits::limitless()); + ->setToolTip(tooltip_dbeam_u0) + .setLimits(RealLimits::limitless()); + addProperty(P_DBEAM_V0, 0.0)->setToolTip(tooltip_dbeam_v0).setLimits(RealLimits::limitless()); addProperty(P_DISTANCE, default_detector_distance) - ->setToolTip(QStringLiteral("Distance in [mm] from the sample origin to the detector plane")); + ->setToolTip( + QStringLiteral("Distance in [mm] from the sample origin to the detector plane")); update_properties_appearance(); - m_is_constructed=true; + m_is_constructed = true; - mapper()->setOnPropertyChange( - [this](const QString &name) { - if(name == P_ALIGNMENT && m_is_constructed) update_properties_appearance(); + mapper()->setOnPropertyChange([this](const QString& name) { + if (name == P_ALIGNMENT && m_is_constructed) + update_properties_appearance(); }); } std::unique_ptr<IDetector2D> RectangularDetectorItem::createDetector() const { // basic axes parameters - auto x_axis = dynamic_cast<BasicAxisItem *>( - getItem(RectangularDetectorItem::P_X_AXIS)); + auto x_axis = dynamic_cast<BasicAxisItem*>(getItem(RectangularDetectorItem::P_X_AXIS)); Q_ASSERT(x_axis); int n_x = x_axis->getItemValue(BasicAxisItem::P_NBINS).toInt(); double width = x_axis->getItemValue(BasicAxisItem::P_MAX).toDouble(); - auto y_axis = dynamic_cast<BasicAxisItem *>( - getItem(RectangularDetectorItem::P_Y_AXIS)); + auto y_axis = dynamic_cast<BasicAxisItem*>(getItem(RectangularDetectorItem::P_Y_AXIS)); Q_ASSERT(y_axis); int n_y = y_axis->getItemValue(BasicAxisItem::P_NBINS).toInt(); double height = y_axis->getItemValue(BasicAxisItem::P_MAX).toDouble(); -// std::unique_ptr<RectangularDetector> result(new RectangularDetector(100, 20.0, 100, 20.0)); -// result->setPerpendicularToSampleX(1000.0, 10.0, 0.0); - std::unique_ptr<RectangularDetector> result(new RectangularDetector(n_x, width, n_y, height)); - // distance and alighnment double u0 = getItemValue(P_U0).toDouble(); double v0 = getItemValue(P_V0).toDouble(); @@ -180,24 +174,23 @@ std::unique_ptr<IDetector2D> RectangularDetectorItem::createDetector() const std::unique_ptr<IResolutionFunction2D> RectangularDetectorItem::createResolutionFunction() { - auto resfuncItem = dynamic_cast<ResolutionFunctionItem *>( - getGroupItem(P_RESOLUTION_FUNCTION)); + auto resfuncItem = dynamic_cast<ResolutionFunctionItem*>(getGroupItem(P_RESOLUTION_FUNCTION)); Q_ASSERT(resfuncItem); std::unique_ptr<IResolutionFunction2D> result(resfuncItem->createResolutionFunction()); return result; } -void RectangularDetectorItem::setDetectorAlignment(const QString &alignment) +void RectangularDetectorItem::setDetectorAlignment(const QString& alignment) { ComboProperty combo_property = getItemValue(RectangularDetectorItem::P_ALIGNMENT).value<ComboProperty>(); - if(!combo_property.getValues().contains(alignment)) { - throw GUIHelpers::Error("RectangularDetectorItem::setDetectorAlignment -> Unexpected alignment"); + if (!combo_property.getValues().contains(alignment)) { + throw GUIHelpers::Error( + "RectangularDetectorItem::setDetectorAlignment -> Unexpected alignment"); } combo_property.setValue(alignment); setItemValue(RectangularDetectorItem::P_ALIGNMENT, combo_property.getVariant()); - } //! updates property tooltips and visibility flags, depending from type of alignment selected @@ -207,7 +200,7 @@ void RectangularDetectorItem::update_properties_appearance() ComboProperty alignment = getItemValue(P_ALIGNMENT).value<ComboProperty>(); QStringList prop_list; prop_list << P_NORMAL << P_DIRECTION << P_U0 << P_V0 << P_DBEAM_U0 << P_DBEAM_V0 << P_DISTANCE; - foreach(auto prop, prop_list) { + foreach (auto prop, prop_list) { getItem(prop)->setVisible(false); } @@ -248,18 +241,14 @@ void RectangularDetectorItem::update_properties_appearance() kvector_t RectangularDetectorItem::getNormalVector() const { - auto item = dynamic_cast<VectorItem *>( - getItem(RectangularDetectorItem::P_NORMAL)); + auto item = dynamic_cast<VectorItem*>(getItem(RectangularDetectorItem::P_NORMAL)); Q_ASSERT(item); return item->getVector(); } kvector_t RectangularDetectorItem::getDirectionVector() const { - auto item = dynamic_cast<VectorItem *>( - getItem(RectangularDetectorItem::P_DIRECTION)); + auto item = dynamic_cast<VectorItem*>(getItem(RectangularDetectorItem::P_DIRECTION)); Q_ASSERT(item); return item->getVector(); } - - diff --git a/GUI/coregui/Models/RectangularDetectorItem.h b/GUI/coregui/Models/RectangularDetectorItem.h index bc21b960b933899f355a150dfa5c4454d5ea6ac2..50b42618e8cb1175b175e48a497e4af2b0651f0d 100644 --- a/GUI/coregui/Models/RectangularDetectorItem.h +++ b/GUI/coregui/Models/RectangularDetectorItem.h @@ -17,14 +17,10 @@ #ifndef RECTANGULARDETECTORITEM_H #define RECTANGULARDETECTORITEM_H -#include "SessionItem.h" +#include "DetectorItems.h" #include "Vectors3D.h" -class IDetector2D; -class IResolutionFunction2D; - - -class BA_CORE_API_ RectangularDetectorItem : public SessionItem +class BA_CORE_API_ RectangularDetectorItem : public DetectorItem { public: static const QString P_X_AXIS; @@ -39,12 +35,12 @@ public: static const QString P_DBEAM_V0; static const QString P_DISTANCE; - explicit RectangularDetectorItem(); + RectangularDetectorItem(); std::unique_ptr<IDetector2D> createDetector() const; std::unique_ptr<IResolutionFunction2D> createResolutionFunction(); - void setDetectorAlignment(const QString &alignment); + void setDetectorAlignment(const QString& alignment); private: void update_properties_appearance(); diff --git a/GUI/coregui/Models/SphericalDetectorItem.cpp b/GUI/coregui/Models/SphericalDetectorItem.cpp index 0c9a56c605c404543bed8f811b1383108fdcf3f7..bacd0a56cdf4496ca028be4c06f7c23e93936bb9 100644 --- a/GUI/coregui/Models/SphericalDetectorItem.cpp +++ b/GUI/coregui/Models/SphericalDetectorItem.cpp @@ -24,10 +24,9 @@ const QString SphericalDetectorItem::P_PHI_AXIS = "Phi axis"; const QString SphericalDetectorItem::P_ALPHA_AXIS = "Alpha axis"; const QString SphericalDetectorItem::P_RESOLUTION_FUNCTION = "Type"; -SphericalDetectorItem::SphericalDetectorItem() - : SessionItem(Constants::SphericalDetectorType) +SphericalDetectorItem::SphericalDetectorItem() : DetectorItem(Constants::SphericalDetectorType) { - SessionItem *item = addGroupProperty(P_PHI_AXIS, Constants::BasicAxisType); + SessionItem* item = addGroupProperty(P_PHI_AXIS, Constants::BasicAxisType); item->getItem(BasicAxisItem::P_TITLE)->setVisible(false); item->setItemValue(BasicAxisItem::P_MIN, -1.0); item->setItemValue(BasicAxisItem::P_MAX, 1.0); @@ -45,23 +44,17 @@ std::unique_ptr<IDetector2D> SphericalDetectorItem::createDetector() const { std::unique_ptr<SphericalDetector> result(new SphericalDetector()); - auto x_axis = dynamic_cast<BasicAxisItem *>( - getItem(SphericalDetectorItem::P_PHI_AXIS)); + auto x_axis = dynamic_cast<BasicAxisItem*>(getItem(SphericalDetectorItem::P_PHI_AXIS)); Q_ASSERT(x_axis); int n_x = x_axis->getItemValue(BasicAxisItem::P_NBINS).toInt(); - double x_min - = Units::deg2rad(x_axis->getItemValue(BasicAxisItem::P_MIN).toDouble()); - double x_max - = Units::deg2rad(x_axis->getItemValue(BasicAxisItem::P_MAX).toDouble()); + double x_min = Units::deg2rad(x_axis->getItemValue(BasicAxisItem::P_MIN).toDouble()); + double x_max = Units::deg2rad(x_axis->getItemValue(BasicAxisItem::P_MAX).toDouble()); - auto y_axis = dynamic_cast<BasicAxisItem *>( - getItem(SphericalDetectorItem::P_ALPHA_AXIS)); + auto y_axis = dynamic_cast<BasicAxisItem*>(getItem(SphericalDetectorItem::P_ALPHA_AXIS)); Q_ASSERT(y_axis); int n_y = y_axis->getItemValue(BasicAxisItem::P_NBINS).toInt(); - double y_min - = Units::deg2rad(y_axis->getItemValue(BasicAxisItem::P_MIN).toDouble()); - double y_max - = Units::deg2rad(y_axis->getItemValue(BasicAxisItem::P_MAX).toDouble()); + double y_min = Units::deg2rad(y_axis->getItemValue(BasicAxisItem::P_MIN).toDouble()); + double y_max = Units::deg2rad(y_axis->getItemValue(BasicAxisItem::P_MAX).toDouble()); result->setDetectorParameters(n_x, x_min, x_max, n_y, y_min, y_max); @@ -71,11 +64,11 @@ std::unique_ptr<IDetector2D> SphericalDetectorItem::createDetector() const std::unique_ptr<IResolutionFunction2D> SphericalDetectorItem::createResolutionFunction() { // setting up resolution function - auto resfuncItem = dynamic_cast<ResolutionFunctionItem *>( - getGroupItem(P_RESOLUTION_FUNCTION)); + auto resfuncItem = dynamic_cast<ResolutionFunctionItem*>(getGroupItem(P_RESOLUTION_FUNCTION)); Q_ASSERT(resfuncItem); - std::unique_ptr<IResolutionFunction2D> result(resfuncItem->createResolutionFunction(Units::degree)); + std::unique_ptr<IResolutionFunction2D> result( + resfuncItem->createResolutionFunction(Units::degree)); return result; } diff --git a/GUI/coregui/Models/SphericalDetectorItem.h b/GUI/coregui/Models/SphericalDetectorItem.h index 6e0fc93150daf14c99cefeacc12d84f67ba20844..6d663e04de6dbd8592212aeb3a026d0d8af9b556 100644 --- a/GUI/coregui/Models/SphericalDetectorItem.h +++ b/GUI/coregui/Models/SphericalDetectorItem.h @@ -17,22 +17,18 @@ #ifndef SPHERICALDETECTORITEM_H #define SPHERICALDETECTORITEM_H -#include "SessionItem.h" +#include "DetectorItems.h" -class IDetector2D; -class IResolutionFunction2D; - -class SphericalDetectorItem : public SessionItem +class BA_CORE_API_ SphericalDetectorItem : public DetectorItem { public: static const QString P_PHI_AXIS; static const QString P_ALPHA_AXIS; static const QString P_RESOLUTION_FUNCTION; - explicit SphericalDetectorItem(); + SphericalDetectorItem(); std::unique_ptr<IDetector2D> createDetector() const; std::unique_ptr<IResolutionFunction2D> createResolutionFunction(); - }; #endif // SPHERICALDETECTORITEM_H diff --git a/GUI/coregui/Models/TransformFromDomain.cpp b/GUI/coregui/Models/TransformFromDomain.cpp index 3494db2fd3ba5b607da234359a56cacbe3648452..46ba217bffdab24ce5371d61da548daf2f05d88b 100644 --- a/GUI/coregui/Models/TransformFromDomain.cpp +++ b/GUI/coregui/Models/TransformFromDomain.cpp @@ -23,6 +23,8 @@ #include "ComboProperty.h" #include "ConvolutionDetectorResolution.h" #include "DetectorItems.h" +#include "SphericalDetectorItem.h" +#include "RectangularDetectorItem.h" #include "Distributions.h" #include "Ellipse.h" #include "FTDecayFunctionItems.h" diff --git a/GUI/coregui/Models/TransformToDomain.cpp b/GUI/coregui/Models/TransformToDomain.cpp index a28c27fa626ce44502658189afc3b8ef29a39794..802dac82d518ba9cab83a23796c45d0d50dd46a3 100644 --- a/GUI/coregui/Models/TransformToDomain.cpp +++ b/GUI/coregui/Models/TransformToDomain.cpp @@ -21,6 +21,8 @@ #include "BornAgainNamespace.h" #include "ComboProperty.h" #include "DetectorItems.h" +#include "SphericalDetectorItem.h" +#include "RectangularDetectorItem.h" #include "Distributions.h" #include "FTDecayFunctionItems.h" #include "FTDistributionItems.h" diff --git a/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.cpp b/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.cpp index 3d084665a16cc66d7de39bfea0354cad13e1bc8b..dd526f00741daccf3f2fc04e2268227328227d76 100644 --- a/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.cpp +++ b/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.cpp @@ -25,6 +25,8 @@ #include "InstrumentItem.h" #include "AxesItems.h" #include "DetectorItems.h" +#include "SphericalDetectorItem.h" +#include "RectangularDetectorItem.h" #include "IDetector2D.h" #include <QFileDialog> #include <QFileInfo> diff --git a/GUI/coregui/Views/InstrumentWidgets/DetectorEditorWidget.cpp b/GUI/coregui/Views/InstrumentWidgets/DetectorEditorWidget.cpp index 0028d90715bc474d2b5077084db7784aed1426fc..98fce51731fd007887c3a5b313a9610bfab8fab1 100644 --- a/GUI/coregui/Views/InstrumentWidgets/DetectorEditorWidget.cpp +++ b/GUI/coregui/Views/InstrumentWidgets/DetectorEditorWidget.cpp @@ -17,7 +17,8 @@ #include "DetectorEditorWidget.h" #include "ComponentBoxEditor.h" #include "DetectorItems.h" -#include "DetectorItems.h" +#include "SphericalDetectorItem.h" +#include "RectangularDetectorItem.h" #include "ExtendedDetectorDialog.h" #include "GUIHelpers.h" #include "GroupInfoBox.h" diff --git a/GUI/coregui/Views/InstrumentWidgets/DetectorMaskDelegate.cpp b/GUI/coregui/Views/InstrumentWidgets/DetectorMaskDelegate.cpp index fca368af830f1fcae9d7d5ec378c97d5d5a6d1e5..8ba108975a5c93c99a06a33d602aa5856fbfa8d1 100644 --- a/GUI/coregui/Views/InstrumentWidgets/DetectorMaskDelegate.cpp +++ b/GUI/coregui/Views/InstrumentWidgets/DetectorMaskDelegate.cpp @@ -18,6 +18,8 @@ #include "AxesItems.h" #include "ComboProperty.h" #include "DetectorItems.h" +#include "SphericalDetectorItem.h" +#include "RectangularDetectorItem.h" #include "GUIHelpers.h" #include "InstrumentModel.h" #include "IntensityDataItem.h" diff --git a/GUI/coregui/Views/InstrumentWidgets/RectangularDetectorWidget.cpp b/GUI/coregui/Views/InstrumentWidgets/RectangularDetectorWidget.cpp index 9a9e7915273bf50965eaed3ed776d35dfeda984d..8043d5ea5491f8b6397a7018730690a7631ba609 100644 --- a/GUI/coregui/Views/InstrumentWidgets/RectangularDetectorWidget.cpp +++ b/GUI/coregui/Views/InstrumentWidgets/RectangularDetectorWidget.cpp @@ -19,6 +19,7 @@ #include "ComponentBoxEditor.h" #include "ComponentEditor.h" #include "DetectorItems.h" +#include "RectangularDetectorItem.h" #include "ExtendedDetectorDialog.h" #include "GroupInfoBox.h" #include "columnresizer.h" diff --git a/GUI/coregui/Views/InstrumentWidgets/SphericalDetectorWidget.cpp b/GUI/coregui/Views/InstrumentWidgets/SphericalDetectorWidget.cpp index ae77f75c88faa4dfb474dd0bb501d4ea34112d8a..ed95ee36604386e82003ccaba6adf6bc3f1c5c76 100644 --- a/GUI/coregui/Views/InstrumentWidgets/SphericalDetectorWidget.cpp +++ b/GUI/coregui/Views/InstrumentWidgets/SphericalDetectorWidget.cpp @@ -17,6 +17,7 @@ #include "SphericalDetectorWidget.h" #include "ComponentBoxEditor.h" #include "DetectorItems.h" +#include "SphericalDetectorItem.h" #include "ExtendedDetectorDialog.h" #include "GroupInfoBox.h" #include "columnresizer.h" diff --git a/Tests/UnitTests/GUI/TestMapperCases.h b/Tests/UnitTests/GUI/TestMapperCases.h index 1972912815a0e50e6118153b10d0111b4a79eb31..8c3b4efaf7bab0846afa1cff343f9b6953a63f0f 100644 --- a/Tests/UnitTests/GUI/TestMapperCases.h +++ b/Tests/UnitTests/GUI/TestMapperCases.h @@ -7,6 +7,8 @@ #include "InterferenceFunctionItems.h" #include "ParticleLayoutItem.h" #include "DetectorItems.h" +#include "SphericalDetectorItem.h" +#include "RectangularDetectorItem.h" #include "ComboProperty.h" #include "DocumentModel.h" #include "SimulationOptionsItem.h"