82 Cout(
"vScanner::Describe() -> Here is some generic content of the scanner" << endl);
104 return "SCANNER PET";
106 return "SCANNER SPECT PINHOLE";
108 return "SCANNER SPECT CONVERGENT";
112 return "SCANNER SINOGRAM";
138 Cerr(
"***** vScanner::ComputeLUT() -> Call to ComputeLUT() which is not implemented by the scanner child class !" << endl);
161 Cerr(
"***** vScanner::ComputeLUT() -> Call to ComputeLUT() which is not implemented by the scanner child class !" << endl);
183 Cerr(
"***** vScanner::IsAvailableLOR() -> This function is not implemented by the Instantiated scanner class !!" << endl);
184 Cerr(
" This function only works with PET scanner objects !!" << endl);
205 Cerr(
"***** vScanner::SetPETMaxAxialDiffmm() -> This function is not implemented by the Instantiated scanner class !!" << endl);
206 Cerr(
" This function only works with PET scanner objects !!" << endl);
226 Cerr(
"***** vScanner::PROJ_GetPETSpecificParameters() -> This function is not implemented by the Instantiated scanner class !!" << endl);
227 Cerr(
" This function only works with PET scanner objects !!" << endl);
239 uint16_t* ap_nbHeads,
240 FLTNB* ap_acquisitionZoom,
241 uint16_t* ap_nbOfBins,
244 FLTNB*& ap_CORtoDetectorDistance,
245 int* ap_headRotDirection)
247 Cerr(
"***** vScanner::GetSPECTSpecificParameters() -> This function is not implemented by the Instantiated scanner class !!" << endl);
248 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
270 int* ap_detectorRotDirection)
272 Cerr(
"***** vScanner::GetCTSpecificParameters() -> This function is not implemented by the Instantiated scanner class !!" << endl);
273 Cerr(
" This function only works with CT scanner objects !!" << endl);
292 if( a_rotDirection ==
"CCW" ||
293 a_rotDirection ==
"Ccw" ||
294 a_rotDirection ==
"ccw" )
297 else if(a_rotDirection ==
"" ||
298 a_rotDirection ==
"CW" ||
299 a_rotDirection ==
"Cw" ||
300 a_rotDirection ==
"cw" )
305 Cerr(
"***** vScanner::SetRotDirection -> Error while initializing rotation direction !" << endl);
306 Cerr(
" "<< a_rotDirection <<
"' is unknown. Direction must be 'CW' (clockwise) or 'CCW' (counter-clockwise).");
328 Cerr(
"***** vScanner::PROJ_SetSPECTNbBins() -> This function is not implemented by the Instantiated scanner class !!" << endl);
329 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
349 Cerr(
"***** vScanner::PROJ_SetSPECTNbProjections() -> This function is not implemented by the Instantiated scanner class !!" << endl);
350 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
373 Cerr(
"***** vScanner::SetSPECTAngles() -> This function is not implemented by the Instantiated scanner class !!" << endl);
374 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
394 Cerr(
"***** vScanner::SetSPECTCORtoDetectorDistance() -> This function is not implemented by the Instantiated scanner class !!" << endl);
395 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
414 Cerr(
"***** vScanner::GetSPECTNbProjections() -> This function is not implemented by the Instantiated scanner class !!" << endl);
415 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
434 Cerr(
"***** vScanner::GetSPECTNbPixels() -> This function is not implemented by the Instantiated scanner class !!" << endl);
435 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
virtual int PROJ_SetSPECTNbBins(uint16_t *ap_nbOfBins)
Set SPECT number of Bins.
virtual int PROJ_SetSPECTNbProjections(uint32_t a_nbOfProjections)
Set SPECT number of views.
virtual int PROJ_GetPETSpecificParameters(FLTNB *ap_maxRingDiff)
Get geometric PET specific parameters to initialize the datafile.
virtual int SetPETMaxAxialDiffmm(FLTNB a_maxAxialDiffmm)
Set the maximal axial difference in mm between 2 crystals forming a lor.
virtual int PROJ_SetSPECTAngles(FLTNB *ap_projectionAngles)
Set SPECT projection angles.
oMatrix * mp_positionMatrix_out
vScanner()
vScanner constructor. Initialize the member variables to their default values.
FLTNB m_defaultBedDisplacementInMm
virtual uint16_t PROJ_GetSPECTNbProjections()
return the total number of projections for a SPECT acquisition
virtual uint16_t PROJ_GetSPECTNbPixels()
return the total number of pixels for a SPECT reconstruction
oImageDimensionsAndQuantification * mp_ID
virtual void DescribeSpecific()=0
A pure virtual function used to describe the specific parts of the scanner.
oMatrix * mp_rotationMatrix
#define SCANNER_SPECT_CONVERGENT
#define VERBOSE_DEBUG_LIGHT
virtual int SetRotDirection(string a_rotDirection)
Set rotation direction of the system.
Declaration of class vScanner.
virtual ~vScanner()
vScanner destructor.
void Describe()
A function used to describe the generic parts of the datafile.
Declaration of class sScannerManager.
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
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)
Recover geometric SPECT specific parameters from the scanner to initialize the datafile.
#define SCANNER_SPECT_PINHOLE
virtual int PROJ_SetSPECTCORtoDetectorDistance(FLTNB a_CORtoDetectorDistance)
Set distance between center of rotation and SPECT detectors.
oMatrix * mp_positionMatrix_ref
#define DEBUG_VERBOSE(IGNORED1, IGNORED2)
virtual int LoadLUT()
Virtual function which should be implemented by the child classes. Load a precomputed scanner LUT...
virtual int IsAvailableLOR(int a_elt1, int a_elt2)
This function is implemented in child classes. Check if the LOR is available according to the scann...
virtual int GetCTSpecificParameters(uint16_t *ap_nbOfProjections, FLTNB *&ap_angles, int *ap_detectorRotDirection)
Recover geometric CT specific parameters from the scanner to initialize the datafile.