MIDSX 0.1
A x-ray transport code system for dosimetry
Loading...
Searching...
No Matches
volume_tally.h
1#ifndef MIDSX_VOLUME_TALLY_CPP_H
2#define MIDSX_VOLUME_TALLY_CPP_H
3
4#include "tally_data.h"
5#include "volume_quantity_container.h"
6
10enum class VolumeTraversal {
11 MISSES,
12 STARTS_INSIDE_EXITS,
13 STARTS_INSIDE_STAYS,
14 PASSES_THROUGH,
15 LANDS_INSIDE
16};
17
24public:
25 virtual ~VolumeTally() = default;
26
32 void processMeasurements(TempVolumeTallyData& temp_volume_tally_data);
33
40protected:
41 virtual VolumeTraversal determineVolumeTraversal() = 0;
42 TempVolumeTallyData temp_volume_tally_data_;
43 VolumeQuantityContainer quantities_;
44 // need volume quantity container
45};
46
51public:
59 AACuboidVolumeTally(Eigen::Vector3d min_corner, Eigen::Vector3d max_corner, const VolumeQuantityContainer& quantities);
60private:
61 Eigen::Vector3d min_corner_;
62 Eigen::Vector3d max_corner_;
63
64 VolumeTraversal determineVolumeTraversal() override;
65
66 std::pair<double, double> getEnteringAndExitingLengths();
67
68 std::pair<Eigen::Vector3d, Eigen::Vector3d> getLengthsToSurfacePlanes();
69};
70
71#endif //MIDSX_VOLUME_TALLY_CPP_H
Class which represents an axis-aligned cuboid volume tally.
AACuboidVolumeTally(Eigen::Vector3d min_corner, Eigen::Vector3d max_corner, const VolumeQuantityContainer &quantities)
Constructor for the AACuboidVolumeTally class.
Class which represents a container for volume quantities.
Virtual class which represents a volume tally.
VolumeQuantityContainer & getVolumeQuantityContainer()
Gets the VolumeQuantityContainer object for the volume tally.
void processMeasurements(TempVolumeTallyData &temp_volume_tally_data)
Processes the measurements for a TempVolumeTallyData object.
Struct which represents the temporary data for a volume tally.
Definition tally_data.h:37