81 Cout(
"vScanner::Describe() -> Here is some generic content of the scanner" << endl);
103 return "SCANNER PET";
105 return "SCANNER SPECT PINHOLE";
107 return "SCANNER SPECT CONVERGENT";
111 return "SCANNER SINOGRAM";
137 Cerr(
"***** vScanner::ComputeLUT() -> Call to ComputeLUT() which is not implemented by the scanner child class !" << endl);
160 Cerr(
"***** vScanner::ComputeLUT() -> Call to ComputeLUT() which is not implemented by the scanner child class !" << endl);
182 Cerr(
"***** vScanner::IsAvailableLOR() -> This function is not implemented by the Instantiated scanner class !!" << endl);
183 Cerr(
" This function only works with PET scanner objects !!" << endl);
204 Cerr(
"***** vScanner::SetPETMaxAxialDiffmm() -> This function is not implemented by the Instantiated scanner class !!" << endl);
205 Cerr(
" This function only works with PET scanner objects !!" << endl);
225 Cerr(
"***** vScanner::PROJ_GetPETSpecificParameters() -> This function is not implemented by the Instantiated scanner class !!" << endl);
226 Cerr(
" This function only works with PET scanner objects !!" << endl);
238 uint16_t* ap_nbHeads,
239 FLTNB* ap_acquisitionZoom,
240 uint16_t* ap_nbOfBins,
243 FLTNB*& ap_CORtoDetectorDistance,
244 int* ap_headRotDirection)
246 Cerr(
"***** vScanner::GetSPECTSpecificParameters() -> This function is not implemented by the Instantiated scanner class !!" << endl);
247 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
269 int* ap_detectorRotDirection)
271 Cerr(
"***** vScanner::GetCTSpecificParameters() -> This function is not implemented by the Instantiated scanner class !!" << endl);
272 Cerr(
" This function only works with CT scanner objects !!" << endl);
291 if( a_rotDirection ==
"CCW" ||
292 a_rotDirection ==
"Ccw" ||
293 a_rotDirection ==
"ccw" )
296 else if(a_rotDirection ==
"" ||
297 a_rotDirection ==
"CW" ||
298 a_rotDirection ==
"Cw" ||
299 a_rotDirection ==
"cw" )
304 Cerr(
"***** vScanner::SetRotDirection -> Error while initializing rotation direction !" << endl);
305 Cerr(
" "<< a_rotDirection <<
"' is unknown. Direction must be 'CW' (clockwise) or 'CCW' (counter-clockwise).");
327 Cerr(
"***** vScanner::PROJ_SetSPECTNbBins() -> This function is not implemented by the Instantiated scanner class !!" << endl);
328 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
348 Cerr(
"***** vScanner::PROJ_SetSPECTNbProjections() -> This function is not implemented by the Instantiated scanner class !!" << endl);
349 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
372 Cerr(
"***** vScanner::SetSPECTAngles() -> This function is not implemented by the Instantiated scanner class !!" << endl);
373 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
393 Cerr(
"***** vScanner::SetSPECTCORtoDetectorDistance() -> This function is not implemented by the Instantiated scanner class !!" << endl);
394 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
413 Cerr(
"***** vScanner::GetSPECTNbProjections() -> This function is not implemented by the Instantiated scanner class !!" << endl);
414 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
433 Cerr(
"***** vScanner::GetSPECTNbPixels() -> This function is not implemented by the Instantiated scanner class !!" << endl);
434 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.