diff --git a/GUI/Model/Data/MaskResultsPresenter.cpp b/GUI/Model/Data/MaskResultsPresenter.cpp index 2818e7611bc52e6de057b1fcd229e1e55048499e..180a94422096f0a05609e6e01759accb089f4e25 100644 --- a/GUI/Model/Data/MaskResultsPresenter.cpp +++ b/GUI/Model/Data/MaskResultsPresenter.cpp @@ -31,14 +31,13 @@ Datafield* createMaskPresentation(Data2DItem* data2DItem) std::unique_ptr<IShape2D> roi; Datafield* result = data2DItem->c_field()->clone(); MaskStack detectorMask; - const double scale = 1.0; const QVector<MaskItem*> maskItems = data2DItem->maskContainerItem()->maskItems(); for (auto maskIter = maskItems.rbegin(); maskIter != maskItems.rend(); maskIter++) if ((*maskIter)->isVisible()) { if (auto* roiItem = dynamic_cast<RegionOfInterestItem*>((*maskIter))) - roi = roiItem->createShape(scale); + roi = roiItem->createShape(); else { - std::unique_ptr<IShape2D> shape((*maskIter)->createShape(scale)); + std::unique_ptr<IShape2D> shape((*maskIter)->createShape()); detectorMask.maskToStack(*shape, (*maskIter)->maskValue(), true); } } diff --git a/GUI/Model/Detector/DetectorItem.cpp b/GUI/Model/Detector/DetectorItem.cpp index b66ec825052c0ed06b5aded8d2420360b8840028..35e257a4f7f3e2f6bee16e9d214603717f5a9f41 100644 --- a/GUI/Model/Detector/DetectorItem.cpp +++ b/GUI/Model/Detector/DetectorItem.cpp @@ -94,24 +94,22 @@ SelectionProperty<ResolutionFunctionItemCatalog>& DetectorItem::resolutionFuncti std::unique_ptr<IResolutionFunction2D> DetectorItem::createResolutionFunction() const { - return m_resolutionFunction->createResolutionFunction(axesToCoreUnitsFactor()); + return m_resolutionFunction->createResolutionFunction(); } void DetectorItem::addMasksToCore(IDetector* detector) const { - const double scale = axesToCoreUnitsFactor(); - ASSERT(scale == 1); // TODO remove either this or the above const QVector<MaskItem*> maskItems = m_maskContainerItem.maskItems(); for (auto maskIter = maskItems.rbegin(); maskIter != maskItems.rend(); maskIter++) if ((*maskIter)->isVisible()) { if (auto* roiItem = dynamic_cast<RegionOfInterestItem*>(*maskIter)) { - const double xlow = scale * roiItem->xLow(); - const double ylow = scale * roiItem->yLow(); - const double xup = scale * roiItem->xUp(); - const double yup = scale * roiItem->yUp(); + const double xlow = roiItem->xLow(); + const double ylow = roiItem->yLow(); + const double xup = roiItem->xUp(); + const double yup = roiItem->yUp(); detector->setRegionOfInterest(xlow, ylow, xup, yup); } else { - std::unique_ptr<IShape2D> shape((*maskIter)->createShape(scale)); + std::unique_ptr<IShape2D> shape((*maskIter)->createShape()); detector->addBinMask(*shape, (*maskIter)->maskValue()); } } diff --git a/GUI/Model/Detector/DetectorItem.h b/GUI/Model/Detector/DetectorItem.h index 19c9bce6faaf99f2fc37b9ffcd67dc871e9e546d..b29330cca762e130c194da5aeaed22cd768965a0 100644 --- a/GUI/Model/Detector/DetectorItem.h +++ b/GUI/Model/Detector/DetectorItem.h @@ -40,9 +40,6 @@ public: template <typename T> T* setResolutionFunctionType(); - //! Scales the values provided by axes (to perform deg->rad conversion on the way to domain). - double axesToCoreUnitsFactor() const { return 1.0; } // TODO rm - void writeTo(QXmlStreamWriter* w) const; void readFrom(QXmlStreamReader* r); diff --git a/GUI/Model/Detector/ResolutionFunctionItems.cpp b/GUI/Model/Detector/ResolutionFunctionItems.cpp index f6d056ba5168401930e569511cd52b093ba302e9..a3df0f7a8642f133599a1140961d3bb470b69b82 100644 --- a/GUI/Model/Detector/ResolutionFunctionItems.cpp +++ b/GUI/Model/Detector/ResolutionFunctionItems.cpp @@ -25,8 +25,7 @@ const QString SigmaY("SigmaY"); } // namespace Tag } // namespace -std::unique_ptr<IResolutionFunction2D> -ResolutionFunctionNoneItem::createResolutionFunction(double) const +std::unique_ptr<IResolutionFunction2D> ResolutionFunctionNoneItem::createResolutionFunction() const { return {}; } @@ -40,9 +39,9 @@ ResolutionFunction2DGaussianItem::ResolutionFunction2DGaussianItem() } std::unique_ptr<IResolutionFunction2D> -ResolutionFunction2DGaussianItem::createResolutionFunction(double scale) const +ResolutionFunction2DGaussianItem::createResolutionFunction() const { - return std::make_unique<ResolutionFunction2DGaussian>(scale * m_sigmaX, scale * m_sigmaY); + return std::make_unique<ResolutionFunction2DGaussian>(m_sigmaX, m_sigmaY); } void ResolutionFunction2DGaussianItem::writeTo(QXmlStreamWriter* w) const diff --git a/GUI/Model/Detector/ResolutionFunctionItems.h b/GUI/Model/Detector/ResolutionFunctionItems.h index 22665e1f20f07e53e0b7d4a4aae60270bec18553..73861b3e034b73c417aa1c619dfea37cb6f9b500 100644 --- a/GUI/Model/Detector/ResolutionFunctionItems.h +++ b/GUI/Model/Detector/ResolutionFunctionItems.h @@ -24,8 +24,7 @@ class ResolutionFunctionItem { public: virtual ~ResolutionFunctionItem() = default; - virtual std::unique_ptr<IResolutionFunction2D> - createResolutionFunction(double scale = 1.0) const = 0; + virtual std::unique_ptr<IResolutionFunction2D> createResolutionFunction() const = 0; virtual void writeTo(QXmlStreamWriter*) const {} virtual void readFrom(QXmlStreamReader*) {} @@ -33,15 +32,13 @@ public: class ResolutionFunctionNoneItem : public ResolutionFunctionItem { public: - std::unique_ptr<IResolutionFunction2D> - createResolutionFunction(double scale = 1.0) const override; + std::unique_ptr<IResolutionFunction2D> createResolutionFunction() const override; }; class ResolutionFunction2DGaussianItem : public ResolutionFunctionItem { public: ResolutionFunction2DGaussianItem(); - std::unique_ptr<IResolutionFunction2D> - createResolutionFunction(double scale = 1.0) const override; + std::unique_ptr<IResolutionFunction2D> createResolutionFunction() const override; void writeTo(QXmlStreamWriter* w) const override; void readFrom(QXmlStreamReader* r) override; diff --git a/GUI/Model/FromCore/ItemizeSimulation.cpp b/GUI/Model/FromCore/ItemizeSimulation.cpp index 44d679e6c99967e908e49ad447cce4cb299f2e97..9da36b2b907ef999bab889bb4b257a6f1960d5f4 100644 --- a/GUI/Model/FromCore/ItemizeSimulation.cpp +++ b/GUI/Model/FromCore/ItemizeSimulation.cpp @@ -50,7 +50,7 @@ namespace { -void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detector, double scale) +void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detector) { const auto* detectorMask = detector.detectorMask(); for (size_t i_mask = 0; i_mask < detectorMask->numberOfMasks(); ++i_mask) { @@ -60,11 +60,11 @@ void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detecto if (const auto* ellipse = dynamic_cast<const Ellipse*>(shape)) { auto* ellipseItem = new EllipseItem(); - ellipseItem->setXCenter(scale * ellipse->getCenterX()); - ellipseItem->setYCenter(scale * ellipse->getCenterY()); - ellipseItem->setXRadius(scale * ellipse->radiusX()); - ellipseItem->setYRadius(scale * ellipse->radiusY()); - ellipseItem->setAngle(scale * ellipse->getTheta()); + ellipseItem->setXCenter(ellipse->getCenterX()); + ellipseItem->setYCenter(ellipse->getCenterY()); + ellipseItem->setXRadius(ellipse->radiusX()); + ellipseItem->setYRadius(ellipse->radiusY()); + ellipseItem->setAngle(ellipse->getTheta()); ellipseItem->setMaskValue(mask_value); // TODO: why prepend the mask, instead of appending it? destMaskItems->insertMask(0, ellipseItem); @@ -72,10 +72,10 @@ void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detecto else if (const auto* rectangle = dynamic_cast<const Rectangle*>(shape)) { auto* rectangleItem = new RectangleItem(); - rectangleItem->setXLow(scale * rectangle->getXlow()); - rectangleItem->setYLow(scale * rectangle->getYlow()); - rectangleItem->setXUp(scale * rectangle->getXup()); - rectangleItem->setYUp(scale * rectangle->getYup()); + rectangleItem->setXLow(rectangle->getXlow()); + rectangleItem->setYLow(rectangle->getYlow()); + rectangleItem->setXUp(rectangle->getXup()); + rectangleItem->setYUp(rectangle->getYup()); rectangleItem->setMaskValue(mask_value); // TODO: why prepend the mask, instead of appending it? destMaskItems->insertMask(0, rectangleItem); @@ -86,7 +86,7 @@ void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detecto std::vector<double> xpos, ypos; polygon->getPoints(xpos, ypos); for (size_t i_point = 0; i_point < xpos.size(); ++i_point) - polygonItem->addPoint(scale * xpos[i_point], scale * ypos[i_point]); + polygonItem->addPoint(xpos[i_point], ypos[i_point]); polygonItem->setMaskValue(mask_value); polygonItem->setIsClosed(true); @@ -96,7 +96,7 @@ void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detecto else if (const auto* vline = dynamic_cast<const VerticalLine*>(shape)) { auto* lineItem = new VerticalLineItem(); - lineItem->setPosX(scale * vline->getXpos()); + lineItem->setPosX(vline->getXpos()); lineItem->setMaskValue(mask_value); // TODO: why prepend the mask, instead of appending it? destMaskItems->insertMask(0, lineItem); @@ -104,7 +104,7 @@ void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detecto else if (const auto* hline = dynamic_cast<const HorizontalLine*>(shape)) { auto* lineItem = new HorizontalLineItem(); - lineItem->setPosY(scale * hline->getYpos()); + lineItem->setPosY(hline->getYpos()); lineItem->setMaskValue(mask_value); // TODO: why prepend the mask, instead of appending it? destMaskItems->insertMask(0, lineItem); @@ -126,10 +126,10 @@ void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detecto const auto yBounds = detector.regionOfInterestBounds(1); auto* roiItem = new RegionOfInterestItem(); - roiItem->setXLow(scale * xBounds.first); - roiItem->setYLow(scale * yBounds.first); - roiItem->setXUp(scale * xBounds.second); - roiItem->setYUp(scale * yBounds.second); + roiItem->setXLow(xBounds.first); + roiItem->setYLow(yBounds.first); + roiItem->setXUp(xBounds.second); + roiItem->setYUp(yBounds.second); destMaskItems->addMaskItem(roiItem); } } @@ -138,8 +138,7 @@ void setMaskStacks(DetectorItem* detector_item, const IDetector& detector) { if ((detector.detectorMask() && detector.detectorMask()->hasMasks()) || detector.hasExplicitRegionOfInterest()) { - const double scale = 1.0 / detector_item->axesToCoreUnitsFactor(); - setMaskContainer(&detector_item->maskItems(), detector, scale); + setMaskContainer(&detector_item->maskItems(), detector); } } @@ -235,9 +234,8 @@ void setDetectorResolution(DetectorItem* detector_item, const IDetector& detecto convfunc->getResolutionFunction2D())) { auto* item = detector_item->setResolutionFunctionType<ResolutionFunction2DGaussianItem>(); - const double scale = 1.0 / detector_item->axesToCoreUnitsFactor(); - item->setSigmaX(scale * resfunc->sigmaX()); - item->setSigmaY(scale * resfunc->sigmaY()); + item->setSigmaX(resfunc->sigmaX()); + item->setSigmaY(resfunc->sigmaY()); } else ASSERT_NEVER; } else diff --git a/GUI/Model/Mask/MaskItems.cpp b/GUI/Model/Mask/MaskItems.cpp index bcb8a4eceecee6b9874580e5164cd356108ad7b6..b334466a76b1fb99ebc4f5b538e0b979fcc57232 100644 --- a/GUI/Model/Mask/MaskItems.cpp +++ b/GUI/Model/Mask/MaskItems.cpp @@ -139,12 +139,12 @@ RectangleItem::RectangleItem() setMaskName("RectangleMask"); } -std::unique_ptr<IShape2D> RectangleItem::createShape(double scale) const +std::unique_ptr<IShape2D> RectangleItem::createShape() const { - double xlow = scale * xLow(); - double ylow = scale * yLow(); - double xup = scale * xUp(); - double yup = scale * yUp(); + double xlow = xLow(); + double ylow = yLow(); + double xup = xUp(); + double yup = yUp(); return std::make_unique<Rectangle>(xlow, ylow, xup, yup); } @@ -269,9 +269,9 @@ RegionOfInterestItem::RegionOfInterestItem() setMaskValue(false); } -std::unique_ptr<IShape2D> RegionOfInterestItem::createShape(double scale) const +std::unique_ptr<IShape2D> RegionOfInterestItem::createShape() const { - auto shape = RectangleItem::createShape(scale); + auto shape = RectangleItem::createShape(); dynamic_cast<Rectangle*>(shape.get())->setInverted(true); return shape; } @@ -334,12 +334,12 @@ PolygonItem::PolygonItem() setMaskName("PolygonMask"); } -std::unique_ptr<IShape2D> PolygonItem::createShape(double scale) const +std::unique_ptr<IShape2D> PolygonItem::createShape() const { std::vector<double> x, y; for (PolygonPointItem* item : m_points) { - x.push_back(scale * item->posX()); - y.push_back(scale * item->posY()); + x.push_back(item->posX()); + y.push_back(item->posY()); } return std::make_unique<Polygon>(x, y); } @@ -430,9 +430,9 @@ VerticalLineItem::VerticalLineItem() setMaskName("VerticalLineMask"); } -std::unique_ptr<IShape2D> VerticalLineItem::createShape(double scale) const +std::unique_ptr<IShape2D> VerticalLineItem::createShape() const { - return std::make_unique<VerticalLine>(scale * posX()); + return std::make_unique<VerticalLine>(posX()); } double VerticalLineItem::posX() const @@ -492,9 +492,9 @@ HorizontalLineItem::HorizontalLineItem() setMaskName("HorizontalLineMask"); } -std::unique_ptr<IShape2D> HorizontalLineItem::createShape(double scale) const +std::unique_ptr<IShape2D> HorizontalLineItem::createShape() const { - return std::make_unique<HorizontalLine>(scale * posY()); + return std::make_unique<HorizontalLine>(posY()); } double HorizontalLineItem::posY() const @@ -554,13 +554,13 @@ EllipseItem::EllipseItem() setMaskName("EllipseMask"); } -std::unique_ptr<IShape2D> EllipseItem::createShape(double scale) const +std::unique_ptr<IShape2D> EllipseItem::createShape() const { - double xcenter = scale * xCenter(); - double ycenter = scale * yCenter(); - double xradius = scale * xRadius(); - double yradius = scale * yRadius(); - double _angle = scale * angle(); + double xcenter = xCenter(); + double ycenter = yCenter(); + double xradius = xRadius(); + double yradius = yRadius(); + double _angle = angle(); return std::make_unique<Ellipse>(xcenter, ycenter, xradius, yradius, _angle); } @@ -706,7 +706,7 @@ MaskAllItem::MaskAllItem() setMaskName("MaskAllMask"); } -std::unique_ptr<IShape2D> MaskAllItem::createShape(double) const +std::unique_ptr<IShape2D> MaskAllItem::createShape() const { return std::make_unique<InfinitePlane>(); } diff --git a/GUI/Model/Mask/MaskItems.h b/GUI/Model/Mask/MaskItems.h index 9accce16e6e170a1fbd0022860bc24ef26ac78e5..f03e2b5c3f544753ebc8f8775ad6f6d76837a5f4 100644 --- a/GUI/Model/Mask/MaskItems.h +++ b/GUI/Model/Mask/MaskItems.h @@ -27,7 +27,7 @@ class MaskItem : public MaskRoot { public: virtual ~MaskItem(); - virtual std::unique_ptr<IShape2D> createShape(double scale) const = 0; + virtual std::unique_ptr<IShape2D> createShape() const = 0; QString maskName() const; void setMaskName(const QString& name); @@ -55,7 +55,7 @@ protected: class RectangleItem : public MaskItem { public: explicit RectangleItem(); - std::unique_ptr<IShape2D> createShape(double scale) const override; + std::unique_ptr<IShape2D> createShape() const override; double xLow() const; void setXLow(double val); @@ -82,7 +82,7 @@ private: class RegionOfInterestItem : public RectangleItem { public: RegionOfInterestItem(); - std::unique_ptr<IShape2D> createShape(double scale) const override; + std::unique_ptr<IShape2D> createShape() const override; }; class PolygonPointItem : public MaskRoot { @@ -107,7 +107,7 @@ private: class PolygonItem : public MaskItem { public: PolygonItem(); - std::unique_ptr<IShape2D> createShape(double scale) const override; + std::unique_ptr<IShape2D> createShape() const override; bool isClosed() const; void setIsClosed(bool closed); @@ -126,7 +126,7 @@ private: class VerticalLineItem : public MaskItem { public: VerticalLineItem(); - std::unique_ptr<IShape2D> createShape(double scale) const override; + std::unique_ptr<IShape2D> createShape() const override; double posX() const; void setPosX(double val); @@ -141,7 +141,7 @@ private: class HorizontalLineItem : public MaskItem { public: HorizontalLineItem(); - std::unique_ptr<IShape2D> createShape(double scale) const override; + std::unique_ptr<IShape2D> createShape() const override; double posY() const; void setPosY(double pos_y); @@ -156,7 +156,7 @@ private: class EllipseItem : public MaskItem { public: EllipseItem(); - std::unique_ptr<IShape2D> createShape(double scale) const override; + std::unique_ptr<IShape2D> createShape() const override; double xCenter() const; void setXCenter(double val); @@ -187,7 +187,7 @@ private: class MaskAllItem : public MaskItem { public: MaskAllItem(); - std::unique_ptr<IShape2D> createShape(double scale) const override; + std::unique_ptr<IShape2D> createShape() const override; }; #endif // BORNAGAIN_GUI_MODEL_MASK_MASKITEMS_H