--
-- Patricia Fasel
-- Los Alamos National Laboratory
-- 1990 August
--
module Pair (pair) where
import GamtebType
import Consts
import Utils
-- pair production after a collision
pair :: Particle -> (Particle, Probability, Bool)
pair (Part pos dir w e eIndx cell seed) =
if (e' <= ergCut)
then (Part pos dir w' e' eIndx' cell seed', prob', True)
else (Part pos dir' w' e' eIndx' cell seed', prob', False)
where
(seed', r2) = genRand seed
(r3, r4) = genRand r2
e' = 0.511008
(eIndx', prob') = xsectInterp e'
w' = 2*w
dir' = isos r3
-- sample a direction u,v,w isotropically
-- isotropic emission lab system
isos :: Random -> Point
isos r =
isos' t1 t2 (t1*t1 + t2*t2)
where
(r1, r2) = genRand r
(r3, r4) = genRand r2
t1 = 2*r4 - 1
t2 = 2*r3 - 1
isos' t1 t2 rsq
| rsq > 1 =
let
(r1, r2) = genRand r1
(r3, r4) = genRand r2
t1 = 2*r4 - 1
t2 = 2*r3 - 1
in
isos' t1 t2 (t1*t1 + t2*t2)
| otherwise =
let
u = 2*rsq - 1
t3 = sqrt (1 - u*u) / rsq
v = t1*t3
w = t2*t3
in
(u,v,w)
|