CTL  0.6.1
Computed Tomography Library
cylindricaldetector.h
Go to the documentation of this file.
1 #ifndef CTL_CYLINDRICALDETECTOR_H
2 #define CTL_CYLINDRICALDETECTOR_H
3 
4 #include "abstractdetector.h"
5 
6 namespace CTL {
21 {
23 
24  // implementation of abstract interface
25  public: QVector<ModuleLocation> moduleLocations() const override;
26 
27 public:
29  const QSizeF& pixelSize,
31  double angulationPerModule,
32  double moduleSpacing,
33  const QString& name = defaultName());
34 
36  const QSizeF& pixelSize,
38  double angulationPerModule,
39  double moduleSpacing,
40  const QString& name = defaultName());
42  const QSizeF& pixelSize,
44  double radius,
45  double fanAngle,
46  const QString& name = defaultName());
47 
48  // virtual methods
49  SystemComponent* clone() const override;
50  QString info() const override;
51  void fromVariant(const QVariant& variant) override; // de-serialization
52  QVariant toVariant() const override; // serialization
53 
54  // getter methods
55  double angulationOfModule(uint module) const;
56  double moduleSpacing() const;
57 
58  // other methods
59  double coneAngle() const;
60  double curvatureRadius() const;
61  double fanAngle() const;
62  double rowCoverage() const;
63 
64  // static methods
65  static QString defaultName();
66 
67 protected:
70  double _moduleSpacing;
71 
72 private:
73  CylindricalDetector(const QString& name = defaultName());
74 
75  static constexpr auto MIN_ANGUL = 1.0e-6;
76 
77  // methods
78  //void computeModuleLocations();
79  double moduleWidth() const;
80  void setAngulationFromFanAngle(uint nbModules, double fanAngle, double radius);
81  void setSpacingFromRadius(double radius);
82  QVector<double> moduleAngulations() const;
84 };
85 
86 } // namespace CTL
87 
90 #endif // CTL_CYLINDRICALDETECTOR_H
QVector< ModuleLocation > moduleLocationsFlatApprox() const
Computes the locations, i.e. their relative position and orientation w.r.t. the center of the full de...
Definition: cylindricaldetector.cpp:212
SystemComponent * clone() const override
Definition: cylindricaldetector.cpp:297
double rowCoverage() const
Definition: cylindricaldetector.cpp:337
const QSizeF & pixelSize() const
Definition: abstractdetector.h:149
double moduleWidth() const
Definition: cylindricaldetector.cpp:328
void setAngulationFromFanAngle(uint nbModules, double fanAngle, double radius)
Definition: cylindricaldetector.cpp:349
void fromVariant(const QVariant &variant) override
Definition: cylindricaldetector.cpp:255
double fanAngle() const
Definition: cylindricaldetector.cpp:318
uint _nbModules
Number of individual (flat-panel) modules in the detector.
Definition: cylindricaldetector.h:68
static QString defaultName()
Definition: cylindricaldetector.cpp:147
double _angulationPerModule
Angulation (in rad) between adjacent detector modules.
Definition: cylindricaldetector.h:69
double _moduleSpacing
Gap between adjacent detector modules (zero if fitting tight).
Definition: cylindricaldetector.h:70
const QSize & nbPixelPerModule() const
Definition: abstractdetector.h:136
QVector< double > moduleAngulations() const
Definition: cylindricaldetector.cpp:244
static CylindricalDetector fromRadiusAndFanAngle(const QSize &nbPixelPerModule, const QSizeF &pixelSize, uint nbDetectorModules, double radius, double fanAngle, const QString &name=defaultName())
Definition: cylindricaldetector.cpp:71
const QString & name() const
Definition: systemcomponent.cpp:42
double angulationOfModule(uint module) const
Definition: cylindricaldetector.cpp:281
double coneAngle() const
Definition: cylindricaldetector.cpp:305
QVariant toVariant() const override
Definition: cylindricaldetector.cpp:266
Base class for detector components.
Definition: abstractdetector.h:54
Base class for all system components.
Definition: systemcomponent.h:53
Definition: matrix_utils.h:27
Specialized sub-class of AbstractDetector for detector systems with cylindrical arrangement of module...
Definition: cylindricaldetector.h:20
void setSpacingFromRadius(double radius)
Definition: cylindricaldetector.cpp:358
#define CTL_TYPE_ID(newIndex)
Definition: serializationinterface.h:189
unsigned int uint
Qt style alias for unsigned int.
Definition: modulelayout.h:6
QString info() const override
Definition: cylindricaldetector.cpp:107
static CylindricalDetector fromAngulationAndSpacing(const QSize &nbPixelPerModule, const QSizeF &pixelSize, uint nbDetectorModules, double angulationPerModule, double moduleSpacing, const QString &name=defaultName())
Definition: cylindricaldetector.cpp:52
QVector< ModuleLocation > moduleLocations() const override
Computes the locations, i.e. their relative position and orientation w.r.t. the center of the full de...
Definition: cylindricaldetector.cpp:165
double curvatureRadius() const
Definition: cylindricaldetector.cpp:133
uint nbDetectorModules() const
Definition: abstractdetector.h:130
double moduleSpacing() const
Definition: cylindricaldetector.cpp:291