Mantid
Loading...
Searching...
No Matches
IBeamProfile.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"
12#include "MantidKernel/V3D.h"
13
14namespace Mantid {
15namespace API {
16class Sample;
17}
18namespace Kernel {
19class PseudoRandomNumberGenerator;
20}
21namespace Algorithms {
22
27class MANTID_ALGORITHMS_DLL IBeamProfile {
28public:
33
34 IBeamProfile(const Kernel::V3D center);
35 IBeamProfile() = default;
36 virtual ~IBeamProfile() = default;
40 Geometry::IObject_sptr getIntersectionWithSample(const Geometry::IObject &sample) const;
41
42protected:
44};
45
46} // namespace Algorithms
47} // namespace Mantid
Base class for all classes defining a beam profile.
virtual Ray generatePoint(Kernel::PseudoRandomNumberGenerator &rng) const =0
virtual Geometry::BoundingBox defineActiveRegion(const Geometry::BoundingBox &) const =0
virtual Ray generatePoint(Kernel::PseudoRandomNumberGenerator &rng, const Geometry::BoundingBox &) const =0
A simple structure that defines an axis-aligned cuboid shaped bounding box for a geometrical object.
Definition BoundingBox.h:33
IObject : Interface for geometry objects.
Definition IObject.h:42
Defines a 1D pseudo-random number generator, i.e.
Class for 3D vectors.
Definition V3D.h:34
std::shared_ptr< IObject > IObject_sptr
Typdef for a shared pointer.
Definition IObject.h:93
Helper class which provides the Collimation Length for SANS instruments.