Initial snark14m import
[snark14.git] / src / snark / errpar.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/errpar.cpp $
5  $LastChangedRevision: 85 $
6  $Date: 2014-07-02 16:07:08 -0400 (Wed, 02 Jul 2014) $
7  $Author: agulati $
8  ***********************************************************
9
10  THIS ROUTINE CHECKS AND PREPARES THE CONSTANTS USED BY THE ERROR
11  ROUTINE ERRFAC
12  */
13
14 #include <cstdio>
15 #include <cmath>
16 #include "blkdta.h"
17 #include "geom.h"
18 #include "spctrm.h"
19 #include "noise.h"
20 #include "err.h"
21 #include "errpar.h"
22
23 void errpar(BOOLEAN alg)
24 {
25         int i;
26
27         Err.errtyp = 0;
28
29         if (!(NoisePar.quanin == 0))
30         {
31
32                 // QUANTUM NOISE
33
34                 Err.bf = 0.0;
35                 for (i = 0; i < Spctrm.nergy; i++)
36                 {
37                         Err.bf += Spctrm.engwt[i] * (REAL) exp(-Spctrm.backgr[i]);
38                 }
39
40                 Err.bf = (REAL) 1.0 / (Err.bf * NoisePar.quanmn);
41                 Err.af = Err.bf * ((REAL) 2.0 / NoisePar.quancm + (REAL) 1.0);
42
43                 Err.errtyp = 4;
44                 if (GeoPar.strip)
45                         Err.errtyp = 8;
46         }
47         // MULTIPLICATIVE NOISE
48         if (NoisePar.ultnfl)
49         {
50
51                 Err.mfactr = (NoisePar.ultnsd / NoisePar.ultnmn)
52                                 * (NoisePar.ultnsd / NoisePar.ultnmn);
53
54                 Err.errtyp += 2;
55         }
56
57         // ADDITIVE NOISE
58
59         if (NoisePar.addnfl)
60         {
61                 Err.afactr = NoisePar.addnsd * NoisePar.addnsd;
62
63                 Err.errtyp++;
64         }
65         return;
66 }