Mantid
Loading...
Searching...
No Matches
IMCInteractionVolume.h
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2020 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
13namespace Mantid {
14namespace Geometry {
15class IObject;
16class Track;
17} // namespace Geometry
18
19namespace Kernel {
20class PseudoRandomNumberGenerator;
21class V3D;
22} // namespace Kernel
23namespace Algorithms {
24
29
30using TrackPair = std::tuple<bool, std::shared_ptr<Geometry::Track>, std::shared_ptr<Geometry::Track>>;
31
36class MANTID_ALGORITHMS_DLL IMCInteractionVolume {
37public:
38 enum class ScatteringPointVicinity { SAMPLEANDENVIRONMENT, SAMPLEONLY, ENVIRONMENTONLY };
39 virtual ~IMCInteractionVolume() = default;
41 const Kernel::V3D &endPos, MCInteractionStatistics &stats) const = 0;
43 virtual const Geometry::BoundingBox getFullBoundingBox() const = 0;
44 virtual void setActiveRegion(const Geometry::BoundingBox &region) = 0;
46 virtual void setGaugeVolume(Geometry::IObject_sptr gaugeVolume) = 0;
47
48protected:
49 virtual void init() = 0;
50};
51} // namespace Algorithms
52} // namespace Mantid
Defines a base class for objects describing a volume where interactions of Tracks and Objects can tak...
virtual void setActiveRegion(const Geometry::BoundingBox &region)=0
virtual TrackPair calculateBeforeAfterTrack(Kernel::PseudoRandomNumberGenerator &rng, const Kernel::V3D &startPos, const Kernel::V3D &endPos, MCInteractionStatistics &stats) const =0
virtual ComponentScatterPoint generatePoint(Kernel::PseudoRandomNumberGenerator &rng) const =0
virtual const Geometry::BoundingBox getFullBoundingBox() const =0
virtual void setGaugeVolume(Geometry::IObject_sptr gaugeVolume)=0
virtual Geometry::IObject_sptr getGaugeVolume() const =0
Stores statistics relating to the tracks generated in MCInteractionVolume for a specific detector.
A simple structure that defines an axis-aligned cuboid shaped bounding box for a geometrical object.
Definition BoundingBox.h:33
Defines a 1D pseudo-random number generator, i.e.
Class for 3D vectors.
Definition V3D.h:34
std::tuple< bool, std::shared_ptr< Geometry::Track >, std::shared_ptr< Geometry::Track > > TrackPair
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.