87 const G4double G4GoudsmitSaundersonTable::fgLambdaValues[] ={
88 1.000000000000e+00, 1.165914401180e+00, 1.359356390879e+00, 1.584893192461e+00,
89 1.847849797422e+00, 2.154434690032e+00, 2.511886431510e+00, 2.928644564625e+00,
90 3.414548873834e+00, 3.981071705535e+00, 4.641588833613e+00, 5.411695265465e+00,
91 6.309573444802e+00, 7.356422544596e+00, 8.576958985909e+00, 1.000000000000e+01,
92 1.165914401180e+01, 1.359356390879e+01, 1.584893192461e+01, 1.847849797422e+01,
93 2.154434690032e+01, 2.511886431510e+01, 2.928644564625e+01, 3.414548873834e+01,
94 3.981071705535e+01, 4.641588833613e+01, 5.411695265465e+01, 6.309573444802e+01,
95 7.356422544596e+01, 8.576958985909e+01, 1.000000000000e+02, 1.165914401180e+02,
96 1.359356390879e+02, 1.584893192461e+02, 1.847849797422e+02, 2.154434690032e+02,
97 2.511886431510e+02, 2.928644564625e+02, 3.414548873834e+02, 3.981071705535e+02,
98 4.641588833613e+02, 5.411695265465e+02, 6.309573444802e+02, 7.356422544596e+02,
99 8.576958985909e+02, 1.000000000000e+03, 1.165914401180e+03, 1.359356390879e+03,
100 1.584893192461e+03, 1.847849797422e+03, 2.154434690032e+03, 2.511886431510e+03,
101 2.928644564625e+03, 3.414548873834e+03, 3.981071705535e+03, 4.641588833613e+03,
102 5.411695265465e+03, 6.309573444802e+03, 7.356422544596e+03, 8.576958985909e+03,
103 1.000000000000e+04, 1.165914401180e+04, 1.359356390879e+04, 1.584893192461e+04,
104 1.847849797422e+04, 2.154434690032e+04, 2.511886431510e+04, 2.928644564625e+04,
105 3.414548873834e+04, 3.981071705535e+04, 4.641588833613e+04, 5.411695265465e+04,
106 6.309573444802e+04, 7.356422544596e+04, 8.576958985909e+04, 1.000000000000e+05
109 const G4double G4GoudsmitSaundersonTable::fgLamG1Values[]={
110 0.0010, 0.0509, 0.1008, 0.1507, 0.2006, 0.2505, 0.3004, 0.3503, 0.4002,
111 0.4501, 0.5000, 0.5499, 0.5998, 0.6497, 0.6996, 0.7495, 0.7994, 0.8493,
112 0.8992, 0.9491, 0.9990
114 const G4double G4GoudsmitSaundersonTable::fgLamG1ValuesII[]={
115 0.999, 1.332, 1.665, 1.998, 2.331, 2.664, 2.997, 3.33, 3.663,
116 3.996, 4.329, 4.662, 4.995, 5.328, 5.661, 5.994, 6.327,
117 6.66, 6.993, 7.326, 7.659, 7.992
120 const G4double G4GoudsmitSaundersonTable::fgUValues[]={
121 0.00, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09,
122 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19,
123 0.20, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29,
124 0.30, 0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39,
125 0.40, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47, 0.48, 0.49,
126 0.50, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59,
127 0.60, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69,
128 0.70, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79,
129 0.80, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89,
130 0.90, 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99,
134 const G4double G4GoudsmitSaundersonTable::fgG1Values[]={
135 1.00000000000000e-10, 1.15478198468946e-10, 1.33352143216332e-10, 1.53992652605949e-10, 1.77827941003892e-10,
136 2.05352502645715e-10, 2.37137370566166e-10, 2.73841963426436e-10, 3.16227766016838e-10, 3.65174127254838e-10,
137 4.21696503428582e-10, 4.86967525165863e-10, 5.62341325190349e-10, 6.49381631576211e-10, 7.49894209332456e-10,
138 8.65964323360065e-10, 1.00000000000000e-09, 1.15478198468946e-09, 1.33352143216332e-09, 1.53992652605949e-09,
139 1.77827941003892e-09, 2.05352502645715e-09, 2.37137370566166e-09, 2.73841963426436e-09, 3.16227766016838e-09,
140 3.65174127254838e-09, 4.21696503428582e-09, 4.86967525165863e-09, 5.62341325190349e-09, 6.49381631576211e-09,
141 7.49894209332456e-09, 8.65964323360065e-09, 1.00000000000000e-08, 1.15478198468946e-08, 1.33352143216332e-08,
142 1.53992652605949e-08, 1.77827941003892e-08, 2.05352502645715e-08, 2.37137370566166e-08, 2.73841963426436e-08,
143 3.16227766016838e-08, 3.65174127254838e-08, 4.21696503428582e-08, 4.86967525165863e-08, 5.62341325190349e-08,
144 6.49381631576211e-08, 7.49894209332456e-08, 8.65964323360065e-08, 1.00000000000000e-07, 1.15478198468946e-07,
145 1.33352143216332e-07, 1.53992652605949e-07, 1.77827941003892e-07, 2.05352502645715e-07, 2.37137370566166e-07,
146 2.73841963426436e-07, 3.16227766016838e-07, 3.65174127254838e-07, 4.21696503428582e-07, 4.86967525165863e-07,
147 5.62341325190349e-07, 6.49381631576211e-07, 7.49894209332456e-07, 8.65964323360065e-07, 1.00000000000000e-06,
148 1.15478198468946e-06, 1.33352143216332e-06, 1.53992652605949e-06, 1.77827941003892e-06, 2.05352502645715e-06,
149 2.37137370566166e-06, 2.73841963426436e-06, 3.16227766016838e-06, 3.65174127254838e-06, 4.21696503428582e-06,
150 4.86967525165863e-06, 5.62341325190349e-06, 6.49381631576211e-06, 7.49894209332456e-06, 8.65964323360065e-06,
151 1.00000000000000e-05, 1.15478198468946e-05, 1.33352143216332e-05, 1.53992652605949e-05, 1.77827941003892e-05,
152 2.05352502645715e-05, 2.37137370566166e-05, 2.73841963426436e-05, 3.16227766016838e-05, 3.65174127254838e-05,
153 4.21696503428582e-05, 4.86967525165863e-05, 5.62341325190349e-05, 6.49381631576211e-05, 7.49894209332456e-05,
154 8.65964323360065e-05, 1.00000000000000e-04, 1.15478198468946e-04, 1.33352143216332e-04, 1.53992652605949e-04,
155 1.77827941003892e-04, 2.05352502645715e-04, 2.37137370566166e-04, 2.73841963426436e-04, 3.16227766016838e-04,
156 3.65174127254838e-04, 4.21696503428582e-04, 4.86967525165863e-04, 5.62341325190349e-04, 6.49381631576211e-04,
157 7.49894209332456e-04, 8.65964323360065e-04, 1.00000000000000e-03, 1.15478198468946e-03, 1.33352143216332e-03,
158 1.53992652605949e-03, 1.77827941003892e-03, 2.05352502645715e-03, 2.37137370566166e-03, 2.73841963426436e-03,
159 3.16227766016838e-03, 3.65174127254838e-03, 4.21696503428582e-03, 4.86967525165863e-03, 5.62341325190349e-03,
160 6.49381631576211e-03, 7.49894209332456e-03, 8.65964323360065e-03, 1.00000000000000e-02, 1.15478198468946e-02,
161 1.33352143216332e-02, 1.53992652605949e-02, 1.77827941003892e-02, 2.05352502645715e-02, 2.37137370566166e-02,
162 2.73841963426436e-02, 3.16227766016838e-02, 3.65174127254838e-02, 4.21696503428582e-02, 4.86967525165863e-02,
163 5.62341325190349e-02, 6.49381631576211e-02, 7.49894209332456e-02, 8.65964323360065e-02, 1.00000000000000e-01,
164 1.15478198468946e-01, 1.33352143216332e-01, 1.53992652605949e-01, 1.77827941003892e-01, 2.05352502645715e-01,
165 2.37137370566166e-01, 2.73841963426436e-01, 3.16227766016838e-01, 3.65174127254838e-01, 4.21696503428582e-01,
166 4.86967525165863e-01, 5.62341325190349e-01, 6.49381631576211e-01, 7.49894209332456e-01, 8.65964323360065e-01
169 const G4double G4GoudsmitSaundersonTable::fgScreeningParam[]={
170 1.92484052135703e-12, 2.23565438533804e-12, 2.59674772669370e-12, 3.01627006395395e-12, 3.50369464193945e-12,
171 4.07003394459337e-12, 4.72809038421179e-12, 5.49274792465712e-12, 6.38131134142232e-12, 7.41390092242269e-12,
172 8.61391169587491e-12, 1.00085477656079e-11, 1.16294440746525e-11, 1.35133899458129e-11, 1.57031711107699e-11,
173 1.82485496926619e-11, 2.12074048158664e-11, 2.46470602564846e-11, 2.86458299060786e-11, 3.32948169025090e-11,
174 3.87000082054842e-11, 4.49847133009623e-11, 5.22924037716594e-11, 6.07900198618435e-11, 7.06718211166503e-11,
175 8.21638709501378e-11, 9.55292598967889e-11, 1.11074189683990e-10, 1.29155060543825e-10, 1.50186727847036e-10,
176 1.74652121757794e-10, 2.03113455838333e-10, 2.36225288153009e-10, 2.74749742338471e-10, 3.19574247380381e-10,
177 3.71732214707185e-10, 4.32427141127727e-10, 5.03060707798248e-10, 5.85265540790081e-10, 6.80943410264647e-10,
178 7.92309775465429e-10, 9.21945734889531e-10, 1.07285861883013e-09, 1.24855266934879e-09, 1.45311149575389e-09,
179 1.69129427781576e-09, 1.96864802125653e-09, 2.29163855873534e-09, 2.66780344424806e-09, 3.10593042087591e-09,
180 3.61626576440636e-09, 4.21075753406168e-09, 4.90333961465076e-09, 5.71026343332307e-09, 6.65048540388811e-09,
181 7.74611952188878e-09, 9.02296613895651e-09, 1.05111298261663e-08, 1.22457414410270e-08, 1.42678020976703e-08,
182 1.66251697709241e-08, 1.93737128201322e-08, 2.25786588894194e-08, 2.63161725354421e-08, 3.06752006784906e-08,
183 3.57596317176864e-08, 4.16908220722131e-08, 4.86105532157964e-08, 5.66844932060409e-08, 6.61062495628185e-08,
184 7.71021154618766e-08, 8.99366289841022e-08, 1.04919086073377e-07, 1.22411172469263e-07, 1.42835908860059e-07,
185 1.66688137634119e-07, 1.94546819824371e-07, 2.27089458246136e-07, 2.65109018729386e-07, 3.09533787294144e-07,
186 3.61450678951755e-07, 4.22132605720001e-07, 4.93070620012029e-07, 5.76011677884208e-07, 6.73003018378312e-07,
187 7.86444334741884e-07, 9.19149125868381e-07, 1.07441686808177e-06, 1.25611794581916e-06, 1.46879363370693e-06,
188 1.71777384258668e-06, 2.00931584092477e-06, 2.35076775595475e-06, 2.75076136411589e-06, 3.21943951980544e-06,
189 3.76872457154335e-06, 4.41263530713955e-06, 5.16766139268237e-06, 6.05320597042372e-06, 7.09210911391032e-06,
190 8.31126727283062e-06, 9.74236675732094e-06, 1.14227528119565e-05, 1.33964600351938e-05, 1.57154349593153e-05,
191 1.84409877007598e-05, 2.16455169438847e-05, 2.54145614063097e-05, 2.98492416879238e-05, 3.50691694441802e-05,
192 4.12159166620983e-05, 4.84571570931433e-05, 5.69916154060348e-05, 6.70549883575744e-05, 7.89270374851336e-05,
193 9.29400960653008e-05, 1.09489286334512e-04, 1.29044808732337e-04, 1.52166746391861e-04, 1.79522929336019e-04,
194 2.11910529073029e-04, 2.50282212267455e-04, 2.95777880652745e-04, 3.49763274771614e-04, 4.13877036477045e-04,
195 4.90088229201730e-04, 5.80766832133355e-04, 6.88770389861787e-04, 8.17550860329037e-04, 9.71286825640136e-04,
196 1.15504770108335e-03, 1.37499852012182e-03, 1.63865645831619e-03, 1.95521372859357e-03, 2.33594617839223e-03,
197 2.79473334292108e-03, 3.34872458412049e-03, 4.01919834698563e-03, 4.83267910882034e-03, 5.82240174726978e-03,
198 7.03024963447929e-03, 8.50934682352796e-03, 1.03275659802088e-02, 1.25723383030196e-02, 1.53573467148336e-02,
199 1.88319961908362e-02, 2.31950693494851e-02, 2.87148467953825e-02, 3.57594981860148e-02, 4.48443278665925e-02,
200 5.67077407341705e-02, 7.24383639141981e-02, 9.36982315562396e-02, 1.23138322807982e-01, 1.65231234966025e-01,
201 2.28105620915395e-01, 3.28136673526381e-01, 5.03725917697149e-01, 8.70438998827130e-01, 2.00702876580162e+00
204 const G4double G4GoudsmitSaundersonTable::fgSrcAValues[] = {
205 1.04015860967600e+00, 1.04040150744807e+00, 1.04064741953810e+00, 1.04089640311900e+00, 1.04114851683194e+00,
206 1.04140382083415e+00, 1.04166237684853e+00, 1.04192424821535e+00, 1.04218949994586e+00, 1.04245819877822e+00,
207 1.04273041323563e+00, 1.04300621368681e+00, 1.04328567240902e+00, 1.04356886365371e+00, 1.04385586371482e+00,
208 1.04414675100008e+00, 1.04444160610522e+00, 1.04474051189143e+00, 1.04504355356608e+00, 1.04535081876704e+00,
209 1.04566239765056e+00, 1.04597838298311e+00, 1.04629887023725e+00, 1.04662395769178e+00, 1.04695374653644e+00,
210 1.04728834098127e+00, 1.04762784837111e+00, 1.04797237930520e+00, 1.04832204776253e+00, 1.04867697123289e+00,
211 1.04903727085420e+00, 1.04940307155639e+00, 1.04977450221209e+00, 1.05015169579471e+00, 1.05053478954418e+00,
212 1.05092392514088e+00, 1.05131924888815e+00, 1.05172091190400e+00, 1.05212907032243e+00, 1.05254388550507e+00,
213 1.05296552426367e+00, 1.05339415909403e+00, 1.05382996842239e+00, 1.05427313686456e+00, 1.05472385549904e+00,
214 1.05518232215471e+00, 1.05564874171422e+00, 1.05612332643389e+00, 1.05660629628136e+00, 1.05709787929208e+00,
215 1.05759831194585e+00, 1.05810783956480e+00, 1.05862671673423e+00, 1.05915520774789e+00, 1.05969358707925e+00,
216 1.06024213988081e+00, 1.06080116251315e+00, 1.06137096310598e+00, 1.06195186215339e+00, 1.06254419314585e+00,
217 1.06314830324155e+00, 1.06376455398007e+00, 1.06439332204139e+00, 1.06503500005380e+00, 1.06568999745437e+00,
218 1.06635874140595e+00, 1.06704167777519e+00, 1.06773927217628e+00, 1.06845201108575e+00, 1.06918040303385e+00,
219 1.06992497987890e+00, 1.07068629817131e+00, 1.07146494061474e+00, 1.07226151763259e+00, 1.07307666904867e+00,
220 1.07391106589198e+00, 1.07476541233634e+00, 1.07564044778664e+00, 1.07653694912487e+00, 1.07745573313039e+00,
221 1.07839765909007e+00, 1.07936363161610e+00, 1.08035460369071e+00, 1.08137157995935e+00, 1.08241562029607e+00,
222 1.08348784366764e+00, 1.08458943232554e+00, 1.08572163635876e+00, 1.08688577864359e+00, 1.08808326023102e+00,
223 1.08931556621724e+00, 1.09058427214773e+00, 1.09189105101191e+00, 1.09323768089211e+00, 1.09462605333836e+00,
224 1.09605818254966e+00, 1.09753621545270e+00, 1.09906244278036e+00, 1.10063931126624e+00, 1.10226943708649e+00,
225 1.10395562069822e+00, 1.10570086324418e+00, 1.10750838471683e+00, 1.10938164410283e+00, 1.11132436176008e+00,
226 1.11334054431726e+00, 1.11543451242832e+00, 1.11761093176532e+00, 1.11987484769228e+00, 1.12223172413234e+00,
227 1.12468748722310e+00, 1.12724857445230e+00, 1.12992199008194e+00, 1.13271536780716e+00, 1.13563704176072e+00,
228 1.13869612717300e+00, 1.14190261223537e+00, 1.14526746300462e+00, 1.14880274353680e+00, 1.15252175386784e+00,
229 1.15643918898390e+00, 1.16057132257199e+00, 1.16493622014373e+00, 1.16955398712386e+00, 1.17444705874537e+00,
230 1.17964054016868e+00, 1.18516260723776e+00, 1.19104498083299e+00, 1.19732349105124e+00, 1.20403875167602e+00,
231 1.21123697091984e+00, 1.21897093167774e+00, 1.22730118415524e+00, 1.23629750662007e+00, 1.24604070744941e+00,
232 1.25662486545524e+00, 1.26816013838519e+00, 1.28077631555756e+00, 1.29462735591193e+00, 1.30989724673401e+00,
233 1.32680765564328e+00, 1.34562805256148e+00, 1.36668928751138e+00, 1.39040208794754e+00, 1.41728269492652e+00,
234 1.44798908275733e+00, 1.48337325073139e+00, 1.52455859525395e+00, 1.57305765486728e+00, 1.63095721573069e+00,
235 1.70122060331290e+00, 1.78820418157127e+00, 1.89858943787341e+00, 2.04318263724065e+00, 2.24070141295433e+00,
236 2.52670054341548e+00, 2.97823240973856e+00, 3.80070470423559e+00, 5.80504410098720e+00, 0.0
239 const G4double G4GoudsmitSaundersonTable::fgSrcBValues[] = {
240 4.85267101555493e-02, 4.87971711674324e-02, 4.90707875373474e-02, 4.93476163203902e-02, 4.96277159833787e-02,
241 4.99111464494480e-02, 5.01979691443985e-02, 5.04882470448502e-02, 5.07820447282697e-02, 5.10794284249799e-02,
242 5.13804660722384e-02, 5.16852273704654e-02, 5.19937838417706e-02, 5.23062088908123e-02, 5.26225778681911e-02,
243 5.29429681364105e-02, 5.32674591386191e-02, 5.35961324701870e-02, 5.39290719533364e-02, 5.42663637149114e-02,
244 5.46080962674657e-02, 5.49543605938995e-02, 5.53052502357015e-02, 5.56608613851103e-02, 5.60212929813128e-02,
245 5.63866468109177e-02, 5.67570276129776e-02, 5.71325431886598e-02, 5.75133045160478e-02, 5.78994258700939e-02,
246 5.82910249481984e-02, 5.86882230016298e-02, 5.90911449731285e-02, 5.94999196410672e-02, 5.99146797704773e-02,
247 6.03355622714283e-02, 6.07627083650703e-02, 6.11962637578703e-02, 6.16363788244832e-02, 6.20832087997576e-02,
248 6.25369139805019e-02, 6.29976599373900e-02, 6.34656177379503e-02, 6.39409641809610e-02, 6.44238820432201e-02,
249 6.49145603393270e-02, 6.54131945953447e-02, 6.59199871371941e-02, 6.64351473947443e-02, 6.69588922226319e-02,
250 6.74914462388500e-02, 6.80330421823362e-02, 6.85839212907651e-02, 6.91443337000157e-02, 6.97145388666155e-02,
251 7.02948060148960e-02, 7.08854146105257e-02, 7.14866548622191e-02, 7.20988282536816e-02, 7.27222481079186e-02,
252 7.33572401862953e-02, 7.40041433248063e-02, 7.46633101103861e-02, 7.53351076002229e-02, 7.60199180872846e-02,
253 7.67181399156741e-02, 7.74301883495570e-02, 7.81564964999089e-02, 7.88975163136540e-02, 7.96537196301176e-02,
254 8.04255993102895e-02, 8.12136704447979e-02, 8.20184716471344e-02, 8.28405664392583e-02, 8.36805447373290e-02,
255 8.45390244462388e-02, 8.54166531722937e-02, 8.63141100644354e-02, 8.72321077953886e-02, 8.81713946953474e-02,
256 8.91327570520271e-02, 9.01170215924217e-02, 9.11250581632225e-02, 9.21577826286684e-02, 9.32161600065677e-02,
257 9.43012078656787e-02, 9.54140000100007e-02, 9.65556704785876e-02, 9.77274178926762e-02, 9.89305101855936e-02,
258 1.00166289755146e-01, 1.01436179082793e-01, 1.02741686869338e-01, 1.04084414742952e-01, 1.05466064602181e-01,
259 1.06888446664513e-01, 1.08353488300132e-01, 1.09863243740694e-01, 1.11419904764858e-01, 1.13025812475804e-01,
260 1.14683470301675e-01, 1.16395558367910e-01, 1.18164949411119e-01, 1.19994726428692e-01, 1.21888202285954e-01,
261 1.23848941535858e-01, 1.25880784744097e-01, 1.27987875657392e-01, 1.30174691605324e-01, 1.32446077587840e-01,
262 1.34807284573851e-01, 1.37264012622799e-01, 1.39822459544273e-01, 1.42489375933601e-01, 1.45272127568431e-01,
263 1.48178766328292e-01, 1.51218111012368e-01, 1.54399839689173e-01, 1.57734595526106e-01, 1.61234108430976e-01,
264 1.64911335308903e-01, 1.68780622319388e-01, 1.72857893239124e-01, 1.77160868934300e-01, 1.81709324071779e-01,
265 1.86525388617776e-01, 1.91633903472561e-01, 1.97062841888240e-01, 2.02843811271485e-01, 2.09012653799732e-01,
266 2.15610169273952e-01, 2.22682990203222e-01, 2.30284647840434e-01, 2.38476879578463e-01, 2.47331243935506e-01,
267 2.56931130997193e-01, 2.67374286122045e-01, 2.78776006654390e-01, 2.91273230921782e-01, 3.05029824532737e-01,
268 3.20243494424876e-01, 3.37154947792243e-01, 3.56060196110919e-01, 3.77327342746089e-01, 4.01419886817026e-01,
269 4.28929703940887e-01, 4.60624750236354e-01, 4.97519791888632e-01, 5.40984294142651e-01, 5.92912498016053e-01,
270 6.56002088728957e-01, 7.34232298458703e-01, 8.33731313414106e-01, 9.64463147693015e-01, 1.14381339640412e+00,
271 1.40517335796248e+00, 1.82227062151045e+00, 2.59912058457152e+00, 4.62773895951686e+00, 0.0
275 G4double G4GoudsmitSaundersonTable::fgInverseQ2CDFs[fgNumLambdas*fgNumLamG1*fgNumUvalues] = {0.0};
276 G4double G4GoudsmitSaundersonTable::fgInterParamsA2[fgNumLambdas*fgNumLamG1*fgNumUvalues] = {0.0};
277 G4double G4GoudsmitSaundersonTable::fgInterParamsB2[fgNumLambdas*fgNumLamG1*fgNumUvalues] = {0.0};
278 G4double G4GoudsmitSaundersonTable::fgInverseQ2CDFsII[fgNumLambdas*fgNumLamG1II*fgNumUvalues] = {0.0};
279 G4double G4GoudsmitSaundersonTable::fgInterParamsA2II[fgNumLambdas*fgNumLamG1II*fgNumUvalues] = {0.0};
280 G4double G4GoudsmitSaundersonTable::fgInterParamsB2II[fgNumLambdas*fgNumLamG1II*fgNumUvalues] = {0.0};
282 std::vector<G4double>* G4GoudsmitSaundersonTable::fgMoliereBc = 0;
283 std::vector<G4double>* G4GoudsmitSaundersonTable::fgMoliereXc2 = 0;
285 G4bool G4GoudsmitSaundersonTable::fgIsInitialised =
FALSE;
289 if(!fgIsInitialised){
292 fgIsInitialised =
TRUE;
295 InitMoliereMSCParams();
308 fgIsInitialised =
FALSE;
318 const G4double invlnl = 6.5144172285e+00;
320 G4int lambdaindx = (
G4int)((logLambdaVal-lnl0)*invlnl);
323 G4int lamg1indx = (
G4int)((lamG1value-fgLamG1Values[0])*dd);
325 G4double probOfLamJ =
G4Log(fgLambdaValues[lambdaindx+1]/lambdavalue)*invlnl;
326 if(rndm1 > probOfLamJ)
330 const G4double onePerLamG1Diff = dd;
331 G4double probOfLamG1J = (fgLamG1Values[lamg1indx+1]-lamG1value)*onePerLamG1Diff;
332 if(rndm2 > probOfLamG1J)
335 G4int begin = lambdaindx*(fgNumLamG1*fgNumUvalues)+lamg1indx*fgNumUvalues;
343 G4double u1 = fgInverseQ2CDFs[indx];
344 G4double u2 = fgInverseQ2CDFs[indx+1];
350 G4double sample= u1+(1.0+fgInterParamsA2[indx]+fgInterParamsB2[indx])*dum1*dum2/(dum22+
351 dum1*dum2*fgInterParamsA2[indx]+fgInterParamsB2[indx]*dum1*dum1)*(u2-u1);
357 if(lambdavalue >= 10.0)
358 dum = 0.5*(-2.77164+t*( 2.94874-t*(0.1535754-t*0.00552888) ));
360 dum = 0.5*(1.347+t*(0.209364-t*(0.45525-t*(0.50142-t*0.081234))));
362 G4double a = dum*(lambdavalue+4.0)*screeningparam;
365 return (2.0*a*sample)/(1.0-sample+
a);
375 const G4double invlnl = 6.5144172285e+00;
377 G4int lambdaindx = (
G4int)((logLambdaVal-lnl0)*invlnl);
380 G4int lamg1indx = (
G4int)((lamG1value-fgLamG1ValuesII[0])*dd);
382 G4double probOfLamJ =
G4Log(fgLambdaValues[lambdaindx+1]/lambdavalue)*invlnl;
383 if(rndm1 > probOfLamJ)
387 const G4double onePerLamG1Diff = dd;
388 G4double probOfLamG1J = (fgLamG1ValuesII[lamg1indx+1]-lamG1value)*onePerLamG1Diff;
389 if(rndm2 > probOfLamG1J)
395 if(fgLamG1ValuesII[lamg1indx]>lambdavalue && lamg1indx>0)
399 G4int begin = lambdaindx*(fgNumLamG1II*fgNumUvalues)+lamg1indx*fgNumUvalues;
407 G4double u1 = fgInverseQ2CDFsII[indx];
408 G4double u2 = fgInverseQ2CDFsII[indx+1];
414 G4double sample= u1+(1.0+fgInterParamsA2II[indx]+fgInterParamsB2II[indx])*dum1*dum2/(dum22+
415 dum1*dum2*fgInterParamsA2II[indx]+fgInterParamsB2II[indx]*dum1*dum1)*(u2-u1);
421 if(lambdavalue >= 10.0)
422 dum = 0.5*(-2.77164+t*( 2.94874-t*(0.1535754-t*0.00552888) ));
424 dum = 0.5*(1.347+t*(0.209364-t*(0.45525-t*(0.50142-t*0.081234))));
426 G4double a = dum*(lambdavalue+4.0)*screeningparam;
429 return (2.0*a*sample)/(1.0-sample+
a);
454 if( rand0 < (1.+lambdavalue)*expn) {
457 G4double dum0 = 2.0*scrPar*rand1/(1.0 - rand1 + scrPar);
459 if(dum0 < 0.0) dum0 = 0.0;
460 else if(dum0 > 2.0 ) dum0 = 2.0;
463 sint = std::sqrt(dum0*(2.0 - dum0));
483 if(lambdavalue < 1.0) {
485 prob = cumprob = expn;
491 for(
G4int iel = 1; iel < 10; ++iel){
500 G4double dum0 = 2.0*scrPar*rand1/(1.0 - rand1 + scrPar);
502 curcost = 1.0 - dum0;
503 cursint = dum0*(2.0 - dum0);
507 if(cursint > 1.0e-20){
508 cursint = std::sqrt(cursint);
510 cost = cost*curcost - sint*cursint*std::cos(curphi);
511 sint = std::sqrt(
std::max(0.0, (1.0-cost)*(1.0+cost)));
539 if(lamG1value<fgLamG1Values[0]) lamG1value = fgLamG1Values[0];
540 if(lamG1value>fgLamG1ValuesII[fgNumLamG1II-1]) lamG1value = fgLamG1ValuesII[fgNumLamG1II-1];
544 if(lamG1value<fgLamG1Values[fgNumLamG1-1]) {
554 if(dum0 < 0.0) dum0 = 0.0;
555 if(dum0 > 2.0 ) dum0 = 2.0;
559 sint = std::sqrt(dum0*(2.0 - dum0));
564 if(G1<fgG1Values[0])
return fgScreeningParam[0];
565 if(G1>fgG1Values[fgNumScreeningParams-1])
return fgScreeningParam[fgNumScreeningParams-1];
567 const G4double lng10 = -2.30258509299405e+01;
568 const G4double invlng1 = 6.948711710452e+00;
571 return G4Exp(logG1*fgSrcAValues[k])*fgSrcBValues[k];
575 void G4GoudsmitSaundersonTable::LoadMSCData(){
578 char* path = getenv(
"G4LEDATA");
580 G4Exception(
"G4GoudsmitSaundersonTable::LoadMSCData()",
"em0006",
582 "Environment variable G4LEDATA not defined");
586 std::string pathString(path);
587 sprintf(basename,
"inverseq2CDF");
588 for(
int k = 0; k < fgNumLambdas; ++k){
590 sprintf(fname,
"%s/msc_GS/%s_%d",path,basename,k);
591 std::ifstream infile(fname,std::ios::in);
592 if(!infile.is_open()){
594 sprintf(msgc,
"Cannot open file: %s .",fname);
595 G4Exception(
"G4GoudsmitSaundersonTable::LoadMSCData()",
"em0006",
601 int limk = k*fgNumUvalues*fgNumLamG1;
602 for(
int i = 0; i < fgNumUvalues; ++i)
603 for(
int j = 0; j < fgNumLamG1+1; ++j)
604 if(j==0) infile >> dum;
605 else infile >> fgInverseQ2CDFs[limk+(j-1)*fgNumUvalues+i];
611 sprintf(basename,
"inverseq2CDFRatInterpPA");
612 for(
int k = 0; k < fgNumLambdas; ++k){
614 sprintf(fname,
"%s/msc_GS/%s_%d",path,basename,k);
615 std::ifstream infile(fname,std::ios::in);
616 if(!infile.is_open()){
618 sprintf(msgc,
"Cannot open file: %s .",fname);
619 G4Exception(
"G4GoudsmitSaundersonTable::LoadMSCData()",
"em0006",
625 int limk = k*fgNumUvalues*fgNumLamG1;
626 for(
int i = 0; i < fgNumUvalues; ++i)
627 for(
int j = 0; j < fgNumLamG1+1; ++j)
628 if(j==0) infile >> dum;
629 else infile >> fgInterParamsA2[limk+(j-1)*fgNumUvalues+i];
634 sprintf(basename,
"inverseq2CDFRatInterpPB");
635 for(
int k = 0; k < fgNumLambdas; ++k){
637 sprintf(fname,
"%s/msc_GS/%s_%d",path,basename,k);
638 std::ifstream infile(fname,std::ios::in);
639 if(!infile.is_open()){
641 sprintf(msgc,
"Cannot open file: %s .",fname);
642 G4Exception(
"G4GoudsmitSaundersonTable::LoadMSCData()",
"em0006",
648 int limk = k*fgNumUvalues*fgNumLamG1;
649 for(
int i = 0; i < fgNumUvalues; ++i)
650 for(
int j = 0; j < fgNumLamG1+1; ++j)
651 if(j==0) infile >> dum;
652 else infile >> fgInterParamsB2[limk+(j-1)*fgNumUvalues+i];
661 void G4GoudsmitSaundersonTable::LoadMSCDataII(){
664 char* path = getenv(
"G4LEDATA");
666 G4Exception(
"G4GoudsmitSaundersonTable::LoadMSCDataII()",
"em0006",
668 "Environment variable G4LEDATA not defined");
673 std::string pathString(path);
674 sprintf(basename,
"inverseq2CDFII");
675 for(
int k = 0; k < fgNumLambdas; ++k){
677 sprintf(fname,
"%s/msc_GS/%s_%d",path,basename,k);
678 std::ifstream infile(fname,std::ios::in);
679 if(!infile.is_open()){
681 sprintf(msgc,
"Cannot open file: %s .",fname);
682 G4Exception(
"G4GoudsmitSaundersonTable::LoadMSCDataII()",
"em0006",
688 int limk = k*fgNumUvalues*fgNumLamG1II;
689 for(
int i = 0; i < fgNumUvalues; ++i)
690 for(
int j = 0; j < fgNumLamG1II+1; ++j)
691 if(j==0) infile >> dum;
692 else infile >> fgInverseQ2CDFsII[limk+(j-1)*fgNumUvalues+i];
698 sprintf(basename,
"inverseq2CDFRatInterpPAII");
699 for(
int k = 0; k < fgNumLambdas; ++k){
701 sprintf(fname,
"%s/msc_GS/%s_%d",path,basename,k);
702 std::ifstream infile(fname,std::ios::in);
703 if(!infile.is_open()){
705 sprintf(msgc,
"Cannot open file: %s .",fname);
706 G4Exception(
"G4GoudsmitSaundersonTable::LoadMSCDataII()",
"em0006",
712 int limk = k*fgNumUvalues*fgNumLamG1II;
713 for(
int i = 0; i < fgNumUvalues; ++i)
714 for(
int j = 0; j < fgNumLamG1II+1; ++j)
715 if(j==0) infile >> dum;
716 else infile >> fgInterParamsA2II[limk+(j-1)*fgNumUvalues+i];
721 sprintf(basename,
"inverseq2CDFRatInterpPBII");
722 for(
int k = 0; k < fgNumLambdas; ++k){
724 sprintf(fname,
"%s/msc_GS/%s_%d",path,basename,k);
725 std::ifstream infile(fname,std::ios::in);
726 if(!infile.is_open()){
728 sprintf(msgc,
"Cannot open file: %s .",fname);
729 G4Exception(
"G4GoudsmitSaundersonTable::LoadMSCDataII()",
"em0006",
735 int limk = k*fgNumUvalues*fgNumLamG1II;
736 for(
int i = 0; i < fgNumUvalues; ++i)
737 for(
int j = 0; j < fgNumLamG1II+1; ++j)
738 if(j==0) infile >> dum;
739 else infile >> fgInterParamsB2II[limk+(j-1)*fgNumUvalues+i];
747 void G4GoudsmitSaundersonTable::InitMoliereMSCParams(){
750 const G4double finstrc2 = 5.325135453E-5;
754 unsigned int numMaterials = theMaterialTable->size();
757 fgMoliereBc =
new std::vector<G4double>(numMaterials);
758 fgMoliereXc2 =
new std::vector<G4double>(numMaterials);
760 fgMoliereBc->resize(numMaterials);
761 fgMoliereXc2->resize(numMaterials);
765 for(
unsigned int imat = 0; imat < numMaterials; ++imat) {
766 const G4Material *theMaterial = (*theMaterialTable)[imat];
775 for(
G4int ielem = 0; ielem < numelems; ielem++) {
776 G4double izet = (*theElemVect)[ielem]->GetZ();
777 G4double iwa = (*theElemVect)[ielem]->GetN();
779 G4double ipz = theFractionVect[ielem];
781 G4double dum = ipz/iwa*izet*(izet+xims);
783 ze += dum*(-2.0/3.0)*
G4Log(izet);
784 zx += dum*
G4Log(1.0+3.34*finstrc2*izet*izet);
789 (*fgMoliereBc)[theMaterial->
GetIndex()] = const1*density*zs*
G4Exp(ze/zs)/
G4Exp(zx/zs);
790 (*fgMoliereXc2)[theMaterial->
GetIndex()] = const2*density*zs;
~G4GoudsmitSaundersonTable()
static constexpr double cm
std::vector< G4Element * > G4ElementVector
std::vector< ExP01TrackerHit * > a
static G4MaterialTable * GetMaterialTable()
std::vector< G4Material * > G4MaterialTable
G4double GetDensity() const
const G4ElementVector * GetElementVector() const
static constexpr double g
G4double SampleCosThetaII(G4double, G4double, G4double, G4double, G4double, G4double)
static constexpr double MeV
void Sampling(G4double, G4double, G4double, G4double &, G4double &)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
T max(const T t1, const T t2)
brief Return the largest of the two arguments
size_t GetNumberOfElements() const
G4double SampleCosTheta(G4double, G4double, G4double, G4double, G4double, G4double)
const G4double * GetFractionVector() const
G4double GetScreeningParam(G4double)
static constexpr double twopi
static constexpr double cm3