STIR  6.2.0
SymmetryOperation.h
Go to the documentation of this file.
1 //
2 //
13 /*
14  Copyright (C) 2000 PARAPET partners
15  Copyright (C) 2000- 2009, Hammersmith Imanet Ltd
16  This file is part of STIR.
17 
18  SPDX-License-Identifier: Apache-2.0 AND License-ref-PARAPET-license
19 
20  See STIR/LICENSE.txt for details
21 */
22 #ifndef __stir_recon_buildblock_SymmetryOperation_H__
23 #define __stir_recon_buildblock_SymmetryOperation_H__
24 
25 #include "stir/common.h"
26 
27 START_NAMESPACE_STIR
28 
29 template <int num_dimensions, class coordT>
30 class BasicCoordinate;
31 class ViewSegmentNumbers;
32 class ProjMatrixElemsForOneBin;
33 class ProjMatrixElemsForOneDensel;
34 class Bin;
35 
62 {
63 public:
64  virtual inline ~SymmetryOperation() {}
65  virtual inline bool is_trivial() const { return false; }
66  virtual void transform_bin_coordinates(Bin&) const = 0;
67  virtual void transform_view_segment_indices(ViewSegmentNumbers&) const = 0;
68  virtual void transform_image_coordinates(BasicCoordinate<3, int>&) const = 0;
69 #if 0
70  // would be useful at some point
71  virtual void
72  transform_incremental_image_coordinates(BasicCoordinate<3,int>&) const = 0;
73 #endif
74 
75  virtual void transform_proj_matrix_elems_for_one_bin(ProjMatrixElemsForOneBin& lor) const;
76 
77  virtual void transform_proj_matrix_elems_for_one_densel(ProjMatrixElemsForOneDensel&) const;
78 };
79 
86 {
87 public:
88  inline bool is_trivial() const override { return true; }
89  inline void transform_bin_coordinates(Bin& b) const override {}
90  inline void transform_view_segment_indices(ViewSegmentNumbers& n) const override {}
91  inline void transform_image_coordinates(BasicCoordinate<3, int>& c) const override {}
92  inline void transform_proj_matrix_elems_for_one_bin(ProjMatrixElemsForOneBin& lor) const override {}
93 
94  void transform_proj_matrix_elems_for_one_densel(ProjMatrixElemsForOneDensel&) const override {}
95 };
96 
97 END_NAMESPACE_STIR
98 
99 //#include "stir/recon_buildblock/SymmetryOperation.inl"
100 
101 #endif
This stores the non-zero projection matrix elements for every &#39;voxel&#39;.
Definition: ProjMatrixElemsForOneDensel.h:59
A class implementing the trivial case where the symmetry operation does nothing at all...
Definition: SymmetryOperation.h:85
Encodes symmetry operation on image coordinates and projection data coordinates.
Definition: SymmetryOperation.h:61
alias for ViewgramIndices
Definition: ViewSegmentNumbers.h:33
A class for storing coordinates and value of a single projection bin.
Definition: Bin.h:48
This stores the non-zero projection matrix elements for every &#39;densel&#39; that contributes to a given bi...
Definition: ProjMatrixElemsForOneBin.h:68
basic configuration include file