26using namespace Geometry;
27using namespace Kernel;
36 const double elementSize)
37 : m_sampleShape(&sampleShape), m_elementSize(elementSize) {}
51 if (raster.l1.size() == 0) {
52 throw std::runtime_error(
"Failed to rasterize sample shape.");
57 m_LS1 = std::move(raster.l1);
size_t m_numVolumeElements
The number of volume elements.
const Geometry::IObject * m_sampleShape
The shape pointer is handeled by sample object, not distGraber.
const double m_elementSize
Size of the sample in m.
std::vector< double > m_LS1
Cached L1 distances.
std::vector< double > m_elementVolumes
Cached element volumes.
MultipleScatteringCorrectionDistGraber(const Geometry::IObject &sampleShape, const double elementSize)
Construct a new Multiple Scattering Correction Dist Graber:: Multiple Scattering Correction Dist Grab...
double m_totalVolume
The total volume of the sample.
std::vector< Kernel::V3D > m_elementPositions
Cached element positions.
void cacheLS1(const Mantid::Kernel::V3D &beamDirection)
pre-calculate the distance from source to L1 for all the voxels in the sample
IObject : Interface for geometry objects.
virtual IObject * clone() const =0
MANTID_GEOMETRY_DLL Raster calculate(const Kernel::V3D &beamDirection, const IObject &shape, const double cubeSizeInMetre)