14#include "MantidPythonInterface/geometry/DetectorInfoPythonIterator.h"
15#include <boost/iterator/iterator_facade.hpp>
16#include <boost/python/class.hpp>
17#include <boost/python/copy_const_reference.hpp>
18#include <boost/python/copy_non_const_reference.hpp>
19#include <boost/python/iterator.hpp>
20#include <boost/python/return_by_value.hpp>
21#include <boost/python/return_value_policy.hpp>
27using Mantid::PythonInterface::DetectorInfoPythonIterator;
37 return DetectorInfoPythonIterator(detectorInfo);
40using return_readonly_numpy = return_value_policy<Policies::VectorRefToNumpy<Converters::WrapReadOnly>>;
64 class_<DetectorInfo, boost::noncopyable>(
"DetectorInfo", no_init)
69 "Returns the size of the DetectorInfo, i.e., the number of "
70 "detectors in the instrument.")
73 "Returns the size of the DetectorInfo, i.e., the number of "
74 "detectors in the instrument.")
77 "Returns the index of the detector with the given id.")
79 .def(
"isMonitor", isMonitor, (arg(
"self"), arg(
"index")),
"Returns True if the detector is a monitor.")
81 .def(
"isMasked", isMasked, (arg(
"self"), arg(
"index")),
"Returns True if the detector is masked.")
83 .def(
"setMasked", setMasked, (arg(
"self"), arg(
"index"), arg(
"masked")),
84 "Set the mask flag of the detector where the detector is identified "
90 "Returns True if the content of this "
91 "detector is equivalent to the content "
92 "of the other detector.")
94 .def(
"twoTheta",
twoTheta, (arg(
"self"), arg(
"index")),
95 "Returns 2 theta (scattering angle w.r.t beam direction).")
96 .def(
"azimuthal", azimuthal, (arg(
"self"), arg(
"index")),
97 "Returns the out-of-plane angle in radians angle w.r.t. to "
98 "vecPointingHorizontal")
99 .def(
"position",
position, (arg(
"self"), arg(
"index")),
100 "Returns the absolute position of the detector where the detector "
101 "is identified by 'index'.")
103 .def(
"rotation",
rotation, (arg(
"self"), arg(
"index")),
104 "Returns the absolute rotation of the detector where the detector "
105 "is identified by 'index'.")
107 "Returns all detector ids sorted by detector index")
108 .def(
"l2",
l2, (arg(
"self"), arg(
"index")),
"Returns the l2 scattering distance")
109 .def(
"l1", &
DetectorInfo::l1, arg(
"self"),
"Returns the l1 scattering distance")
111 "Returns if there are masked detectors");
SpectrumInfoPythonIterator make_pyiterator(SpectrumInfo &spectrumInfo)
Mantid::Kernel::Quat(ComponentInfo::* rotation)(const size_t) const
void export_DetectorInfo()
DetectorInfoIterator for random access iteration over DetectorInfo.
Geometry::DetectorInfo is an intermediate step towards a DetectorInfo that is part of Instrument-2....
double twoTheta(const size_t index) const
Returns 2 theta (scattering angle w.r.t. to beam direction).
double l2(const size_t index) const
Returns L2 (distance from sample to spectrum).
bool hasMaskedDetectors() const
Returns true if there are masked detectors.
Kernel::Quat rotation(const size_t index) const
Returns the rotation of the detector with given index.
bool isMasked(const size_t index) const
Returns true if the detector is masked.
void setMasked(const size_t index, bool masked)
Set the mask flag of the detector with given index. Not thread safe.
const std::vector< detid_t > & detectorIDs() const
Returns a sorted vector of all detector IDs.
Kernel::V3D position(const size_t index) const
Returns the position of the detector with given index.
void clearMaskFlags()
Sets all mask flags to false (unmasked).
bool isEquivalent(const DetectorInfo &other) const
Returns true if the content of this is equivalent to the content of other.
double l1() const
Returns L1 (distance from source to sample).
size_t indexOf(const detid_t id) const
Returns the index of the detector with the given detector ID.
size_t size() const
Returns the size of the DetectorInfo, i.e., the number of detectors in the instrument.
bool isMonitor(const size_t index) const
Returns true if the detector is a monitor.
double azimuthal(const size_t index) const