STIR  6.2.0
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
stir::ProjectorByBinPair Class Reference

Abstract base class for all projector pairs. More...

#include "stir/recon_buildblock/ProjectorByBinPair.h"

Inheritance diagram for stir::ProjectorByBinPair:
Inheritance graph
[legend]

Public Member Functions

 ProjectorByBinPair ()
 Default constructor.
 
virtual Succeeded set_up (const shared_ptr< const ProjDataInfo > &, const shared_ptr< const DiscretisedDensity< 3, float >> &)
 Stores all necessary geometric info. More...
 
const shared_ptr< ForwardProjectorByBinget_forward_projector_sptr () const
 
const shared_ptr< BackProjectorByBinget_back_projector_sptr () const
 
const DataSymmetriesForViewSegmentNumbersget_symmetries_used () const
 Provide access to the (minimal) symmetries used by the projectors. More...
 
- Public Member Functions inherited from stir::RegisteredObjectBase
virtual std::string get_registered_name () const =0
 Returns the name of the type of the object. More...
 
- Public Member Functions inherited from stir::ParsingObject
 ParsingObject (const ParsingObject &)
 
ParsingObjectoperator= (const ParsingObject &)
 
void ask_parameters ()
 
virtual std::string parameter_info ()
 
bool parse (std::istream &f)
 
bool parse (const char *const filename)
 

Protected Member Functions

virtual void check (const ProjDataInfo &proj_data_info, const DiscretisedDensity< 3, float > &density_info) const
 check if the argument is the same as what was used for set_up() More...
 
- Protected Member Functions inherited from stir::ParsingObject
virtual void set_defaults ()
 Set defaults before parsing.
 
virtual void initialise_keymap ()
 Initialise all keywords.
 
virtual bool post_processing ()
 This will be called at the end of the parsing. More...
 
virtual void set_key_values ()
 This will be called before parsing or parameter_info is called. More...
 

Protected Attributes

shared_ptr< ForwardProjectorByBinforward_projector_sptr
 
shared_ptr< BackProjectorByBinback_projector_sptr
 
bool _already_set_up
 
- Protected Attributes inherited from stir::ParsingObject
KeyParser parser
 

Additional Inherited Members

- Static Public Member Functions inherited from stir::RegisteredObject< ProjectorByBinPair >
static ProjectorByBinPairread_registered_object (std::istream *in, const std::string &registered_name)
 Construct a new object (of a type derived from Root, its actual type determined by the registered_name parameter) by parsing the istream. More...
 
static ProjectorByBinPairask_type_and_parameters ()
 ask the user for the type, and then calls read_registered_object(0, type) More...
 
static void list_registered_names (std::ostream &stream)
 List all possible registered names to the stream. More...
 
- Protected Types inherited from stir::RegisteredObject< ProjectorByBinPair >
typedef ProjectorByBinPair *(* RootFactory) (std::istream *)
 The type of a root factory is a function, taking an istream* as argument, and returning a Root*.
 
typedef FactoryRegistry< std::string, RootFactory, interfile_lessRegistryType
 The type of the registry.
 
- Static Protected Member Functions inherited from stir::RegisteredObject< ProjectorByBinPair >
static RegistryTyperegistry ()
 Static function returning the registry. More...
 

Detailed Description

Abstract base class for all projector pairs.

This class is useful for all algorithms which need both a forward and back projector. It's only purpose in that case is to provide the parsing mechanisms, such that the projectors can be defined in a .par file.

Member Function Documentation

◆ set_up()

Succeeded stir::ProjectorByBinPair::set_up ( const shared_ptr< const ProjDataInfo > &  proj_data_info_sptr,
const shared_ptr< const DiscretisedDensity< 3, float >> &  image_info_sptr 
)
virtual

Stores all necessary geometric info.

If necessary, set_up() can be called more than once.

Derived classes can assume that the projectors will be called with input corresponding to the arguments of the last call to set_up().

Warning
Derived classes have to call set_up from the base class.

Reimplemented in stir::ProjectorByBinPairUsingProjMatrixByBin, and stir::ProjectorByBinPairUsingParallelproj.

◆ get_symmetries_used()

const DataSymmetriesForViewSegmentNumbers* stir::ProjectorByBinPair::get_symmetries_used ( ) const
inline

Provide access to the (minimal) symmetries used by the projectors.

It is expected that the forward and back projector can handle the same symmetries.

Warning
There is currently no check that this is the case, and we just return the symmetries returned by the back projector.
Todo:
determine set of minimal symmetries

◆ check()

void stir::ProjectorByBinPair::check ( const ProjDataInfo proj_data_info,
const DiscretisedDensity< 3, float > &  density_info 
) const
protectedvirtual

check if the argument is the same as what was used for set_up()

calls error() if anything is wrong.

If overriding this function in a derived class, you need to call this one.

References stir::error(), and stir::ProjDataInfo::parameter_info().


The documentation for this class was generated from the following files: