11 #include "gVariables.hh" 12 #include "sOutputManager.hh" 14 #include "sRandomNumberGenerator.hh" 76 virtual int Instantiate(
bool a_scannerFileIsLUT) = 0;
85 virtual int BuildLUT(
bool a_scannerFileIsLUT) = 0;
116 FLTNB ap_Orientation1[3],
FLTNB ap_Orientation2[3],
117 FLTNB* ap_POI1 = NULL,
FLTNB* ap_POI2 = NULL ) = 0;
132 FLTNB ap_Orientation1[3],
FLTNB ap_Orientation2[3] ) = 0;
158 FLTNB ap_CornerInf1[3],
FLTNB ap_CornerSup1[3],
159 FLTNB ap_CornerInf2[3],
FLTNB ap_CornerSup2[3]) = 0;
178 FLTNB ap_pos_line_point1[3],
FLTNB ap_pos_line_point2[3],
179 FLTNB ap_pos_point1_x[4],
FLTNB ap_pos_point1_y[4],
FLTNB ap_pos_point1_z[4],
180 FLTNB ap_pos_point2_x[4],
FLTNB ap_pos_point2_y[4],
FLTNB ap_pos_point2_z[4] ) = 0;
332 uint16_t* ap_nbHeads,
333 FLTNB* ap_acquisitionZoom,
334 uint16_t* ap_nbOfBins,
337 FLTNB*& ap_CORtoDetectorDistance,
338 int* ap_headRotDirection );
351 int* ap_detectorRotDirection );
431 #define FUNCTION_SCANNER(CLASS) \ 432 static vScanner *make_scanner() { return new CLASS(); }; 435 #define CLASS_SCANNER(NAME,CLASS) \ 436 class NAME##ScannerCreator \ 439 NAME##ScannerCreator() \ 440 { sAddonManager::GetInstance()->mp_listOfScannerTypes[#NAME] = CLASS::make_scanner; } \ 442 static NAME##ScannerCreator ScannerCreator##NAME; virtual int GetEdgesCenterPositions(int a_index1, int a_index2, FLTNB ap_pos_line_point1[3], FLTNB ap_pos_line_point2[3], FLTNB ap_pos_point1_x[4], FLTNB ap_pos_point1_y[4], FLTNB ap_pos_point1_z[4], FLTNB ap_pos_point2_x[4], FLTNB ap_pos_point2_y[4], FLTNB ap_pos_point2_z[4])=0
virtual int PROJ_SetSPECTNbBins(uint16_t *ap_nbOfBins)
oImageDimensionsAndQuantification * mp_ID
virtual FLTNB GetDetectionElementSizeAxial()=0
virtual int PROJ_SetSPECTNbProjections(uint32_t a_nbOfProjections)
virtual int PROJ_GetPETSpecificParameters(FLTNB *ap_maxRingDiff)
virtual int SetPETMaxAxialDiffmm(FLTNB a_maxAxialDiffmm)
virtual FLTNB GetDetectionElementSizeTrans()=0
virtual int PROJ_SetSPECTAngles(FLTNB *ap_projectionAngles)
virtual void ShowHelp()=0
This function is implemented in child classes Display help specific to the scanner class...
vScanner()
vScanner constructor. Initialize the member variables to their default values.
virtual int GetPositionWithRandomDepth(int a_index1, int a_index2, FLTNB ap_Position1[3], FLTNB ap_Position2[3])=0
FLTNB m_defaultBedDisplacementInMm
virtual uint16_t PROJ_GetSPECTNbProjections()
return the total number of projections for a SPECT acquisition
virtual int GetGeometricInfoFromDataFile(string a_path)=0
virtual int CheckParameters()=0
This function is implemented in child classes. Check that all parameters have been correctly initia...
virtual int BuildLUT(bool a_scannerFileIsLUT)=0
virtual int Initialize()=0
This function is implemented in child classes. Check initialization and set several parameters to t...
virtual int GetRdmPositionsAndOrientations(int a_index1, int a_index2, FLTNB ap_Position1[3], FLTNB ap_Position2[3], FLTNB ap_Orientation1[3], FLTNB ap_Orientation2[3])=0
virtual uint16_t PROJ_GetSPECTNbPixels()
return the total number of pixels for a SPECT reconstruction
virtual void DescribeSpecific()=0
A pure virtual function used to describe the specific parts of the scanner.
void SetImageDimensionsAndQuantification(oImageDimensionsAndQuantification *ap_ID)
virtual int SetRotDirection(string a_rotDirection)
virtual int GetTwoCorners(int a_index1, int a_index2, FLTNB ap_CornerInf1[3], FLTNB ap_CornerSup1[3], FLTNB ap_CornerInf2[3], FLTNB ap_CornerSup2[3])=0
Singleton class that Instantiate and initialize the scanner object.
virtual ~vScanner()
vScanner destructor.
void Describe()
A function used to describe the generic parts of the datafile.
virtual int ComputeLUT()
Virtual function which should be implemented by the child classes. It computes the LUT of the scann...
string GetScannerTypeString()
bool m_allParametersChecked
oMatrix * mp_positionMatrix_out
virtual int GetSPECTSpecificParameters(uint16_t *ap_nbOfProjections, uint16_t *ap_nbHeads, FLTNB *ap_acquisitionZoom, uint16_t *ap_nbOfBins, FLTNB *ap_pixSizeXY, FLTNB *&ap_angles, FLTNB *&ap_CORtoDetectorDistance, int *ap_headRotDirection)
oMatrix * mp_positionMatrix_ref
void SetVerbose(int a_verboseLevel)
virtual int PROJ_SetSPECTCORtoDetectorDistance(FLTNB a_CORtoDetectorDistance)
virtual int GetSystemNbElts()=0
This is a pure virtual method that must be implemented by children.
Declaration of class oMatrix.
FLTNB GetDefaultBedDisplacementInMm()
Structure designed for basic matrices operations.
This class is designed to manage all dimensions and quantification related stuff. ...
oMatrix * mp_rotationMatrix
virtual int LoadLUT()
Virtual function which should be implemented by the child classes. Load a precomputed scanner LUT...
virtual int Instantiate(bool a_scannerFileIsLUT)=0
virtual int IsAvailableLOR(int a_elt1, int a_elt2)
virtual int GetPositionsAndOrientations(int a_index1, int a_index2, FLTNB ap_Position1[3], FLTNB ap_Position2[3], FLTNB ap_Orientation1[3], FLTNB ap_Orientation2[3], FLTNB *ap_POI1=NULL, FLTNB *ap_POI2=NULL)=0
virtual int GetCTSpecificParameters(uint16_t *ap_nbOfProjections, FLTNB *&ap_angles, int *ap_detectorRotDirection)
Generic class for scanner objects.