32 const QString polarization_tooltip =
"Polarization of the beam, given as the Bloch vector";
48 .
setToolTip(
"Beam intensity in neutrons (or gammas) per sec.")
52 addProperty<VectorItem>(
P_POLARIZATION)->setToolTip(polarization_tooltip);
71 return item<BeamWavelengthItem>(
P_WAVELENGTH)->wavelength();
101 std::make_unique<Beam>(
intensity(), lambda,
Direction(inclination_angle, azimuthal_angle));
103 result->setPolarization(item<VectorItem>(
P_POLARIZATION)->getVector());
125 item->setToolTip(
"Footprint type");
134 axis_item->updateIndicators();
178 if (units ==
"nbins") {
181 axis_item->setBinCount(
static_cast<int>(axis.
size()));
186 auto axis_item =
static_cast<PointwiseAxisItem*
>(axis_group->getChildOfType(
"PointwiseAxis"));
187 axis_item->
init(axis, units);
188 axis_group->setCurrentType(
"PointwiseAxis");
189 axis_item->updateIndicators();
197 auto axis = axis_item->axis();
198 if (axis && axis_item->getUnitsLabel() ==
"q-space")
199 wl_item->
setToRange(getLimits(axis->upperBound()));
223 double upper_lim = std::nextafter(4.0 *
M_PI / max_q, 0.0);
#define ASSERT(condition)
Defines class BeamAngleItems.
const QString footprint_group_label("Type")
Defines BeamItem hierarchy.
Defines class BeamWavelengthItem.
Defines class GUIHelpers functions.
Defines interface IParameterTranslator and subclasses.
Defines pointwise axis item.
Defines namespace SessionItemUtils.
Declares the class SpecularBeamInclinationItem.
Defines some unit conversion factors and other constants in namespace Units.
Defines class VectorItem.
static const QString P_AZIMUTHAL_ANGLE
std::unique_ptr< Beam > createBeam() const
void setWavelength(double value)
static const QString P_WAVELENGTH
static const QString P_INCLINATION_ANGLE
virtual void setInclinationAngle(double value)
void setIntensity(double value)
void setAzimuthalAngle(double value)
BeamItem(const QString &beam_model)
double wavelength() const
virtual double getInclinationAngle() const =0
double getAzimuthalAngle() const
static const QString P_INTENSITY
static const QString P_POLARIZATION
A direction in three-dimensional space.
double getInclinationAngle() const override
~GISASBeamItem() override
SessionItem * setCurrentType(const QString &modelType)
SessionItem * currentItem() const
Interface for one-dimensional axes.
virtual size_t size() const =0
retrieve the number of bins
void setOnValueChange(std::function< void(void)> f, const void *caller=0)
void setOnChildPropertyChange(std::function< void(SessionItem *, QString)> f, const void *caller=0)
Calls back on child property change, report childItem and property name.
Item for non-uniform axis with specified coordinates.
void init(const IAxis &axis, const QString &units_label)
Limits for a real fit parameter.
static RealLimits positive()
Creates an object which can have only positive values (>0., zero is not included)
static RealLimits limited(double left_bound_value, double right_bound_value)
Creates an object bounded from the left and right.
void setUpperLimit(double value)
Sets upper limit.
SessionItem * addProperty(const QString &name, const QVariant &variant)
Add new property item and register new tag.
QVariant value() const
Get value.
void setVisible(bool enabled)
Flags accessors.
SessionItem & setEditorType(const QString &editorType)
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.
SessionItem * addGroupProperty(const QString &groupTag, const QString &groupType)
Creates new group item and register new tag, returns GroupItem.
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.
void addTranslator(const IPathTranslator &translator)
T * item(const QString &tag) const
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.
SessionItem & setToolTip(const QString &tooltip)
SessionItem * getItem(const QString &tag="", int row=0) const
Returns item in given row of given tag.
SessionItem & setLimits(const RealLimits &value)
static const QString P_ALPHA_AXIS
static const QString P_FOOPTPRINT
void setInclinationAngle(double value) override
FootprintItem * currentFootprintItem() const
GroupItem * inclinationAxisGroup()
BasicAxisItem * currentInclinationAxisItem()
void updateFileName(const QString &filename)
~SpecularBeamItem() override
void updateToData(const IAxis &axis, QString units)
double getInclinationAngle() const override
void setToRange(const RealLimits &limits)
static const QString P_MEAN
std::string filename(const std::string &path)
Returns path without directory part ("Foo/Bar/Doz.int.gz" -> "Doz.int.gz")
double deg2rad(double angle)