Summary of changes in STIR release 1.0 (dated 20/12/2001)

Summary for endusers (also to be read by developers)

More functionality

Incompatibilities

Changes in the build process

Bug fixes

Summary for developers

Details

There are more changes than listed here. For example all the projector files have changed as well according to the summary above.

Changed files

include/Tomography_common.h:
- moved stir/common.h (after moving the definition of Succeeded to stir/Succeeded.h).


include/stir/common.h:
- this was Tomography_common.h, but it doesn't declare class Succeeded anymore
- updated comments
- do not define std::min,max here anymore for VC, is it is now done in boost/config.hpp


include/stir/Array.h:
- enabled ARRAY_FULL for full iterators

include/stir/ArrayFunction.h:
- added  in_place_apply_array_functions_on_each_index,
  in_place_apply_array_function_on_1st_index,
  apply_array_functions_on_each_index and
  apply_array_function_on_1st_index
- added some documentation

buildblock/InterfileHeader.cxx:
- BUG removed: corrected default bin size

buildblock/interfile.cxx:
- in write_basic_interfile_PDFS_header, use data from proj_data_info instead 
  of scanner for the following 3 keywords:
  ring_diameter, distance between rings, bin size
- write arc-correction information for projection data
- write*interfile* with a single filename now handles filenames ending on 
  .hs or .hv. They also attempt tohandle paths gracefully
- write_basic_interfile_PDFS_header now also writes the scale factor

buildblock/InterfileHeader.cxx:
- read arc-correction information for projection data


include/stir/interfile.h, include/stir/ProjData.h,
buildblock/interfile.cxx, buildblock/ProjData.cxx:
added openmode parameter to the read_ functions to allow opening it in read-write

include/stir/utilities.h,.inl, buildblock/utilities.cxx:
- in ask* functions, got rid of template in CHAR_PTR, and replaced it by 
  a const string&. This works always, and removed the needs for templates.
