STIR  6.2.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  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  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, 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  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  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  wmh_type& wmh);
92 
93 void calc_psf_bin(
94  float center_psf, float binszcm, SPECTUB::discrf_type const* const vxprj, SPECTUB::psf1d_type* psf, SPECTUB::wmh_type& wmh);
95 
96 //... attenuation...................................................
97 
98 // not used
99 // void size_attpth_simple( psf2da_type *psf, voxel_type vox, volume_type vol, float *att, angle_type *ang );
100 
101 // void size_attpth_full( psf2da_type *psf, voxel_type vox, volume_type vol, float *att, angle_type *ang );
102 
103 void
104 calc_att_path(const bin_type& bin, const SPECTUB::voxel_type& vox, const SPECTUB::volume_type& vol, SPECTUB::attpth_type* attpth);
105 
106 float calc_att(const SPECTUB::attpth_type* const attpth, const float* const attmap, int islc, SPECTUB::wmh_type& wmh);
107 
108 int comp_dist(float dx, float dy, float dz, float dlast);
109 
110 void error_weight3d(int nerr, const std::string& txt); // error messages in weight3d_SPECT
111 
112 } // namespace SPECTUB
113 
114 #endif
structure for voxel information
Definition: SPECTUB_Tools.h:265
Namespace for the SPECT library from University of Barcelona.
Definition: SPECTUB_Tools.h:21
complementary information (matrix header)
Definition: SPECTUB_Tools.h:109
structure for distribution function information
Definition: SPECTUB_Tools.h:218
structure for projection information
Definition: SPECTUB_Tools.h:81
structure for bin information
Definition: SPECTUB_Tools.h:50
structure for attenuation calculus
Definition: SPECTUB_Tools.h:307
structure to store angles values, indices and ratios
Definition: SPECTUB_Tools.h:233
weight_mat_da structure definition. Structure for generating weight matrix
Definition: SPECTUB_Tools.h:162
structure for PSF information
Definition: SPECTUB_Tools.h:201
structure for distribution function information
Definition: SPECTUB_Tools.h:190