38{
40
42
43
44
46 G4int je2 = NENERGY - 1;
47 G4int iterationsLeft=2*NENERGY +1;
48 do {
49 G4int midBin = (je1 + je2)/2;
50 if (ek < elab[midBin])
51 je2 = midBin;
52 else
53 je1 = midBin;
54 } while ( (je2 - je1) > 1 && --iterationsLeft > 0 );
55 if ( iterationsLeft <= 0 ) {
57 "Problem with energy bin (elab) data");
58
59 }
60
61
62 G4double delab = elab[je2] - elab[je1];
63
64
65
68 G4int ke2 = NANGLE - 1;
69 G4double dsig = sig[je2][0] - sig[je1][0];
71 G4double b = sig[je1][0] - rc*elab[je1];
74
75 if (verboseLevel > 1)
G4cout <<
"sample=" << sample <<
G4endl
76 << ek << " " << ke1 << " " << ke2 << " "
77 << sigint1 <<
" " << sigint2 <<
G4endl;
78 iterationsLeft= 2*NANGLE +1;
79 do {
80 G4int midBin = (ke1 + ke2)/2;
81 dsig = sig[je2][midBin] - sig[je1][midBin];
82 rc = dsig/delab;
83 b = sig[je1][midBin] - rc*elab[je1];
85 if (sample < sigint) {
86 ke2 = midBin;
87 sigint2 = sigint;
88 }
89 else {
90 ke1 = midBin;
91 sigint1 = sigint;
92 }
93 if (verboseLevel > 1)
G4cout << ke1 <<
" " << ke2 <<
" "
94 << sigint1 <<
" " << sigint2 <<
G4endl;
95 } while ( (ke2 - ke1) > 1 && --iterationsLeft > 0);
96 if ( iterationsLeft <= 0 ) {
98 "Problem with angular distribution (sig) data");
99 }
100
101
102
103
104
105
106
107
108
109
110
111
112
113 dsig = sigint2 - sigint1;
114 rc = 1./dsig;
115 b = ke1 - rc*sigint1;
117 G4double theta = (0.5 + kint)*pi/180.;
118
119
120
121
122
123 if (verboseLevel > 1) {
124 G4cout <<
" energy bin " << je1 <<
" energy=" << elab[je1] <<
G4endl;
125 G4cout <<
" angle bin " << kint <<
" angle=" << theta/degree <<
G4endl;
126 }
128 return costh;
129}
G4double S(G4double temp)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4GLOB_DLL std::ostream G4cout