Initial snark14m import
[snark14.git] / src / snark / foru_forwrd.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/foru_forwrd.cpp $
5  $LastChangedRevision: 85 $
6  $Date: 2014-07-02 16:07:08 -0400 (Wed, 02 Jul 2014) $
7  $Author: agulati $
8  ***********************************************************
9
10  FORWRD: FORWARD
11  PURPOSE: READ IN PROJECTIONS , TRANSFORM THEN INTERPOLATE
12  */
13
14 #include <cstdio>
15 #include "blkdta.h"
16 #include "geom.h"
17 #include "fourie.h"
18 #include "uiod.h"
19 #include "second.h"
20
21 #include "foru.h"
22
23 void foru_class::forwrd()
24 {
25         REAL tforw;
26         REAL tintr;
27         REAL* nold;
28         REAL* new1;
29         REAL t1;
30         REAL phi1;
31         REAL dphi1;
32         REAL t2;
33         INTEGER np;
34         REAL phi2;
35         REAL dphi2;
36         REAL t3;
37         REAL* kdum;
38         INTEGER kh;
39         INTEGER k;
40
41         tforw = 0.0;
42         tintr = 0.0;
43
44         // READ IN 1ST PROJECTION AND TRANSFORM
45         nold = Fourie.nproj1;
46         new1 = Fourie.nproj2;
47         second(&t1);
48         prjtrn(0, nold, &phi1, &dphi1);
49         second(&t2);
50         tforw += t2 - t1;
51
52         for (np = 1; np < GeoPar.prjnum; np++)
53         {
54
55                 // READ IN NEXT PROJECTION , TRANSFORM THEN INTERPOLATE
56
57                 second(&t1);
58                 prjtrn(np, new1, &phi2, &dphi2);
59                 if (Fourie.iflg == 1)
60                         return;
61                 second(&t2);
62                 tforw += t2 - t1;
63                 intrpl(phi1, phi2, dphi1, dphi2, nold, new1);
64                 second(&t3);
65                 tintr += t3 - t2;
66
67                 kdum = new1;
68                 new1 = nold;
69                 nold = kdum;
70                 phi1 = phi2;
71                 dphi1 = dphi2;
72
73         }
74
75         // READ IN 1ST PROJECTION AGAIN, INTERPOLATE USING LAST AND 1ST PROJS
76
77         second(&t1);
78         prjtrn(0, new1, &phi2, &dphi2);
79         if (Fourie.iflg == 1)
80                 return;
81         second(&t2);
82         tforw += t2 - t1;
83         intrpl(phi1, phi2, dphi1, dphi2, nold, new1);
84         second(&t3);
85         tintr += t3 - t2;
86
87         if (!GeoPar.par)
88         {
89                 kh = Fourie.nsize2 * (Fourie.nsize2 + 2);
90
91                 for (k = 2; k < kh; k++)
92                 {
93                         Fourie.nfrpln[k] /= 2.0;
94                 }
95         }
96
97         fprintf(output, "\ntime for projection transforms :   %10.3f  seconds    ", tforw); // changed precision to three digits - swr 1/21/06
98         fprintf(output, "\ntime for interpolations :          %10.3f  seconds    ", tintr); //ditto
99         return;
100 }