34 #ifndef AIMS_SINO_SINO_H 35 #define AIMS_SINO_SINO_H 39 #include <ecat+/io/io.h> 52 ScannerConf(
int ring,
int numSeg,
int ringDiff,
int span,
int numAngles,
int numBin,
53 float zResolution,
float binResolution,
float faceRadius ) ;
60 int getZ(
int segment )
const {
return _numZ[ segment ]; }
81 static ScannerConf ecatHRPlusUsual(63, 5, 22, 9, 0, 0, 0., 0., 0.);
99 void allocate(
int,
int );
102 {
return _internalMode; }
110 {
return _displayMode; }
113 { _displayMode = displayMode; }
118 int transCodeSegment(
int s)
const ;
119 int getZ(
int segment ) {
return _scannerConfig.getZ(segment); };
126 inline T& operator() (
int segment,
int zOrAlpha,
int alphaOrZ,
int ro )
128 if( _internalMode == _displayMode )
129 return _bin( segment )( zOrAlpha )( ro, alphaOrZ );
131 return _bin( segment )( alphaOrZ )( ro, zOrAlpha );
135 {
return _bin( segment ); }
151 _header.copy( hdr ) ;
155 int getNumPlanes(
int seg )
const ;
157 int getNumSeg()
const ;
160 int getRing()
const {
return _scannerConfig._ring; }
161 int getSpan()
const {
return _scannerConfig._span; }
164 std::string getFileType()
const ;
165 std::string getEcatFileType()
const ;
166 short getSystemType()
const ;
167 unsigned int getScanStartTime()
const ;
168 std::string getRadioPharmaceutical()
const ;
169 std::string getIsotopeName()
const ;
170 float getIsotopeHalfLife()
const ;
171 float getDistanceScanned()
const ;
172 float getTransaxialFOV()
const ;
173 short getAngularCompression()
const ;
174 std::string getStudyType()
const ;
175 short getPatientOrientation()
const ;
176 float getPlaneSeparation()
const ;
177 short getTotalNumPlanes()
const ;
178 int getMultiFileType()
const ;
179 float getInitBedPosition()
const ;
180 short getLowerTrueThreshold()
const ;
181 short getUpperTrueThreshold()
const ;
182 short getAcquisitionMode()
const ;
183 short getAcquisitionType()
const ;
184 float getBinSize()
const ;
185 float getBranchingFraction()
const ;
186 unsigned int getDoseStartTime()
const ;
187 float getBedElevation()
const ;
188 short getCoinSampleMode()
const ;
189 short getAxialSampleMode()
const ;
190 float getCalibrationFactor()
const ;
191 std::vector<float> getBedOffset()
const ;
192 short getLowerScatterThreshold()
const ;
193 float getDosage()
const ;
194 float getWellCounterFactor()
const ;
195 short getSeptaState()
const ;
197 float getVResolution()
const ;
199 float getWResolution()
const ;
200 short getScanMin()
const ;
201 short getScanMax()
const ;
203 int getPrompts()
const ;
204 std::vector<float> getUncorrectedSingles( )
const ;
205 int getDelayed()
const ;
206 int getMultiples()
const ;
207 int getTrues()
const ;
208 float getTotalAverageCorrected()
const ;
209 float getTotalAverageUncorrected()
const ;
210 int getTotalCoinRate()
const ;
211 float getDeadTimeCorrectionFactor()
const ;
212 unsigned int getStartTime()
const ;
213 unsigned int getDurationTime()
const ;
214 unsigned int getGateDuration()
const ;
216 void setFileType(
const std::string& fileType);
217 void setEcatFileType(
const std::string& fileType ) ;
218 void setSystemType(
short systemType) ;
219 void setScanStartTime(
unsigned int scanStartTime) ;
221 void setPrompts(
int prompts);
222 void setUncorrectedSingles(
const std::vector<float>& uncorrSingles ) ;
223 void setDelayed(
int delayed);
224 void setMultiples(
int multiples);
225 void setTrues(
int trues);
227 void setTotalAverageCorrected(
float ) ;
228 void setTotalAverageUncorrected(
float) ;
229 void setTotalCoinRate(
int) ;
230 void setDeadTimeCorrectionFactor(
float) ;
231 void setStartTime(
unsigned int) ;
232 void setDurationTime(
unsigned int) ;
233 void setGateDuration(
unsigned int) ;
235 void setRadioPharmaceutical(
const std::string& radiopharmaceutical) ;
236 void setIsotopeName(
const std::string& isotopeName);
237 void setIsotopeHalfLife(
float isotopeHalfLife);
238 void setDistanceScanned(
float DistanceScanned);
239 void setTransaxialFOV(
float TransaxialFOV);
240 void setAngularCompression(
short AngularCompression);
241 void setStudyType(
const std::string& StudyType);
242 void setPatientOrientation(
short PatientOrientation);
243 void setPlaneSeparation(
float planeSep) ;
244 void setTotalNumPlanes(
short NumPlanes);
245 void setMultiFileType(
int MultiFileType );
246 void setInitBedPosition(
float InitBedPosition);
247 void setLowerTrueThreshold(
short LowerTrueThreshold);
248 void setUpperTrueThreshold(
short UpperTrueThreshold);
249 void setAcquisitionMode(
short AquisitionMode);
250 void setAcquisitionType(
short AquisitionType);
251 void setBinSize(
float BinSize);
252 void setBranchingFraction(
float BranchingFraction);
253 void setDoseStartTime(
unsigned int DoseStartTime);
254 void setBedElevation (
float) ;
255 void setCoinSampleMode (
short) ;
256 void setAxialSampleMode (
short) ;
257 void setCalibrationFactor (
float) ;
258 void setBedOffset (
const std::vector<float>&) ;
259 void setLowerScatterThreshold (
short) ;
260 void setDosage (
float) ;
261 void setWellCounterFactor (
float) ;
262 void setSeptaState (
short) ;
263 void setXResolution (
float) ;
264 void setVResolution (
float) ;
265 void setZResolution (
float) ;
266 void setWResolution (
float) ;
267 void setScanMin(
short scanMin) ;
268 void setScanMax(
short scanMax) ;
270 void printHeader()
const ;
float getZResolution() const
ScannerConf(int ring, int numSeg, int ringDiff, int span, int numAngles, int numBin, float zResolution, float binResolution, float faceRadius)
float getXResolution() const
The class for EcatSino data write operation.
AimsData< AimsData< AimsData< T > > > & start()
int getZ(int segment) const
An attempt to efficiently manage view/sinogram acquisition PET data.
Mode getInternalMode() const
void setInternalMode(const Sinogram< T >::Mode &)
void setDisplayMode(Mode displayMode)
void setHeader(const PythonHeader &hdr)
const ScannerConf & getScannerConf() const
bool operator!=(const ScannerConf &conf) const
ScannerConf & operator=(const ScannerConf &)
Sinogram(const ScannerConf &conf=ecatHRPlusUsual)
const aims::PythonHeader & header() const