Line data Source code
1 : #pragma once 2 : 3 : #include "DetectorDescriptor.h" 4 : 5 : namespace elsa 6 : { 7 : /** 8 : * @brief Class representing metadata for lineraized n-dimensional signal stored in memory. It 9 : * specifically describes signals, which were captured by a planar detector and stores 10 : * additional information such as different poses 11 : * 12 : * @author David Frank - initial code 13 : */ 14 : class PlanarDetectorDescriptor : public DetectorDescriptor 15 : { 16 : public: 17 : PlanarDetectorDescriptor() = delete; 18 : 19 18592 : ~PlanarDetectorDescriptor() = default; 20 : 21 : /** 22 : * @brief Construct a PlanarDetectorDescriptor with given number of coefficients and spacing 23 : * per dimension and a list of geometry poses in the trajectory 24 : */ 25 : PlanarDetectorDescriptor(const IndexVector_t& numOfCoeffsPerDim, 26 : const RealVector_t& spacingPerDim, 27 : const std::vector<Geometry>& geometryList); 28 : 29 : /** 30 : * @brief Construct a PlanatDetectorDescriptor with given number of coefficients 31 : * per dimension and a list of geometry poses in the trajectory 32 : */ 33 : PlanarDetectorDescriptor(const IndexVector_t& numOfCoeffsPerDim, 34 : const std::vector<Geometry>& geometryList); 35 : 36 : using DetectorDescriptor::computeRayFromDetectorCoord; 37 : 38 : /// Override function to compute rays for a planar detector 39 : RealRay_t computeRayFromDetectorCoord(const RealVector_t& detectorCoord, 40 : const index_t poseIndex) const override; 41 : 42 : std::unique_ptr<DetectorDescriptor> 43 : cloneWithGeometry(std::vector<Geometry> geometries) const override; 44 : 45 : private: 46 : PlanarDetectorDescriptor* cloneImpl() const override; 47 : 48 : bool isEqual(const DataDescriptor& other) const override; 49 : }; 50 : } // namespace elsa