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