8 #include "sScannerManager.hh" 59 Cout(
"vScanner::Describe() -> Here is some generic content of the scanner" << endl);
83 return "SCANNER SPECT PINHOLE";
85 return "SCANNER SPECT CONVERGENT";
89 return "SCANNER SINOGRAM";
115 Cerr(
"***** vScanner::ComputeLUT() -> Call to ComputeLUT() which is not implemented by the scanner child class !" << endl);
138 Cerr(
"***** vScanner::ComputeLUT() -> Call to ComputeLUT() which is not implemented by the scanner child class !" << endl);
160 Cerr(
"***** vScanner::IsAvailableLOR() -> This function is not implemented by the Instantiated scanner class !!" << endl);
161 Cerr(
" This function only works with PET scanner objects !!" << endl);
182 Cerr(
"***** vScanner::SetPETMaxAxialDiffmm() -> This function is not implemented by the Instantiated scanner class !!" << endl);
183 Cerr(
" This function only works with PET scanner objects !!" << endl);
203 Cerr(
"***** vScanner::PROJ_GetPETSpecificParameters() -> This function is not implemented by the Instantiated scanner class !!" << endl);
204 Cerr(
" This function only works with PET scanner objects !!" << endl);
216 uint16_t* ap_nbHeads,
217 FLTNB* ap_acquisitionZoom,
218 uint16_t* ap_nbOfBins,
221 FLTNB*& ap_CORtoDetectorDistance,
222 int* ap_headRotDirection)
224 Cerr(
"***** vScanner::GetSPECTSpecificParameters() -> This function is not implemented by the Instantiated scanner class !!" << endl);
225 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
247 int* ap_detectorRotDirection)
249 Cerr(
"***** vScanner::GetCTSpecificParameters() -> This function is not implemented by the Instantiated scanner class !!" << endl);
250 Cerr(
" This function only works with CT scanner objects !!" << endl);
269 if( a_rotDirection ==
"CCW" ||
270 a_rotDirection ==
"Ccw" ||
271 a_rotDirection ==
"ccw" )
274 else if(a_rotDirection ==
"" ||
275 a_rotDirection ==
"CW" ||
276 a_rotDirection ==
"Cw" ||
277 a_rotDirection ==
"cw" )
282 Cerr(
"***** vScanner::SetRotDirection -> Error while initializing rotation direction !" << endl);
283 Cerr(
" "<< a_rotDirection <<
"' is unknown. Direction must be 'CW' (clockwise) or 'CCW' (counter-clockwise).");
305 Cerr(
"***** vScanner::PROJ_SetSPECTNbBins() -> This function is not implemented by the Instantiated scanner class !!" << endl);
306 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
326 Cerr(
"***** vScanner::PROJ_SetSPECTNbProjections() -> This function is not implemented by the Instantiated scanner class !!" << endl);
327 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
350 Cerr(
"***** vScanner::SetSPECTAngles() -> This function is not implemented by the Instantiated scanner class !!" << endl);
351 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
371 Cerr(
"***** vScanner::SetSPECTCORtoDetectorDistance() -> This function is not implemented by the Instantiated scanner class !!" << endl);
372 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
391 Cerr(
"***** vScanner::GetSPECTNbProjections() -> This function is not implemented by the Instantiated scanner class !!" << endl);
392 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
411 Cerr(
"***** vScanner::GetSPECTNbPixels() -> This function is not implemented by the Instantiated scanner class !!" << endl);
412 Cerr(
" This function only works with SPECT scanner objects !!" << endl);
virtual int PROJ_SetSPECTNbBins(uint16_t *ap_nbOfBins)
oImageDimensionsAndQuantification * mp_ID
virtual int PROJ_SetSPECTNbProjections(uint32_t a_nbOfProjections)
virtual int PROJ_GetPETSpecificParameters(FLTNB *ap_maxRingDiff)
virtual int SetPETMaxAxialDiffmm(FLTNB a_maxAxialDiffmm)
virtual int PROJ_SetSPECTAngles(FLTNB *ap_projectionAngles)
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
virtual void DescribeSpecific()=0
A pure virtual function used to describe the specific parts of the scanner.
#define SCANNER_SPECT_CONVERGENT
virtual int SetRotDirection(string a_rotDirection)
#define DEBUG_VERBOSE(IGNORED1, IGNORED2)
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
#define SCANNER_SPECT_PINHOLE
virtual int PROJ_SetSPECTCORtoDetectorDistance(FLTNB a_CORtoDetectorDistance)
oMatrix * mp_rotationMatrix
virtual int LoadLUT()
Virtual function which should be implemented by the child classes. Load a precomputed scanner LUT...
#define VERBOSE_DEBUG_LIGHT
virtual int IsAvailableLOR(int a_elt1, int a_elt2)
virtual int GetCTSpecificParameters(uint16_t *ap_nbOfProjections, FLTNB *&ap_angles, int *ap_detectorRotDirection)