Initial snark14m import
[snark14.git] / src / snark / art_artbck.cpp
1 /*
2 ***********************************************************
3 $SNARK_Header: S N A R K  1 4 - A PICTURE RECONSTRUCTION PROGRAM $
4 $HeadURL: svn://dig.cs.gc.cuny.edu/snark/trunk/src/snark/art_artbck.cpp $
5 $LastChangedRevision: 85 $
6 $Date: 2014-07-02 16:07:08 -0400 (Wed, 02 Jul 2014) $
7 $Author: agulati $
8 ***********************************************************
9
10  CALCULATE BACKPROJECTIONS (THE SAME AS BCKRAY)
11  WITH OPTION "HALF" IN ART
12 */
13
14 #include <cstdio>
15
16 #include "blkdta.h"
17 #include "modefl.h"
18
19 #include "art.h"
20  
21 void art_class::artbck(
22   REAL* pict,
23   REAL amt,
24   INTEGER* list,
25   REAL* weight,
26   INTEGER numb,
27   REAL thrlo,
28   REAL thrup,
29   REAL relax,
30   BOOLEAN bartf,
31   REAL halfwy,
32   REAL thtol,
33   BOOLEAN art2f
34 )
35 {  
36   INTEGER nb;
37   INTEGER k;
38   REAL pictk;
39
40   if(numb == 0) return;
41
42   for(nb = 0; nb < numb; nb++) {
43     k = list[nb];
44     pictk = pict[k];
45     pictk += amt * weight[nb];
46
47
48     if(!art2f) {
49       pictk = clip(pictk, thrlo, thrup, relax);
50
51       if(bartf) {
52
53         if(Modefl.lofl && (pict[k] <= thrlo) && (pictk >= halfwy)) {
54           pictk = halfwy - thtol;
55         }
56
57         if(Modefl.upfl && (pict[k] >= thrup) && (pictk <= halfwy)) {
58           pictk = halfwy + thtol;
59         }
60       }
61     }
62
63
64     pict[k] = pictk;
65   }
66   return;
67 }