Skip to content
Snippets Groups Projects
Commit f8e1614a authored by Matthias Puchner's avatar Matthias Puchner
Browse files

add descriptors

parent 61d559a2
No related branches found
No related tags found
1 merge request!607Simplify instrument editors
......@@ -15,6 +15,7 @@
#include "GUI/Model/Item/BackgroundItems.h"
#include "Core/Background/ConstantBackground.h"
#include "Core/Background/PoissonNoiseBackground.h"
#include "GUI/Model/Types/DoubleDescriptor.h"
BackgroundItem::BackgroundItem(const QString& model_type)
: SessionItem(model_type)
......@@ -55,9 +56,9 @@ std::unique_ptr<IBackground> ConstantBackgroundItem::createBackground() const
return std::make_unique<ConstantBackground>(getItemValue(P_VALUE).toDouble());
}
double ConstantBackgroundItem::backgroundValue() const
DoubleDescriptor ConstantBackgroundItem::backgroundValue() const
{
return getItemValue(P_VALUE).toDouble();
return DoubleDescriptor(getItem(P_VALUE), "counts/pixel");
}
void ConstantBackgroundItem::setBackgroundValue(double value)
......
......@@ -18,6 +18,7 @@
#include "GUI/Model/BaseItem/SessionItem.h"
class IBackground;
class DoubleDescriptor;
class BA_CORE_API_ BackgroundItem : public SessionItem {
public:
......@@ -44,7 +45,7 @@ public:
ConstantBackgroundItem();
std::unique_ptr<IBackground> createBackground() const override;
double backgroundValue() const;
DoubleDescriptor backgroundValue() const;
void setBackgroundValue(double value);
};
......
......@@ -201,6 +201,10 @@ FootprintItem* SpecularBeamItem::footprint() const
return &groupItem<FootprintItem>(P_FOOTPRINT);
}
SelectionDescriptor<FootprintItem*> SpecularBeamItem::footprintSelection() const
{
return SelectionDescriptor<FootprintItem*>(item<GroupItem>(P_FOOTPRINT));
}
void SpecularBeamItem::setGaussianFootprint(double value)
{
......
......@@ -16,6 +16,7 @@
#define BORNAGAIN_GUI_MODEL_ITEM_BEAMITEMS_H
#include "GUI/Model/BaseItem/SessionItem.h"
#include "GUI/Model/Group/SelectionDescriptor.h"
#include "GUI/Model/Item/SpecularBeamInclinationItem.h"
#include <heinz/Vectors3D.h>
......@@ -82,6 +83,7 @@ public:
BasicAxisItem* inclinationAxis() const;
FootprintItem* footprint() const;
SelectionDescriptor<FootprintItem*> footprintSelection() const;
void setGaussianFootprint(double value);
void setSquareFootprint(double value);
SessionItem* footprintGroupItem() const;
......
......@@ -83,6 +83,11 @@ ResolutionFunctionItem* DetectorItem::resolutionFunction() const
return dynamic_cast<ResolutionFunctionItem*>(getGroupItem(P_RESOLUTION_FUNCTION));
}
SelectionDescriptor<ResolutionFunctionItem*> DetectorItem::resolutionFunctionSelection() const
{
return SelectionDescriptor<ResolutionFunctionItem*>(item<GroupItem>(P_RESOLUTION_FUNCTION));
}
DetectorItem::DetectorItem(const QString& modelType)
: SessionItem(modelType)
{
......
......@@ -16,6 +16,7 @@
#define BORNAGAIN_GUI_MODEL_ITEM_DETECTORITEMS_H
#include "GUI/Model/BaseItem/SessionItem.h"
#include "GUI/Model/Group/SelectionDescriptor.h"
#include <heinz/Vectors3D.h>
class MaskContainerItem;
......@@ -56,6 +57,7 @@ public:
void importMasks(const MaskContainerItem* maskContainer);
ResolutionFunctionItem* resolutionFunction() const;
SelectionDescriptor<ResolutionFunctionItem*> resolutionFunctionSelection() const;
template <typename T> T* setResolutionFunctionType();
SessionItem* resolutionFunctionItem() const;
......
......@@ -15,6 +15,7 @@
#include "GUI/Model/Item/FootprintItems.h"
#include "Device/Beam/FootprintGauss.h"
#include "Device/Beam/FootprintSquare.h"
#include "GUI/Model/Types/DoubleDescriptor.h"
// Base class
/* ------------------------------------------------ */
......@@ -59,9 +60,9 @@ std::unique_ptr<IFootprintFactor> FootprintGaussianItem::createFootprint() const
return std::make_unique<FootprintGauss>(getItemValue(P_VALUE).toDouble());
}
double FootprintGaussianItem::gaussianFootprintValue() const
DoubleDescriptor FootprintGaussianItem::gaussianFootprintValue() const
{
return getItemValue(P_VALUE).toDouble();
return DoubleDescriptor(getItem(P_VALUE), Unit::unitless);
}
void FootprintGaussianItem::setGaussianFootprintValue(double value)
......@@ -87,9 +88,9 @@ std::unique_ptr<IFootprintFactor> FootprintSquareItem::createFootprint() const
return std::make_unique<FootprintSquare>(getItemValue(P_VALUE).toDouble());
}
double FootprintSquareItem::squareFootprintValue() const
DoubleDescriptor FootprintSquareItem::squareFootprintValue() const
{
return getItemValue(P_VALUE).toDouble();
return DoubleDescriptor(getItem(P_VALUE), Unit::unitless);
}
void FootprintSquareItem::setSquareFootprintValue(double value)
......
......@@ -18,6 +18,7 @@
#include "GUI/Model/BaseItem/SessionItem.h"
class IFootprintFactor;
class DoubleDescriptor;
class BA_CORE_API_ FootprintItem : public SessionItem {
public:
......@@ -47,7 +48,7 @@ public:
FootprintGaussianItem();
~FootprintGaussianItem() override;
std::unique_ptr<IFootprintFactor> createFootprint() const override;
double gaussianFootprintValue() const;
DoubleDescriptor gaussianFootprintValue() const;
void setGaussianFootprintValue(double value);
};
......@@ -61,7 +62,7 @@ public:
FootprintSquareItem();
~FootprintSquareItem() override;
std::unique_ptr<IFootprintFactor> createFootprint() const override;
double squareFootprintValue() const;
DoubleDescriptor squareFootprintValue() const;
void setSquareFootprintValue(double value);
};
......
......@@ -133,6 +133,11 @@ GroupItem* InstrumentItem::backgroundGroup()
return item<GroupItem>(P_BACKGROUND);
}
SelectionDescriptor<BackgroundItem*> InstrumentItem::backgroundSelection() const
{
return SelectionDescriptor<BackgroundItem*>(item<GroupItem>(P_BACKGROUND));
}
bool InstrumentItem::alignedWith(const RealDataItem* item) const
{
return shape() == item->shape();
......@@ -429,6 +434,11 @@ GroupItem* Instrument2DItem::detectorGroup()
return item<GroupItem>(P_DETECTOR);
}
SelectionDescriptor<DetectorItem*> Instrument2DItem::detectorSelection() const
{
return SelectionDescriptor<DetectorItem*>(item<GroupItem>(P_DETECTOR));
}
void Instrument2DItem::clearMasks()
{
detector()->clearMasks();
......
......@@ -15,6 +15,7 @@
#ifndef BORNAGAIN_GUI_MODEL_ITEM_INSTRUMENTITEMS_H
#define BORNAGAIN_GUI_MODEL_ITEM_INSTRUMENTITEMS_H
#include "GUI/Model/Group/SelectionDescriptor.h"
#include "GUI/Model/Item/BeamItems.h" // inheritance prevents forward declaration
class BackgroundItem;
......@@ -60,6 +61,7 @@ public:
BackgroundItem* backgroundItem() const;
GroupItem* backgroundGroup();
template <typename T> T* setBackgroundType();
SelectionDescriptor<BackgroundItem*> backgroundSelection() const;
virtual std::vector<int> shape() const = 0;
virtual void clearMasks() {}
......@@ -154,6 +156,7 @@ public:
DetectorItem* detector() const;
GroupItem* detectorGroup();
template <typename T> T* setDetectorType();
SelectionDescriptor<DetectorItem*> detectorSelection() const;
void clearMasks() override;
void importMasks(const MaskContainerItem* maskContainer) override;
......
......@@ -14,6 +14,7 @@
#include "GUI/Model/Item/ResolutionFunctionItems.h"
#include "Device/Resolution/ResolutionFunction2DGaussian.h"
#include "GUI/Model/Types/DoubleDescriptor.h"
ResolutionFunctionItem::ResolutionFunctionItem(const QString& name)
: SessionItem(name)
......@@ -60,9 +61,9 @@ SessionItem* ResolutionFunction2DGaussianItem::sigmaXItem() const
return getItem(P_SIGMA_X);
}
double ResolutionFunction2DGaussianItem::sigmaX() const
DoubleDescriptor ResolutionFunction2DGaussianItem::sigmaX() const
{
return getItemValue(P_SIGMA_X).toDouble();
return DoubleDescriptor(getItem(P_SIGMA_X), "");
}
void ResolutionFunction2DGaussianItem::setSigmaX(const double sigma_x)
......@@ -75,9 +76,9 @@ SessionItem* ResolutionFunction2DGaussianItem::sigmaYItem() const
return getItem(P_SIGMA_Y);
}
double ResolutionFunction2DGaussianItem::sigmaY() const
DoubleDescriptor ResolutionFunction2DGaussianItem::sigmaY() const
{
return getItemValue(P_SIGMA_Y).toDouble();
return DoubleDescriptor(getItem(P_SIGMA_Y), "");
}
void ResolutionFunction2DGaussianItem::setSigmaY(const double sigma_y)
......
......@@ -19,6 +19,7 @@
#include <memory>
class IResolutionFunction2D;
class DoubleDescriptor;
class BA_CORE_API_ ResolutionFunctionItem : public SessionItem {
protected:
......@@ -53,11 +54,11 @@ public:
createResolutionFunction(double scale = 1.0) const override;
SessionItem* sigmaXItem() const;
double sigmaX() const;
DoubleDescriptor sigmaX() const;
void setSigmaX(double sigma_x);
SessionItem* sigmaYItem() const;
double sigmaY() const;
DoubleDescriptor sigmaY() const;
void setSigmaY(double sigma_y);
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment