15 #ifndef BORNAGAIN_DEVICE_BEAM_BEAM_H
16 #define BORNAGAIN_DEVICE_BEAM_BEAM_H
36 std::string
className() const final {
return "Beam"; }
Defines class RealLimits.
An incident neutron or x-ray beam.
Direction direction() const
static Beam horizontalBeam()
void setAzimuthalAngleGuarded(double value)
Check for limits, set the value if within limits. Throws if limits are violated.
void setPolarization(R3 bloch_vector)
Sets the polarization density matrix according to the given Bloch vector.
R3 m_beamPolarization
Bloch vector encoding the beam's polarization.
void setDirection(const Direction &direction)
void setIntensity(double intensity)
Sets the beam intensity in neutrons/sec.
void setInclinationAngleGuarded(double value)
Check for limits, set the value if within limits. Throws if limits are violated.
double intensity() const
Returns the beam intensity in neutrons/sec.
double wavelength() const
void setInclination(double alpha)
Beam & operator=(const Beam &other)
friend class DepthProbeSimulationTest
const IFootprintFactor * footprintFactor() const
Returns footprint factor.
void setWavelengthGuarded(double value)
Check for limits, set the value if within limits. Throws if limits are violated.
void setFootprintFactor(const IFootprintFactor &shape_factor)
Sets footprint factor to the beam.
std::unique_ptr< IFootprintFactor > m_shape_factor
footprint correction handler
void setInclinationLimits(const RealLimits &limits)
std::string className() const final
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
void setWavelength(double wavelength)
SpinMatrix polMatrix() const
Returns the polarization density matrix (in spin basis along z-axis)
double m_intensity
beam intensity (neutrons/sec)
std::vector< const INode * > nodeChildren() const override
Returns all children.
R3 polVector() const
Returns polarization density as Bloch vector.
A direction in three-dimensional space.
Base class for tree-like structures containing parameterized objects.
Limits for a real fit parameter.