1 #ifndef CTL_SYSTEMBLUEPRINTS_H 2 #define CTL_SYSTEMBLUEPRINTS_H 4 #include "components/allcomponents.h" 5 #include "acquisition/ctsystembuilder.h" 14 enum class DetectorBinning { Binning1x1, Binning2x2, Binning4x4 };
16 namespace blueprints {
35 return new XrayTube(QSizeF(1.0,1.0));
38 QString
systemName()
const override {
return QStringLiteral(
"Tubular CT system"); }
44 GenericCarmCT(DetectorBinning binning = DetectorBinning::Binning2x2)
52 return new CarmGantry(1000.0, QStringLiteral(
"Robot arm"));
56 return new XrayTube(QSizeF(1.0,1.0));
59 QString
systemName()
const override {
return QStringLiteral(
"C-arm CT system"); }
62 DetectorBinning _binning;
72 case DetectorBinning::Binning1x1:
73 nbPixel = { 2560, 1920 };
74 pixelSize = { 0.125, 0.125 };
75 binName = QStringLiteral(
"1x1");
77 case DetectorBinning::Binning2x2:
78 nbPixel = { 1280, 960 };
79 pixelSize = { 0.25, 0.25 };
80 binName = QStringLiteral(
"2x2");
82 case DetectorBinning::Binning4x4:
83 nbPixel = { 640, 480 };
84 pixelSize = { 0.5, 0.5 };
85 binName = QStringLiteral(
"4x4");
88 auto detectorName =
"flat panel with " + binName +
"-binning";
96 ArtisQ(DetectorBinning binning = DetectorBinning::Binning2x2)
104 return new CarmGantry(1200.0, QStringLiteral(
"Kuka robot arm"));
113 return new XrayTube(QSizeF(1.0,1.0));
116 QString
systemName()
const override {
return QStringLiteral(
"C-arm ArtisQ system"); }
119 DetectorBinning _binning;
129 case DetectorBinning::Binning1x1:
130 nbPixel = { 2480, 1920 };
131 pixelSize = { 0.154, 0.154 };
132 binName = QStringLiteral(
"1x1");
134 case DetectorBinning::Binning2x2:
135 nbPixel = { 1240, 960 };
136 pixelSize = { 0.308, 0.308 };
137 binName = QStringLiteral(
"2x2");
139 case DetectorBinning::Binning4x4:
140 nbPixel = { 616, 480 };
141 pixelSize = { 0.616, 0.616 };
142 binName = QStringLiteral(
"4x4");
145 auto detectorName =
"flat panel with " + binName +
"-binning";
152 template <
typename CTSystemBlueprint,
typename... BlueprintCtorArgs>
153 std::unique_ptr<CTSystem> makeCTSystem(BlueprintCtorArgs&&... args)
157 std::forward<BlueprintCtorArgs>(args)... }).clone() };
161 template <
typename CTSystemBlueprint,
typename... BlueprintCtorArgs>
162 std::unique_ptr<SimpleCTSystem> makeSimpleCTSystem(BlueprintCtorArgs&&... args)
164 std::unique_ptr<SimpleCTSystem> ret{
nullptr };
168 std::forward<BlueprintCtorArgs>(args)... }),
173 ret.reset(static_cast<SimpleCTSystem*>(std::move(simpleSystem).clone()));
180 #endif // CTL_SYSTEMBLUEPRINTS_H Definition: systemblueprints.h:18
AbstractDetector * detector() const override
Definition: systemblueprints.h:65
Definition: systemblueprints.h:41
Definition: systemblueprints.h:93
AbstractSource * source() const override
Definition: systemblueprints.h:54
AbstractSource * source() const override
Definition: systemblueprints.h:33
static CylindricalDetector fromRadiusAndFanAngle(const QSize &nbPixelPerModule, const QSizeF &pixelSize, uint nbDetectorModules, double radius, double fanAngle, const QString &name=defaultName())
Definition: cylindricaldetector.cpp:71
AbstractGantry * gantry() const override
Definition: systemblueprints.h:29
static CTSystem createFromBlueprint(const AbstractCTSystemBlueprint &systemBlueprint)
Definition: ctsystembuilder.cpp:10
Base class for gantry components.
Definition: abstractgantry.h:65
Base class for detector components.
Definition: abstractdetector.h:54
QString systemName() const override
Definition: systemblueprints.h:38
Specialized sub-class of AbstractDetector for detector systems with cylindrical arrangement of module...
Definition: cylindricaldetector.h:20
AbstractGantry * gantry() const override
Definition: systemblueprints.h:50
static SimpleCTSystem fromCTSystem(const CTSystem &system, bool *ok=nullptr)
Definition: simplectsystem.cpp:67
QString systemName() const override
Definition: systemblueprints.h:116
AbstractSource * source() const override
Definition: systemblueprints.h:111
AbstractGantry * gantry() const override
Definition: systemblueprints.h:102
AbstractDetector * detector() const override
Definition: systemblueprints.h:122
AbstractDetector * detector() const override
Definition: systemblueprints.h:21
Specialized sub-class of AbstractGantry to represent systems using a C-arm mounting for source and de...
Definition: carmgantry.h:23
QString systemName() const override
Definition: systemblueprints.h:59
Base class for source components.
Definition: abstractsource.h:68
Definition: ctsystembuilder.h:9
Specialized sub-class of AbstractDetector for flat panel detectors.
Definition: flatpaneldetector.h:16
Specialized sub-class of AbstractGantry to represent systems with tube gantries.
Definition: tubulargantry.h:26