- moved ask() to .cxx
- added ask_string()
- in .cxx, removed some obsolete junk (which was between #if 0... #endif)


include/stir/RelatedViewgrams.h, buildblock/RelatedViewgrams.cxx:
- added numerical 4 operators *=, /=, +=, -= with another RelatedViewgrams object
- added get_symmetries_ptr
- added get_basic_view_segment_num


include/stir/recon_array_functions.h, buildblock/recon_array_functions.cxx:
- renamed truncate_min_to_small_positive_value to 
threshold_min_to_small_positive_value

include/stir/zoom.h, buildblock/zoom.cxx:
- enable zooming of (Related)Viewgram(s)


include/stir/KeyParser.h, buildblock/KeyParser.cxx:
- added PARSINGOBJECT and SHARED_PARSINGOBJECT type to enable recursive parsing
- added BOOL,FLOAT types
- added public member add_*key() which are much easier to use than 
the protected add_key, and allow KeyParser to be used as a member instead
of a parent of a class.
- added ask_parameters() and parameter_info() members. These get info from the 
keymap to return the relevant results.  TODO doesn't work yet with vectored keys.
- changed type of keymap from std::map to std::list, such that above new 
functions use the order in which keys are defined
- added private functions add_in_keymap() and  find_in_keymap() to make use of 
map or list transparent.

buildblock/recon_array_functions.cxx:
- changed handling of singularities in divide_and_truncate for viewgrams. 
We now put them to a maximum quotient, while they used to be put to 0
- adjusted accumulate_loglikelihood to gave same result as divide_and_truncate


VoxelsOnCartesianGrid.cxx:
- only a single constructor with ProjDataInfo which allows arbitrary x,y,z sizes (with appropriate default. It also works with arbitrary ProjDataInfo (not only ArcCorr)

VoxelsOnCartesianGrid.h:
- changed constructors
- adjusted doxygen


recon_buildblock/Reconstruction.cxx:
- removed obsolete keyword 'output prefix', use 'output filename prefix' instead
- disabled offset keywords as the projectors can't do it yet
- changed 'output image size' keyword to 'xy output image size (in pixels)'

recon_buildblock/IterativeReconstruction.cxx:
- removed warning on zoom et al, they are now in the projectors (if necessary)
- moved stuff from LogLikBasedReconstruction::end_of_iteration_processing here
- use ImageProcessor


include/stir/recon_buildblock/DataSymmetriesForBins_PET_CartesianGrid.h, .inl
- added inline implementations for get_num_planes_per_axial_pos
  and get_axial_pos_to_z_offset

include/stir/recon_buildblock/ForwardProjectorByBinUsingProjMatrixByBin.h,
recon_buildblock/ForwardProjectorByBinUsingProjMatrixByBin.cxx:
- made constructor argument into a reference
- changed asserts to run-time check to allow arbitrary min-max tang_pos ranges

include/stir/recon_buildblock/BackProjectorByBinUsingInterpolation.h,
recon_buildblock/BackProjectorByBinUsingInterpolation.cxx,
recon_buildblock/BackProjectorByBinUsingInterpolation_3DCho.cxx:
- can now handle odd-sized images or projection data
- can now handle arbitrary min,max_tangential_pos_num
- hopefully can handle z_offset and z_size, but needs testing
- can now handle zoom (which it does by calling zoom_viewgrams first)
- changed type of symmetries_ptr to enable use of more methods
- has now built-in rim-truncation
- adjusted doxygen to new functionality

recon_buildblock/ForwardProjectorByBinUsingProjMatrixByBin.cxx:
- added registry stuff
- changed mechanism that checked if a lor was in the cache. Instead of a list
	use a vector. Speeds it up quite a lot.

include/stir/LogLikBased/common.h:
- set rim_truncations to 0

iterative/LogLik_buildblock/common.cxx:
- in distributable_compute_sensitivity, divide with the multiplicative_correction 
  argument instead of multiplying. This makes it more suitable for passing
  normalisation factors
- some clean-up

iterative/LogLik_buildblock/LogLikelihoodBasedReconstruction.cxx:
- added check that sensitivity and target_image are the same size etc.

iterative/LogLik_buildblock/LogLik*.cxx:
include/stir/LogLikBased/LogLikelihoodBasedAlgorithmParameters.h:
- user-selectable projection operators
- moved LogLikBasedReconstruction::end_of_iteration_processing to IterativeReconstruction



iterative/OSMAPOSL/OSMAPOSLParameters.cxx, include/stir/OSMAPOSL/OSMAPOSLParameters.h
- added min/max relative change parameters
- added  write_update_image parameter
- added GeneralisedPrior stuff
- use ImageProcessor

iterative/OSMAPOSL/OSMAPOSLReconstruction.cxx
- added min/max relative change functionality
- added  write_update_image  functionality
- added GeneralisedPrior stuff
- use ImageProcessor

iterative/sensitivity/sensitivity.cxx:
- parse OSMAPOSL type .par file to get lots of info. This makes sure that
  the info used when running sensitivity and OSMAPOSL is consistent.
- added functionality to input normalisation factors
- check user input "0" and "1" with full strings instead of first character only
- rescale attenuation image from cm^-1 to something suitable for the projectors


utilities/postfilter.cxx:
- use ImageProcessor


utilities/cti_utils.cxx:
- added a (char *) in a call to swab() with a long * (otherwise crashes on HPUX)

utilities/conv_to_ecat6.cxx:
- conv_to_ecat6 can now write multiples files  a single ECAT 6 file.
  The data will be assigned a frame number in the 
  order that they occur on the command line.

include/stir/CTI/Tomo_cti.h, utilities/Tomo_cti.cxx:
- renamed into stir_cti.*
- new functions for writing multiples files  a single ECAT 6 file.
include/stir/recon_buildblock/ReconstructionParameters:
- based on ParsingObject, instead of KeyParser
- added members of z_offset and z_size, rename x_y_size member


display_projdata.cxx:
- allow changing of maximum in colour scale

compare_image:
- added option for rim_truncation

new files

(probably incomplete) list of new files.

include files

*.cxx

.cxx files corresponding to the new .h files above are not listed (yet?).
Last modified: Thu Dec 20 22:19:47 GMT 2001