Mantid
Loading...
Searching...
No Matches
CircularBeamProfile.h
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2016 ISIS Rutherford Appleton Laboratory UKRI,
4// NScD Oak Ridge National Laboratory, European Spallation Source,
5// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
6// SPDX - License - Identifier: GPL - 3.0 +
7#pragma once
8
9#include "MantidAlgorithms/DllConfig.h"
11#include "MantidKernel/V3D.h"
12
13#include <array>
14
15namespace Mantid {
16namespace Geometry {
17class ReferenceFrame;
18}
19namespace Algorithms {
20
25class MANTID_ALGORITHMS_DLL CircularBeamProfile final : public IBeamProfile {
26public:
27 CircularBeamProfile(const Geometry::ReferenceFrame &frame, const Kernel::V3D &center, double radius);
28
29 IBeamProfile::Ray generatePoint(Kernel::PseudoRandomNumberGenerator &rng) const override;
31 const Geometry::BoundingBox &bounds) const override;
32 Geometry::BoundingBox defineActiveRegion(const Geometry::BoundingBox &sampleBox) const override;
33
34private:
35 const unsigned short m_upIdx;
36 const unsigned short m_beamIdx;
37 const unsigned short m_horIdx;
38 const double m_radius;
39 std::array<double, 3> m_min;
42};
43
44} // namespace Algorithms
45} // namespace Mantid
double radius
Definition: Rasterize.cpp:31
Defines a flat, circular beam profile that has a radius and center point.
Base class for all classes defining a beam profile.
Definition: IBeamProfile.h:26
A simple structure that defines an axis-aligned cuboid shaped bounding box for a geometrical object.
Definition: BoundingBox.h:34
ReferenceFrame : Holds reference frame information from the geometry description file.
Defines a 1D pseudo-random number generator, i.e.
Class for 3D vectors.
Definition: V3D.h:34
Helper class which provides the Collimation Length for SANS instruments.