STIR  6.3.0
SPECTUB_Weight3d.h
1 /*
2  Copyright (c) 2013, Biomedical Image Group (GIB), Universitat de Barcelona, Barcelona, Spain.
3  Copyright (c) 2013, University College London
4  This file is part of STIR.
5 
6  SPDX-License-Identifier: Apache-2.0
7 
8  See STIR/LICENSE.txt for details
9 
10  \author Carles Falcon
11 
12 */
13 
14 #ifndef _WEIGHT3D_SPECTUB_H
15 #define _WEIGHT3D_SPECTUB_H
16 
28 namespace SPECTUB
29 {
30 
31 void wm_calculation(const int kOS,
32  const SPECTUB::angle_type* const ang,
34  bin_type bin,
35  const SPECTUB::volume_type& vol,
36  const proj_type& prj,
37  const float* attmap,
38  const bool* msk_3d,
39  const bool* msk_2d,
40  const int maxszb,
41  const SPECTUB::discrf_type* const gaussdens,
42  const int* const NITEMS,
44  const SPECTUB::wmh_type& wmh,
45  const float* Rrad);
46 
47 void wm_size_estimation(int kOS,
48  const SPECTUB::angle_type* const ang,
50  bin_type bin,
51  const SPECTUB::volume_type& vol,
52  const SPECTUB::proj_type& prj,
53  const bool* const msk_3d,
54  const bool* const msk_2d,
55  const int maxszb,
56  const SPECTUB::discrf_type* const gaussdens,
57  int* NITEMS,
58  const SPECTUB::wmh_type& wmh,
59  const float* Rrad);
60 
61 //... geometric component ............................................
62 
63 void calc_gauss(SPECTUB::discrf_type* gaussdens);
64 
65 void calc_vxprj(SPECTUB::angle_type* ang);
66 
67 void voxel_projection(SPECTUB::voxel_type* vox, float* eff, float lngcmd2, const SPECTUB::wmh_type& wmh);
68 
69 void fill_psf_no(SPECTUB::psf2da_type* psf,
70  SPECTUB::psf1d_type* psf1d_h,
71  const SPECTUB::voxel_type& vox,
72  const angle_type* const ang,
73  float szdx,
74  const SPECTUB::wmh_type& wmh);
75 
76 void fill_psf_2d(SPECTUB::psf2da_type* psf,
77  SPECTUB::psf1d_type* psf1d_h,
78  const SPECTUB::voxel_type& vox,
79  SPECTUB::discrf_type const* const gaussdens,
80  float szdx,
81  const SPECTUB::wmh_type& wmh);
82 
83 void fill_psf_3d(SPECTUB::psf2da_type* psf,
84  SPECTUB::psf1d_type* psf1d_h,
85  SPECTUB::psf1d_type* psf1d_v,
86  const SPECTUB::voxel_type& vox,
87  SPECTUB::discrf_type const* const gaussdens,
88  float szdx,
89  float thdx,
90  float thcmd2,
91  const wmh_type& wmh);
92 
93 void calc_psf_bin(float center_psf,
94  float binszcm,
95  SPECTUB::discrf_type const* const vxprj,
97  const SPECTUB::wmh_type& wmh);
98 
99 //... attenuation...................................................
100 
101 // not used
102 // void size_attpth_simple( psf2da_type *psf, voxel_type vox, volume_type vol, float *att, angle_type *ang );
103 
104 // void size_attpth_full( psf2da_type *psf, voxel_type vox, volume_type vol, float *att, angle_type *ang );
105 
106 void
107 calc_att_path(const bin_type& bin, const SPECTUB::voxel_type& vox, const SPECTUB::volume_type& vol, SPECTUB::attpth_type* attpth);
108 
109 float calc_att(const SPECTUB::attpth_type* const attpth, const float* const attmap, int islc, const SPECTUB::wmh_type& wmh);
110 
111 int comp_dist(float dx, float dy, float dz, float dlast);
112 
113 void error_weight3d(int nerr, const std::string& txt); // error messages in weight3d_SPECT
114 
115 } // namespace SPECTUB
116 
117 #endif
structure for voxel information
Definition: SPECTUB_Tools.h:262
Namespace for the SPECT library from University of Barcelona.
Definition: SPECTUB_Tools.h:19
complementary information (matrix header)
Definition: SPECTUB_Tools.h:106
structure for distribution function information
Definition: SPECTUB_Tools.h:215
structure for projection information
Definition: SPECTUB_Tools.h:79
structure for bin information
Definition: SPECTUB_Tools.h:48
structure for attenuation calculus
Definition: SPECTUB_Tools.h:304
structure to store angles values, indices and ratios
Definition: SPECTUB_Tools.h:230
weight_mat_da structure definition. Structure for generating weight matrix
Definition: SPECTUB_Tools.h:159
structure for PSF information
Definition: SPECTUB_Tools.h:198
structure for distribution function information
Definition: SPECTUB_Tools.h:187