1 #ifndef CTL_ABSTRACTDETECTOR_H 2 #define CTL_ABSTRACTDETECTOR_H 5 #include "mat/matrix_utils.h" 8 #include "models/xydataseries.h" 12 #include <QVariantMap> 20 class GenericDetector;
72 QString
info()
const override;
85 Q_DECL_DEPRECATED_X(
"Within the CTL 'dimension' is use for a count of something, use pixelSize() instead.")
94 double skewAngle() const;
215 inline double AbstractDetector::skewAngle()
const {
return _skewAngle; }
260 inline AbstractDetector::AbstractDetector(
const QString &
name)
270 inline AbstractDetector::AbstractDetector(
const QSize& nbPixelPerModule,
271 const QSizeF& pixelSize,
274 , _nbPixelPerModule(nbPixelPerModule)
275 , _pixelSize(pixelSize)
293 "\tNb. of pixels per module: " + QString::number(
_nbPixelPerModule.width()) +
" x " +
295 "\tPixel size: " + QString::number(
_pixelSize.width()) +
" mm x " +
296 QString::number(
_pixelSize.height()) +
" mm\n";
298 ret += (this->
type() == AbstractDetector::Type) ? QLatin1String(
"}\n") : QLatin1String(
"");
309 QVariantMap varMap = variant.toMap();
311 auto nbPixels = varMap.value(QStringLiteral(
"pixel per module")).toMap();
315 auto pixelDim = varMap.value(QStringLiteral(
"pixel size")).toMap();
316 _pixelSize.setWidth(pixelDim.value(QStringLiteral(
"width")).toDouble());
317 _pixelSize.setHeight(pixelDim.value(QStringLiteral(
"height")).toDouble());
319 QVariant
saturationModel = varMap.value(QStringLiteral(
"saturation model"));
322 int satModTypeVal = varMap.value(QStringLiteral(
"saturation model type")).toMap().value(QStringLiteral(
"enum value")).toInt();
331 QVariantMap nbPixels;
335 QVariantMap pixelDim;
336 pixelDim.insert(QStringLiteral(
"width"),
_pixelSize.width());
337 pixelDim.insert(QStringLiteral(
"height"),
_pixelSize.height());
342 QVariantMap satModelType;
344 satModelType.insert(QStringLiteral(
"meaning"),
"0: Extinction, 1: Photon count, 2: Intensity, 3: Undefined");
346 ret.insert(QStringLiteral(
"pixel per module"), nbPixels);
347 ret.insert(QStringLiteral(
"pixel size"), pixelDim);
349 ret.insert(QStringLiteral(
"saturation model type"), satModelType);
444 #endif // CTL_ABSTRACTDETECTOR_H
#define DECLARE_ELEMENTAL_TYPE
Definition: systemcomponent.h:148
int type() const override
Definition: abstractdetector.h:56
SaturationModelType saturationModelType() const
Definition: abstractdetector.h:202
const QSizeF & pixelSize() const
Definition: abstractdetector.h:149
const QSizeF & pixelDimensions() const
Definition: abstractdetector.h:141
virtual QVector< ModuleLocation > moduleLocations() const =0
static QString typeInfoString(const std::type_info &type)
Definition: systemcomponent.cpp:52
SaturationModelType
Definition: abstractdetector.h:61
virtual QString info() const
Definition: systemcomponent.cpp:29
const QSize & nbPixelPerModule() const
Definition: abstractdetector.h:136
const AbstractDataModel * saturationModel() const
Definition: abstractdetector.h:193
mat::Location ModuleLocation
Definition: abstractdetector.h:60
const QString & name() const
Definition: systemcomponent.cpp:42
QSize _nbPixelPerModule
Number of pixels in each detector module.
Definition: abstractdetector.h:116
QVariant toVariant() const override
Definition: systemcomponent.cpp:64
XYDataSeries inputResponse(float from, float to, uint nbSamples) const
Definition: abstractdetector.h:222
AbstractDataModelPtr _saturationModel
Data model for saturation of measured values.
Definition: abstractdetector.h:121
Base class for detector components.
Definition: abstractdetector.h:54
bool hasSaturationModel() const
Definition: abstractdetector.h:244
Base class for all system components.
Definition: systemcomponent.h:53
uint nbModules
Number of modules.
Definition: singleviewdata.h:118
QSizeF _pixelSize
Size of individual pixels (in mm).
Definition: abstractdetector.h:117
AbstractDataModelPtr _spectralResponseModel
Data model for spectral detector response.
Definition: abstractdetector.h:120
double _skewAngle
obliqueness angle (specifies non-orthogonality of pixels)
Definition: abstractdetector.h:118
QVariant toVariant() const override
Definition: abstractdetector.h:327
Definition: matrix_utils.h:27
The AbstractDataModel class is the base class for basic data models.
Definition: abstractdatamodel.h:55
void fromVariant(const QVariant &variant) override
Definition: abstractdetector.h:305
SaturationModelType _saturationModelType
States whether saturation model refers to intensity or extinction values.
Definition: abstractdetector.h:122
QString info() const override
Definition: abstractdetector.h:285
static XYDataSeries sampledFromModel(const AbstractDataModel &dataModel, const QVector< float > &samplingPoints)
Definition: xydataseries.cpp:99
uint nbChannels
Number of channels in each module.
Definition: singleviewdata.h:116
The XYDataSeries class is container for a series of data points, each representing x and y value pair...
Definition: xydataseries.h:60
Struct that holds the dimensions, namely number of channels, rows and modules, of a SingleViewData ob...
Definition: singleviewdata.h:114
#define CTL_TYPE_ID(newIndex)
Definition: serializationinterface.h:189
unsigned int uint
Qt style alias for unsigned int.
Definition: modulelayout.h:6
const AbstractDataModel * spectralResponseModel() const
Definition: abstractdetector.h:210
QSizeF moduleDimensions() const
Definition: abstractdetector.h:155
ModuleLocation moduleLocation(uint module) const
Definition: abstractdetector.h:184
void fromVariant(const QVariant &variant) override
Definition: systemcomponent.cpp:58
Extends std::unique_ptr<T> with copy operations using the clone method of type T.
Definition: copyableuniqueptr.h:14
uint nbRows
Number of rows in each module.
Definition: singleviewdata.h:117
XYDataSeries spectralResponse(float from, float to, uint nbSamples) const
Definition: abstractdetector.h:234
void setSaturationModel(AbstractDataModel *model, SaturationModelType type)
Definition: abstractdetector.h:358
bool hasSpectralResponseModel() const
Definition: abstractdetector.h:252
SingleViewData::Dimensions viewDimensions() const
Definition: abstractdetector.h:165
Generic implementation of a detector component.
Definition: genericdetector.h:22
void setSpectralResponseModel(AbstractDataModel *model)
Definition: abstractdetector.h:380
uint nbDetectorModules() const
Definition: abstractdetector.h:130
The SingleViewData class is the container class used to store all projections from one particular vie...
Definition: singleviewdata.h:19